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

TB6612FNG.cpp

Committer:
humlet
Date:
2013-03-04
Revision:
0:30d6828516f5
Child:
1:3dd9137a5cec

File content as of revision 0:30d6828516f5:

/**
 * H-Bridge / Motor Driver TB6612FNG Control Library
 */


#include "TB6612FNG.h"


TB6612FNG::TB6612FNG(PinName pwm, PinName ctrl1, PinName ctrl2)
    :m_pwm(pwm), m_ctrl1(ctrl1), m_ctrl2(ctrl2), m_dc(0), m_on(false)
{
    m_ctrl1 = 0;
    m_ctrl2 = 0;
    m_pwm.period_us(1000);
    m_pwm.pulsewidth_us(0);
}

void TB6612FNG::setDC(int dc)
{
    m_dc=dc;
    if(m_dc>1000) m_dc=1000;
    else if(m_dc<-1000) m_dc=-1000;

    if(m_on)on();
}

void TB6612FNG::on()
{
    m_on=true;
    if(m_dc>0) {
        m_ctrl1=1;
        m_ctrl2=0;
        m_pwm.pulsewidth_us(m_dc);
    } else if(m_dc<0) {
        m_ctrl1=0;
        m_ctrl2=1;
        m_pwm.pulsewidth_us(-m_dc);
    } else {
        m_ctrl1=0;
        m_ctrl2=0;
    }
    
}

void TB6612FNG::off()
{
    m_on=false;
    m_ctrl1=0;
    m_ctrl2=0;
}

void TB6612FNG::brake()
{
    m_on=false;
    m_ctrl1=1;
    m_ctrl2=1;
}