Jorn-Jan van de Beld / Mbed 2 deprecated PI_standaardsignalen

Dependencies:   QEI mbed

Files at this revision

API Documentation at this revision

Comitter:
JornJan
Date:
Wed Nov 01 16:16:04 2017 +0000
Child:
1:7969189824ff
Commit message:
PID_standaardsignalen;

Changed in this revision

QEI.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/QEI.lib	Wed Nov 01 16:16:04 2017 +0000
@@ -0,0 +1,1 @@
+http://os.mbed.com/users/aberk/code/QEI/#5c2ad81551aa
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Nov 01 16:16:04 2017 +0000
@@ -0,0 +1,126 @@
+#include "mbed.h"
+#include "Serial.h"
+#include "math.h"
+#include "QEI.h"
+
+Serial      pc(USBTX, USBRX);        //Serial PC connectie
+DigitalOut  motor1DirectionPin(D4);  //Motorrichting op D4 (connected op het bord)
+PwmOut      motor1MagnitudePin(D5);  //Motorkracht op D5 (connected op het bord)
+DigitalOut  motor2DirectionPin(D7);  //Motorrichting op D4 (connected op het bord)
+PwmOut      motor2MagnitudePin(D6);  //Motorkracht op D5 (connected op het bord)
+QEI         q1_enc(D13, D12, NC, 32);       //encoder motor 1 instellen
+QEI         q2_enc(D11, D10, NC, 32);       // encoder motor 2 instellen
+const double pi = 3.1415926535897;  // waarde voor pi aanmaken
+
+Timer t;
+Ticker aansturing;
+Ticker stepres;
+
+double ref1 = 0;
+double refrad1;
+double refrad2;
+double ref2 = 0;
+double Kp1 = 0.002;    //kp motor 2 = 0.0001
+double Ki1 = 0;
+double Kp2 = 0.0001;
+double Ki2 = 0;
+int q1_puls;
+int q2_puls;
+double rad2pulses=4200/(2*pi);
+double ts = 0.001;
+double PI1;
+int n;
+
+double error1_1;
+double error2_1 = 0;
+double error_I_1;
+double error_I2_1 = 0;
+double error1_2;
+double error2_2 = 0;
+double error_I_2;
+double error_I2_2 = 0;
+double PI2;
+
+void controller()
+{   
+    refrad2 =  1.57f*sin(t.read()); //motor 2
+    ref2 = refrad2 * rad2pulses;   
+    refrad1 = -0.6f*cos(t.read()) + 0.2f; //motor 1
+    ref1 = refrad2 * rad2pulses;
+    
+    // encoders uitlezen    
+    q1_puls = q1_enc.getPulses();
+    q2_puls = q2_enc.getPulses();
+
+    //PID 1
+error1_1 = ref1 - q1_puls;
+error_I_1 = error_I2_1 + ts*((error1_1 + error2_1)/2);
+
+PI1 = Kp1*error1_1 + Ki1*error_I_1;
+
+error2_1   = error1_1; // opslaan variabelen voor integraal onderdeel
+error_I2_1 = error_I_1;
+    
+    //PID 2
+error1_2 = ref2 - q2_puls;
+error_I_2 = error_I2_2 + ts*((error1_2 + error2_2)/2);
+
+PI2 = Kp2*error1_2 + Ki2*(error_I_2);
+
+
+    if (PI1<=0)
+    {
+    motor1DirectionPin = 1;
+    motor1MagnitudePin = fabs(PI1);
+    }
+    else if (PI1>0)
+    {
+    motor1DirectionPin = 0;
+    motor1MagnitudePin = fabs(PI1);        
+    }
+    
+    if (PI2>=0)
+    {
+    motor2DirectionPin = 1;
+    motor2MagnitudePin = fabs(PI2);   
+    }
+    else if(PI2<0)
+    {
+    motor2DirectionPin = 0;
+    motor2MagnitudePin = fabs(PI2);               
+    }
+    
+    if(n==500){         
+    printf("PI1 = %f\n\r", PI1);
+    n=0;
+    }
+    else{
+             n=n+1;
+             }     
+
+}
+
+void stapfunc()
+{
+ if (ref1==0){
+     ref1 = 1000;
+     }
+     else if (ref1==1000)
+     {
+         ref1=0; 
+     }  
+}
+
+int main()
+{
+    pc.baud(115200);
+    t.start();
+    aansturing.attach_us(&controller, 1000);
+    //stepres.attach(&stapfunc, 3);
+    
+    while(true){
+
+        }
+
+
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Wed Nov 01 16:16:04 2017 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/fb8e0ae1cceb
\ No newline at end of file