Disclaimer: This article falls under the Good Samaritan Law. Although we’re trying to take every …
After building the NukeBox, I wanted a way to measure real values for the light intensity. Theoretical models are nice, but since the stakes are so high, I wanted to see how much theory deviated from reality. What I needed was a sensor that would allow me to quantify the actual light intensity and compare it with the theoretical values calculated in the previous post. After doing some research, I picked up a cheap little module with a UV photodiode on it. These modules normally go for $2.50, although I paid a bit extra to get it fast from Amazon Prime. So let’s get to it…
NukeMeter is a device that allows you to measure the intensity of UV-C light put out by standard germicidal bulbs. It relies on a low-cost sensor and some open source hardware and software. For the prototype in this HOWTO, total cost in materials is ~$2.50 for the sensor module and around $3 for the Arduino-compatible board if you get them off eBay.
A photodiode generates current when it’s exposed to light. A common example of it is a solar panel. This particular photodiode, the GUVA-S12SD, is sensitive to light from 240 nm to 370 nm. This takes it through the complete UV-A to UV-C ultraviolet bands. The specific wavelength of light we’re interested in is 254 nm which is the output wavelength of the UV-C bulbs.
To measure the intensity, we’re going to rely on a specific property of these bulbs, which is over 95% of their UV light output is in the 254 nm wavelength. The typical emission spectrum for low pressure mercury bulbs, the standard germicidal bulbs, look like this:
Because most of the light is at a particular wavelength within the UV bands, we won’t need to play around with light filters or do any specific tricks to get the light intensity. We can assume that almost all the light is UV-C at 254 nm and just add a derating factor of something like 2-5% from the calculated value.
Now we need to jump into the datasheet for the photodiode since it holds key information we’ll need to calculate the light intensity. One of the important parameters to take note of is the active area of the photodiode. This is the portion that is excitable by UV light and will generate current. If we take the power hitting the diode and divide by the active area, that will give us the light intensity in mW/cm^2.
Another important figure in the datasheet is the responsivity curve. This describes how responsive the photodiode is to different wavelengths of UV light. The responsivity at 260 nm (~254 nm) is approximately 0.04 A/W (amps per watt). This relationship means that if we can measure the output current of the photodiode, we can get the total power of incoming UV light on it which should be almost all at 254 nm. Once we have the total power, we just need to divide by the active area and that will give the intensity at that point:
Intensity = (Total power) / (Active Area)
Now that we have our strategy sorted for getting the intensity, the next challenge is to get the photodiode to spit out the current. Once we have the value for the diode current, we can convert that to the intensity based on what was just discussed. Typical photodiode currents are extremely small, usually measured on the order of nano-amperes or billionths of an ampere. To measure currents this small, we (electronics people) usually use a mechanism called a transimpedance amplifier.
A transimpedance amplifier is just an op-amp in a specific configuration. It usually uses a huge feedback resistor that provides what’s called transimpedance gain, or essentially converts a very small current into a measurable voltage. Luckily, the cheapie UV photodiode module comes with a transimpedance amplifier. Here is the schematic circuit diagram for the module courtesy of Proto Supplies:
If you want the gory details, here’s a rough play-by-play. Otherwise, you might want to skip the next two paragraphs. The photosensor is exposed to UV-light and puts out a current, say 100 nA. The 10 megaohm (10M) resistor converts that current to 1V. The 3.3k and 1k resistor divider means that the voltage at pin 1 of the op-amp will be at 4.3V. At this point, we’re actually pretty good. Unfortunately the designer of the module fed the output to a second amplifier stage with a gain of 6. That would put the final output voltage at over 25V which is not possible with a 5V supply. That just means the output voltage would saturate at 5V and we wouldn’t be able to get any information from that value. Needless to say, this module was designed for measuring very weak UV light, i.e. outdoor sunlight. We’ll have to do a bit of surgery on the module if we want to use it to measure the UV-C germicidal lamps at fairly close range.
Luckily the modifications aren’t too bad. We mainly just need to nullify the second amplifier’s gain. That means the voltage at the output of the first op-amp will be the same voltage we measure at the output of the second. In other words, we want it to have a gain of 1. To do this we need to remove the 1k resistor and change the 5.1k resistor to 0 ohms. In this configuration, the second op-amp is in a follower configuration or follows the input. There are very useful purposes for follower circuits, but not really in this case. I’m just trying to avoid cutting the circuit board directly.
Now that the modifications are done, we’ve finished our game plan for measuring the intensity of UV-C light. It consists of the following:
- Place sensor in location we want to measure the intensity.
- Assuming the light is turned on, measure voltage at output.
- Convert the voltage to current using the following formula:
(Current from diode) = (Ouptut Voltage) / (Voltage Gain * Transimpedance Gain)
where Voltage Gain = 4.3 (due to the resistor divider) and transimpedance gain is 10^7.
- Convert the current to total incident power on diode
(Total Power) = (Current from diode) / (Responsivity at 260 nm)
Where Responsivity at 260 nm is found from the datasheet to be 0.04 A/W.
- Finally divide the total power by the excitable active area of the diode to get intensity. You’ll also have to fiddle around with the units a bit to get the intensity in mW/cm^2, too.
Intensity = (Total Power) / (Active Area)
where the active area is 0.076 mm^2 or 0.00076 cm^2.
Yay! We can now measure the intensity of the UV-C lights.
Here’s a shot of the photodiode module mounted on a breadboard. Incidentally, this is the Hackerfarm FredBoard, a board we designed for teaching Arduino workshops at Hackerfarm.
Some modifications will be necessary on the sensor module board. If you don’t feel comfortable with soldering and removing/placing surface mount components, I highly recommend contacting a local hackerspace and inquiring about getting some help.
Now that the sensor board is modified, we can mount it in our test fixture and measure the UV-C light intensity. But first….SAFETY!!!
Cover up all exposed skin and wear protective UV-blocking eyewear.
I started off by taping the sensor to my bench which will be my test fixture. In this experiment, I’m only using the Arduino to provide a 5V supply to the sensor module. I’m manually reading the voltage output using a multimeter.
I then turned on the UV-C light and covered the sensor. I also made sure the sensor was placed directly underneath the light bulb in the center.
The voltage coming from the sensor was 1.5869V according to my benchtop multimeter. This corresponds to a whopping 37 nA or 37 billionths of an ampere.
Going through the calculations we outlined above, this gives us an incident power of 1.21 mW/cm^2. From the previous NukeBox post, we calculated 1.364 mW/cm^2. So the actual intensity seems to correlate with the theoretical model pretty well.
Now that I’m able to measure the intensity of the UV-C bulbs, I decided to automate it. I connected the output of the sensor module to the “Analog 0” (A0) pin of the Arduino. I then wrote some Arduino code to automatically capture and calculate the UV-C light intensity.
You can find the software at the hackerfarm github repo here.
This allowed me to do some interesting things. I first wanted to check how the light intensity of the UV-C bulbs varied with time. I heard that they needed a specific warmup time so I thought I’d try and see for myself.
I kept the lamp off for a few minutes. This was also a good time to take a break and go out for a walk. When I returned, I turned the lamp on and recorded the intensity values. You can see that the lamp does need a specific warmup time. One minute gets you around 80% of the way there and by 5 minutes, you’ve pretty much stabilized.
I also decided to check the intensity variance along the axis of the lamp bulb. The ideal intensity model assumes the lamp is uniformly radiating and an infinitely long bulb. I wanted to check how much reality deviates from the ideal model.
I was surprised to find that there was very significant deviation in the light intensity depending on the location along the bulb axis. The two ends of the bulb were the weakest radiators whereas the center of the bulb was unsurprisingly the strongest. This means that the intensity variation would need to be taken into account when using the lamp as a sterilizer.
I think there’s a lot that can be improved with NukeMeter. One of the most obvious improvements would be to calibrate it against a known reference. This could be a calibrated UV-C sensor or with a known source and known intensity a distance X away from it. If anyone knows a lab that can help us with calibration, that would be amazing!
I also think that it could be packaged up in an easy-to-use fashion so that non-electronics professionals would be able to use it out of the box.
I’ll probably be adding more to NukekBox and NukeMeter so stay tuned.
Stay safe everyone and lots of love and admiration from HackerFarm 🙂