Alles om je heen gebruikt stiekem PID

Blog  — zo. 16 feb. 2025

In een wereld vol met IT is er een ondergewaardeerde held. Een stukje code waar de meeste mensen niet eens van weten, maar dat vrijwel overal in de IT voorkomt.

Om wat voorbeelden te noemen:

  • Cruise control in je auto
  • Drones in oorlogsgebieden
  • Centrale verwarming
  • Raketten in de ruimtevaart
  • Beademingsapparatuur in ziekenhuizen
  • Autofocus en beeldstabilisatie in fotocamera's

En zo kan ik nog wel even doorgaan. De wereld zit er vol mee. Maar waar hebben we het over? Nou, dat is de PID.

Een PID, wat staat voor Proportional Integral Derivative, is eigenlijk een wiskundig sommetje. Nou ja, we noemen dat dan een algoritme. Een algoritme dat continu kijkt naar het verschil tussen waar je bent en waar je naartoe wilt. En dat verschil noemen we “de fout”. De PID bepaalt vervolgens hoe sterk er bijgestuurd moet worden, op basis van drie principes. Over die drie principes later meer.

In de softwarewereld wordt dit algoritme verpakt in een functie. En die stel je op gezette tijden telkens dezelfde vraag: we zijn nu ‘hier’, en we willen naar ‘daar’. Hoe doen we dat? De werking is ogenschijnlijk magisch. Je informeert de PID dus steeds over twee dingen:

  1. Waar zijn we nu
  2. Waar willen we naartoe

En de PID geeft vervolgens één ding terug: een sturingssignaal om er te komen.

Heel concreet: stel je hebt een digitale thermostaat. Je vertelt de PID dat het nu 16 graden is, en dat je wilt dat het 21 graden wordt. De PID geeft een getal terug. Dat getal geef je door aan de cv-installatie. Stel, die installatie kan aan of uit, maar ook ergens daartussenin. Dan heb je bijvoorbeeld een bereik van 0 tot 100%. De waarde van de PID kan in het begin 100% zijn, omdat er nog een flink verschil is. Maar zodra de temperatuur oploopt, geef je die actuele temperatuur telkens weer door aan de PID. En die gaat z’n sturingssignaal daarop aanpassen.

Naarmate de ketel op 100% brandt, loopt de temperatuur op. En de PID krijgt elke seconde de nieuwe temperatuur te horen. Zo kan hij z’n antwoord bijstellen terwijl we dichter bij het gewenste punt komen. Net voordat het 21 graden is, zegt de PID: oké, we hoeven nog maar op 5% te stoken. Als je dat sturingssignaal van de PID als een lijn zou tekenen op papier, zie je een mooie, vloeiende curve. Geen abrupte sprongen, maar een geleidelijke, elegante beweging richting het doel.

Dat doel noemen we de setpoint. In dit voorbeeld is dat dus 21 graden. De input die we de PID geven, is de actuele temperatuur. Maar hoe bepaalt de PID nou precies wat ‘ie moet doen? Daar komen die drie letters om de hoek kijken: P, I en D. Ik haalde ze al even aan. Ze staan voor Proportional, Integral en Derivative. En samen bepalen ze hoe de PID stuurt. Van waar we nu zijn, naar waar we willen zijn.

Alle drie hebben ze hun eigen taak:

  • P (Proportional): reageert direct op de fout. Hoe groter het verschil, hoe sterker de reactie. Dus stel je kiest voor een P-waarde van 0.25. Bij een fout van 5 graden geeft de PID dan 0.25 × 5 = 1.25 en dus 125% (wat je dan in je software natuurlijk maximeert op 100%). Dat noemen we een clamp.
  • I (Integral): kijkt naar de opgetelde fout over tijd. Dus als het systeem een tijdje te laag blijft hangen, helpt de I die fout weg te poetsen. Een soort geheugen.
  • D (Derivative): kijkt naar de snelheid van verandering van de fout. Dus als de temperatuur heel snel richting 21 stijgt, zegt de D: “Ho! Je gaat te hard. Begin alvast met afremmen.”

Met alleen de P kom je al een heel eind. Maar het systeem kan dan z’n doel voorbijschieten. Bijvoorbeeld 23 graden in plaats van 21. Dat heet overshoot. De I helpt om dat te corrigeren over tijd, terwijl de D helpt om het overschieten te voorkomen door vroegtijdig af te remmen.

En dat allemaal met één slim algoritme. De PID. Onzichtbaar, maar overal essentieel dus. Afijn, dit is alweer een lang blog. Volgende keer meer wellicht. Zoals PID tuning. Of wat er mis kan gaan. Want geloof me, ook daarin zit genoeg magie én frustratie om over te schrijven.