The AS7331 is AMS' latest UV light sensor for measuring UV radiation in three of the four UV divisions-- "UVA (400–315 nm), also called black light; UVB (315–280 nm), responsible for the radiation’s best-known effects on organisms; and UVC (280–100 nm), which does not reach Earth’s surface." The three channels are sensitive to 360 +/- 50 nm (UVA), 300 +/- 20 nm (UVB) and 260 +/- 20 nm (UVC). The sensor allows absolute measurements of the radiation fluence in these three channels at 16-bit resolution via simple I2C register reads with almost any microcontroller.
From the AS7331 data sheet: "The AS7331 is a low-power, low noise integrated UV sensor. The three separated UVA, UVB and UVC channels convert optical radiation signals via UV optimized photodiodes to a digital result and realize a continuous or triggered measurement....With its irradiance responsivity factor and conversion time, the AS7331 supports an overall huge dynamic range up to 3.43E+10 (resolution multiplied by gain range). It achieves an accuracy of up to 24-bit signal resolution (internal via I²C and shifter 16-bit), with an irradiance responsivity per count down to 2.38 nW/cm² at 64 ms integration time."
In other words, this sensor can measure anything UV (240 - 410 nm) from the smallest 5 mW UVC led (see below) to direct sunlight and everything in between. The measurements result in either raw counts or fully-calibrated fluence (uW/cm^2)
for each of three channels and are available by burst read of data registers using simple serial I2C commands. The sensor, breakout, and sensor driver I wrote are easy to configure and simple to use allowing you to focus on your UV measurement applications.
The breakout board is small (17.9 mm x 10.3 mm) with all control pins exposed to the user including VDD (3V3)/GND, I2C (SDA/SCL), A0/A1 for selecting I2C address for up to four sensors on the same bus, a data ready interrupt (RDY) and a sync pin (SYN) so two or more sensors can synchronize timing.
While the sensor can stand a maximum 5 V input, I would strongly recommend using the breakout only with 3V3-compatible microcontrollers. If you have to use a 5 V system, make sure to use a logic level translator.
You should only need to connect 3V3/GND, SDA/SCL and RDY to an MCU GPIO for interrupt to make the example sketch work. You can also drop the interrupt with small modifications to the sketch if polling is good enough for your application.
I have always been fascinated with light and spectral sensing. And the utility and popularity of my last AMS sensor project, the 18-channel AS7265X spectrometer made the current AS7331 UVA/B/C sensor a must try. In fact, the AS7331 3-channel UV sensor is a perfect complement to the 18-channel AS7265X; together this set of sensors can capture 21 channels of light intensity from 240 nm to 940 nm with ~ 20 nm FWHM per channel, providing a "full spectrum" measurement capability from the far UV to the near IR.
I used the AS7331 breakout to test a 5 mW (@30 mA), 120 degree UVC led. At ~10 cm distance I measured 12 uW/cm^2 in the UVC channel with 6.3 V power supplied by a booster here is the led driver I used). Of course, I measured essentially zero with the led off. At 10 cm distance, 12 uW/cm^2 indicates a source of 12 x 4/3 x pi x 100 uW ~ 5 mW, just what it should be. I wouldn't necessarily use this sensor for calibration of UV led sources, but it does seem to be pretty accurate for UV led function testing based on this simple experiment.
My applications also include environmental sensing. This sensor has high (2.4 nW/cm^2) resolution and a large dynamic range (3.43 x 10^10, more than ten orders of magnitude!) so should work well to measure solar UV variations in long-term environmental data logging devices.
One thing I like about this sensor is that the typical calibration data is included in the data sheet (and I have incorporated it into my Arduino sketch) such that the output provides for absolute radiative fluence (uW/cm^2) rather than just relative signal strength. There aren't very many UV light sensors out there at all, and this is the only one I am aware of that provides measurements beyond the usual UV index output.
Small, easy to use breakout board makes measuring absolute UV radiation fluence with almost any I2C-capable microcontroller simple and intuitive.
Well-commented Arduino sketch shows how to configure the sensor, set up the data ready interrupt, power it down and up and output both raw data counts and absolute fluence for all three channels.