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-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