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

Dependencies:   mbed QEI MODSERIAL FastPWM biquadFilter

Committer:
aschut
Date:
Wed Mar 13 16:03:13 2019 +0000
Revision:
3:ac13255164cd
Parent:
2:926d56babb1a
Child:
4:99f7fdce608e
scaled Potmeter met modserial en off-functie

Who changed what in which revision?

UserRevisionLine numberNew contents of line
aschut 0:a9a42914138c 1 #include "mbed.h"
aschut 2:926d56babb1a 2 #include "MODSERIAL.h"
aschut 1:58f34947c674 3 DigitalIn button2(SW2);
aschut 1:58f34947c674 4 DigitalIn button3(SW3);
aschut 2:926d56babb1a 5 DigitalOut led(LED_GREEN);
aschut 2:926d56babb1a 6 DigitalOut led2(LED_RED);
aschut 2:926d56babb1a 7 MODSERIAL pc(USBTX, USBRX);
aschut 2:926d56babb1a 8
aschut 2:926d56babb1a 9 //motoren
aschut 0:a9a42914138c 10 DigitalOut direction1(D4);
aschut 0:a9a42914138c 11 PwmOut pwmpin1(D5);
aschut 0:a9a42914138c 12 PwmOut pwmpin2(D6);
aschut 0:a9a42914138c 13 DigitalOut direction2(D7);
aschut 2:926d56babb1a 14
aschut 2:926d56babb1a 15 //Pot meter
aschut 1:58f34947c674 16 AnalogIn pot(A1);
aschut 1:58f34947c674 17 Ticker Pot;
aschut 2:926d56babb1a 18 Ticker PotRead;
aschut 2:926d56babb1a 19 Ticker Typ;
aschut 0:a9a42914138c 20
aschut 2:926d56babb1a 21
aschut 1:58f34947c674 22 volatile float PWM1;
aschut 1:58f34947c674 23 volatile float PWM2;
aschut 3:ac13255164cd 24 volatile float pwm2;
aschut 2:926d56babb1a 25 float Pot2;
aschut 0:a9a42914138c 26
aschut 1:58f34947c674 27 void Period(void)
aschut 1:58f34947c674 28 {
aschut 1:58f34947c674 29 pwmpin2.period_us(60);
aschut 0:a9a42914138c 30 }
aschut 1:58f34947c674 31 void Potread(void)
aschut 1:58f34947c674 32 {
aschut 3:ac13255164cd 33 PWM2 = pot.read();
aschut 3:ac13255164cd 34 pwm2 = (PWM2*2)-1; //scaling
aschut 3:ac13255164cd 35 pc.printf("pwm2=%f\r\n",pwm2);
aschut 3:ac13255164cd 36 direction2 = pwm2 < 0.0f; //positief = CW, negatief = CCW
aschut 3:ac13255164cd 37 pwmpin2 = fabs(pwm2);
aschut 2:926d56babb1a 38
aschut 1:58f34947c674 39 }
aschut 1:58f34947c674 40 void MotorOn(void)
aschut 1:58f34947c674 41 {
aschut 1:58f34947c674 42 Pot.attach (Potread, 0.1);
aschut 3:ac13255164cd 43
aschut 1:58f34947c674 44 }
aschut 1:58f34947c674 45 void MotorOff(void)
aschut 1:58f34947c674 46 {
aschut 1:58f34947c674 47 Pot.detach ();
aschut 1:58f34947c674 48 pwmpin2 = 0;
aschut 1:58f34947c674 49 }
aschut 2:926d56babb1a 50 void Typen(void){
aschut 3:ac13255164cd 51 Pot2 = pot.read();
aschut 3:ac13255164cd 52 pc.printf("%f\r\n",Pot2);
aschut 2:926d56babb1a 53 }
aschut 1:58f34947c674 54
aschut 1:58f34947c674 55
aschut 1:58f34947c674 56
aschut 0:a9a42914138c 57 int main() {
aschut 0:a9a42914138c 58 Period();
aschut 2:926d56babb1a 59 pc.baud(115200);
aschut 2:926d56babb1a 60 pc.printf("start\r\n");
aschut 2:926d56babb1a 61
aschut 2:926d56babb1a 62 while (true){
aschut 2:926d56babb1a 63 led2 = 0;
aschut 1:58f34947c674 64 if (!button2)
aschut 1:58f34947c674 65 {
aschut 2:926d56babb1a 66 led = 1;
aschut 3:ac13255164cd 67 Typ.attach(Typen,1);
aschut 2:926d56babb1a 68 MotorOn();
aschut 1:58f34947c674 69 }
aschut 1:58f34947c674 70 if (!button3)
aschut 1:58f34947c674 71 {
aschut 3:ac13255164cd 72 Typ.detach();
aschut 1:58f34947c674 73 MotorOff();
aschut 1:58f34947c674 74 }
aschut 2:926d56babb1a 75 led = 0;
aschut 3:ac13255164cd 76 }
aschut 0:a9a42914138c 77 }
aschut 0:a9a42914138c 78
aschut 0:a9a42914138c 79
aschut 0:a9a42914138c 80