first
Dependencies: BEAR_Reciever Motor eeprom iSerial mbed
Fork of BEAR_Motion by
pidcontrol.h@37:8719223998d8, 2016-06-07 (annotated)
- Committer:
- icyzkungz
- Date:
- Tue Jun 07 07:00:11 2016 +0000
- Revision:
- 37:8719223998d8
- Parent:
- 34:0cf04acfe422
update protocol.h
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
soulx | 34:0cf04acfe422 | 1 | #ifndef _PIDCONTROL_H_ |
soulx | 34:0cf04acfe422 | 2 | #define _PIDCONTROL_H_ |
soulx | 34:0cf04acfe422 | 3 | |
soulx | 34:0cf04acfe422 | 4 | #include "mbed.h" |
soulx | 34:0cf04acfe422 | 5 | |
soulx | 34:0cf04acfe422 | 6 | class PID{ |
soulx | 34:0cf04acfe422 | 7 | public: |
soulx | 34:0cf04acfe422 | 8 | PID(); |
soulx | 34:0cf04acfe422 | 9 | PID(float p,float i,float d); |
soulx | 34:0cf04acfe422 | 10 | void setGoal(float ref); |
soulx | 34:0cf04acfe422 | 11 | //float getGoal(); |
soulx | 34:0cf04acfe422 | 12 | void setCurrent(float sensor); |
soulx | 34:0cf04acfe422 | 13 | float compute(); |
soulx | 34:0cf04acfe422 | 14 | |
soulx | 34:0cf04acfe422 | 15 | void setMargin(float gap); |
soulx | 34:0cf04acfe422 | 16 | float getMargin(); |
soulx | 34:0cf04acfe422 | 17 | void setIntegalLimit(float limit); |
soulx | 34:0cf04acfe422 | 18 | float getIntegalLimit(); |
soulx | 34:0cf04acfe422 | 19 | |
soulx | 34:0cf04acfe422 | 20 | float getErrorNow(); |
soulx | 34:0cf04acfe422 | 21 | float getErrorLast(); |
soulx | 34:0cf04acfe422 | 22 | float getErrorDiff(); |
soulx | 34:0cf04acfe422 | 23 | float getErrorIntegal(); |
soulx | 34:0cf04acfe422 | 24 | |
soulx | 34:0cf04acfe422 | 25 | void setKp(float); |
soulx | 34:0cf04acfe422 | 26 | void setKi(float); |
soulx | 34:0cf04acfe422 | 27 | void setKd(float); |
soulx | 34:0cf04acfe422 | 28 | |
soulx | 34:0cf04acfe422 | 29 | float getKp(); |
soulx | 34:0cf04acfe422 | 30 | float getKi(); |
soulx | 34:0cf04acfe422 | 31 | float getKd(); |
soulx | 34:0cf04acfe422 | 32 | |
soulx | 34:0cf04acfe422 | 33 | private: |
soulx | 34:0cf04acfe422 | 34 | float e_n; //error now |
soulx | 34:0cf04acfe422 | 35 | float e_n_1; //error last time |
soulx | 34:0cf04acfe422 | 36 | float e_i; //error integal |
soulx | 34:0cf04acfe422 | 37 | float il; //integal limit |
soulx | 34:0cf04acfe422 | 38 | float margin; //output margin |
soulx | 34:0cf04acfe422 | 39 | |
soulx | 34:0cf04acfe422 | 40 | float Kp,Ki,Kd; |
soulx | 34:0cf04acfe422 | 41 | |
soulx | 34:0cf04acfe422 | 42 | float setpoint; |
soulx | 34:0cf04acfe422 | 43 | float input; |
soulx | 34:0cf04acfe422 | 44 | float output; |
soulx | 34:0cf04acfe422 | 45 | }; |
soulx | 34:0cf04acfe422 | 46 | |
soulx | 34:0cf04acfe422 | 47 | |
soulx | 34:0cf04acfe422 | 48 | |
soulx | 34:0cf04acfe422 | 49 | #endif |