PID-regelaarsimulator voor regelsystemen in de robotica
Stem proportionele, integrale en differentiële versterkingen af en visualiseer respons, regelfout, verzadiging en storingen in een PID-regelaarsimulator.
- Categorie
- Regeltechniek
- Tijd
- 60–120 min
- Platform
- Browser · Arduino
01 / Begin hier
Inleiding
PID-regeling komt overal in de robotica voor: wielsnelheid, koers, gewrichtspositie, temperatuur en balanserende systemen steunen allemaal op terugkoppeling. Dit project maakt van de regelaar een zichtbaar experiment. Verander één versterking, stoort het proces en verbind de resulterende curve met de code die op een Arduino of een ingebedde controller zou kunnen draaien.
Live lab / Deterministic sampled control loop
PID controller simulator
Drive a second-order plant toward a setpoint. Tune each gain, inject a load, and watch response, error, and control effort in real time.
Three stacked plots share a scrolling time axis: measured output against the setpoint line, tracking error around zero, and control effort inside the shaded actuator-limit band.
- Setpoint
- 1.00
- Measured
- 0.000
- Error
- 1.000
- Control
- 0.000
- Overshoot
- 0%
- Steady-state error
- 1.000
Keyboard: focus the plots, then use Space to run/pause, N to step, R to reset, G to toggle the load, and F for full screen.
Bediening
De simulator biedt de setpoint, proportionele, integrale en differentiële versterkingen, het bemonsteringsinterval, de actuatorgrens en de grootte van de storing. Uitgelijnde grafieken tonen de setpoint, de gemeten uitvoer, de regelfout en de regelinspanning. Reset wist het geheugen van de regelaar zodat experimenten vergelijkbaar blijven.
Theorie
Een terugkoppelingsregelaar berekent de regelfout als setpoint minus meting. Het proportionele aandeel reageert onmiddellijk, het integrale aandeel bouwt aanhoudende fout op en het differentiële aandeel reageert op de veranderingssnelheid. De som ervan wordt het commando voor de actuator.
De prestaties van de regelaar worden begrensd door het proces. Te traag bemonsteren verbergt beweging; doorbuiten de actuatorgrens werken leidt tot verzadiging; ruisachtige metingen maken een ongefilterde differentiële term instabiel. Afstellen is dus een experiment dat zowel regelaar als systeem omvat.
Algoritme
- Lees de meting met een vast interval en bereken de regelfout.
- Bouw een begrensde integraal op met de werkelijke tijdstap.
- Schat de differentiaal uit de meting of de fout en pas de juiste filtering toe.
- Tel de drie gewogen termen op en begrens het resultaat tot het bereik van de actuator.
- Voer het commando uit, sla de vorige sample op en leg de meetwaarden vast.
- Reset de integraal en de historie wanneer de regelmodus of het proces wezenlijk verandert.
Broncode
Deze implementatie bevat een eenvoudige anti-windupvoorwaarde:
float updatePid(float setpoint, float measured, float dt) {
const float error = setpoint - measured;
const float derivative = (error - previousError) / dt;
const float candidateIntegral = integral + error * dt;
const float raw = kp * error + ki * candidateIntegral + kd * derivative;
const float output = constrain(raw, outputMin, outputMax);
if (raw == output) integral = candidateIntegral;
previousError = error;
return output;
}
Industriële regelaars definiëren ook gedrag voor ongeldige metingen, timeroverschrijdingen, modusovergangen en actuatorstoringen.
Aannames en hardwareverschillen
Het proces hier is een schoon tweede-ordemodel met bekende massa, demping en vertraging die je met de schuifregelaars instelt — geen echte motor met wrijving, dode zone, koppel dat afneemt bij toenemende snelheid en een driver die opwarmt. Het bemonsteringsinterval is per constructie vast, waardoor de differentiële term netjes blijft; op een Arduino zorgen delay() of andere blokkerende taken voor een schokkend interval en gedraagt de D-term zich niet naar behoren, ook als de versterkingen ongewijzigd blijven. Verzadiging van de actuator is gemodelleerd als een harde begrenzing met anti-windup, maar een fysiek systeem heeft ook stroomgrenzen, spanningsdaling en warmte die de grens tijdens het bedrijf veranderen. Stel de vorm hier af en verifieer vervolgens op hardware, waar het proces slechts bij benadering bekend is.
Schakelschema
De terugkoppelsensor geeft de werkelijke uitvoer door; hij vervangt geen stroombegrenzing en geen hardwarematige veiligheidsstop. De regelaar vergelijkt de setpoint met de geconditioneerde sensorwaarde en stuurt daarna de actuator aan via een PWM-trap die op de belasting is gedimensioneerd.
Begeleide experimenten
Over overschwing lezen is niet hetzelfde als die bewust opwekken. Elk experiment hieronder duurt een paar minuten en isoleert precies één effect.
1. Bepaal de kritische versterking
Zet Ki en Kd op nul. Verhoog Kp tot de uitvoer oscilleert met een constante amplitude —
noch groeiend noch afnemend. Noteer die versterking (Ku) en de oscillatieperiode (Tu).
Die twee getallen zijn alles wat je nodig heeft voor een eerste afstelling:
| Regelaar | Kp |
Ki |
Kd |
|---|---|---|---|
| PID (klassiek) | 0,6 Ku |
1,2 Ku / Tu |
0,075 Ku Tu |
| PID (geen overschwing) | 0,2 Ku |
0,4 Ku / Tu |
0,066 Ku Tu |
Typ die waarden in en vergelijk ze. De klassieke rij is agressief en overschwingt 20–40%; de tweede komt zonder overschwing aan en doet er langer over. Geen van beide is “juist” — het zijn verschillende antwoorden op verschillende eisen, en dat is precies het punt.
2. Observeer integralewindup
Stel de actuatorgrens laag in — rond 20% van het bereik — en geef dan een grote setpointstap. Kijk naar de grafiek van de regelinspanning: die verzadigt onmiddellijk en blijft daar, terwijl de integraal fout blijft opbouwen die hij niet kan verwerken. Wanneer de uitvoer eindelijk de setpoint bereikt, ontrolt al die opgeslagen actie en zeilt het systeem er ver voorbij.
Verhoog nu de actuatorgrens en herhaal met dezelfde versterkingen. De overschwing verdwijnt grotendeels. Er is niets aan de regelaar veranderd — en dat is de les. Windup is een eigenschap van de interactie tussen de regelaar en een verzadigende actuator, niet van de versterkingen.
3. Bewijs dat vertraging, niet ruis, de regelkring doodt
Verhoog het bemonsteringsinterval vanaf zijn laagste waarde in stappen en houd de versterkingen vast. De respons degradeert lang voordat de grafiek er ruisachtig uitziet: de overschwing groeit, er ontstaat oscillatie en vervolgens wordt het systeem instabiel.
| Bemonsteringsinterval | Wat je ziet bij een verder goede afstelling |
|---|---|
| 5 ms | Schoon, zoals afgesteld |
| 20 ms | Iets meer overschwing |
| 50 ms | Zichtbare navering |
| 100 ms | Aanhoudende oscillatie |
| 200 ms | Instabiel |
Daarom verbetert het verwijderen van een delay() uit de regelkring van een robot het
volgvermogen vaak meer dan welke afstelling ook. Verouderde informatie kan niet door een
versterking worden teruggewonnen.
4. Voer ruis toe aan de differentiële term
Verhoog de grootte van de storing terwijl Kd op nul staat en verhoog daarna Kd. Het spoor van
de regelinspanning wordt al geserreerd lang voordat de uitvoer dat is — je ziet differentiëren
hoogfrequente inhoud versterken, precies zoals het moet.
Dat gedrag is de reden waarom mensen concluderen dat D nutteloos is en het op nul zetten. De werkelijke oplossing ligt verderop in de signaalketen: filter de meting, of filter de differentiële term zelf.
Wat je moet zien
| Instelling | Verwachte vorm | Als je iets anders ziet |
|---|---|---|
Kp alleen, laag |
Stijgt langzaam, blijft onder de setpoint | — |
Kp alleen, hoog |
Overschwingt, naverkt, vervalt | Groeiende oscillatie betekent dat je voorbij Ku zit |
Kp + Kd |
Snelle stijging, weinig overschwing, kleine stationaire offset | Ruwe regelinspanning betekent dat D ruis versterkt |
Kp + Ki |
Bereikt de setpoint exact, maar langzamer | Doorvaren betekent windup of te veel Ki |
| Volledige PID | Snel, minimale overschwing, geen offset | — |
De stationaire offset met P en D maar zonder I is de moeite waard één keer bewust op te wekken. Het is de duidelijkste demonstratie van waar de integrale term eigenlijk voor dient: proportioneel regelen heeft een niet-nul regelfout nodig om überhaupt uitvoer te produceren, dus het resultaat blijft noodzakelijk net onder de setpoint staan.
Naar de hardware
Versterkingen die je hier vindt zijn een startpunt, geen overdracht. Wat perfect overgaat is de procedure; wat niet overgaat zijn de getallen, want die beschrijven dit proces.
| Dit lab | Een echte robot |
|---|---|
| Het bemonsteringsinterval is exact | Schokkend tenzij je dt meet en doorgeeft |
| Het proces is een schoon tweede-ordemodel | Wrijving, dode zone, koppel dat afneemt bij snelheid |
| De actuatorgrens is een harde begrenzing | Ook stroomgrenzen, spanningsdaling en warmte |
| Geen sensorruis tenzij je die toevoegt | Altijd ruis, en zelden Gaussisch |
| Het proces verandert nooit | Batterijspanning, belasting en temperatuur veranderen het allemaal |
De laatste regel zorgt in de praktijk voor de meeste verwarring. Een afstelling die perfect is op volle cellen zal traag zijn op lege, omdat hetzelfde commando nu minder koppel oplevert. Dat is geen falen van de methode — versterkingen zijn eigenschappen van het proces, en het proces is verplaatst. De professionele antwoorden zijn een snelheidsregelkring eronder, of gain scheduling (meerdere afstellingen bewaren en op basis van snelheid, belasting of accuspanning ertussen wisselen). Werk de volledige procedure door via een PID-regelaar afstemmen en breng het daarna naar het lijnvolgerlab, waar het proces tegenspartij.
Hardwarechecklist
Componenten
- Microcontroller met een stabiele timer
- Gemeten proces, zoals een gelijkstroommotor of servo
- Encoder, potentiometer of een andere terugkoppelsensor
- Uitgangstrap die geschikt is voor de actuator
- Gestabiliseerde stroombron en noodstop
Verken de graaf
Waar deze simulator wordt gebruikt
De projecten, leerroutes en tutorials die op dit lab voortbouwen.
Verder bouwen
Hulpmiddelen downloaden
Gebruik deze naslag op de pagina terwijl je het project doorwerkt. Downloadbare projectpakketten komen er pas bij nadat hun broncode en versie zijn gepubliceerd.
Veelgestelde vragen
Veelgestelde vragen
Wat moet ik het eerst afstellen?
Begin met integrale en differentiële versterkingen op nul. Verhoog de proportionele versterking tot de respons nuttig maar oscillerend is en voeg dan differentiële demping toe. Voeg de integrale versterking als laatste toe en alleen als er een reproduceerbare stationaire fout overblijft. Een gangbare vuistregel: P levert snelheid, D vermindert overschwing en I neemt de offset weg — voeg ze in die volgorde toe, één voor één.
Hoe voorkom ik dat een PID-regelaar overschwingt?
Overschwing komt meestal door te veel proportionele of integrale actie. Verlaag eerst de proportionele versterking en verhoog daarna de differentiële versterking om de nadering te dempen. Als overschwing pas optreedt nadat de actuator zijn grens bereikt, is de oorzaak integralewindup in plaats van de versterking, en moet je de integrale term begrenzen.
Waarom oscilleert mijn PID-regelaar?
Aanhoudende oscillatie betekent vrijwel altijd dat de proportionele versterking te hoog is voor de regelkring, of dat de differentiële term te zwak is om die te dempen. Halveer de proportionele versterking en voeg daarna differentiële versterking toe. Oscillatie kan ook ontstaan uit een regelkring die te traag of met een wisselend interval draait, waardoor de differentiële term onbetrouwbaar wordt.
Wat is integralewindup en hoe voorkom ik die?
Windup ontstaat wanneer de actuator verzadigt — een motor op volle snelheid, een klep volledig open — terwijl de opgebouwde integrale fout blijft groeien, zodat de regelaar ernstig overschwingt zodra de fout omkeert. Voorkom dat met begrenzen (stop met toevoegen aan de integraal zolang de uitvoer verzadigd is) of terugberekening (laat de integraal aflopen op basis van het verschil tussen gevraagde en geleverde uitvoer).
Hoe snel moet een PID-regelkring draaien?
De regelkring moet het systeem dat hij regelt meerdere malen sneller bemonsteren, met een vast interval. Vermijd op een microcontroller lange blokkerende vertragingen: een variabele of trage regelkring verandert de effectieve integrale en differentiële term, ook als de versterkingen ongewijzigd blijven, en dat is een veelvoorkomende verborgen oorzaak van slechte afstelling.
Kan ik PID alleen met de P- en D-term gebruiken?
Ja. PD-regeling (zonder integraal) is gangbaar als een kleine stationaire fout acceptabel is en je windup wilt vermijden, en PI-regeling (zonder differentiaal) past bij ruisachtige signalen waar een differentiële term ruis zou versterken. Gebruik alleen de termen die het probleem nodig heeft in plaats van altijd volledige PID te draaien.
Wat is het verschil tussen handmatig afstellen en Ziegler–Nichols?
Handmatig afstellen past één versterking tegelijk aan terwijl je de respons volgt, wat intuïtief en veilig is om te leren. Ziegler–Nichols is een formulegebaseerde methode die versterkingen afleidt uit het punt van aanhoudende oscillatie; die is sneller maar vaak agressief, dus de uitkomst is meestal een startpunt dat je met de hand verder aanscherpt.
Verder lezen
Bronnen
Gezaghebbende bronnen om dieper te gaan dan het afgebakende leermodel van deze simulator.