Status: completed LTspice simulation study of the analog signal-conditioning path; documentation and reported-result checks are reproducible, while the original LTspice schematics, PWL stimulus, and raw waveform exports are not yet included.
This project studies a photodiode readout chain for recovering a noisy 1 kHz optical modulation. The implemented analog path combines a photodiode equivalent model, an AD8629 transimpedance amplifier (TIA), and a second-order unity-gain Sallen-Key low-pass filter. A downstream AD4000-based behavioral experiment and Python analysis were also explored, but are presented separately from the verified analog-core claims.
The work was completed as a self-directed academic simulation project using LTspice and Python in September 2025.
The strongest result is the analog bandwidth hierarchy:
- the TIA uses (R_F=53.6\ \text{k}\Omega) and (C_F=2.7\ \text{pF}), giving a calculated feedback pole of 1.10 MHz and a reported simulated (-3\ \text{dB}) bandwidth of 1.07 MHz;
- the filter uses (R_1=R_2=10\ \text{k}\Omega), (C_4=11\ \text{nF}), and (C_5=22\ \text{nF}), giving (f_0=1.023\ \text{kHz}) and (Q=0.707);
- reported post-processing gives 17.68 dB system-level SNR and 2.64-bit system-equivalent ENOB, showing that analog noise and signal scaling - not ideal 16-bit quantization - limited the simulated chain.
The project therefore demonstrates signal conditioning and, equally importantly, identifies the gain, headroom, bandwidth, and model-fidelity issues that must be resolved before treating the chain as an implementation-ready data-acquisition system.
The first three blocks form the primary analog-front-end result. The ADC and Python blocks are retained as a supplementary mixed-signal exploration.
| Item | Value | Qualification |
|---|---|---|
| Photocurrent stimulus | (10\ \mu\text{A}) DC + (5\ \mu\text{A}) at 1 kHz | Reported input model |
| Added current-noise term | (1\ \mu\text{A}) | Reported Gaussian stimulus term |
| Photodiode junction capacitance | 11 pF | Schematic value |
| TIA feedback network | 53.6 kOhm / 2.7 pF | Schematic values |
| TIA feedback pole | 1.100 MHz | Recomputed from (R_FC_F) |
| TIA simulated bandwidth | 1.07 MHz | Reported (-3\ \text{dB}) point |
| Sallen-Key natural frequency | 1.023 kHz | Recomputed |
| Sallen-Key quality factor | 0.707 | Recomputed; Butterworth alignment |
| Signal RMS | 0.1870313 V | Reported Python result |
| Analog-noise RMS | 0.0244340 V | Reported Python result |
| Quantization-noise RMS | 10.68 uV | Reported Python result |
| System-level SNR | 17.68 dB | Recomputed from reported RMS values |
| System-equivalent ENOB | 2.64 bits | Recomputed from reported SNR |
Machine-readable values and provenance are available in results/.
The simulation used a current source in parallel with an 11 pF junction capacitance. The report stimulus was
with (I_{DC}=10\ \mu\text{A}), (I_{AC}=5\ \mu\text{A}), (f_m=1\ \text{kHz}), and a reported (1\ \mu\text{A}) Gaussian noise term. Series and shunt resistances were omitted, so this is a reduced photodiode model rather than a complete device model.
The AD8629 TIA is biased near mid-supply and uses a parallel (R_F-C_F) feedback network:
The reported simulated (-3\ \text{dB}) point of 1.07 MHz is within approximately 2.7% of this first-order design value.
The original report states that the output moves from 1.6 V to 3.3 V for a 0 to 90 uA sweep. Those endpoints imply only 18.9 kV/A, not the 53.6 kV/A set by (R_F). They also conflict with a stated 4.9 V design limit while the shown TIA supply is 3.3 V. The sweep is therefore retained as reported evidence, but it is not used as a verified linear-transimpedance claim.
The unity-gain Sallen-Key stage uses equal resistors and a 2:1 capacitor ratio:
This is a second-order low-pass response. It suppresses content above the signal band, but does not reject DC or low-frequency drift. Because the 1 kHz signal lies close to (f_0), amplitude attenuation and phase lag are expected at the signal frequency.
The report explored an AD8615 buffer, an AD4000-labeled behavioral block, quantized waveform export, FFT analysis, and signal reconstruction.
This section is intentionally not presented as a hardware-accurate AD4000 interface:
- the shown 5 V
Vddconnection does not match the AD4000 data sheet's 1.8 V core-supply requirement; - the shown CNV period is 100 us, corresponding to a 10 kS/s conversion trigger;
- the reported 3.3556 MHz value was derived from exported simulator time steps and is not the ADC conversion rate;
- serial code readout through CNV/SCK/SDO was not documented.
The post-processing values are therefore treated as system-level behavioral metrics, not intrinsic AD4000 performance.
For the reported RMS quantities,
| Verification item | Status |
|---|---|
| Analog topology and component values | Documented |
| DC, AC, and transient plots | Documented in the supplied report |
| Equation and summary-metric recomputation | Reproducible with included Python script |
Original LTspice .asc schematics and netlists |
Not supplied |
| Original PWL stimulus and raw waveform data | Not supplied |
| Original ADC export and analysis source | Not supplied |
| Device-noise decomposition and tolerance analysis | Not completed |
| Hardware measurement, PCB, layout, or silicon | Not completed |
python -m pip install -r scripts/requirements.txt
python scripts/verify_reported_metrics.py
python scripts/plot_summary.py
python scripts/build_technical_report.pyGenerated plots are written to results/generated/, and the report builder refreshes the corrected public PDF from the committed figures. These scripts validate the published arithmetic and summary tables; they do not recreate the absent LTspice simulations.
For a full simulation replay, add the original .asc files, permitted vendor macromodel references, photocurrent.txt, exported waveform data, and the original Python analysis source under the locations described in sim/README.md.
photodiode-sensor-afe-ltspice/
|-- docs/
| |-- figures/
| |-- Photodiode_Sensor_AFE_Technical_Report.pdf
| `-- verification_notes.md
|-- results/
| |-- design_parameters.csv
| |-- reported_metrics.csv
| `-- verification_checks.csv
|-- scripts/
| |-- verify_reported_metrics.py
| |-- plot_summary.py
| `-- requirements.txt
|-- sim/
| `-- README.md
|-- CITATION.cff
|-- LICENSE
`-- README.md
- Re-run the TIA DC sweep with a current range consistent with (R_F), (V_{REF}), and the 3.3 V output headroom.
- Move the analog filter corner above 1 kHz if lower passband attenuation is required, or use a band-pass/high-pass stage if drift rejection is a requirement.
- Replace the simplified ADC block with a data-sheet-consistent supply, reference, acquisition, and serial-readout setup.
- Commit the original LTspice and Python sources so every public plot can be regenerated.
- Add component tolerance, op-amp noise, photodiode shot noise, and Monte Carlo analyses.
- Build and measure a PCB prototype before making hardware-performance claims.
- AD8628/AD8629/AD8630 data sheet
- AD8615/AD8616/AD8618 data sheet
- AD4000/AD4004/AD4008 data sheet
- BPV10NF photodiode data sheet
Srinivas N V — B.Tech Electronics and Communication Engineering, Amrita Vishwa Vidyapeetham, Coimbatore
Documentation, scripts, and original project material in this repository are released under the MIT License. Third-party device names, data sheets, and models remain the property of their respective owners.












