Library for Pololu Motor driver - VNH5019 Motor Driver Carrier https://www.pololu.com/product/1451
Dependents: VNH5019_2 VNH5019_1
MotorDriver.h@1:c1767d70d47e, 2017-02-25 (annotated)
- 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?
User | Revision | Line number | New 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 | }; |