pid
Fork of PID by
Diff: PID.h
- Revision:
- 5:3519920d064d
- Parent:
- 3:34f4f22b18e7
- Child:
- 6:775c9421fe3b
--- a/PID.h Tue Aug 18 04:45:10 2015 +0000 +++ b/PID.h Wed Sep 23 06:01:32 2015 +0000 @@ -3,30 +3,49 @@ #define PID_H #include "mbed.h" -class PID -{ - public: - - PID(float tauKc, float tauKi, float tauKd); - - double s_dErrIntg ,dErr_prev; - void Start(); - void Reset(); - void setInterval(double inter); - //Getters. - void stop(); - double dTarget; double dPoint; - // PI制御ゲイン - double GAIN_P ;//1.5 // 比例ゲイン - double GAIN_I ;//2.8 // 積分ゲイン - double GAIN_D ;//0.2 - double data; - private: - Timer timer; - Ticker T; - float interval; - void PIDctrl(); - +class PID +{ +protected: + PID(const PID& p); + PID& operator=(const PID &p) { + return *this; + } + void PIDctrl(); +public: + void InputLimits(float max,float min); + void OutputLimits(float max,float min); + PID(float tauKc, float tauKi, float tauKd ,Timer *T); + + double s_dErrIntg ,dErr_prev; + void start(); + void pid_reset(); + void setInterval(double inter); + //Getters. + void stop(); + double dTarget; + double dPoint; + // PI制御ゲイン + double GAIN_P ;//1.5 // 比例ゲイン + double GAIN_I ;//2.8 // 積分ゲイン + double GAIN_D ;//0.2 + double data; +private: + float OutMax; + float InMax; + float OutMin; + float InMin; + float OutSpan; + float InSpan; + Timer *timer; + float gettime() { + static float prev_time; + float a = timer->read()-prev_time; + prev_time=timer->read(); + return a; + } + //Ticker T; + float interval; + }; -#endif \ No newline at end of file +#endif