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-09-24
Revision:
1:cd249816dba8
Parent:
0:cf7192f9f99a
Child:
2:653433f4ee72

File content as of revision 1:cd249816dba8:



#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, int* limit);    
    void paramUpdate(void);
    void home(long halfcounts);
    void init(float);
    void setSetPoint(float);
    void moveTrapezoid(float position, float time);
    void moveUpdate(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 countsPerDeg;        //number of counts/revolution

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

#endif