2026-05-13
Every ADC, DAC, voltage regulator, and brown-out detector needs a reference voltage that doesn't drift with temperature or supply variation. A resistor divider won't do — it tracks the supply. A Zener diode is too noisy and varies with temperature. The clever trick used in nearly every analog chip since 1971 is the bandgap reference, which generates ~1.25V by canceling two opposing temperature coefficients against each other.
The physics: a forward-biased PN junction's voltage VBE drops about −2 mV/°C as temperature rises (it's "complementary to absolute temperature," or CTAT). Meanwhile, the difference between two junctions running at different current densities — ΔVBE — increases with temperature at +0.087 mV/°C per decade of current ratio (proportional to absolute temperature, or PTAT). Both come from the same Boltzmann statistics, just with opposite signs.
The Brokaw cell — the canonical implementation — sums these:
Pick K so the slopes cancel: K · 0.087 mV/°C · ln(8) ≈ 2 mV/°C, which gives K ≈ 11. The result lands at approximately the silicon bandgap energy at 0K — 1.205V — hence the name. Real designs trim resistors to hit 1.225V where the curve is flattest.
Real-world example: The Texas Instruments REF200 and the LM4040 are pure bandgap references. But more importantly, every microcontroller you've used has one inside. The ATmega328P (Arduino Uno) has an internal 1.1V bandgap you can route to the ADC as analogReference(INTERNAL). Its spec: 1.0V to 1.2V across parts, but ±3% over −40°C to +85°C for a single chip after calibration. That stability lets battery-powered devices measure their own supply voltage by comparing VCC to the bandgap.
Rule of thumb: An untrimmed bandgap drifts about 50–100 ppm/°C (5–10 mV across 100°C). A trimmed and curvature-compensated bandgap hits 10 ppm/°C — competitive with a discrete precision reference. But bandgaps need startup circuits: there's a degenerate equilibrium at zero current the op-amp is happy to sit in forever, so a tiny "kick" transistor injects current at power-up to nudge the loop into its real operating point.
