TB6569 - Toshiba's DC motor driver

TB6569.h

Committer:
ykuroda
Date:
2012-12-05
Revision:
0:ae0a960a4a2b
Child:
1:2dc0a85a05b1

File content as of revision 0:ae0a960a4a2b:

//
//  dataset.h
//
#ifndef _TB6569_H
#define _TB6569_H

const float PI = 3.141592;

class TB6569 {
  public:
    enum  Mode { PWM, ROT, SVO, VEL };
    enum  Standby { SLEEP, WAKEUP };

    TB6569( PinName pwm, PinName in1, PinName in2,
            float pulse_per_rotate=1, float gear_ratio=1, float delta_t = 1);
    void  setParam(float pulse_per_rotate, float gear_ratio, float delta_t);
    void  output(void);
    void  output(short int _power);
    void  output_break(void);
    void  period_us(int usec){ _pwm.period_us(usec);};
    void  period_ms(int msec){ _pwm.period_ms(msec);};

    float  getRotSpeed(int _pulse);
    void  setCurrentVelocity(float vel){ _fv  = vel; };
    void  setCurrentPosition(float rad){ _rad = rad; };
    void  setMode(Mode mode = PWM){ _mode = mode; };
    Mode  readMode(void){ return _mode; };

  public:
    Mode  _mode;

    PwmOut      _pwm; // p21, should be one of the following pins p21-p26
    DigitalOut  _in1;
    DigitalOut  _in2;

    float _pulse_per_rotate; // = 12;
    float _gear_ratio;       // = 231.219951923;
    float _kp;               // = 30.0;
    float _ki;               // =  5.0;
    float _kd;               // =  3.0;
    float _ff;               // = 33.0;
    float _dc;               // = 0.95;
    float _wheel_diameter;   // = 0.1016;
    float _direction;        // = -1.0;

 //   float _power;            // -100 .. +100
    short int _power;
    float _rs;               // rotational speed (measured)
    float _rs_d;             // rotational speed (desired) [rad/s]
    float _fv;               // forward velocity (measured)
    float _fv_d;             // forward velocity (desired) [m/s]
    float _rad;
    float _rad_d;
    float _drs;
    float _drs_sum;
    float _dpos;
    float _dpos_sum;
    float _current;          // motor current [A]
    int   _enc_pulse;        // current encoder pulse
    float _delta_t;          // delta t [sec]
};



#endif  //_TB6569_H