UV Readings from VEML 6075

I have this sensor connected to a Breakout Garden on a Pi 0 with an official Pi power supply, and it provides very responsive readings but I don’t think that they’re quite accurate.

Attached is a graph with a small spike behind glass, and then a high spike for what was a bright, yet low-sun winter’s day. The UVB I reading was 9, which is hard to believe this time of year.

I’ve had a look around some boards, and others are reporting this issue too but I couldn’t find a work-around or calibration method.


Does anyone have a fix for this?

Cheers :)

I found this:


It’s a bit deep but there is a mention of compensation values on the top of page 6.

It may not be related, but be aware that most glass and clear plastics block UV light. The windows in your house will usually filter out UV light. Unless you live in a really old house. Same deal with car windshields. They filter it out. I’m thinking they may even reflect it back to its source.
Also, the time of year doesn’t affect UV light readings as much as you might think. A bright sunny day is a bright sunny day. And can get you a high UV reading even on a cold winter day. I’ve seen it with my Si1145.

I have a VEML6075 but haven’t done very much with it as of yet. Only just got it a while ago and only just verified that it worked. I want to replace my Si1145 with it. My plan is to use fused quartz glass as a protective cover. Microscope slides that I got from my dogs veterinarian. The long thick base part, thats about the size of a stick of gum.

Thanks, very informative if a bit over my head ;)


Yeah, the diminishing effect of glass / plastic was on my mind and in another test I got readings of 4+ for the UVA Index behind glass!

I’ve just wondered if the UVA and UVB Index readings from the sensor have to be combined somehow to calculate the UV Index that I am familiar with?

The example file has this, if you can figure it out.

uva, uvb = uv_sensor.get_measurements()

    uv_comp1, uv_comp2 = uv_sensor.get_comparitor_readings()

    uv_indices = uv_sensor.convert_to_index(uva, uvb, uv_comp1, uv_comp2)

    print('UVA : {0} UVB : {1} COMP 1 : {2} COMP 2 : {3}'.format(uva, uvb, uv_comp1, uv_comp2))

    print('UVA INDEX: {0[0]} UVB INDEX : {0[1]} AVG UV INDEX : {0[2]}\n'.format(uv_indices))

I haven’t begun to tinker around with mine yet, I’ve only just run the example to verify it reads something. Too cold outside to play with it and get good readings, lol. I’ll likely just display and use the AVG UV INDEX:

I want to replace my Si1145 as it doesn’t really measure UV light. It measures ambient and IR and calculates what the UV index “should” be based on that. Pluses and minus’s. It does all the math for me which made the coding easy. It also appears to work just fine with a clear plastic window over it.
The minus side is, to replace it I need two sensors to do what I want, the VEML6075 to read the UV, and an LTR-599 to measure the ambient light level.