TB6569 - Toshiba's DC motor driver
Diff: TB6569.h
- Revision:
- 0:ae0a960a4a2b
- Child:
- 1:2dc0a85a05b1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TB6569.h Wed Dec 05 04:26:49 2012 +0000 @@ -0,0 +1,65 @@ +// +// 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