Control an H-Bridge using a PwmOut (enable) and two DigitalOuts (direction select)
Fork of Motor by
MotorL.cpp@9:9b00a28bc790, 2015-05-15 (annotated)
- Committer:
- miczyg
- Date:
- Fri May 15 13:44:38 2015 +0000
- Revision:
- 9:9b00a28bc790
jk
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
miczyg | 9:9b00a28bc790 | 1 | #include "MotorL.h" |
miczyg | 9:9b00a28bc790 | 2 | #include "mbed.h" |
miczyg | 9:9b00a28bc790 | 3 | |
miczyg | 9:9b00a28bc790 | 4 | MotorL::MotorL(PinName pwm, PinName fwd, PinName rev, PinName stby) : |
miczyg | 9:9b00a28bc790 | 5 | _pwm(pwm), _fwd(fwd), _rev(rev), _stdby(stby)//, speedControl(K, Ti, Td, itv)//, encoder(CH_A, CH_B, NC, pPerRev) |
miczyg | 9:9b00a28bc790 | 6 | { |
miczyg | 9:9b00a28bc790 | 7 | |
miczyg | 9:9b00a28bc790 | 8 | // Set initial condition of PWM |
miczyg | 9:9b00a28bc790 | 9 | _pwm.period(0.001); |
miczyg | 9:9b00a28bc790 | 10 | _pwm = 0; |
miczyg | 9:9b00a28bc790 | 11 | _stdby = 1; |
miczyg | 9:9b00a28bc790 | 12 | // Initial condition of output enables |
miczyg | 9:9b00a28bc790 | 13 | _fwd = 0; |
miczyg | 9:9b00a28bc790 | 14 | _rev = 0; |
miczyg | 9:9b00a28bc790 | 15 | |
miczyg | 9:9b00a28bc790 | 16 | //PID config |
miczyg | 9:9b00a28bc790 | 17 | //speedControl.setInputLimits(0, 1); |
miczyg | 9:9b00a28bc790 | 18 | //speedControl.setOutputLimits(0, 1); |
miczyg | 9:9b00a28bc790 | 19 | //speedControl.setMode(AUTO); |
miczyg | 9:9b00a28bc790 | 20 | |
miczyg | 9:9b00a28bc790 | 21 | } |
miczyg | 9:9b00a28bc790 | 22 | |
miczyg | 9:9b00a28bc790 | 23 | void MotorL::speed(float speed) { |
miczyg | 9:9b00a28bc790 | 24 | |
miczyg | 9:9b00a28bc790 | 25 | /*PID do enkoderow i utrzymywania stalej predkosci*/ |
miczyg | 9:9b00a28bc790 | 26 | /* |
miczyg | 9:9b00a28bc790 | 27 | if (speed != set_speed){ |
miczyg | 9:9b00a28bc790 | 28 | speedControl.setSetPoint(speed); |
miczyg | 9:9b00a28bc790 | 29 | set_speed = speed; |
miczyg | 9:9b00a28bc790 | 30 | } |
miczyg | 9:9b00a28bc790 | 31 | |
miczyg | 9:9b00a28bc790 | 32 | pulses = encoder.getPulses(); |
miczyg | 9:9b00a28bc790 | 33 | curr_speed = (pulses-prev_pulses) / max_pulse_rate; |
miczyg | 9:9b00a28bc790 | 34 | prev_pulses = pulses; |
miczyg | 9:9b00a28bc790 | 35 | |
miczyg | 9:9b00a28bc790 | 36 | speedControl.setProcessValue(curr_speed); |
miczyg | 9:9b00a28bc790 | 37 | speed = speedControl.compute(); |
miczyg | 9:9b00a28bc790 | 38 | */ |
miczyg | 9:9b00a28bc790 | 39 | |
miczyg | 9:9b00a28bc790 | 40 | _fwd = (speed > 0.0); |
miczyg | 9:9b00a28bc790 | 41 | _rev = (speed < 0.0); |
miczyg | 9:9b00a28bc790 | 42 | _pwm = abs(speed); |
miczyg | 9:9b00a28bc790 | 43 | } |