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

TB6612FNG.h

Committer:
humlet
Date:
2013-03-14
Revision:
4:5aec3b59fc10
Parent:
3:1ae4f0bb91c6
Child:
5:535c74e61e36

File content as of revision 4:5aec3b59fc10:

#ifndef TB6612FNG_H
#define TB6612FNG_H

#include "mbed.h"

/// Simple Interface for Toshiba's TB6612FNG H-Bridge Motor Driver
class TB6612FNG
{
    PwmOut m_pwm;
    DigitalOut m_ctrl1;
    DigitalOut m_ctrl2;
    int m_pw;
    bool m_on;
    bool m_brakeOnZeroDC;
    int m_period;

public:
    /** Create TB6612FNG object connected to the specified mbed pins
    * @param pwm PwmOut pin name
    * @param ctrl1/ctrl2 DigitalOut control pin name
    * @param pwmPeriod sets the PWM period (µs)
    * @param brakeOnZeroDC true: The motor brakes on zero pulse width setting. 
    *                      false: The motor output is set to high impedance
    */
    TB6612FNG(PinName pwm, PinName ctrl1, PinName ctrl2, int pwmPeriod=100, bool brakeOnZeroDC=true);
    
    /// Sets the PWM pulse width
    /// @param pw is the PWM pulse width setting in µs. With the default PWM period of 100µs (f=10kHz) this value is equivalent to the duty cycle.
    void setPulseWidth(int pw);
    
    /// activates the motor at the duty cycle selected with setPulseWidth()
    void on();
    
    /// deactivates the motor (sets the motor output to high impedance, no short brake)
    void off();
    
    /// brakes the motor by shorting it 
    void brake();
    
    /// pulse width assignment
    /// @param pw is the PWM pulse width setting in µs
    void operator=(int pw) {
        setPulseWidth(pw);
    }
};

#endif