Simple Interface for Toshiba's TB6612FNG H-Bridge Motor Driver

Committer:
humlet
Date:
Wed Mar 06 20:45:57 2013 +0000
Revision:
2:73d5d7514e4c
Parent:
1:3dd9137a5cec
Child:
3:1ae4f0bb91c6
fixed doxgen docu

Who changed what in which revision?

UserRevisionLine numberNew contents of line
humlet 0:30d6828516f5 1
humlet 0:30d6828516f5 2 #include "TB6612FNG.h"
humlet 0:30d6828516f5 3
humlet 0:30d6828516f5 4
humlet 1:3dd9137a5cec 5 TB6612FNG::TB6612FNG(PinName pwm, PinName ctrl1, PinName ctrl2, int period, bool brakeOnZeroDC)
humlet 1:3dd9137a5cec 6 :m_pwm(pwm),
humlet 1:3dd9137a5cec 7 m_ctrl1(ctrl1),
humlet 1:3dd9137a5cec 8 m_ctrl2(ctrl2),
humlet 1:3dd9137a5cec 9 m_pw(0),
humlet 1:3dd9137a5cec 10 m_on(false),
humlet 1:3dd9137a5cec 11 m_brakeOnZeroDC(brakeOnZeroDC),
humlet 1:3dd9137a5cec 12 m_period(period)
humlet 0:30d6828516f5 13 {
humlet 0:30d6828516f5 14 m_ctrl1 = 0;
humlet 0:30d6828516f5 15 m_ctrl2 = 0;
humlet 1:3dd9137a5cec 16 m_pwm.period_us(period);
humlet 0:30d6828516f5 17 m_pwm.pulsewidth_us(0);
humlet 0:30d6828516f5 18 }
humlet 0:30d6828516f5 19
humlet 1:3dd9137a5cec 20 void TB6612FNG::setPulseWidth(int pw)
humlet 0:30d6828516f5 21 {
humlet 1:3dd9137a5cec 22 m_pw=pw;
humlet 1:3dd9137a5cec 23 if(m_pw>m_period) m_pw=m_period;
humlet 1:3dd9137a5cec 24 else if(m_pw<-m_period) m_pw=-m_period;
humlet 0:30d6828516f5 25
humlet 0:30d6828516f5 26 if(m_on)on();
humlet 0:30d6828516f5 27 }
humlet 0:30d6828516f5 28
humlet 0:30d6828516f5 29 void TB6612FNG::on()
humlet 0:30d6828516f5 30 {
humlet 0:30d6828516f5 31 m_on=true;
humlet 1:3dd9137a5cec 32 if(m_pw>0) {
humlet 0:30d6828516f5 33 m_ctrl1=1;
humlet 0:30d6828516f5 34 m_ctrl2=0;
humlet 1:3dd9137a5cec 35 m_pwm.pulsewidth_us(m_pw);
humlet 1:3dd9137a5cec 36 } else if(m_pw<0) {
humlet 0:30d6828516f5 37 m_ctrl1=0;
humlet 0:30d6828516f5 38 m_ctrl2=1;
humlet 1:3dd9137a5cec 39 m_pwm.pulsewidth_us(-m_pw);
humlet 1:3dd9137a5cec 40 } else if (m_brakeOnZeroDC) {
humlet 1:3dd9137a5cec 41 m_pwm.pulsewidth_us(0);
humlet 0:30d6828516f5 42 } else {
humlet 0:30d6828516f5 43 m_ctrl1=0;
humlet 0:30d6828516f5 44 m_ctrl2=0;
humlet 0:30d6828516f5 45 }
humlet 1:3dd9137a5cec 46
humlet 0:30d6828516f5 47 }
humlet 0:30d6828516f5 48
humlet 0:30d6828516f5 49 void TB6612FNG::off()
humlet 0:30d6828516f5 50 {
humlet 0:30d6828516f5 51 m_on=false;
humlet 0:30d6828516f5 52 m_ctrl1=0;
humlet 0:30d6828516f5 53 m_ctrl2=0;
humlet 0:30d6828516f5 54 }
humlet 0:30d6828516f5 55
humlet 0:30d6828516f5 56 void TB6612FNG::brake()
humlet 0:30d6828516f5 57 {
humlet 0:30d6828516f5 58 m_on=false;
humlet 0:30d6828516f5 59 m_ctrl1=1;
humlet 0:30d6828516f5 60 m_ctrl2=1;
humlet 0:30d6828516f5 61 }