Robot lijkt goed te reageren op potmeters van Pauline.

Dependencies:   Encoder HIDScope MODSERIAL mbed

Fork of PIDZONDERRKI by Projectgroep 20 Biorobotics

Revision:
3:f755b4d41aa8
Parent:
2:b504e35af662
Child:
4:c119259c1ba5
--- a/main.cpp	Fri Oct 13 09:46:44 2017 +0000
+++ b/main.cpp	Fri Oct 13 10:03:12 2017 +0000
@@ -1,45 +1,47 @@
-//bibliotheken
+//libaries
 #include "mbed.h"
 #include "HIDScope.h"
 #include "encoder.h"
 #include "MODSERIAL.h"
 
 
-// globale variabelen
-Ticker AInTicker;  //We maken een ticker aan genaamd AIn (wordt gebruikt voor HIDScope)
+// globale variables
+Ticker AInTicker;           //We make a ticker named AIn (use for HIDScope)
 
-Ticker Treecko;             //We maken een geweldige ticker aan zodat de potmeter en alles telkens opnieuw worden uitgelezen 
-AnalogIn potMeter2(A1);     //Analoge input van potmeter 2 (zal gebruikt worden voor de snelheids bepaling van de motor)
-PwmOut M1E(D6);             //Biorobotics Motor 1 PWM controle van de snelheid 
-DigitalOut M1D(D7);         //Biorobotics Motor 1 draairichting controle 
+Ticker Treecko;             //We make a awesome ticker for our control system
+AnalogIn potMeter2(A1);     //Analoge input of potmeter 2 (will be use for te reference position)
+PwmOut M1E(D6);             //Biorobotics Motor 1 PWM control of the speed 
+DigitalOut M1D(D7);         //Biorobotics Motor 1 diraction control
 
 Encoder motor1(D13,D12,true);
 MODSERIAL pc(USBTX,USBRX);
 
-float PwmPeriod = 1.0/5000.0;           //PWM periode instellen (5000 Hz, want 5000 periodes in 1 seconde)
+float PwmPeriod = 1.0/5000.0;           //set up of PWM periode (5000 Hz, want 5000 periodes in 1 seconde)
 const float Ts = 0.1;                   // tickettijd/ sample time
 float e_prev = 0; 
 float e_int = 0;
 
+
+
 float GetReferencePosition() 
 {
     float Potmeterwaarde = potMeter2.read();
     int maxwaarde = 4096;                   // = 64x64
     float refP = Potmeterwaarde*maxwaarde;
-    return refP;                            // bepaalde waarde tussen 0 en 4096 
+    return refP;                            // value between 0 and 4096 
 }
     
 float FeedBackControl(float error, float &e_prev, float &e_int)   // schaalt de snelheid naar de snelheid zodat onze chip het begrijpt (is nog niet in werking)
 {
-    float kp = 2.5;                           // moet worden geschaald
+    float kp = 2.5;                           // has jet to be scaled
     float Proportional= kp*error;
     
-    float kd = 3;                           // moet nog worden geschaald
+    float kd = 1;                            // has jet to be scaled
     float VelocityError = (error - e_prev)/Ts; 
     float Derivative = kd*VelocityError;
     e_prev = error;
     
-    float ki = 1;                           // moet nog worden geschaald
+    float ki = 0.5;                           // has jet to be scaled 
     e_int = e_int+Ts*error;
     float Integrator = ki*e_int;
     
@@ -61,7 +63,7 @@
 
     if  (fabs(motorValue) > 1)    
     {
-        M1E = 1;         //de snelheid wordt teruggeschaald naar 8.4 rad/s (maximale snelheid, dus waarde 1)
+        M1E = 1;                    //de snelheid wordt teruggeschaald naar 8.4 rad/s (maximale snelheid, dus waarde 1)
     }
     else
     {    
@@ -72,15 +74,15 @@
 float Encoder ()
 {
     float Huidigepositie = motor1.getPosition ();
-    return Huidigepositie;
+    return Huidigepositie;             // huidige positie = current position
 }
 
 void MeasureAndControl(void)
 {
-    // hier wordt ons regelsysteem aangestuurd
+    // hier the control of the control system
     float refP = GetReferencePosition(); 
     float Huidigepositie = Encoder(); 
-    float error = (refP - Huidigepositie);// maak een error aan
+    float error = (refP - Huidigepositie);// make an error
     float motorValue = FeedBackControl(error, e_prev, e_int);
     SetMotor1(motorValue);
 }