Overview

The VEML6070 is an integrated CMOS digital ultraviolet (UV) light sensor IC manufactured by Vishay Intertechnology. Designed for solar UV index monitoring, weather stations, wearable sunburn indicators, and UV lamp verification, it detects solar UVA spectrum radiation (320 nm320\text{ nm} to 400 nm400\text{ nm}) with peak sensitivity at 355 nm355\text{ nm}.

Housed in a compact 2.35×1.8 mm2.35 \times 1.8\text{ mm} OPLGA package, the VEML6070 integrates a photodiode array, low-noise pre-amplifier, 16-bit analog-to-digital converter, and an I2CI^2C interface. Uniquely, the VEML6070 utilizes two consecutive I2CI^2C slave addresses: 0x38 (reads LSB data byte and configures integration time) and 0x39 (reads MSB data byte).

Quick reference

Operating voltage (VDD)2.7 V to 5.5 V DC (3.3 V or 5.0 V nominal)
Spectral DetectionUVA spectrum (320 nm400 nm320\text{ nm} \dots 400\text{ nm}, peak 355 nm355\text{ nm})
InterfaceI2CI^2C (up to 400 kHz)
Dual I2CI^2C Addresses0x38 (Command / LSB Data) & 0x39 (MSB Data)
Integration Times1/2T1/2T (56.25 ms56.25\text{ ms}), 1T1T (112.5 ms112.5\text{ ms}), 2T2T (225 ms225\text{ ms}), 4T4T (450 ms450\text{ ms})
ADC Resolution16-bit digital output count (065,5350\dots 65,535)
Operating Current100 μA100\ \mu\text{A} active / 1.0 μA1.0\ \mu\text{A} software shutdown
ACK Interrupt FeatureProgrammable threshold interrupt output pin (ACK)

Pinout

Breakout module 5-pin header:

PinNameTypeDescription
1VDDPowerSupply power input (+2.7 V to +5.5 V DC)
2GNDPowerGround reference (0 V)
3SCLDigital InputI2CI^2C Serial Clock
4SDADigital Input / OutputI2CI^2C Serial Data
5ACKDigital OutputActive-Low threshold interrupt pin

Specifications

ParameterSymbolMinTypMaxUnitConditions
Supply VoltageVDDV_{DD}2.73.3 / 5.05.5VDC
Active Supply CurrentIDDI_{DD}100250µAVDD=3.3VVDD = 3.3\text{V}, active sampling
Shutdown CurrentIsdI_{sd}1.015.0µASoftware shutdown mode
UVA Peak Sensitivityλpeak\lambda_{peak}355nmSpectral response peak
UV Sensitivity (1T Mode)SensSens5counts/μW/cm2\mu\text{W/cm}^2Solar simulator calibration
Integration Time (1T)tint_1Tt_{int\_1T}112.5msRSET = 270 kΩ

Solar UV Index Calculation Table (1T1T Integration Time)

Raw 16-Bit UV Count RangeSolar UV Index RatingRisk Level
0 to 5600 to 2Low
561 to 11203 to 5Moderate
1121 to 14936 to 7High
1494 to 20548 to 10Very High
>2055> 205511+Extreme

Wiring

VEML6070 PinArduino / MCUESP32Notes
VDD5V / 3.3V3.3VPower rail
GNDGNDGNDSystem ground
SCLA5GPIO 22I2CI^2C Clock
SDAA4GPIO 21I2CI^2C Data

Example (Adafruit_VEML6070 Library)

cpp
#include <Wire.h>
#include "Adafruit_VEML6070.h"

Adafruit_VEML6070 uv = Adafruit_VEML6070();

void setup() {
  Serial.begin(115200);
  Serial.println("Adafruit VEML6070 UV Sensor Test");

  // Initialize in 1T Integration Mode
  uv.begin(VEML6070_1_T);
}

void loop() {
  uint16_t uv_reading = uv.readUV();

  Serial.print("Raw UV Reading: "); Serial.print(uv_reading); Serial.print(" | Risk: ");

  if (uv_reading <= 560) {
    Serial.println("Low (0-2)");
  } else if (uv_reading <= 1120) {
    Serial.println("Moderate (3-5)");
  } else if (uv_reading <= 1493) {
    Serial.println("High (6-7)");
  } else if (uv_reading <= 2054) {
    Serial.println("Very High (8-10)");
  } else {
    Serial.println("Extreme (11+)");
  }

  delay(1000);
}

Common mistakes

  • Expecting I2CI^2C scanners to find only one address: The VEML6070 responds to two I2CI^2C addresses (0x38 and 0x39). 0x38 handles commands/LSB data; 0x39 handles MSB data.
  • Glass window blocking UV rays: Standard window glass blocks 90%+90\%+ of UVA and 99%+99\%+ of UVB rays. Test the sensor in direct outdoor sunlight or under a dedicated UV blacklight.

Notes

  • VEML6070 vs VEML6075 vs SI1145: VEML6070 measures UVA only; VEML6075 measures both UVA and UVB dual channels; SI1145 calculates UV index indirectly from IR/Visible photodiodes.

Assets & downloads