TB6569 - Toshiba's DC motor driver

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