Photonics Essentials: Chapter 3 Interactive Physics Lab
This lab turns the equations in Chapter 3, Photodiodes, into curves that
can be changed directly in the browser. It complements the
Photonics Essentials: From Diffusion Current to Equation 3.5 derivation.
Important
The controls below use ideal equation-based models. The modes labelled qualitative reproduce a measured curve’s physical trends, not the book’s experimental data. Use a manufacturer’s data sheet for device design.
Interactive curve explorer
Choose a curve, then move any slider. The graph and calculated quantities update immediately; no Python server is required, so this works on the GitHub-hosted documentation.
Loading the Chapter 3 curve explorer...
Curves and equations
The explorer includes:
Explorer mode |
Chapter reference |
What changes |
|---|---|---|
Carrier profile |
Equations 3.5–3.11 |
Diffusion coefficient, lifetime, junction concentration, generation |
Junction bands |
Figure 3.1 |
Built-in voltage and depletion width |
Photodiode I–V family |
Figures 3.2–3.4; Equations 3.14 and 3.16 |
Temperature, ideality factor, dark current, illumination |
LED semilog I–V |
Figure 3.5; Equation 3.16 |
Temperature, ideality factor, saturation current |
Ideal spectral cutoff |
Figure 3.6; Equations 3.19–3.21 |
Band-gap energy |
Rounded detector response |
Figure 3.7 |
Short and long absorption edges; qualitative model |
Absorption with depth |
Figure 3.8; Equation 3.22 |
Absorption coefficient |
Responsivity |
Figure 3.9; Equations 3.25–3.28 |
Quantum efficiency and band gap |
Antireflection response |
Figure 3.10; Equations 3.29–3.32 |
Film index, substrate index, thickness, design wavelength, and a qualitative collection envelope at the band-gap edge |
Open-circuit photovoltage |
Equation 3.18 |
Temperature, ideality factor, and optical generation |
Python physics engine
The browser controls and the notebook use the same equations implemented in
KrakenOS/Physics/photodiode.py. Its primary entry points are:
from KrakenOS.Physics.photodiode import (
PhotodiodeParameters,
excess_carrier_profile,
photodiode_current_density,
photovoltage,
responsivity,
)
parameters = PhotodiodeParameters(
diffusion_cm2_s=25.0,
lifetime_s=1e-6,
temperature_k=300.0,
)
current = photodiode_current_density(
[-0.5, 0.0, 0.5],
parameters=parameters,
generation_cm3_s=2.5e11,
)
Live Jupyter kernel
The button opens a real JupyterLite notebook backed by a Python kernel compiled for the browser with Pyodide. It runs locally on the reader’s computer; GitHub Pages only serves static files. The first kernel start can take several seconds because the browser downloads Python and NumPy.
The notebook is intentionally separate from the instant slider explorer: the explorer is fast and works without a kernel, while the notebook exposes the Python equations for modification and further experiments.