C++ class for controlling DC motor with encoder feedback. Dependencies include LS7366LIB, MotCon, and PID.
Dependencies: LS7366LIB MotCon2 PID
Axis.h
- Committer:
- jebradshaw
- Date:
- 2015-09-30
- Revision:
- 2:653433f4ee72
- Parent:
- 1:cd249816dba8
- Child:
- 5:79dcaa63700c
File content as of revision 2:653433f4ee72:
#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); 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; 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