Analog Intuition

PID Pole-Zero Bridge

Two languages for the same PI compensator

You design compensators with poles and zeros — the same Type II shape as a power-supply error amp. Your firmware wants \(K_p\) and \(K_i\). This page is the bridge: scroll through each term, watch the Bode plot, read off coefficients.

Vocabulary: Pole/Zero Primer · Classical Feedback · Type II Compensator

§1 — PID form vs pole-zero form

A parallel PI controller:

\[ C(s) = K_p + \frac{K_i}{s} = \frac{K_p s + K_i}{s} \]

Factored the way you already think about Type II:

\[ C(s) = K_p \cdot \frac{1 + s/\omega_z}{s} \]

The integrator \(1/s\) is a pole at the origin. The zero sits at \(\omega_z = K_i/K_p\). In Hz: \(f_z = K_i/(2\pi K_p)\), so \(K_i = 2\pi f_z K_p\).

Closed loop (unity feedback for now): \(T(s) = C(s)\,P(s)\). The plant is first-order — one pole at \(f_p\).

§2 — P is just gain

Before adding dynamics, \(K_p\) alone is flat magnitude and 0° phase in the mid band. In pole-zero language it is the scalar K in dB out front.

Try it — proportional only

Integrator is off in this step. Slide \(K_p\) and watch a flat compensator Bode.

K_p = 1 → 0 dB
Hover for coordinates

§3 — I adds the origin pole

\(K_i/s\) is an integrator: a pole at \(s = 0\). It adds −20 dB/decade at all frequencies and −90° phase lag at low frequency. That is what gives you zero steady-state error in the closed loop.

Note: \(f_i = K_i/(2\pi K_p)\) is where the I-term magnitude equals \(K_p\) — it is not a pole. The pole is at the origin.

Toggle the integrator

Integrator off

§4 — The zero is phase lead

The Type II zero at \(f_z\) is the same as setting \(K_i\): \(\omega_z = K_i/K_p\). It adds phase lead below \(f_z\) and shapes crossover. This is the same pole–zero pair you tune in a voltage regulator — just written as PID coefficients.

Place \(f_z\) — bidirectional bridge

Pole-zero form

PID form

Enable the integrator to set K_i and f_z.

\(K_p\) = — \(K_i\) = — \(f_z\) = —

§5 — Add the plant

Characterize the plant with a step test: \(P(s) = K_\text{plant}/(1 + s/\omega_p)\). Place \(f_z\) below \(f_p\) to start (rule of thumb: 0.3–0.5×\(f_p\)). Unity feedback \(F(s)=1\) for now.

Plant + loop gain \(T(s)=C(s)P(s)\)

Green ○ = compensator zero · red × = poles (origin + plant). Vertical lines mark \(f_z\) and \(f_p\).

Loop BW: — PM: —
Hover for coordinates

§6 — Workbench

Full bidirectional editors, pole/zero inventory, and both Bode views. Last-touched panel is highlighted.

Pole-zero

Edit K (dB) and f_z — PID side follows.

PID

Edit K_p and K_i — pole-zero side follows.

Use the §4 controls above — they are the live workbench editors.

Pole / zero inventory

Transfer functions

Hover for coordinates
Hover for coordinates

§7 — What comes next

Compare the passive network view in the Type II Compensator lesson.