Sometimes people forget that light-emitting diodes can also detect light
quite well. They're usable in a wide range
of applications as inexpensive, readily
available optical detectors. Typically, an
LED detects light at a wavelength somewhat shorter than the light it emits, making it a wavelength-selective detector.
For example, an LED that emits greenish-yellow light at a peak wavelength of
about 555 nm detects green light at a
peak wavelength of about 525 nm over a
spectral width of about 50 nm.
Almost all LEDs can detect a relatively
narrow band of wavelengths, with varying sensitivity. In fact, a standard LED
can perform double duty in the same circuit without changing its physical or electrical connections. Figure 1 shows a very
simple microcontroller-based circuit that
can alternately emit and detect light
using just two I/O pins on the microcontroller and an LED and resistor. The circuit can be used as a smart light switch,
high-resolution dimmer, code detector,
smoke detector, etc.
Because LED photodiodes are considerably less sensitive than commercial
photodiodes (with a photocurrent about
10 to 100 times smaller), direct measurement of the photocurrent is difficult without amplification. Typically, it requires a picoammeter and expensive operational
amplifiers.
However, most modern microcontrollers have bidirectional I/O ports with
configurable internal pull-ups or tri-state
(high-impedance) inputs. Using a high-impedance input, the circuit can make a
very accurate and precise measurement
of the photocurrent by employing a simple threshold technique and the microcontroller's built-in timer-counter.
In detector mode, the LED "charges"
to +5 V very quickly (100 to 200 ns). This
charge is sustained by the diode's inherent capacitance, typically 10 to 15 pF
(Fig. 2, Step 1). Then P1 on the microcontroller is switched to the high-impedance mode (approximately 1015- Ω resistance), Step 2. Under reverse-bias
conditions, a simple model for the LED is
a capacitor in parallel with a current source, iR(φ), which represents the current induced by light intensity . The
model includes leakage current iL
through P1, which, at about 0.002 pA
typically, is insignificant when compared
to a typical photocurrent iR(φ) of 50 pA
through the diode in normal ambient
lighting. Figure 3a shows the experimental results of the LED discharging, VP1(t),
for φ1 and φ2, where 2 > φ 1.
A software routine (written for 16-bit
timer-counter TCNT1 on the 8-bit microcontroller) continually polls VP1(t)
through its digital equivalent, the logic
state of P1, until the logic 0 threshold
VTR (approximately 2.2 V) is reached. The
decay time Td, in microseconds, is proportional to the amount of light detected
and, therefore, measures the diode photocurrent, iR(φ). As the amount of light
received increases, the diode discharges
more rapidly and Td decreases, and vice
versa (Fig. 3a, again).
If the decay time is more than a user-specified light-intensity threshold, represented by Tdcr (critical), the microcontroller can switch the LED on and it
emits light as an alarm (Fig. 2, again,
Step 3). In addition, other pins on the
microcontroller can be used as relay
outputs or light-controlled, pulse-width-modulation outputs. Figure 3b shows
the voltage output at P2 during the
operating steps.
This very low-cost approach provides
an inherently digital measurement of light intensity without amplification. Its
signal-to-noise characteristics are excellent, due to the signal integration over
the measurement. The technique improves the sensitivity of the photodiode, making it more attractive than a
conventional (and more expensive) photodiode. A conventional photodiode discharges the capacitance much more
quickly, making time-based measurement more difficult and expensive.
The C code listing for this application
can be found at ED Online 15980 at
www.electronicdesign.com. The code
was written for Atmel's AT90S2313 AVR
microcontroller, using the CodeVision
AVR compiler. However, other microcontrollers, including those from Microchip
Technology (PIC) and Texas Instruments
(MPS430), are also suitable.