pid

Dependents:   OneCircleRobot

Fork of PID by Kiko Ishimoto

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