TB6569 - Toshiba's DC motor driver

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?

UserRevisionLine numberNew 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 }