Last Updated on March 16, 2024
Some Projects require UV light measurement but availability of full range UV sensor is questionable. Here is the solution, VEML6070 UV sensor from Vishay semiconductors. It can sense UVA band of Ultra violet wave, and this VEML6070 sensor provides I2C communication for easy external device interface.
VEML6070 UVV sensor Arduino Interface is very easy with breakout board because the sensor comes in surface mount package and you can easily get VEML6070 breakout board from online vendors.
VEML 6070
This sensor sense UVA light and incorporates photo diode, amplifiers and analog / digital circuits into a single chip using cmos process, VEML6070 is an advanced ultraviolet (UV) light sensor with I2C protocol interface and designed by the CMOS process. It is easily operated via a simple I2C command. The active acknowledge (ACK) feature with threshold windows setting allows the UV sensor to send out a UVI alert message. for more details refer VEML6070 datasheet.
It converts solar UV light intensity to digital data and it gives high dynamic detection resolution that is 16 bit resolution per channel. This sensor consumes 2.7V to 5.5V, for breakout board you can apply upto 5.5V and don’t go beyond.
Block diagram
VEML6070 Arduino I2C Interfacing
Connect Arduino and VEML6070 breakout board as, 5V, Gnd from arduino to Vcc and Gnd pin of Sensor breakout board and A4 arduino pin to SDA (for Uno A4 is SDA refer your arduino board SDA pin details if you use other Arduino board) finaly A5 arduino pin to SCL (for Uno A5 is SCL refer your arduino board SCL pin details if you use other Arduino board), In this project we dont use ACK pin hence there is no connection.
Install VEML6070 Arduino library from Adafruit before uploading the sketch.
Arduino Code for VEML6070
#include <Wire.h> #include "Adafruit_VEML6070.h" Adafruit_VEML6070 uv = Adafruit_VEML6070(); void setup() { Serial.begin(9600); Serial.println("VEML6070 Test"); uv.begin(VEML6070_1_T); // pass in the integration time constant } void loop() { Serial.print("UV light level: "); Serial.println(uv.readUV()); delay(1000); }
If I have two VEML6070 devices. How can I i2c get uv value from different devices using arduino UNO R3?
using ack?
thanks
You need to assign and address SDA and SCL for individual VEML6070 device. Refer Datasheet for more information.