Real Resistors, Capacitors & Inductors

Passive parts are not ideal. Learn resistor types, power rating, tolerance, temperature coefficient, noise and parasitics; capacitor construction and dielectrics (C0G, X7R, electrolytic, film), charge and energy, polarisation, leakage, ESR, ESL, DC-bias derating, decoupling, AC coupling and energy storage; inductors (magnetic energy, DCR, saturation, core loss, self-resonance) and how each part's impedance changes with frequency — with Python computing an MLCC's impedance curve, self-resonance, stored energy and resistor noise.

A capacitor above its self-resonant frequency behaves like an inductor; a ceramic capacitor can lose 70% of its capacitance under DC bias; a resistor adds noise and drifts with temperature. These real effects decide whether a design works.

Choosing the right passive part — value, tolerance, dielectric, package and rating — is a core analog-design skill.

An analogy

An ideal capacitor is a perfect bucket for charge. A real one is a bucket with a small hole (leakage), a narrow spout (ESR) and a hose attached (ESL) — at high frequency the hose dominates and it stops acting like a bucket at all.

Resistors

Choose by value, tolerance, power, TCR, voltage and noise:

Capacitors

Ceramic C0G/NP0: stable, low loss, small values (filters, timing). X7R/X5R: high capacitance but lose value with DC bias and temperature (decoupling). Aluminium electrolytic: large bulk capacitance, polarised, high ESR, limited lifetime (temperature!). Tantalum and polymer: low ESR, compact, surge-sensitive. Film (polypropylene): low loss, precise, audio and snubbers. Uses: decoupling/bypass (supply noise), AC coupling (block DC), energy storage (reservoir), timing and filtering.

Inductors

Store energy in a magnetic field; oppose changes in current. Key parameters: inductance, DCR (copper loss), saturation current (inductance collapses when the core saturates), RMS/thermal current, core loss at high frequency, shielded vs unshielded (radiated fields), self-resonance. Used in switching regulators, EMI filters, RF matching and resonant circuits. Ferrite beads are lossy inductors that absorb high-frequency noise.

Frequency behaviour and selection

Plot |Z| vs frequency: an ideal capacitor falls at −20 dB/decade, an ideal inductor rises at +20 dB/decade, and real parts have resonances. Decoupling networks target low impedance across a band by paralleling values (watch anti-resonance peaks between them). Capacitor DC-bias derating can halve an X5R part's effective value; always check the manufacturer's curves. Microphonics (piezoelectric ceramics), dielectric absorption (sample-and-hold errors) and leakage (integrators) matter in precision analog.

Formulas

Worked example: Capacitive reactance

Given: 10 µF at 50 Hz

Find: X_C.

Answer: 318 Ω

Worked example: Resistor power

Given: 100 Ω carrying 50 mA

Find: Power and rating.

Answer: 0.25 W → use ≥ 0.5 W part

Worked example: Inductor energy

Given: 22 µH at 3 A

Find: E.

Answer: 99 µJ

Equivalent circuits of real parts

Real capacitor:   ──[ESR]──[ESL]──||C||──       (+ leakage R_leak across C)
Real inductor:    ──[DCR]──(L)──   with C_winding in parallel  (self-resonance)
Real resistor:    ──[R]──(L_lead)──  with C_parasitic in parallel

Every passive has parasitics. Decoupling works only below the capacitor's self-resonance; inductors turn capacitive above theirs; wire-wound resistors are inductive. SPICE models of real parts include these elements.

Impedance, self-resonance, energy and noise

import math
# Real components: capacitor impedance with ESR/ESL, inductor self-resonance, resistor tolerance and power
C, ESR, ESL = 100e-9, 0.02, 1.0e-9           # 100 nF MLCC
f_srf = 1 / (2 * math.pi * math.sqrt(ESL * C))
print(f"100 nF MLCC self-resonance {f_srf/1e6:.1f} MHz")
for f in (1e3, 1e6, f_srf, 100e6):
    X = 2 * math.pi * f * ESL - 1 / (2 * math.pi * f * C)
    Z = math.sqrt(ESR**2 + X**2)
    kind = "resistive, ESR only" if abs(X) < 1e-6 else ("capacitive" if X < 0 else "inductive")
    print(f"f = {f/1e6:9.3f} MHz: |Z| = {Z:.4g} ohm ({kind})")
print(f"energy stored at 5 V: {0.5*C*25*1e6:.2f} uJ; charge {C*5*1e6:.2f} uC")
# Inductor: 10 uH with 5 pF winding capacitance
L, Cp = 10e-6, 5e-12
print(f"10 uH inductor self-resonance {1/(2*math.pi*math.sqrt(L*Cp))/1e6:.1f} MHz, energy at 2 A {0.5*L*4*1e6:.0f} uJ")
# Resistor: 1k 1% 100 ppm/C, heated 50 C, dissipating 0.1 W
R0, tol, tc, dT = 1000, 0.01, 100e-6, 50
print(f"1k 1%: {R0*(1-tol):.0f}..{R0*(1+tol):.0f} ohm; +50 C drift adds {R0*tc*dT:.1f} ohm")
print(f"thermal noise of 1k at 300 K over 20 kHz: {math.sqrt(4*1.381e-23*300*1000*20e3)*1e6:.3f} uVrms")
# 100 nF MLCC self-resonance 15.9 MHz
# f =     0.001 MHz: |Z| = 1592 ohm (capacitive)
# f =     1.000 MHz: |Z| = 1.585 ohm (capacitive)
# f =    15.915 MHz: |Z| = 0.02 ohm (resistive, ESR only)
# f =   100.000 MHz: |Z| = 0.6127 ohm (inductive)
# energy stored at 5 V: 1.25 uJ; charge 0.50 uC
# 10 uH inductor self-resonance 22.5 MHz, energy at 2 A 20 uJ
# 1k 1%: 990..1010 ohm; +50 C drift adds 5.0 ohm
# thermal noise of 1k at 300 K over 20 kHz: 0.576 uVrms

The 100 nF decoupling capacitor reaches its lowest impedance (only its 20 mΩ ESR) at 15.9 MHz; above that its ESL takes over and it becomes inductive — so high-speed boards combine several values and small packages with low ESL. Even a plain 1 kΩ resistor generates 0.58 µV of noise across the audio band.

Common mistakes

Applications

Key takeaways

Going further