Motor control in Ticker

Dependencies:   FastPWM MODSERIAL mbed QEI

Fork of Motorcontrol by Laurence B

Committer:
s1680897
Date:
Fri Sep 28 09:13:19 2018 +0000
Revision:
2:ba344767412c
Parent:
1:621c4bb5301d
Child:
3:bfb7f197991f
Child:
4:7f7974aec29d
Ticker_motorcontrol

Who changed what in which revision?

UserRevisionLine numberNew contents of line
laurencebr 0:dacd23e75c5c 1 #include "mbed.h"
laurencebr 0:dacd23e75c5c 2 #include "FastPWM.h"
laurencebr 0:dacd23e75c5c 3 #include "MODSERIAL.h"
laurencebr 0:dacd23e75c5c 4
s1680897 2:ba344767412c 5 Ticker Motorticker;
s1680897 2:ba344767412c 6
laurencebr 0:dacd23e75c5c 7 FastPWM motor1_pwm(D5);
laurencebr 0:dacd23e75c5c 8 DigitalOut motor1_richting(D4);
laurencebr 1:621c4bb5301d 9 FastPWM motor2_pwm(D6);
laurencebr 1:621c4bb5301d 10 DigitalOut motor2_richting(D7);
laurencebr 0:dacd23e75c5c 11
laurencebr 0:dacd23e75c5c 12 AnalogIn pot1(A1);
laurencebr 0:dacd23e75c5c 13 AnalogIn pot2(A0);
laurencebr 0:dacd23e75c5c 14 MODSERIAL pc(USBTX, USBRX);
laurencebr 0:dacd23e75c5c 15
s1680897 2:ba344767412c 16 void Motor_control()
laurencebr 0:dacd23e75c5c 17 {
laurencebr 0:dacd23e75c5c 18 pc.baud(115200);
laurencebr 0:dacd23e75c5c 19
laurencebr 0:dacd23e75c5c 20 float AnalogVoltage1 = pot1.read()*2 - 1;
laurencebr 0:dacd23e75c5c 21 float AnalogVoltage2 = pot2.read()*2 - 1;
laurencebr 0:dacd23e75c5c 22 pc.printf("pot1 = %f \t pot2 = %f \r\n", AnalogVoltage1, AnalogVoltage2);
laurencebr 0:dacd23e75c5c 23
laurencebr 1:621c4bb5301d 24 //Motor1
laurencebr 1:621c4bb5301d 25
s1680897 2:ba344767412c 26 if (AnalogVoltage1 <= 0)
s1680897 2:ba344767412c 27 {
laurencebr 0:dacd23e75c5c 28 motor1_richting = 0;
laurencebr 0:dacd23e75c5c 29 motor1_pwm.write(-AnalogVoltage1); //write Duty cycle
s1680897 2:ba344767412c 30 }
s1680897 2:ba344767412c 31
s1680897 2:ba344767412c 32 if (AnalogVoltage1 >= 0)
s1680897 2:ba344767412c 33 {
laurencebr 0:dacd23e75c5c 34 motor1_richting = 1;
laurencebr 0:dacd23e75c5c 35 motor1_pwm.write(AnalogVoltage1); //write Duty cycle
s1680897 2:ba344767412c 36 }
laurencebr 0:dacd23e75c5c 37
laurencebr 1:621c4bb5301d 38 //Motor 2
laurencebr 1:621c4bb5301d 39
s1680897 2:ba344767412c 40 if (AnalogVoltage2 <= 0)
s1680897 2:ba344767412c 41 {
laurencebr 1:621c4bb5301d 42 motor2_richting = 0;
laurencebr 1:621c4bb5301d 43 motor2_pwm.write(-AnalogVoltage2); //write Duty cycle
s1680897 2:ba344767412c 44 }
s1680897 2:ba344767412c 45 if (AnalogVoltage2 >= 0)
s1680897 2:ba344767412c 46 {
laurencebr 1:621c4bb5301d 47 motor2_richting = 1;
laurencebr 1:621c4bb5301d 48 motor2_pwm.write(AnalogVoltage2); //write Duty cycle
laurencebr 0:dacd23e75c5c 49 }
s1680897 2:ba344767412c 50 }
s1680897 2:ba344767412c 51
s1680897 2:ba344767412c 52 int main()
s1680897 2:ba344767412c 53 {
s1680897 2:ba344767412c 54 int frequency_pwm = 16700; //16.7 kHz PWM
s1680897 2:ba344767412c 55
s1680897 2:ba344767412c 56 Motorticker.attach(Motor_control,0.1);
s1680897 2:ba344767412c 57 motor1_pwm.period(1.0/frequency_pwm); // T = 1/f
s1680897 2:ba344767412c 58
s1680897 2:ba344767412c 59 while(true)
s1680897 2:ba344767412c 60 {}
laurencebr 0:dacd23e75c5c 61 }