TB6569 - Toshiba's DC motor driver

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;
 };