Default mbed pwm doesn't have enough resolution at high frequencies, thats why I implemented VNH5019 Motor carrier with FastPWM.
Fork of VNH5019 by
Diff: VNH5019.h
- Revision:
- 6:c8343fa0f3b4
- Parent:
- 5:b5f360a16354
- Child:
- 7:76af111bfff3
diff -r b5f360a16354 -r c8343fa0f3b4 VNH5019.h --- a/VNH5019.h Thu Aug 07 12:23:30 2014 +0000 +++ b/VNH5019.h Sun Jan 08 13:08:34 2017 +0000 @@ -1,6 +1,3 @@ -#ifndef DualVNH5019MotorShield_h -#define DualVNH5019MotorShield_h - #include <mbed.h> class VNH5019 @@ -94,7 +91,7 @@ { // Scale is 144mV per A // Scale factor is 3.3 / 0.144 = 22.916667 - return CS.read() * 22.916667; + return CS.read() * 22916.667; } inline @@ -115,28 +112,3 @@ { ENDIAG.input(); } - -inline -DualVNH5019MotorShield::DualVNH5019MotorShield() -: m1(PTD4, PTA4, PTC8, PTB0, PTD5), - m2(PTC9, PTA13, PTD3, PTB1, PTD0) -{ -} - -inline -DualVNH5019MotorShield::DualVNH5019MotorShield(PinName INA1_, PinName INB1_, PinName ENDIAG1_, PinName CS1_, PinName PWM1_, - PinName INA2_, PinName INB2_, PinName ENDIAG2_, PinName CS2_, PinName PWM2_) - : m1(INA1_, INB1_, ENDIAG1_, CS1_, PWM1_), - m2(INA2_, INB2_, ENDIAG2_, CS2_, PWM2_) -{ -} - -inline -VNH5019& -DualVNH5019MotorShield::operator()(int m) -{ - return m == 1 ? m1 : m2; -} - - -#endif