TB6569 - Toshiba's DC motor driver
TB6569.h@1:2dc0a85a05b1, 2013-06-23 (annotated)
- Committer:
- ykuroda
- Date:
- Sun Jun 23 10:16:16 2013 +0000
- Revision:
- 1:2dc0a85a05b1
- Parent:
- 0:ae0a960a4a2b
- Child:
- 2:88e59101a275
First edition
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ykuroda | 0:ae0a960a4a2b | 1 | // |
ykuroda | 1:2dc0a85a05b1 | 2 | // TB6569.h |
ykuroda | 1:2dc0a85a05b1 | 3 | // |
ykuroda | 1:2dc0a85a05b1 | 4 | // ... Y.Kuroda |
ykuroda | 1:2dc0a85a05b1 | 5 | // |
ykuroda | 1:2dc0a85a05b1 | 6 | // 2012.2.1 ... Originally written by Y.Kuroda |
ykuroda | 1:2dc0a85a05b1 | 7 | // |
ykuroda | 0:ae0a960a4a2b | 8 | // |
ykuroda | 0:ae0a960a4a2b | 9 | #ifndef _TB6569_H |
ykuroda | 0:ae0a960a4a2b | 10 | #define _TB6569_H |
ykuroda | 0:ae0a960a4a2b | 11 | |
ykuroda | 0:ae0a960a4a2b | 12 | const float PI = 3.141592; |
ykuroda | 0:ae0a960a4a2b | 13 | |
ykuroda | 0:ae0a960a4a2b | 14 | class TB6569 { |
ykuroda | 0:ae0a960a4a2b | 15 | public: |
ykuroda | 0:ae0a960a4a2b | 16 | enum Mode { PWM, ROT, SVO, VEL }; |
ykuroda | 0:ae0a960a4a2b | 17 | enum Standby { SLEEP, WAKEUP }; |
ykuroda | 0:ae0a960a4a2b | 18 | |
ykuroda | 0:ae0a960a4a2b | 19 | TB6569( PinName pwm, PinName in1, PinName in2, |
ykuroda | 0:ae0a960a4a2b | 20 | float pulse_per_rotate=1, float gear_ratio=1, float delta_t = 1); |
ykuroda | 0:ae0a960a4a2b | 21 | void setParam(float pulse_per_rotate, float gear_ratio, float delta_t); |
ykuroda | 0:ae0a960a4a2b | 22 | void output(void); |
ykuroda | 0:ae0a960a4a2b | 23 | void output(short int _power); |
ykuroda | 0:ae0a960a4a2b | 24 | void output_break(void); |
ykuroda | 0:ae0a960a4a2b | 25 | void period_us(int usec){ _pwm.period_us(usec);}; |
ykuroda | 0:ae0a960a4a2b | 26 | void period_ms(int msec){ _pwm.period_ms(msec);}; |
ykuroda | 0:ae0a960a4a2b | 27 | |
ykuroda | 0:ae0a960a4a2b | 28 | float getRotSpeed(int _pulse); |
ykuroda | 0:ae0a960a4a2b | 29 | void setCurrentVelocity(float vel){ _fv = vel; }; |
ykuroda | 0:ae0a960a4a2b | 30 | void setCurrentPosition(float rad){ _rad = rad; }; |
ykuroda | 0:ae0a960a4a2b | 31 | void setMode(Mode mode = PWM){ _mode = mode; }; |
ykuroda | 0:ae0a960a4a2b | 32 | Mode readMode(void){ return _mode; }; |
ykuroda | 0:ae0a960a4a2b | 33 | |
ykuroda | 0:ae0a960a4a2b | 34 | public: |
ykuroda | 0:ae0a960a4a2b | 35 | Mode _mode; |
ykuroda | 0:ae0a960a4a2b | 36 | |
ykuroda | 0:ae0a960a4a2b | 37 | PwmOut _pwm; // p21, should be one of the following pins p21-p26 |
ykuroda | 0:ae0a960a4a2b | 38 | DigitalOut _in1; |
ykuroda | 0:ae0a960a4a2b | 39 | DigitalOut _in2; |
ykuroda | 0:ae0a960a4a2b | 40 | |
ykuroda | 0:ae0a960a4a2b | 41 | float _pulse_per_rotate; // = 12; |
ykuroda | 0:ae0a960a4a2b | 42 | float _gear_ratio; // = 231.219951923; |
ykuroda | 0:ae0a960a4a2b | 43 | float _kp; // = 30.0; |
ykuroda | 0:ae0a960a4a2b | 44 | float _ki; // = 5.0; |
ykuroda | 0:ae0a960a4a2b | 45 | float _kd; // = 3.0; |
ykuroda | 0:ae0a960a4a2b | 46 | float _ff; // = 33.0; |
ykuroda | 0:ae0a960a4a2b | 47 | float _dc; // = 0.95; |
ykuroda | 0:ae0a960a4a2b | 48 | float _wheel_diameter; // = 0.1016; |
ykuroda | 0:ae0a960a4a2b | 49 | float _direction; // = -1.0; |
ykuroda | 0:ae0a960a4a2b | 50 | |
ykuroda | 0:ae0a960a4a2b | 51 | // float _power; // -100 .. +100 |
ykuroda | 0:ae0a960a4a2b | 52 | short int _power; |
ykuroda | 0:ae0a960a4a2b | 53 | float _rs; // rotational speed (measured) |
ykuroda | 0:ae0a960a4a2b | 54 | float _rs_d; // rotational speed (desired) [rad/s] |
ykuroda | 0:ae0a960a4a2b | 55 | float _fv; // forward velocity (measured) |
ykuroda | 0:ae0a960a4a2b | 56 | float _fv_d; // forward velocity (desired) [m/s] |
ykuroda | 0:ae0a960a4a2b | 57 | float _rad; |
ykuroda | 0:ae0a960a4a2b | 58 | float _rad_d; |
ykuroda | 0:ae0a960a4a2b | 59 | float _drs; |
ykuroda | 0:ae0a960a4a2b | 60 | float _drs_sum; |
ykuroda | 0:ae0a960a4a2b | 61 | float _dpos; |
ykuroda | 0:ae0a960a4a2b | 62 | float _dpos_sum; |
ykuroda | 0:ae0a960a4a2b | 63 | float _current; // motor current [A] |
ykuroda | 0:ae0a960a4a2b | 64 | int _enc_pulse; // current encoder pulse |
ykuroda | 0:ae0a960a4a2b | 65 | float _delta_t; // delta t [sec] |
ykuroda | 0:ae0a960a4a2b | 66 | }; |
ykuroda | 0:ae0a960a4a2b | 67 | |
ykuroda | 0:ae0a960a4a2b | 68 | |
ykuroda | 0:ae0a960a4a2b | 69 | |
ykuroda | 0:ae0a960a4a2b | 70 | #endif //_TB6569_H |