PID is three knobs that, together, push a process variable toward a setpoint. This is a common sense walk through what each one does on a typical HVAC loop, plus three small sims you can play with one knob at a time. By the end, the full PID Tuning Helper should make a lot more sense.
P — Proportional · how hard it pushes
Output is proportional to the current error: twice as far off, twice as much push. More gain means a stronger, faster response — but push too hard and the loop overshoots and hunts. In the field this is often dialed in as proportional band: PB = 100 ÷ gain, so a 20% PB swings the output across 20% of the input range.
Worked example. A chilled-water valve, SP = 55 °F, PV = 60 °F, span = 20 °F. Error is 5 °F → 25% of span. With a gain of 4, the proportional output is 4 × 25% = 100% — valve commanded fully open. As the supply cools and PV drops, the output backs off proportionally. The catch: P on its own always leaves a small permanent offset (droop) — it needs some error to produce any output, so the loop settles a hair short of setpoint.
I — Integral / Reset · how persistent it is
Keeps nudging the output in the same direction for as long as any error remains, so it erases the offset that P leaves behind. Usually set in repeats per minute (or its inverse, integral time in minutes per repeat). Too fast and you get slow rolling oscillation and overshoot; too slow and it takes forever to close the last bit of the gap. On most slow HVAC loops, integral is the term doing the real work.
Worked example. A space-temp loop sits 1 °F under setpoint with P alone — the classic droop. Add 0.2 repeats/min (Ti = 5 min) and the integral term accumulates that 1 °F of error over the next few minutes, slowly cranking the output up until PV reaches SP and error = 0. Now bump it to 2 repeats/min: the integral wakes up too fast, the loop overshoots, and you get a slow oscillation around setpoint instead of a clean approach. That's the trade-off.
D — Derivative / Rate · how fast it's changing
Reacts to how quickly the PV is moving and applies the brakes early, trimming overshoot on processes with a lot of lag. Set in minutes. Almost always small or zero in HVAC: it amplifies sensor noise, so on a twitchy input it does more harm than good. If you do use it, derivative-on-measurement (not on error) avoids a sudden kick when someone changes the setpoint.
When it earns its keep. A big hot-water reheat coil with several minutes of lag: P + I will keep pushing while heat is still on its way through the coil, and you overshoot. A small Td — on the order of 1⁄4 to 1⁄8 of Ti as a starting point — lets the loop "see" PV racing toward SP and start backing off early. On a fast, clean loop (duct pressure, VFD speed), don't bother — most HVAC loops are PI, not full PID.
Three small simulators, in order — each adds one term to the one before. One knob is live; the Fast / Medium / Slow chips set how quickly the loop reacts. Move anything and the plot redraws right away. (Want all three knobs at once? Jump to the full PID Tuning Helper.)
Proportional control alone always settles a little short of setpoint — the steady-state offset (droop) that integral exists to fix. Raise the gain and the offset shrinks but the loop starts to ring; back it off and the loop is calm but the gap grows. It never reaches zero — that's the point.
P alone can't close this — that gap is exactly what integral is for.
Add integral to the same loop and the droop disappears — PV climbs all the way to setpoint. But push the reset too fast and you'll see what every tech has seen on a real loop: a slow rolling oscillation around the line you were trying to hit. Watch both readouts as you move the slider.
Offset goes to zero — but the overshoot is the new problem to watch.
This loop starts with an over-aggressive P + I — it's overshooting and ringing. Dial in a little derivative: the brakes go on as PV races toward setpoint, and the overshoot collapses. There's a sweet spot, though — keep cranking D and the loop just turns sluggish (and on a real, noisy sensor it would start jittering). That's why most HVAC loops stay at PI.
A little D crushes the overshoot at almost no cost; overdo it and the loop just turns sluggish. The rate slider's range scales with the loop — derivative worth using on a 45-second process is a rounding error on a 4-minute one, which is part of why slow HVAC loops mostly run PI.