Understanding SpO2 Sensor Circuit Design and Signal Processing Principles

Start with a photodiode (PD) paired to an infrared LED (940 nm) and a red LED (660 nm). Mount both emitters at a 5–12 mm distance from the detector–finger thickness dictates spacing. A TLC59731 or MAX30102 driver chip simplifies current modulation; pulse the LEDs at 200–500 Hz to reject ambient light.
Route the photodiode output through a transimpedance amplifier (TIA)–use an OPA333 with 1 MΩ feedback resistor for a 1 V/µA conversion. Add a second-order Sallen-Key low-pass at 5 Hz to remove high-frequency noise. Digitize the clean signal with a 16-bit ADC sampling at 1 kHz; the ADS1115 handles this with minimal external components.
Insert a DC restoration stage between the TIA and filter: sample the baseline during LED-off periods, then subtract it from the active signal. This cancels tissue absorption offsets and improves accuracy to ±2 % SpO₂ across 70–100 % saturation. A microcontroller–STM32F103 or ESP32–executes the RMS-to-DC conversion and applies Beer-Lambert calculations.
Power the circuit from a 3.3 V LDO; add ferrite beads on LED supply lines to block high-frequency switching noise. For clinical accuracy, include a temperature sensor (TMP112) near the probe–the LED forward voltage shifts 2 mV/°C, skewing readings.
Calibration requires a mock arterial blood simulator–run tests at 60 %, 80 %, and 98 % saturation with varying perfusion indices (0.1 % to 2 %). Store coefficients in EEPROM or flash; the ESP32 can serve both as controller and Bluetooth transmitter for mobile logging.
Pulse Oximeter Signal Pathway Blueprint

Connect the photodiode directly to a transimpedance amplifier with a feedback resistor between 100KΩ and 500KΩ to optimize signal strength without saturating the output. Red and infrared LEDs should share a common anode configuration, driven by separate PWM signals from a microcontroller like the STM32F103, with switching frequencies above 1kHz to avoid flicker interference in ambient light conditions.
Critical Component Selection
Opt for the SFH 2704 photodiode (or equivalent) for its peak spectral response at 940nm, closely matching the infrared emitter’s wavelength. Pair it with a low-noise op-amp such as the OPA333, which offers a noise density of 55nV/√Hz–critical for detecting faint pulsatile signals. Bypass capacitors (0.1µF) must be placed at both the amplifier’s power pins and the LED driver’s input to suppress high-frequency noise.
Use a 12-bit ADC (minimum) to sample the amplified signal, ensuring the sampling rate exceeds 100Hz to capture accurate pulse waveforms. Implement a moving average filter (window size: 5-10 samples) in software to smooth the signal without introducing phase delays. For ambient light cancellation, subtract a baseline measurement taken with both LEDs off from each reading.
Power the LEDs at currents between 10mA and 50mA, adjusting via PWM duty cycle rather than resistance to maintain consistent output intensity. A current-limiting resistor (e.g., 33Ω) in series with each LED prevents thermal runaway while allowing sufficient brightness. Ground the photodiode’s cathode to the analog reference voltage (typically half the supply voltage) to maximize dynamic range.
Include a test load resistor (1MΩ) across the amplifier’s input to verify functionality–its voltage drop should match the expected output for a known LED intensity. For safety, isolate the patient-contact side of the design using an optocoupler or galvanically isolated DC-DC converter, especially if the device shares a ground with other equipment.
Calibrate the system by comparing readings against a commercial oximeter under controlled conditions. Adjust the red/IR ratio threshold in firmware (typically 0.4–1.0 for healthy SpO₂ ranges) based on your component tolerances. Store calibration coefficients in EEPROM to account for LED aging and photodiode sensitivity drift over time.
Key Components for Building a Pulse Oximeter Sensor Assembly

Begin with a high-sensitivity photodiode matched to the chosen emitter wavelengths. For accurate blood oxygen readings, select a photodiode with:
- Peak sensitivity at 660 nm (red) and 940 nm (infrared)
- Low dark current under 1 nA to minimize noise
- Active area of 1–3 mm² for optimal signal capture
- Silicon or InGaAs material for broader spectral response
Examples: BPW34 (silicon), TEMD5010FX01 (InGaAs).
Pair the detector with dual-wavelength LEDs. Use discrete components rather than integrated packages for precise wavelength control. Critical specifications:
- Red LED: 660 ±10 nm, forward current 10–20 mA, power dissipation ≥100 mW
- Infrared LED: 940 ±20 nm, same current/power ratings
- Angle of emission ≤±20° to reduce tissue scattering
- Package: small-form SMD (e.g., 0805) for fingertip applications
OSRAM SFH4230 or Everlight EL-816 are reliable options.
Implement a transimpedance amplifier with a low-noise operational amplifier. Required characteristics:
- Input noise density
- Bandwidth from 0.1 Hz to 10 Hz to capture pulse waveform
- Feedback resistor 1–10 MΩ to convert photocurrent (nA range) to measurable voltage
- Input bias current
Use OPA333 or LT1028 for ultra-low noise performance.
Add a high-pass filter at 0.1 Hz and a low-pass filter at 10 Hz to isolate the pulse signal from respiratory variations and motion artifacts. Design considerations:
- First-order passive RC filter at 0.1 Hz (R=1.6 MΩ, C=1 µF)
- Second-order active filter at 10 Hz (Sallen-Key topology, Q=0.707)
- Cutoff frequencies should be tunable via trimmer resistors (1–5%)
Incorporate a microcontroller with a 12-bit ADC or higher. Key requirements:
- Sampling rate ≥100 Hz per channel (red/infrared)
- Differential input with ≥80 dB CMRR to reject common-mode noise
- Built-in DMA to offload CPU during data acquisition
- Low-power mode for battery operation (e.g., STM32L4, MSP430FR2xxx)
Ensure the MCU has sufficient flash (32 KB+) for signal processing algorithms.
Select a stable voltage reference for ADC accuracy. Guidelines:
- Output voltage: 2.048 V or 2.5 V (common ADC scales)
- Initial accuracy: ±0.1% or better
- Temperature coefficient: ≤20 ppm/°C
- Noise:
REF3025 or LT6655 are suitable for precision applications.
Use shielded cables for LED and photodiode connections to minimize EMI. Recommended:
- Flexible stranded wire (AWG 28–32) for patient comfort
- Twisted pair for each LED-photodiode pairing
- Overall shield: aluminum foil or braided copper with ≥85% coverage
- Ground the shield at a single point near the amplifier to avoid ground loops
Calibrate the assembly using a standardized oxygen saturation simulator or volunteer data. Critical steps:
- Measure R/IR ratio at known SpO₂ levels (e.g., 70%, 90%, 100%)
- Plot the R-curve (ratio vs. oxygen saturation) and store coefficients in MCU
- Verify compliance with ISO 80601-2-61 for accuracy (±3% over 70–100%)
- Test under motion (e.g., finger tapping) to ensure artifact rejection meets ≥90% success rate
Step-by-Step Schematic Design for Photoplethysmography (PPG) Detection

