Photodiodes, APDs, Phototransistors & Solar Cells
Turning light into current. Learn absorption and absorption depth, the photovoltaic and photoconductive effects, PN and PIN photodiodes (responsivity, quantum efficiency, dark current, junction capacitance, transit and RC bandwidth, photovoltaic vs photoconductive mode), avalanche photodiodes (gain, excess noise factor, ionisation ratio k), phototransistors, optocouplers and noise-equivalent power; then solar cells: equivalent circuit with series and shunt resistance, I–V and P–V curves, I_sc, V_oc, maximum power point, fill factor, efficiency, irradiance and temperature effects, and MPPT — with Python computing responsivities, APD excess noise, PIN bandwidth and a full solar-cell I–V solution with MPP and fill factor.
A photon with energy above the bandgap creates an electron–hole pair. If that happens in or near a junction's depletion region, the built-in field separates the carriers and a current flows: the photodiode and the solar cell are the same physics used differently.
Photodiodes are optimised for speed, low noise and linearity; solar cells for converting as much sunlight as possible into electrical power.
An analogy
A photodiode is like a hill with a river valley (depletion field): raindrops (photons) create water droplets (carriers) that roll down each side of the valley — the field sweeps electrons one way and holes the other, producing a steady stream (photocurrent).
Absorption
Light intensity decays as e^(−αx); the absorption depth 1/α ranges from ~0.1 µm (blue in Si) to ~20 µm (850 nm in Si) and >100 µm near the band edge (indirect gap). Detector thickness and junction depth must match the wavelength: shallow junctions for UV/blue, thick absorbers for near-IR, InGaAs/Ge beyond 1.1 µm.
Photodiode operation
Modes and figures of merit:
- Photovoltaic (zero bias): lowest dark current and noise, slower (large C)
- Photoconductive (reverse bias): wider depletion, lower C, faster, more dark current
- Transimpedance amplifier converts I_ph to voltage
- Noise: shot noise of I_ph and I_d, amplifier noise → NEP (W/√Hz), detectivity D*
- Linearity over 6–9 decades of light power
APDs, phototransistors, optocouplers
Avalanche photodiodes operate near breakdown so photo-generated carriers multiply (M = 10–100 linear mode; Geiger mode for single-photon SPADs). Gain improves sensitivity when amplifier noise dominates, but excess noise grows with M and k (electrons and holes both ionising). Phototransistors provide internal current gain (β) at the cost of speed and linearity. Optocouplers pair an LED and a photodetector for galvanic isolation; CTR (current-transfer ratio) degrades with LED ageing.
Solar cells
I_sc ∝ irradiance, V_oc rises logarithmically with irradiance and falls ~2 mV/K (−0.3 to −0.4%/K power for Si). Series resistance reduces FF at high current; low shunt resistance (defects) hurts at low light. Efficiency limits: Shockley–Queisser ~33% single junction; commercial Si PERC/TOPCon/HJT modules ~21–24%, multi-junction III-V > 40% under concentration. MPPT electronics continuously adjust the operating voltage to the maximum power point.
Formulas
- Responsivity:
R = ηqλ/(hc) = η·λ(µm)/1.24 - APD excess noise:
F = kM + (1 − k)(2 − 1/M) - Bandwidth:
f_transit ≈ 0.44v_sat/W; f_RC = 1/(2πR_LC_j) - Solar cell (one diode):
I = I_sc − I₀(e^((V+IR_s)/nV_T) − 1) − (V + IR_s)/R_sh - Open-circuit voltage:
V_oc ≈ nV_T ln(I_sc/I₀ + 1) - Fill factor & efficiency:
FF = P_mp/(V_ocI_sc); η = P_mp/(G·A)
Worked example: Photocurrent
Given: R 0.5 A/W, 20 µW
Find: I_ph.
- 0.5 × 20e−6
Answer: 10 µA
Worked example: Quantum efficiency
Given: R 0.6 A/W at 900 nm
Find: η.
- 0.6 × 1.24/0.9
Answer: 83%
Worked example: Fill factor
Given: V_oc 0.65, I_sc 8 A, P_mp 4.1 W
Find: FF.
- 4.1/(0.65 × 8)
Answer: 0.79
PIN photodiode and solar-cell equivalent circuit
PIN photodiode (reverse biased) Solar cell model
light ▼▼▼ I_ph ↑ ▷|diode R_sh R_s
p⁺ │ i (depleted, absorbs) │ n⁺ ─┬──────┬────────┬──/\/\──┬── +
◄h⁺ field e⁻► └──────┴────────┴─────────┘── −
I_ph = R·P_opt (+ dark current) I = I_ph − I_D − I_shA PIN photodiode's wide intrinsic region absorbs most photons inside the high-field region, giving fast drift collection and low capacitance. A solar cell is a large-area diode forward-biased by its own photocurrent: its terminal current is the photocurrent minus the diode and shunt currents, reduced by series resistance.
Responsivity, APD noise, bandwidth and a solar-cell I–V
import math
# Photodiode responsivity, APD gain/noise, bandwidth, and a solar cell with series/shunt resistance
h, c, q = 6.626e-34, 3e8, 1.602e-19
for lam, eta in ((650e-9, 0.7), (850e-9, 0.8), (1550e-9, 0.8)):
R = eta * q * lam / (h * c)
print(f"lambda {lam*1e9:.0f} nm, QE {eta}: responsivity {R:.3f} A/W")
for M, k in ((10, 0.02), (10, 0.5), (50, 0.02)):
F = M * k + (1 - k) * (2 - 1 / M)
print(f"APD gain {M}, k = {k}: excess noise factor F = {F:.2f}")
W, vsat, A_pd, eps = 5e-4, 1e7, (100e-4) ** 2 * math.pi / 4, 11.7 * 8.854e-14
Cj = eps * A_pd / W
f_tr = 0.44 * vsat / W
f_rc = 1 / (2 * math.pi * 50 * Cj)
print(f"PIN (I-layer 5 um, 100 um dia): Cj = {Cj*1e12:.2f} pF, transit-limited {f_tr/1e9:.1f} GHz, RC-limited (50 ohm) {f_rc/1e9:.1f} GHz")
# Solar cell 156 mm, Isc 9.5 A, single diode with Rs, Rsh; solve I(V) by Newton, find MPP
Isc, I0, n, VT, Rs, Rsh = 9.5, 1e-10, 1.1, 0.02585, 0.005, 20.0
def current(V):
I = Isc
for _ in range(50):
f = Isc - I0 * (math.exp((V + I * Rs) / (n * VT)) - 1) - (V + I * Rs) / Rsh - I
df = -I0 * Rs / (n * VT) * math.exp((V + I * Rs) / (n * VT)) - Rs / Rsh - 1
I -= f / df
return I
best = max(((v / 1000, v / 1000 * current(v / 1000)) for v in range(0, 720)), key=lambda t: t[1])
Voc = next(v / 1000 for v in range(0, 800) if current(v / 1000) <= 0)
print(f"solar cell: Voc = {Voc:.3f} V, Pmp = {best[1]:.2f} W at {best[0]:.3f} V, FF = {best[1]/(Voc*Isc):.3f}, efficiency at 1000 W/m^2 = {best[1]/(0.156**2*1000)*100:.1f}%")
# lambda 650 nm, QE 0.7: responsivity 0.367 A/W
# lambda 850 nm, QE 0.8: responsivity 0.548 A/W
# lambda 1550 nm, QE 0.8: responsivity 0.999 A/W
# APD gain 10, k = 0.02: excess noise factor F = 2.06
# APD gain 10, k = 0.5: excess noise factor F = 5.95
# APD gain 50, k = 0.02: excess noise factor F = 2.94
# PIN (I-layer 5 um, 100 um dia): Cj = 0.16 pF, transit-limited 8.8 GHz, RC-limited (50 ohm) 19.6 GHz
# solar cell: Voc = 0.719 V, Pmp = 5.29 W at 0.588 V, FF = 0.775, efficiency at 1000 W/m^2 = 21.8%Responsivity grows with wavelength (each photon carries less energy, but still one electron): 0.55 A/W at 850 nm, ~1 A/W at 1550 nm for 80% QE. APD gain costs excess noise: silicon-like k = 0.02 keeps F ≈ 2 at M = 10, while k = 0.5 triples it. A 5 µm PIN of 100 µm diameter is transit-limited near 9 GHz. The solar-cell model gives V_oc 0.72 V, P_mp 5.3 W, FF 0.78 and 21.8% efficiency for a 156 mm cell.
Common mistakes
- Wrong: Using Si detectors at 1550 nm. — Right: Use InGaAs or Ge.
- Wrong: Maximising APD gain blindly. — Right: Optimal M balances excess noise and amplifier noise.
- Wrong: Operating PV at V_oc or I_sc. — Right: Use MPPT to track the maximum power point.
Applications
- Optical links: PIN/APD receivers.
- Imaging: CMOS image sensors (pinned photodiodes).
- LiDAR: APD/SPAD arrays.
- Photovoltaics: Cells, modules, MPPT.
Key takeaways
- R = ηλ/1.24 (A/W, λ in µm).
- PIN for speed; APD for gain with excess noise.
- Solar: I_sc, V_oc, FF, MPP; temperature lowers power.
- Match material bandgap to wavelength.
Going further
- SPAD arrays: Single-photon imaging.
- Tandem solar cells: Perovskite/Si.
- Noise-equivalent power: Receiver sensitivity design.