Code om de PID controller af te stellen aan de hand van een sinus golf
Dependencies: mbed QEI MODSERIAL FastPWM biquadFilter
main.cpp@3:ac13255164cd, 2019-03-13 (annotated)
- 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?
User | Revision | Line number | New 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 |