PPG heart‑rate front end and PCB

The comparator chattered because its hysteresis was too small. One resistor fixed it: R8 to 100 kΩ, a 96 mV band on the scope, and a clean output at 2.174 Hz.

Front end
LTC6078 transimpedance, ≈2.1 MΩ / 10 nF
Board
KiCad, fabricated by JLCPCB
Verified
Tektronix TDS 2012B and LTSpice
The bare PPG Sensor board from JLCPCB: green solder mask, white silkscreen, footprints for U1 to U4, Q1 to Q3, and a heartbeat glyph.
The bare board, back from JLCPCB.

How the PPG front end was fixed

LED driverPhotodiodenA on a DC biasLTC6078 TIA≈2.1 MΩ / 10 nFAC couplingGainsecond stageSchmittR8 sets hysteresisMonostableBJTLTSpice predictionlies inside ±10 msCH1 2.00V CH2 100mVM 500msM 10.0msR8wrong ratio100 kΩ

  1. The chain: LED and photodiode, an LTC6078 transimpedance stage pulling nanoamps off a large DC bias, AC coupling, gain, a Schmitt trigger, a BJT monostable.
  2. On the scope: the photodiode signal, and a comparator that chatters every time the signal wanders across its threshold.
  3. Too little hysteresis, from the wrong feedback ratio. R8 to 100 kΩ gave a 96 mV band, and the output snapped clean at 2.174 Hz.
  4. Zoomed to 10 ms per division, the measured timing sits within ±10 ms of the LTSpice prediction.

Signal chain

An LED driver and a photodiode, then an LTC6078 transimpedance stage, about 2.1 MΩ with 10 nF, recovering nanoamp photocurrent riding on a large DC bias. After that: AC coupling, a second gain stage, a Schmitt trigger, and a BJT monostable.

The chatter

The comparator chattered at threshold. The cause was too little hysteresis from the wrong feedback ratio. I changed R8 to 100 kΩ and measured the band with scope cursors: 96 mV. The output held steady at 2.174 Hz.

Timing

Measured timing came in within ±10 ms of the LTSpice simulation.

Board

Laid out in KiCad, fabricated by JLCPCB, and verified on the bench.

KiCad render of the PPG Sensor board layout, top side.
The layout in KiCad.
Tektronix capture of the monostable stage: cursors read Δt 170.0 ms.
The monostable stage on the scope, 27 March 2026.