zaterdag 17 november 2012

PID regeling


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 :
<!--[if !vml]--><!--[endif]-->
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.
 
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