TB6569 - Toshiba's DC motor driver

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?

UserRevisionLine numberNew 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