TB6569 - Toshiba's DC motor driver
Diff: TB6569.h
- Revision:
- 2:88e59101a275
- Parent:
- 1:2dc0a85a05b1
- Child:
- 3:0a18bc568fa4
--- a/TB6569.h Sun Jun 23 10:16:16 2013 +0000 +++ b/TB6569.h Sun Jun 23 13:57:48 2013 +0000 @@ -9,60 +9,35 @@ #ifndef _TB6569_H #define _TB6569_H -const float PI = 3.141592; +class TB6569 +{ +public: + TB6569(PinName pwm, PinName in1, PinName in2, PinName vref=NC, PinName alert=NC); -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(int _power); // -100 ... 100 + void output(float _power); // -1 ... 1 void output_break(void); - void period_us(int usec){ _pwm.period_us(usec);}; - void period_ms(int msec){ _pwm.period_ms(msec);}; + void output_stop(void); + void reset(void); + void period_us(int usec) { + _pwm.period_us(usec); + }; + void period_ms(int msec) { + _pwm.period_ms(msec); + }; + void current_control(float vref); + int alert(void) { + return _alert; + }; - 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; +public: 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] + AnalogOut _vref; + DigitalIn _alert; };