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

Committer:
humlet
Date:
Tue Mar 12 19:22:49 2013 +0000
Revision:
3:1ae4f0bb91c6
Parent:
2:73d5d7514e4c
Child:
5:535c74e61e36
almost final

Who changed what in which revision?

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