Skip to product information
1 of 4

MikroElektronika

UV2 click

UV2 click

SKU:MIKROE-2378

Regular price Rs. 1,999.00
Regular price Sale price Rs. 1,999.00
Sale Sold out
Taxes included.

Out of stock

UV 2 click is a mikroBUS™ add-on board with a VEML6075 UVA and UVB light sensor. VEML6075 is a CMOS chip that incorporates a photodiode, amplifiers, and analog/digital circuits.

With UV 2 click, Solar ultraviolet light intensity is converted to 16-bit digital values. UVA and UVB are in separate channels. To keep a stable output in changing temperature conditions, the chip has temperature compensation capabilities. This ensures reliable performance under long term UV exposure.

The sensor has a specified UVA sensitivity of 365 nm and UVB sensitivity of 315 nm

The board communicates with the target MCU through the mikroBUS™ I2C interface. Designed to use a 3.3 power supply only.

Specification

Type Optical
Applications Systems that warn of excessive UV exposure, or industrial applications where UV is used for sterilization
On-board modules VEML6075 UVA and UVB light sensor
Key Features UVA sensitivity: 365 nm; UVB sensitivity 315 nm
Key Benefits Temperature compensation for long-term reliability
Interface I2C
Input Voltage 3.3V
Compatibility mikroBUS
Click board size S (28.6 x 25.4 mm)

Features and usage notes

The sensor has a specified UVA sensitivity of 365 nm and UVB sensitivity of 315 nm). Measurement results are stored in four separate registers. The last result read will remain in the register until a new measurement is loaded. In addition to UVA and UVB it has UVD (a dummy channel for dark current cancellation), UVcomp1, and UVcomp2. All registers are accessible via I2C communication.

The board communicates with the target MCU through the mikroBUS™ I2C interface. Both standard (100 kHz) and fast (400 kHz) I2C is supported. Designed to use a 3.3 power supply only.

The chip vendor provides a separate Application Note sheet with detailed specifications on how to derive UV radiation values from the sensor readings. For reference, here we provide an explanation of UVA and UVB, taken from the Application Note sheet:

The UVB rays - wavelengths ranging from 280 nm to 320 nm - are extremely energetic and harmful for the skin to the extent that they are responsible for 65 % of skin tumors. Thankfully, only 0.1 % of the solar energy that arrives on the earth’s surface is in the shape of UVB radiation.

The UVA rays - wavelengths ranging from 320 nm to 400 nm - are less powerful than the previous ones, but highly penetrating. They are capable of reaching the skin, becoming responsible for photoaging and promoting the onset of different forms of skin cancer. 4.9 % of the solar energy is made up of UVA rays.

Programming

Code starts up the UV 2 click, reads the UV index and prints it out on the TFT board.

 1 #include 
2 #include "resources.h"
3 
4 uint8_t uv2_get_8bit(uint8_t reg)
5 {
6 uint8_t tempreg = reg;
7 uint8_t temp = 0;
8 I2C1_Start();
9 I2C1_Write(0x10, &tempreg,1,END_MODE_RESTART);
10 I2C1_Read(0x10,&temp,1, END_MODE_STOP);
11 }
12 
13 uint16_t uv2_get_16bit (uint8_t reg)
14 {
15 uint8_t temp[2] = {0};
16 uint16_t retval = 0;
17 uint8_t tempreg = reg;
18 
19 I2C1_Start();
20 I2C1_Write(0x10, &tempreg,1,END_MODE_RESTART);
21 I2C1_Read(0x10,temp,2, END_MODE_STOP);
22 
23 retval = (uint16_t) temp[0];
24 retval |= ((uint16_t) temp[1]) << 8;
25 
26 return retval;
27 }
28 
29 float get_uv_index()
30 {
31 float UVA = 0.0;
32 float UVB = 0.0;
33 float UVcomp1 = 0.0;
34 float UVcomp2 = 0.0;
35 float UVD = 0.0;
36 float UVAcomp = 0.0;
37 float UVBcomp = 0.0;
38 float UVI = 0.0;
39 float UVAresp = 0.0011;
40 float UVBresp = 0.00125;
41 
42 float a = 3.33;
43 float b = 2.5;
44 float c = 3.66;
45 float d = 2.75;
46 
47 UVA = (float) uv2_get_16bit(0x07);
48 UVD = (float) uv2_get_16bit(0x08);
49 UVB = (float) uv2_get_16bit(0x09);
50 UVcomp1 = (float) uv2_get_16bit(0x0A);
51 UVcomp2 = (float) uv2_get_16bit(0x0B);
52 
53 UVAcomp = ( UVA - UVD ) - a * ( UVcomp1 - UVD ) - b * ( UVcomp2 - UVD );
54 UVBcomp = ( UVB - UVD ) - c * ( UVcomp1 - UVD ) - d * ( UVcomp2 - UVD );
55 
56 UVI = ( (UVBcomp * UVBresp) + (UVAcomp * UVAresp) ) / 2;
57 
58 return UVI;
59 }
60 
61 void InitMCU()
62 {
63 I2C1_Init_Advanced(100000, &_GPIO_MODULE_I2C1_PB67);
64 Delay_ms(100);
65 }
66 
67 void DrawFrame() {
68 TFT_Init_ILI9341_8bit(320, 240);
69 TFT_Fill_Screen(CL_WHITE);
70 TFT_Set_Pen(CL_BLACK, 1);
71 TFT_Line(20, 220, 300, 220);
72 TFT_LIne(20, 46, 300, 46);
73 TFT_Set_Font(&HandelGothic_BT21x22_Regular, CL_RED, FO_HORIZONTAL);
74 TFT_Write_Text("UV2 Click Board Demo", 25, 14);
75 TFT_Set_Font(&Verdana12x13_Regular, CL_BLACK, FO_HORIZONTAL);
76 TFT_Write_Text("EasyMx PRO v7 for STM32", 19, 223);
77 TFT_Set_Font(&Verdana12x13_Regular, CL_RED, FO_HORIZONTAL);
78 TFT_Write_Text("www.mikroe.com", 200, 223);
79 TFT_Set_Font(&TFT_defaultFont, CL_BLACK, FO_HORIZONTAL);
80 }
81 
82 void main()
83 {
84 float uvindex = 0.0;
85 char read[3];
86 uint16_t read16 = 0;
87 int setup[3];
88 char txt[20];
89 
90 DrawFrame();
91 
92 setup[0] = 0x00;
93 setup[1] = 0x00;
94 setup[2] = 0x00;
95 
96 InitMCU(); // Initialize MCU
97 
98 I2C1_Start();
99 I2C_Write(0x10, setup, 2, END_MODE_STOP);
100 
101 while(1)
102 {
103 uvindex = get_uv_index();
104 floattostr(uvindex, txt);
105 
106 TFT_Set_Font(&TFT_defaultFont, CL_BLACK, FO_HORIZONTAL);
107 TFT_Write_Text(txt, 30, 100);
108 
109 delay_ms(500);
110 TFT_Set_Font(&TFT_defaultFont, CL_WHITE, FO_HORIZONTAL);
111 TFT_Write_Text(txt, 30, 100);
112 }
113 
114 }

Code examples that demonstrate the usage of UV 2 click with MikroElektronika hardware, written for mikroC for ARM, AVR, dsPIC, FT90x, PIC and PIC32 are available on Libstock

View full details

New Products

1 of 25