LM358 Photodiode Light Meter

Turn light into a millivolt reading using a BPW34 photodiode and an LM358 transimpedance amplifier.

Difficulty: Breadboard. Estimated build time: about 45 minutes. Estimated parts cost: about US$3.50. 9-line bill of materials. Compare supplier offers when available. A simple light meter that converts the tiny photocurrent from a silicon photodiode (a few microamps in room light, hundreds of microamps in direct sun) into a clean output voltage you can read on any multimeter or feed into an MCU's ADC.

Set up dual-supply or virtual ground

The LM358 is single-supply but its output cannot swing all the way to the negative rail unless the input is also above ground. Easiest path on a breadboard: use a 9 V battery and create a virtual ground at half-supply with two equal resistors and a bulk capacitor. Tie the photodiode's cathode to virtual ground; this gives the op-amp room to swing both directions if you ever flip the diode.

Place the photodiode in photovoltaic mode

Connect the BPW34's anode (longer lead) to the LM358 inverting input (pin 2) and the cathode (shorter lead, marked side) to virtual ground. In this configuration the diode generates a current proportional to incident light, with essentially zero voltage across it — that is the linear region.

Wire the transimpedance feedback

Connect a 1 MΩ resistor from pin 1 (output) back to pin 2 (inverting input). This is the gain element: V_out = I_photo × R_f. Add a 10 pF compensation capacitor in parallel with the 1 MΩ — without it, the op-amp will oscillate at the parasitic capacitance roll-off frequency.

Tie the non-inverting input to virtual ground

Connect pin 3 to virtual ground through a 100 kΩ resistor; this pins the operating point and matches input bias currents. Place a 100 nF ceramic capacitor across the LM358's V+ (pin 8) and GND (pin 4) for supply bypass.

Read the output

Power the circuit. With the photodiode in dim room light expect 100 mV–500 mV at the output; cover it with your hand and the output should drop to a few millivolts (the op-amp's input offset). Shine a phone flashlight on it and the output should jump to several volts. If you swap R_f to 100 kΩ you trade gain for speed — useful if you want to feed the output into a fast ADC.