Code om de PID controller af te stellen aan de hand van een sinus golf

Dependencies:   mbed QEI MODSERIAL FastPWM biquadFilter

Revision:
4:99f7fdce608e
Parent:
3:ac13255164cd
Child:
5:4b25551aeb6e
--- a/main.cpp	Wed Mar 13 16:03:13 2019 +0000
+++ b/main.cpp	Fri Mar 15 15:00:21 2019 +0000
@@ -1,75 +1,101 @@
 #include "mbed.h"
 #include "MODSERIAL.h"
+#include "QEI.h"
+
+// Algemeen
 DigitalIn button2(SW2);
 DigitalIn button3(SW3);
 DigitalOut led(LED_GREEN);
 DigitalOut led2(LED_RED);
+DigitalOut led3(LED_BLUE);
 MODSERIAL pc(USBTX, USBRX);
 
-//motoren
+//Motoren
 DigitalOut direction1(D4);
 PwmOut pwmpin1(D5);
 PwmOut pwmpin2(D6);
 DigitalOut direction2(D7);
+volatile float PWM1;
+volatile float PWM2;
+volatile float pwm2;
+
+//Encoder
+DigitalIn EncoderA(D13);
+DigitalIn EncoderB(D12);
+QEI encoder2 (D13, D12, NC, 8400, QEI::X4_ENCODING);
+float Pulses2;
+float Degrees2;
 
 //Pot meter
 AnalogIn pot(A1);
-Ticker Pot;
+float Pot2;
+
+//Ticker
+Ticker Pwm;
 Ticker PotRead;
-Ticker Typ;
 
 
-volatile float PWM1;
-volatile float PWM2;
-volatile float pwm2;
-float Pot2;
+
+
+
 
 void Period(void)
     {
     pwmpin2.period_us(60);
     }
-void Potread(void)
+    
+void PwmMotor(void)
     {     
-    PWM2 = pot.read();
-    pwm2 = (PWM2*2)-1;                  //scaling
+    pwm2 = (Pot2*2)-1;                  //scaling
     pc.printf("pwm2=%f\r\n",pwm2);
+    Degrees2 = (Pulses2/8400)*360;
+    pc.printf("Pulses is: %i\n", Pulses2);
     direction2 = pwm2 < 0.0f;    //positief = CW, negatief = CCW
     pwmpin2 = fabs(pwm2);
+    
 
     }  
 void MotorOn(void)
     {
-    Pot.attach (Potread, 0.1);
-    
+    pwmpin2 = 0;
+    Pwm.attach (PwmMotor, 0.1);
     }
 void MotorOff(void)
     {
-    Pot.detach ();    
+    Pwm.detach ();    
     pwmpin2 = 0;
     }
-void Typen(void){
+
+void ContinuousReader(void){
     Pot2 = pot.read();
-    pc.printf("%f\r\n",Pot2);
+    Pulses2 = encoder2.getPulses();
+    //pc.printf("%f\r\n",Pot2);
     }
     
 
        
 int main() {
     Period();
+    PotRead.attach(ContinuousReader,0.1);
     pc.baud(115200);
     pc.printf("start\r\n");
+    led = 1;
+    led2 =1;
+    led3 =1;
     
     while (true){
-    led2 = 0;
+    led3 = 0;
     if (!button2)
     {
-        led = 1;
-        Typ.attach(Typen,1);
+        led3 = 1;
+        led = 0;
+        pc.printf("MotorOn\r\n");
         MotorOn();   
     }
     if (!button3)
     {
-        Typ.detach();
+        pc.printf("MotorOff\r\n");
+        PotRead.detach();
         MotorOff();
     }
     led = 0;