Motor control, feedback, PI controller, BiQuad filter
Dependencies: FastPWM HIDScope MODSERIAL biquadFilter mbed QEI
main.cpp
- Committer:
- 1856413
- Date:
- 2018-10-15
- Revision:
- 0:2e33035d4e86
- Child:
- 1:c19fc63d555f
File content as of revision 0:2e33035d4e86:
#include "mbed.h" #include "FastPWM.h" // FastPWM library //#include "MODSERIAL.h" //MODSERIAL pc(USBTX, USBRX); DigitalOut motor2_direction(D4); DigitalOut motor1_direction(D7); AnalogIn pot1(A4); AnalogIn pot2(A5); FastPWM motor2_pwm(D5); //FastPWM input, PES lecture 2 FastPWM motor1_pwm(D6); Ticker MotorInterrupt; void Motor() { // Aflezen Potentiometers volatile float pwm_pct1 = pot1.read(); // Aflezen PotMeter 1 (volatile omdat je altijd de potmeter wil blijven lezen) volatile float pwm_pct2 = pot2.read(); // Aflezen PotMeter 2 // Interval van (0,1) scalen naar (-1,1) volatile float a1 = (2.0*pwm_pct1)- 1; // POT1. pwm_pct1 wordt gescaled, en offset number -1 wordt erbij opgeteld. volatile float a2 = (2.0*pwm_pct2)- 1; // POT2. Idem. // Motor Direction bepalen motor1_direction = a1 > 0; // Bool variable. Al gespecificeerd als direction pin, daarom hoeft er geen bool voor. motor2_direction = a2 > 0; // Indien aX = 1, dan TRUE. Indien aX = -1, dan FALSE. // Motor PWM motor1_pwm = fabs(a1); // Range van 0.0f tot 1.0f motor2_pwm = fabs(a2); } int main() { motor1_pwm.period_us(60.0); // 60 microseconds PWM period, 16.7 kHz, defines all PWM pins (only needs to done once), FastPWM variabele MotorInterrupt.attach(Motor, 0.5); // Ticker die de functie Motor aanroept elke halve seconde, meer tijd is tragere respons op potmeter while(true){} // Endless loop }