Ya kno it

Dependencies:   PID QEI_adapted

Motor.h

Committer:
BramS23
Date:
2017-10-30
Revision:
0:aefd03ad04e6

File content as of revision 0:aefd03ad04e6:

#include "mbed.h"
#include "QEI.h"
#include "PID.h"
/** Motorclass 
    Used to control Servo motors
*/
class Motor{
    public:
    /** Motor class declaration
    @param PWM Pin
    @param Direction Pin
    @param Encoder Pin1
    @param Encoder Pin2
    @param Homingswitch
    @param controller Interval
    */
    Motor(PinName PWM, PinName Direction, PinName Enc1,PinName Enc2,PinName HomingSW,float interval);
    
    /** GotoPos function
        This function Sends the motor to the requested Position.
        This Function needs to be called repeadedly since it also 
        triggers one tick of the PID controller
        @param The required Position in radians
    */
    void GotoPos(float Rad);
    
    /** Outputs the current motor position in radians, while keeping the gear ratio into account
    */
    float GetPos();
    
    /** Homes the motor with the homing pin
        @param Direction
        @param PWM value
        @param HomingPosition in radians
    */
    void Homing(bool direction, float PWM, float HomingPos);
    
    /** Set the Pid values
    @param Pvalue
    @param Ti
    @param Td
    */
    void SetPID(float P,float Ti,float Td);
    
    /** Set the motor gear ratio
    */
    void SetGearRatio(float GearRatio);
    
    /** Set the inputlimits, or the allowed Position
    @param InputMinimum
    @param InputMaximum
    */
    void SetInputLimits(float Imin, float Imax);
    
    /** Set the output Limits of the PWM
    @param OutputMinimum
    @param OutputMaximum
    */
    void SetOutputLimits(float Omin, float Omax);
    
    /** Stops the motor
    */
    void Stop();
    
    private:
    QEI encoder;
    float _GearRatio;
    
    PwmOut      MotorThrottle;
    DigitalOut  MotorDirection;
    DigitalIn   HomingSwitch;
    
    PID controller;
};