Dead simple PPG

Photoplethysmography (PPG) uses light to detect small changes in blood volume and is most commonly used for measuring heart rate. It is possible to buy a PPG-in-a-package that is smaller than a pinky nail. The MAX30101 comes in at just 5.6 mm x 3.3 mm and it doesn’t just measure heart rate — it does pulse oximetry as well. What I demonstrate here isn’t nearly as small or as capable, but you can build it with parts from your junk bin.

Pulsatile signal from dead simple PPG. I’m alive!

This dead simple PPG needs just an LED, a light dependent resistor (LDR), two resistors, and a power supply. The LDR and one of the resistors make a voltage divider across the power rails (5 V in my case). The LED is powered from the same supply, with the final resistor acting to limit current. The resistor that forms the voltage divider with the LDR was chosen to be somewhere in the middle of the LDR’s resistance swing. I used an oscilloscope to view the pulse waveform, but a microcontroller with an ADC would do as well. The breadboarded circuit and schematic can be seen below.

Breadboard layout of circuit.
Circuit schematic of the dead simple PPG.

This design can be greatly improved — or scrapped and redesigned from scratch. A photoresistor is not the right sensor for the job. It isn’t as sensitive as a photodiode and its current consumption (at least in this circuit) isn’t anything to write home about. The best signal I measured with this setup was 15 mV (peak-to-peak). Some signal conditioning (amplification) before sample acquisition would be beneficial.

Despite the improvements that this simple design is desperately begging for, it demonstrates two things. First, I have a pulse. Second, anyone with 10 cents worth of components can measure their own pulse. (The oscilloscope is handy, but an Arduino would do in a pinch.) Hopefully, this project will inspire you to get started with (simple and safe) biohacking.