Begin with a dual-wavelength LED configuration–select 660 nm (red) and 940 nm (infrared) emitters–paired with a single photodiode (e.g., SFH 2440 or BPW34) positioned to maximize reflection-mode signal capture. Position the LED-photodiode distance at 5–10 mm for optimal pulsatile amplitude while minimizing ambient noise. Use a transimpedance amplifier (TIA) with a feedback resistor (Rf) of 1–10 MΩ to convert photodiode current into voltage; match the feedback capacitor (Cf) to 1–10 pF to set a cutoff frequency below 10 Hz, attenuating high-frequency interference without distorting the 0.5–4 Hz PPG band.
Component Selection and Noise Mitigation

| Component | Specification | Purpose |
|---|---|---|
| LED Driver (TLV5618) | 12-bit DAC, 10 μA–2 mA range | Precise current modulation for consistent LED output |
| Low-Pass Filter (op-amp) | Second-order Sallen-Key, fc = 8 Hz | Reject 50/60 Hz mains interference |
| Analog MUX (CD4051) | 8-channel, 100 ns switching | Alternate red/infrared sampling at 1 kHz |
| ADC (ADS1115) | 16-bit, 860 SPS | Capture PPG signal with >90 dB SNR |
Route traces for LED power and photodiode output on separate layers–keep analog and digital grounds isolated, connecting them at a single star point near the TIA. Use shielded cables for inter-board connections to reduce capacitive coupling; surface-mount components minimize parasitic inductance. Implement a right-leg drive (RLD) circuit with a unity-gain buffer to cancel common-mode noise by injecting an inverted copy of the interference into the subject’s body via a 100 kΩ resistor–this reduces baseline drift by >30 dB. Calibrate the system by adjusting LED currents to achieve equal DC levels for both wavelengths, ensuring the AC components of the PPG signal remain within 10–50% of the dynamic range to prevent saturation.
Signal Conditioning Techniques for Accurate Oxygen Saturation Readings
Implement a dual-stage amplification setup to mitigate noise in photoplethysmographic (PPG) signals. Use a low-noise operational amplifier like the AD8605 for the first stage, configured with a gain of 10–20, followed by a bandpass filter centered at 0.5–4 Hz to isolate the pulsatile component. Maintain a supply voltage within ±2.5V to prevent saturation while preserving signal integrity.
Apply synchronous demodulation to reject ambient light interference. Drive LED emission at 660 nm and 940 nm with a 1 kHz square wave, phase-locked to the receiver’s sampling window. Use a multiplier IC (e.g., AD633) to correlate the received signal with the reference waveform, then pass the result through a 10 Hz low-pass filter to extract the DC component.
- Select photodiodes with high responsivity at target wavelengths–SFH 2201 (for 660 nm) and BPW 34 (for 940 nm)–to maximize signal-to-noise ratio.
- Ensure optical shielding between emitter and detector using black ABS plastic or metal housing with >95% opacity to stray light.
- Calibrate the system against a clinical-grade co-oximeter in a controlled environment (22–25°C, 30–70% relative humidity) before deployment.
Normalize the PPG signal by dividing the pulsatile amplitude by the average DC level for each wavelength. This ratio cancels out variations in tissue thickness and perfusion. Store calibration coefficients in non-volatile memory (e.g., EEPROM) to adjust for sensor variability across devices.
Use a 16-bit ADC with a sampling rate of ≥250 Hz to capture the full dynamic range of arterial pulsations. Employ oversampling and decimation (e.g., 1000 Hz sampling with 4× decimation) to reduce quantization noise by ≥12 dB. Ensure the ADC reference voltage matches the amplifier’s output range to avoid clipping.
Reject motion artifacts by cross-correlating the two wavelength signals. If the correlation coefficient drops below 0.85, discard the sample and prompt the user to reposition the sensor. For continuous monitoring, implement a sliding window of 10–15 pulses to compute moving averages and detect deviations exceeding ±5%.
Reduce power consumption by duty-cycling LED emissions. Pulse the emitters at 10% duty cycle (e.g., 100 ms on, 900 ms off) and integrate the signal over multiple cycles. This extends battery life by 30–40% without sacrificing accuracy if the ADC’s sampling rate is synchronized with the LED pulse.
Validate the system against arterial blood gas measurements every 24 hours in clinical settings. For wearable applications, include a self-test mode that triggers when signal quality falls below thresholds (e.g., DC drift >10% or pulsatile amplitude