Fork of PID by Kamil Foryszewski

Revision:
2:0fff4827f3b6
Parent:
1:0ffb635770b3
Child:
3:7f0ed54318df
--- a/PID.cpp	Thu Nov 03 17:15:10 2016 +0000
+++ b/PID.cpp	Sun Nov 06 18:07:12 2016 +0000
@@ -1,6 +1,11 @@
 #include "PID.h"
 
-PID::PID(float Kc, float tauI, float tauD, float interval) {
+
+float Stand_Kc=120.0;float Stand_tauI=0.004;float Stand_tauD=0.0007;
+float Speed_Kc=0.0;float Speed_tauI=0.0;float Speed_tauD=0.0;
+//PID::PID(float Kc, float tauI, float tauD, float interval) 
+PID::PID(float interval)
+{
 
     usingFeedForward = false;
     inAuto           = false;
@@ -10,8 +15,11 @@
 
     tSample_ = interval;
 
-    setTunings(Kc, tauI, tauD);
-
+ //   setTunings(float Kc,float tauI,float tauD);
+/*****************after modifying**********************/
+    setStandTunings(Stand_Kc,Stand_tauI,Stand_tauD);
+ //    setSpeedTunings(Speed_Kc,Speed_tauI,Speed_tauD);
+/******************************************************/
     setPoint_             = 0.0;
     processVariable_      = 0.0;
     prevProcessVariable_  = 0.0;
@@ -71,8 +79,8 @@
 
 }
 
-void PID::setTunings(float Kc, float tauI, float tauD) {
-
+//void PID::setTunings(float Kc, float tauI, float tauD) {
+void PID::setStandTunings(float Kc,float tauI,float tauD){
     //Verify that the tunings make sense.
     if (Kc == 0.0 || tauI < 0.0 || tauD < 0.0) {
         return;
@@ -105,7 +113,15 @@
     tauD_ = tauD / tSample_;
 
 }
+//setSpeedTunings(SpeedKc,SpeedtauI,SpeedtauD)
+/*void setSpeedTunings(float Kc,float tauI,float tauD)
+{
 
+Speed_Kc_   = Kc;
+    //Speed_tauI_ = tauI;
+     
+}
+*/
 void PID::reset(void) {
 
     float scaledBias = 0.0;
@@ -207,7 +223,7 @@
 
     //Make sure the computed output is within output constraints.
     if (controllerOutput_ < 0.0) {
-        controllerOutput_ = 0.0;
+        controllerOutput_ = 0.0;  
     } else if (controllerOutput_ > 1.0) {
         controllerOutput_ = 1.0;
     }
@@ -221,7 +237,14 @@
     return ((controllerOutput_ * outSpan_) + outMin_);
 
 }
-
+float PID::Speedcompute(double Stepper,double Target)
+{
+    static double Bias,PWM,Last_bias;
+    Bias=Stepper-Target;
+    PWM+=Speed_Kc*(Bias-Last_bias)+Speed_tauI*Bias;
+    Last_bias=Bias;
+    return PWM;
+}
 float PID::getInMin() {
 
     return inMin_;