Libary for PM2.

Dependencies:   RangeFinder FastPWM

SpeedController.h

Committer:
pmic
Date:
2021-04-06
Revision:
4:9c003c402033
Parent:
3:8b42e643b294
Child:
5:6cd242a61e4c

File content as of revision 4:9c003c402033:

#ifndef SpeedController_H_
#define SpeedController_H_
#include <cstdlib>
#include <mbed.h>
#include "EncoderCounter.h"
#include "LowpassFilter.h"
#include "ThreadFlag.h"

class SpeedController
{
public:

    SpeedController(float COUNTS_PER_TURN, float KN, float KP, float MAX_VOLTAGE, PwmOut& pwm, EncoderCounter& encoderCounter);

    virtual ~SpeedController();

    void     setDesiredSpeedRPM(float desiredSpeed);
    float    getSpeedRPM();
    void     setDesiredSpeedRPS(float desiredSpeed);
    float    getSpeedRPS();

private:

    static const float PERIOD;
    // static const float COUNTS_PER_TURN;
    static const float LOWPASS_FILTER_FREQUENCY;
    // static const float KN;
    // static const float KP;
    // static const float MAX_VOLTAGE;
    static const float MIN_DUTY_CYCLE;
    static const float MAX_DUTY_CYCLE;

    float COUNTS_PER_TURN;
    float KN;
    float KP;
    float MAX_VOLTAGE;

    PwmOut&            pwm;
    EncoderCounter&    encoderCounter;
    short              previousValueCounter;
    LowpassFilter      speedFilter;
    float              desiredSpeed;
    float              actualSpeed;
    // float              actualAngle;

    ThreadFlag         threadFlag;
    Thread             thread;
    Ticker             ticker;

    void               sendThreadFlag();
    void               run();
};

#endif /* SpeedController_H_ */