Library for the VNH5019 Motor Driver, with a helper class for the Pololu Dual VNH5019 Dual Motor Driver Shield http://www.pololu.com/product/2502

Dependents:   VNH5019_second VNH5019_second1

VNH5019.h

Committer:
ianmcc
Date:
2014-02-01
Revision:
0:5d3ab0ea7f27
Child:
1:5e8d9ed18f0f

File content as of revision 0:5d3ab0ea7f27:

#ifndef DualVNH5019MotorShield_h
#define DualVNH5019MotorShield_h

#include <mbed.h>

class DualVNH5019MotorShield
{
   public:
      // default pin selection
      DualVNH5019MotorShield(); // Default pin selection.

                              // User-defined pin selection. 
      DualVNH5019MotorShield(PinName INA1_, PinName INB1_, PinName ENDIAG1_, PinName CS1_, PinName PWM1_,
                             PinName INA2_, PinName INB2_, PinName ENDIAG2_, PinName CS2_, PinName PWM2_);
    
      // Set motor speeds, from -1.0 to +1.0
      void setM1Speed(float Speed);
      void setM2Speed(float Speed);
      void setSpeeds(float m1Speed, float m2Speed);

      // stop (no current to the motors)
      void setM1Stop();
      void setM2Stop();

      // brake, with strength 0..1
      void setM1Brake(float Brake);
      void setM2Brake(float Brake);
      void setBrakes(float m1Brake, float m2Brake);
      
      // return the current supplied to the motors
      float getM1CurrentMA();
      float getM2CurrentMA();
      
      // fault
      bool isM1Fault();
      bool isM2Fault();

      // If a fault occurs, then we follow the procedure from the data sheet to clear it
      void clearM1Fault();
      void clearM2Fault();
      
      // disable / enable (isFault() will return true if the motor is disabled).
      // Disabling the motor also sets the speed to 0 and brakes to LOW.
      void disableM1();
      void disableM2();

      void enableM1(bool Enable = true);
      void enableM2(bool Enable = true);
    
   private:
      void init(); // Initialize TIMER 1, set the PWM to 20kHZ. 

      DigitalOut   INA1;
      DigitalOut   INB1;
      DigitalInOut ENDIAG1;
      AnalogIn     CS1;
      PwmOut       PWM1;

      DigitalOut   INA2;
      DigitalOut   INB2;
      DigitalInOut ENDIAG2;
      AnalogIn     CS2;
      PwmOut       PWM2;
};

#endif