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

Committer:
humlet
Date:
Wed Mar 06 19:59:50 2013 +0000
Revision:
1:3dd9137a5cec
Parent:
0:30d6828516f5
Child:
2:73d5d7514e4c
reloaded

Who changed what in which revision?

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