Part 1 · Control Loops
Key point: a transfer function is how a box scales and delays a signal as frequency changes: \(V_{\mathrm{out}}(s)=H(s)\,V_{\mathrm{in}}(s)\). A resistor divider is a real number. An RC is not.
Scope at one \(f\) · Bode 10 Hz–10 MHz · solid = with \(R_s\) · dashed = ideal
With ESR = 0 the zero is at infinity — H(s) is a single pole. Increase ESR to add a zero. Whether you see it depends on fz vs the test frequency.
Scope — 20 kHz sine
Bode · fp red · fz green · f_scope violet
Try it: match the divider’s −20 dB on the RC at 20 kHz (default \(R\), \(C\) are close). Then raise ESR and watch \(f_z\) walk in from infinity and the high-frequency Bode flatten.
.tran (scope). Uncomment .ac on the sheet for the Bode.
The schematic is a divider. That algebra is correct — and it hides the corners. Factor so each \(1+s/\omega\) is a Bode breakpoint you can point at (Basso’s low-entropy form). Drag \(R_s\) on the sticky bar; the live fractions below track it.
\[ Z_C(s)=R_s+\frac{1}{sC},\qquad H(s)=\frac{Z_C}{R+Z_C} =\frac{1+s R_s C}{1+s C(R+R_s)} =\frac{1+s/\omega_z}{1+s/\omega_p} \] \[ \omega_z=\frac{1}{R_s C},\qquad \omega_p=\frac{1}{C(R+R_s)} \]If \(R_s=0\), \(\omega_z\to\infty\) and \(\omega_p=1/RC\) — a single pole. Finite ESR adds the zero and moves \(f_p\) a little, because the time constant is \(C(R+R_s)\), not \(RC\).
\(f_p=\) — · \(f_z=\) ∞ · if \(R_s=0\), \(f_p=\) —