PID regeling
Waarom PID regeling?
We maken gebruik van een PID regeling zodat onze auto
acceptabel zou reageren op de wijziging van de lijn zonder dat er instabiliteit
ontstaat in het rijgedrag.
Met PID
Zonder PID
U ziet dat bij PID regeling de lijn constanter wordt gevolgd
en geen grote wijzigingen optreden in het rijgedrag van de auto.
De formule
We starten bij de algemene formule voor een PID regeling :
Waarbij :
Kp = proportionele actie
Ki = integratie actie
Kd = differentiërende actie
Nu we deze formule weten kunnen we het programma
schrijven.
Het programma
/*working
variables*/
double Output;
double
errSum, lastErr;
double
Kp, Ki, Kd;
void Compute()
{
/*Compute all the working error
variables*/
errSum += afwijking;
double dErr = (afwijking - lastErr);
/*Compute PID Output*/
Output = kp * afwijking + ki * errSum + kd *
dErr;
/*Remember some variables for next time*/
lastErr = afwijking;
}
Uitleg programma
De gebruikte variabelen
Output : De
waarde die na onze PID formule zal uitgekomen worden.
Met deze waarde gaan we de verdere berekening maken zodat we de lijn kunnen volgen.
Met deze waarde gaan we de verdere berekening maken zodat we de lijn kunnen volgen.
afwijking : De fout die tussen de input en
de setpoint zit. Omdat onze setpoint gelijk is aan 0 is de error gelijk aan de
input.
Errsum : Is gelijk aan de error + errsum
deze hebben we nodig om de integratie van onze PID te kunnen berekenen.
dErr : Is de error – de laatste
error. Deze wordt gebruikt om de defferentiatie te kunnen berekenen van onze
PID.
uitleg
Voor dit programma, zullen we het programma van de sensors plaatsen. Nadat de sensoren uitgelezen zijn zal dit programma in werking treden.
De uitkomst van onze PID wordt berekend met volgende formule
:
Output = kp
* error + ki * errSum + kd * dErr
Output = Proportional
+ integral + Differential
Proportional : Positie
van de lijn – de gemeten waarde = het
verschil
Het
verschil * kp = proportional
Integral : Integral
+ het verschil = Integral
Integral * ki = integral
Differential : Verschil
– het vorig verschil = Rate van het verschil
Rate
verschil * kd = differential
Daarna zetten we het verschil vast, als het vorig
verschil om de volgende waarde te kunnen berekenen.
Daarnaast zullen we ook een programma schrijven waarbij we Kp, Ki en Kd kunnen veranderen aan de hand van infrarood communicatie. Aan de hand van deze manier moeten we de microcontroller niet elke maal opnieuw programmeren om waardes aan te passen.
De Kp waarde zal ervoor zorgen dat bij een rechte lijn de lijn constant en stabiel gevolgd wordt zonder oscillatie.
De Ki waarde zal worden gebruikt om te reageren op het einde van een bocht. Deze is een heel gevoelige waarde en zal voor veel oscillatie zorgen indien het verkeerd is ingesteld.
De Kd waarde zal ervoor zorgen dat de lijn mooier gevolgd word in het begin van een bocht.
Geen opmerkingen:
Een reactie posten