Needless to say, quantifying the light output of these faintly glowing moicroorganisms in a small test tube takes some specialized equipment...
What we ended up with is an Arduino with a highly sensitive light sensor inside a copper pipe (to isolate the sample from outside light contamination) writing results to an SD card. We also added an LCD so that we could see results displayed real time.
Step 1: Materials
- TSL237S-LF Light to Frequency High Responsivity sensor (data sheet)
- 1/2" copper pipe + two endcaps
- Packet of black Sugru
- Adafruit Data logging shield + SD card to record data onto
- Spare set of earbuds with mini stereo plug
- "1-Gang Old Work" Electrical box for project enclosure, + cover, or a second electrical box for a taller arduino stack (see also Dirt Cheap Arduino Enclosure)
- Arduino Uno
- Optional: 16x2 LCD display
Most of this is the Arduino Uno ($30) + data logging shield ($20). Everything else is dirt cheap.
At the heart of our light meter is the TSL237S-LF, a highly sensitive Light-to-Frequency converter. This isn't your ordinary photoresistor or photodiode, mind you. Those devices measure light intensity based on voltage or current changes, which means that the smallest light intensity is determined by the smallest voltages or currents you are able to measure. A light-to-frequency converter like the TSL237, on the other hand, converts light intensity into a series of square-wave pulses. The lower the light, the slower the pulses. That means you can trivially increase the sensitivity by increasing the amount of time across which you count the pulses. Which means the lowest intensity is determined by the on-chip noise inside the sensor, resulting in occasional spurious pulses even without light coming in.
This particular sensor has a typical dark frequency of 0.1 Hz - one pulse every 10 seconds (and in practice, we've seen far fewer than that). With an irradiance responsivity of 2.3 kHz / (μW/cm2), that would correspond to 0.000043 μW/cm2. Converting from irradiance to illuminance (Lux) gets complicated because the latter depends on human brightness perception, but that would work out to no more than 0.0003 Lux. In comparison, other commercial light sensors typically bottom out around 0.1-0.2 Lux. If you want to go any more sensitive, you'd have to go to a photomultiplier tube that can literally count individual photons, but that puts you in a very different price range...
To illustrate how sensitive this sensor really is, as I was hooking up the sensor to the arduino, I was covering the sensor with my hand to see the signal drop, and I noticed that it didn't drop to zero - not even close. So I covered the sensor with my second hand... and it still didn't drop to zero! And of course, when we put the sensor inside the copper tube, it *does* go to zero. That means this sensor can see through both my hands - maybe 1.5-2 inch of meat and bones. Not bad for a $3.33 sensor!