TB6569 - Toshiba's DC motor driver
TB6569.cpp@3:0a18bc568fa4, 2013-06-23 (annotated)
- Committer:
- ykuroda
- Date:
- Sun Jun 23 14:24:56 2013 +0000
- Revision:
- 3:0a18bc568fa4
- Parent:
- 2:88e59101a275
bug fixed
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ykuroda | 0:ae0a960a4a2b | 1 | // |
ykuroda | 2:88e59101a275 | 2 | // TB6569.cpp |
ykuroda | 1:2dc0a85a05b1 | 3 | // |
ykuroda | 1:2dc0a85a05b1 | 4 | // ... Y.Kuroda |
ykuroda | 1:2dc0a85a05b1 | 5 | // |
ykuroda | 2:88e59101a275 | 6 | // 2012.02.01 ... Originally written by Y.Kuroda |
ykuroda | 2:88e59101a275 | 7 | // 2013.06.23 ... Originally written by Y.Kuroda |
ykuroda | 1:2dc0a85a05b1 | 8 | // |
ykuroda | 0:ae0a960a4a2b | 9 | // |
ykuroda | 0:ae0a960a4a2b | 10 | #include <mbed.h> |
ykuroda | 0:ae0a960a4a2b | 11 | #include "TB6569.h" |
ykuroda | 0:ae0a960a4a2b | 12 | |
ykuroda | 2:88e59101a275 | 13 | TB6569::TB6569( PinName pwm, PinName in1, PinName in2, PinName vref, PinName alert) |
ykuroda | 0:ae0a960a4a2b | 14 | : _pwm(pwm), |
ykuroda | 0:ae0a960a4a2b | 15 | _in1(in1), |
ykuroda | 2:88e59101a275 | 16 | _in2(in2), |
ykuroda | 2:88e59101a275 | 17 | _vref(vref), |
ykuroda | 2:88e59101a275 | 18 | _alert(alert) |
ykuroda | 0:ae0a960a4a2b | 19 | { |
ykuroda | 3:0a18bc568fa4 | 20 | stop(); |
ykuroda | 2:88e59101a275 | 21 | current_control(1.0); // default = not control current |
ykuroda | 0:ae0a960a4a2b | 22 | } |
ykuroda | 0:ae0a960a4a2b | 23 | |
ykuroda | 0:ae0a960a4a2b | 24 | void |
ykuroda | 2:88e59101a275 | 25 | TB6569::current_control(float vref) // Current Control [0 ... 1] |
ykuroda | 0:ae0a960a4a2b | 26 | { |
ykuroda | 2:88e59101a275 | 27 | _vref = vref; |
ykuroda | 0:ae0a960a4a2b | 28 | } |
ykuroda | 0:ae0a960a4a2b | 29 | |
ykuroda | 0:ae0a960a4a2b | 30 | void |
ykuroda | 2:88e59101a275 | 31 | TB6569::output(int power) // Percent [-100 ... 100] |
ykuroda | 0:ae0a960a4a2b | 32 | { |
ykuroda | 0:ae0a960a4a2b | 33 | if(power == 0) { // stop |
ykuroda | 3:0a18bc568fa4 | 34 | stop(); |
ykuroda | 2:88e59101a275 | 35 | } else { |
ykuroda | 2:88e59101a275 | 36 | output((float)power/100); |
ykuroda | 2:88e59101a275 | 37 | } |
ykuroda | 2:88e59101a275 | 38 | } |
ykuroda | 2:88e59101a275 | 39 | |
ykuroda | 2:88e59101a275 | 40 | void |
ykuroda | 2:88e59101a275 | 41 | TB6569::output(float power) // PWM Duty [-1 ... 1] |
ykuroda | 2:88e59101a275 | 42 | { |
ykuroda | 2:88e59101a275 | 43 | if(power> 1) power= 1; |
ykuroda | 2:88e59101a275 | 44 | else |
ykuroda | 2:88e59101a275 | 45 | if(power<-1) power=-1; |
ykuroda | 2:88e59101a275 | 46 | |
ykuroda | 0:ae0a960a4a2b | 47 | if(power > 0) { |
ykuroda | 2:88e59101a275 | 48 | _pwm = power; |
ykuroda | 0:ae0a960a4a2b | 49 | _in1 = 1; |
ykuroda | 0:ae0a960a4a2b | 50 | _in2 = 0; |
ykuroda | 0:ae0a960a4a2b | 51 | } else { |
ykuroda | 2:88e59101a275 | 52 | _pwm = power; |
ykuroda | 0:ae0a960a4a2b | 53 | _in1 = 0; |
ykuroda | 0:ae0a960a4a2b | 54 | _in2 = 1; |
ykuroda | 0:ae0a960a4a2b | 55 | } |
ykuroda | 0:ae0a960a4a2b | 56 | } |
ykuroda | 0:ae0a960a4a2b | 57 | |
ykuroda | 0:ae0a960a4a2b | 58 | void |
ykuroda | 3:0a18bc568fa4 | 59 | TB6569::short_break(void) |
ykuroda | 0:ae0a960a4a2b | 60 | { |
ykuroda | 0:ae0a960a4a2b | 61 | _pwm = 0; |
ykuroda | 0:ae0a960a4a2b | 62 | _in1 = 1; |
ykuroda | 0:ae0a960a4a2b | 63 | _in2 = 1; |
ykuroda | 0:ae0a960a4a2b | 64 | } |
ykuroda | 0:ae0a960a4a2b | 65 | |
ykuroda | 2:88e59101a275 | 66 | void |
ykuroda | 3:0a18bc568fa4 | 67 | TB6569::stop(void) |
ykuroda | 2:88e59101a275 | 68 | { |
ykuroda | 2:88e59101a275 | 69 | _pwm = 0; |
ykuroda | 2:88e59101a275 | 70 | _in1 = 0; |
ykuroda | 2:88e59101a275 | 71 | _in2 = 0; |
ykuroda | 2:88e59101a275 | 72 | } |
ykuroda | 0:ae0a960a4a2b | 73 | |
ykuroda | 0:ae0a960a4a2b | 74 | void |
ykuroda | 2:88e59101a275 | 75 | TB6569::reset(void) |
ykuroda | 0:ae0a960a4a2b | 76 | { |
ykuroda | 3:0a18bc568fa4 | 77 | stop(); |
ykuroda | 0:ae0a960a4a2b | 78 | } |