Default mbed pwm doesn't have enough resolution at high frequencies, thats why I implemented VNH5019 Motor carrier with FastPWM.

Dependencies:   FastPWM

Fork of VNH5019 by IEEE RAS METU

VNH5019Accel.cpp

Committer:
mbedoguz
Date:
2018-04-10
Revision:
14:193c422498bf
Parent:
6:c8343fa0f3b4

File content as of revision 14:193c422498bf:

#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);
        }
    }
}