Library for Pololu Motor driver - VNH5019 Motor Driver Carrier https://www.pololu.com/product/1451

Dependents:   VNH5019_2 VNH5019_1

Committer:
TeaPack_CZ
Date:
Sat Feb 25 22:36:03 2017 +0000
Revision:
1:c1767d70d47e
Parent:
0:c54243e9db1d
Improve class description

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TeaPack_CZ 1:c1767d70d47e 1 /** Class for the Pololu1451 motor driver carrier (VNH5019)\n
TeaPack_CZ 1:c1767d70d47e 2 * This class can control VNH5019 motor driver. Class supports stop command and
TeaPack_CZ 1:c1767d70d47e 3 * hold command, which uses active breaking of motor. Active position returning
TeaPack_CZ 1:c1767d70d47e 4 * can not by supported without encoder. Connected pins are: INA, INB, PWM, CS.
TeaPack_CZ 1:c1767d70d47e 5 * Pins ENA, ENB needs external pullups (10k) to make it work.\n\n
TeaPack_CZ 0:c54243e9db1d 6 * https://www.pololu.com/product/1451\n\n
TeaPack_CZ 0:c54243e9db1d 7 *
TeaPack_CZ 0:c54243e9db1d 8 * Writen by: Jan Crha (TeaPack_CZ), 2017.
TeaPack_CZ 0:c54243e9db1d 9 *
TeaPack_CZ 0:c54243e9db1d 10 * Last modified: 2017-02-25
TeaPack_CZ 0:c54243e9db1d 11 *
TeaPack_CZ 0:c54243e9db1d 12 * Example (LPC1768):
TeaPack_CZ 0:c54243e9db1d 13 * @code
TeaPack_CZ 0:c54243e9db1d 14 * #include "mbed.h"
TeaPack_CZ 0:c54243e9db1d 15 * #include "MotorDriver.h"
TeaPack_CZ 0:c54243e9db1d 16 * #include "math.h"
TeaPack_CZ 0:c54243e9db1d 17 *
TeaPack_CZ 0:c54243e9db1d 18 * Serial PC(USBTX,USBRX);
TeaPack_CZ 0:c54243e9db1d 19 *
TeaPack_CZ 1:c1767d70d47e 20 * MotorDriver Motor(p20,p21,p22); // Connect to pins PWM, INA, INB
TeaPack_CZ 1:c1767d70d47e 21 * AnalogIn senseB(p19); //Connect to pin CS
TeaPack_CZ 0:c54243e9db1d 22 *
TeaPack_CZ 0:c54243e9db1d 23 * int main(){
TeaPack_CZ 0:c54243e9db1d 24 *
TeaPack_CZ 0:c54243e9db1d 25 * PC.baud(115200);
TeaPack_CZ 0:c54243e9db1d 26 * Motor.setEnabled(true);
TeaPack_CZ 0:c54243e9db1d 27 * int i = 0;
TeaPack_CZ 0:c54243e9db1d 28 *
TeaPack_CZ 0:c54243e9db1d 29 * while(1)
TeaPack_CZ 0:c54243e9db1d 30 * {
TeaPack_CZ 0:c54243e9db1d 31 * Motor.setSpeed(sin(i/180.0*3.1415));
TeaPack_CZ 0:c54243e9db1d 32 * PC.printf("%.3f",senseB.read());
TeaPack_CZ 0:c54243e9db1d 33 * wait(0.1);
TeaPack_CZ 0:c54243e9db1d 34 * }
TeaPack_CZ 0:c54243e9db1d 35 * }
TeaPack_CZ 0:c54243e9db1d 36 * @endcode
TeaPack_CZ 0:c54243e9db1d 37 */
TeaPack_CZ 0:c54243e9db1d 38
TeaPack_CZ 0:c54243e9db1d 39 #include "mbed.h"
TeaPack_CZ 0:c54243e9db1d 40
TeaPack_CZ 0:c54243e9db1d 41 class MotorDriver{
TeaPack_CZ 0:c54243e9db1d 42
TeaPack_CZ 0:c54243e9db1d 43 public:
TeaPack_CZ 0:c54243e9db1d 44
TeaPack_CZ 0:c54243e9db1d 45 /** Class contructor.
TeaPack_CZ 0:c54243e9db1d 46 \param PWM output connected to PWM pin on Pololu driver
TeaPack_CZ 0:c54243e9db1d 47 \param DirA connect to pin INA
TeaPack_CZ 0:c54243e9db1d 48 \param DirB connect to pin INB
TeaPack_CZ 0:c54243e9db1d 49 */
TeaPack_CZ 0:c54243e9db1d 50 MotorDriver(PinName Pwm, PinName DirA, PinName DirB);
TeaPack_CZ 0:c54243e9db1d 51
TeaPack_CZ 0:c54243e9db1d 52 /** Procedure for enabling/disabling motor driver
TeaPack_CZ 0:c54243e9db1d 53 */
TeaPack_CZ 0:c54243e9db1d 54 void setEnabled(bool);
TeaPack_CZ 0:c54243e9db1d 55
TeaPack_CZ 0:c54243e9db1d 56 /** Functon returning actual state of motor driver
TeaPack_CZ 0:c54243e9db1d 57 @returns True/False - state of motor driver
TeaPack_CZ 0:c54243e9db1d 58 */
TeaPack_CZ 0:c54243e9db1d 59 bool isEnabled();
TeaPack_CZ 0:c54243e9db1d 60
TeaPack_CZ 0:c54243e9db1d 61 /** Procedure for stopping movement of motor
TeaPack_CZ 0:c54243e9db1d 62 */
TeaPack_CZ 0:c54243e9db1d 63 void stop();
TeaPack_CZ 0:c54243e9db1d 64
TeaPack_CZ 0:c54243e9db1d 65 /** Procedure for stopping motor with active break
TeaPack_CZ 0:c54243e9db1d 66 */
TeaPack_CZ 0:c54243e9db1d 67 void hold();
TeaPack_CZ 0:c54243e9db1d 68
TeaPack_CZ 0:c54243e9db1d 69 /** Procedure for setting direction and power
TeaPack_CZ 0:c54243e9db1d 70 \param direction
TeaPack_CZ 0:c54243e9db1d 71 \param power integer < 0 ; 100 >
TeaPack_CZ 0:c54243e9db1d 72 */
TeaPack_CZ 0:c54243e9db1d 73 void setSpeed(bool, int);
TeaPack_CZ 0:c54243e9db1d 74
TeaPack_CZ 0:c54243e9db1d 75 /** Procedure for setting power and direction via float
TeaPack_CZ 0:c54243e9db1d 76 \param power_f float < -1 ; +1 >
TeaPack_CZ 0:c54243e9db1d 77 */
TeaPack_CZ 0:c54243e9db1d 78 void setSpeed(float);
TeaPack_CZ 0:c54243e9db1d 79
TeaPack_CZ 0:c54243e9db1d 80 private:
TeaPack_CZ 0:c54243e9db1d 81 PwmOut _pwm;
TeaPack_CZ 0:c54243e9db1d 82 DigitalOut _dirA;
TeaPack_CZ 0:c54243e9db1d 83 DigitalOut _dirB;
TeaPack_CZ 0:c54243e9db1d 84
TeaPack_CZ 0:c54243e9db1d 85 bool enabled;
TeaPack_CZ 0:c54243e9db1d 86 };