library to perform velocity PID control

Dependents:   PID_VelocityExample TheProgram

Fork of PID by Aaron Berk

Revision:
3:54068e076b84
Parent:
2:690958d56f3e
Child:
4:375947e05a43
Child:
5:15998473cc64
--- a/PID.cpp	Tue Oct 06 10:16:40 2015 +0000
+++ b/PID.cpp	Tue Oct 06 10:50:31 2015 +0000
@@ -118,7 +118,8 @@
     } else if (prevControllerOutput_ < 0) {
         prevControllerOutput_ = 0;
     }
-
+    // changed:
+    prevControllerOutput_ =0;
     outMin_  = outMin;
     outMax_  = outMax;
     outSpan_ = outMax - outMin;
@@ -248,13 +249,14 @@
     }
 
     float error = scaledSP - scaledPV;
-
+    
+    
     //Check and see if the output is pegged at a limit and only
     //integrate if it is not. This is to prevent reset-windup.
     if (!(prevControllerOutput_ >= 1 && error > 0) && !(prevControllerOutput_ <= 0 && error < 0)) {
         accError_ += error;
     }
-
+    
     //Compute the current slope of the input signal.
     float dMeas = (scaledPV - prevProcessVariable_) / tSample_;
 
@@ -269,8 +271,7 @@
     }
 
     //Perform the PID calculation.
-    controllerOutputSum_ =  scaledBias + Kc_ * (error + (tauR_ * accError_) - (tauD_ * dMeas));
-    
+    controllerOutputSum_ =  Kc_ * (error + (tauR_ * accError_) - (tauD_ * dMeas));
     
     controllerOutput_ = controllerOutputSum_+prevControllerOutput_;
     if (controllerOutput_ < scaledDeadzoneTop and controllerOutput_ > scaledDeadzoneBottom){