BE@R lab / motion_control

Dependencies:   motor_relay

Dependents:   dog_V3_3_testmotor

motion_control.h

Committer:
soulx
Date:
2015-07-18
Revision:
4:6509fec6a6fb
Parent:
3:4fa191f2194d
Child:
5:91d905f8bef7

File content as of revision 4:6509fec6a6fb:

#ifndef MBED_MOTOR_RE_H
#define MBED_MOTOR_RE_H

#include "mbed.h"
#include "motor_relay.h"

class MOTION_CONTROL
{
public:
    MOTION_CONTROL(PinName dirA, PinName dirB, PinName limitUp, PinName limitDown, PinName vr );

    int limit_motor(uint8_t dirction);
    int8_t position_control(uint16_t target);
    void calibration();
    
    int GetLimitUp();
    int GetLimitDown();
    
    void SetMargin(int16_t data);
    int16_t GetMargin();
    
    uint16_t GetMaxPosition();
    uint16_t GetMinPosition();
    

    uint16_t GetAnalog();
    uint16_t GetPosition();
    
    void stop();

private:

    uint16_t Scale(uint16_t data);
    
    MOTOR_RELAY motor;

    DigitalIn _limit_up;
    DigitalIn _limit_down;
    AnalogIn _position;
    
    int16_t error;
    int16_t MARGIN;
    
    uint16_t MAX_POSITION;
    uint16_t MIN_POSITION;
    
    const static uint16_t scale = 64;
    
    
    float Kp;
    float Ki;
    float Kd;
    float margin_pid;

};

#endif