Default mbed pwm doesn't have enough resolution at high frequencies, thats why I implemented VNH5019 Motor carrier with FastPWM.
Fork of VNH5019 by
VNH5019Accel.cpp
- Committer:
- ianmcc
- Date:
- 2014-08-07
- Revision:
- 5:b5f360a16354
- Child:
- 6:c8343fa0f3b4
File content as of revision 5:b5f360a16354:
#include "VNH5019Accel.h" void VNH5019Accel::Interrupt() { float MyRequestedSpeed = RequestedSpeed; if (CurrentSpeed != MyRequestedSpeed) { if (std::abs(CurrentSpeed-MyRequestedSpeed) < VNH5019ChangePerTick) CurrentSpeed = MyRequestedSpeed; else if (MyRequestedSpeed > CurrentSpeed) CurrentSpeed += VNH5019ChangePerTick; else CurrentSpeed -= VNH5019ChangePerTick; Driver.speed(CurrentSpeed); } else { float MyRequestedBrake = RequestedBrake; if (CurrentBrake != MyRequestedBrake) { if (std::abs(CurrentBrake-MyRequestedBrake) < VNH5019BrakeChangePerTick) CurrentBrake = MyRequestedBrake; else if (MyRequestedBrake > CurrentBrake) CurrentBrake += VNH5019BrakeChangePerTick; else CurrentBrake -= VNH5019BrakeChangePerTick; Driver.brake(CurrentBrake); } } } DualVNH5019AccelMotorShield::DualVNH5019AccelMotorShield() : m1(PTD4, PTA4, PTC8, PTB0, PTD5), m2(PTC9, PTA13, PTD3, PTB1, PTD0) { }