C++ class for controlling DC motor with encoder feedback. Dependencies include LS7366LIB, MotCon, and PID.

Dependencies:   LS7366LIB MotCon2 PID

Dependents:   LPC1768_6axis_Arm

Axis.h

Committer:
jebradshaw
Date:
2015-12-17
Revision:
5:79dcaa63700c
Parent:
2:653433f4ee72
Child:
7:d0458137d6e0

File content as of revision 5:79dcaa63700c:



#ifndef MBED_ROBOTARM_H
#define MBED_ROBOTARM_H
 
#include "mbed.h"
#include "PID.h"        //library for software routine PID controller
#include "LS7366.h"     //library for quadrature encoder interface IC's
#include "MotCon.h"     //simple motor control routines

class Axis{
public:
    Axis(SPI& _spi, PinName _cs, PinName _pwm, PinName _dir, PinName _analog, int* limit, float totalCnts);    
    void paramUpdate(void);
    void center(void);
    void init(void);
    void moveTrapezoid(float position, float time);
    void moveUpdate(void);
    float readCurrent(void);
    void axisOff(void);
    void axisOn(void);
    void zero(void);
    
    long enc;
    float co;// = 0.0;
    float Tdelay;// = .01;
    float Pk;       // 120.0 for scorbot
    float Ik;       // 55.0 for scorbot
    float Dk;
    float set_point;// = 0.0;
    float set_point_last;
    float pos, vel, acc;    //calculated position, velocity, and acceleration
    float pos_last, vel_last, acc_last; //history variables used to calculate motion
    float pos_cmd, vel_cmd, vel_avg_cmd, acc_cmd;    
    float vel_max, acc_max;
    float vel_accum;
    float moveTime;    
    float p_higher, p_lower;
    int moveStatus;
    int moveState;
    int debug;
    int *ptr_limit;
    float totalCounts;
    float motCurrent;
    float mot_I_lim;
    int axisState;

    Ticker update;
    Ticker moveProfile;
    Timer t;
    PID *pid;
    LS7366 *ls7366;
    MotCon *motcon;
    //AnalogIn *motCurrent;
    
private:
    SPI _spi;
    DigitalOut _cs;
    PwmOut _pwm;
    DigitalOut _dir;
    AnalogIn _analog;
};

#endif