QEI PID Motor 合体

Dependents:   Nucleo_Motor Nucleo_Motor

Committer:
kikoaac
Date:
Wed Sep 23 06:00:24 2015 +0000
Revision:
0:0d2b4508badd
??Class
;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kikoaac 0:0d2b4508badd 1
kikoaac 0:0d2b4508badd 2 #include "mbed.h"
kikoaac 0:0d2b4508badd 3 #include "Motor.h"
kikoaac 0:0d2b4508badd 4 #include "PID.h"
kikoaac 0:0d2b4508badd 5 #include "QEI.h"
kikoaac 0:0d2b4508badd 6 #ifndef fusion_Motor_H
kikoaac 0:0d2b4508badd 7 #define fusion_Motor_H
kikoaac 0:0d2b4508badd 8
kikoaac 0:0d2b4508badd 9 class fusion_Motor : public QEI ,public PID ,public Motor
kikoaac 0:0d2b4508badd 10 {
kikoaac 0:0d2b4508badd 11
kikoaac 0:0d2b4508badd 12 Ticker inter;
kikoaac 0:0d2b4508badd 13 protected:
kikoaac 0:0d2b4508badd 14 fusion_Motor& operator=(const fusion_Motor &q) {
kikoaac 0:0d2b4508badd 15
kikoaac 0:0d2b4508badd 16 return *this;
kikoaac 0:0d2b4508badd 17 }
kikoaac 0:0d2b4508badd 18 public:
kikoaac 0:0d2b4508badd 19 fusion_Motor( QEI &p, PID &q,Motor &m) ;
kikoaac 0:0d2b4508badd 20 float interval;
kikoaac 0:0d2b4508badd 21 typedef enum Mode {
kikoaac 0:0d2b4508badd 22 Normal,
kikoaac 0:0d2b4508badd 23 Servo,
kikoaac 0:0d2b4508badd 24 Speed
kikoaac 0:0d2b4508badd 25
kikoaac 0:0d2b4508badd 26 } Mode;
kikoaac 0:0d2b4508badd 27 float getrpm()
kikoaac 0:0d2b4508badd 28 {
kikoaac 0:0d2b4508badd 29 return RPM;
kikoaac 0:0d2b4508badd 30 }
kikoaac 0:0d2b4508badd 31 /*fusion_Motor() : PID(),QEI(),Motor()
kikoaac 0:0d2b4508badd 32 {
kikoaac 0:0d2b4508badd 33 printf("defoult con\r\n");
kikoaac 0:0d2b4508badd 34 }*/
kikoaac 0:0d2b4508badd 35
kikoaac 0:0d2b4508badd 36 void setup(Mode _mode);
kikoaac 0:0d2b4508badd 37 void setmode(Mode _mode){mode=_mode;}
kikoaac 0:0d2b4508badd 38 void motor_run(float actionNum);
kikoaac 0:0d2b4508badd 39 fusion_Motor& operator() (Mode _mode,bool f)
kikoaac 0:0d2b4508badd 40 {
kikoaac 0:0d2b4508badd 41
kikoaac 0:0d2b4508badd 42 flag=f;
kikoaac 0:0d2b4508badd 43 setmode(_mode);
kikoaac 0:0d2b4508badd 44 pid_reset();
kikoaac 0:0d2b4508badd 45 return *this;
kikoaac 0:0d2b4508badd 46 }
kikoaac 0:0d2b4508badd 47 fusion_Motor& operator= (float actnum)
kikoaac 0:0d2b4508badd 48 {
kikoaac 0:0d2b4508badd 49 motor_run(actnum);
kikoaac 0:0d2b4508badd 50 return *this;
kikoaac 0:0d2b4508badd 51 }
kikoaac 0:0d2b4508badd 52 void start(float target);
kikoaac 0:0d2b4508badd 53 void start();
kikoaac 0:0d2b4508badd 54 void write(float tar);
kikoaac 0:0d2b4508badd 55
kikoaac 0:0d2b4508badd 56
kikoaac 0:0d2b4508badd 57
kikoaac 0:0d2b4508badd 58 void maxrpm(float rpm){Maxrpm = rpm;}
kikoaac 0:0d2b4508badd 59 void minrpm(float rpm){Minrpm = rpm;}
kikoaac 0:0d2b4508badd 60 float rpmper(float rpm);
kikoaac 0:0d2b4508badd 61 float rerpmper(float rpm);
kikoaac 0:0d2b4508badd 62 void Nomalrun(float duty){Motor::operator=(duty);}
kikoaac 0:0d2b4508badd 63 void Servorun(float angle){dTarget = angle;}
kikoaac 0:0d2b4508badd 64 void Speedrun(float rpm){dTarget = rpm;}
kikoaac 0:0d2b4508badd 65
kikoaac 0:0d2b4508badd 66 private:
kikoaac 0:0d2b4508badd 67 float RPM;
kikoaac 0:0d2b4508badd 68 bool flag;
kikoaac 0:0d2b4508badd 69 void InterruptAction();
kikoaac 0:0d2b4508badd 70 Mode mode;
kikoaac 0:0d2b4508badd 71 float Max,Min;
kikoaac 0:0d2b4508badd 72 float Maxrpm;
kikoaac 0:0d2b4508badd 73 float Minrpm;
kikoaac 0:0d2b4508badd 74 };
kikoaac 0:0d2b4508badd 75
kikoaac 0:0d2b4508badd 76 #endif
kikoaac 0:0d2b4508badd 77