Skip to content

Commit aabc49d

Browse files
committed
Updated comments and example limits
1 parent cc237b4 commit aabc49d

2 files changed

Lines changed: 27 additions & 26 deletions

File tree

BasicPIDLibrary.ino

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ double Kp=1.0, Ki=0.001, Kd=0.001;
1010
BasicPIDLibrary myPID(Kp, Ki, Kd);
1111
void setup()
1212
{
13-
myPID.SetOutputLimits(-1,1);
13+
myPID.SetOutputLimits(0,255);
1414
myPID.SetSampleTime(100);
1515
}
1616
void loop()

BasicPIDLibraryClass.cpp

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,14 @@
1717
***************************************************************************/
1818
BasicPIDLibrary::BasicPIDLibrary(double Kp, double Ki, double Kd)
1919
{
20-
BasicPIDLibrary::SetOutputLimits(0, 255); //default output limit corresponds to
20+
BasicPIDLibrary::SetOutputLimits(0, 255); //default output limit corresponds to
2121
//the arduino pwm limits
2222

23-
mSampleTime = 50; //default Controller Sample Time is 0.1 seconds
23+
this->mSampleTime = 50; //default Controller Sample Time is 0.1 seconds
2424

2525
BasicPIDLibrary::SetTunings(Kp, Ki, Kd);
2626

27-
mLastTime = millis()-mSampleTime;
27+
this->mLastTime = millis()-mSampleTime;
2828

2929
EnableController();
3030
}
@@ -38,15 +38,15 @@ BasicPIDLibrary::BasicPIDLibrary(double Kp, double Ki, double Kd)
3838
**********************************************************************************/
3939
bool BasicPIDLibrary::Compute(DECIMAL iSetpoint,DECIMAL iInput,DECIMAL &pOutput)
4040
{
41-
if(!mEnabled)
41+
if(!this->mEnabled)
4242
return false;
4343
unsigned long now = millis();
4444
unsigned long timeChange = (now - mLastTime);
45-
if(timeChange >= mSampleTime)
45+
if(timeChange >= this->mSampleTime) //only run at a set controller sample rate
4646
{
4747
DECIMAL error = iSetpoint - iInput;
4848
DECIMAL dInput = (error - mLastInput);
49-
mOutputSum += error;
49+
this->mOutputSum += error;
5050

5151
DECIMAL output;
5252
output = (kp * error) + (mOutputSum * ki) + (dInput * kd); //dt assumed in ki and kd
@@ -56,12 +56,12 @@ bool BasicPIDLibrary::Compute(DECIMAL iSetpoint,DECIMAL iInput,DECIMAL &pOutput)
5656
else if(output < mOutMin)
5757
pOutput = mOutMin;
5858
else{
59-
pOutput = output; //pointer to output when output is within limits
59+
pOutput = output; //assign output value to the pointer
6060
}
6161

6262
//Remember some variables for next time
63-
mLastInput = error;
64-
mLastTime = now;
63+
this->mLastInput = error;
64+
this->mLastTime = now;
6565
return true;
6666
}
6767
else
@@ -73,9 +73,9 @@ bool BasicPIDLibrary::Compute(DECIMAL iSetpoint,DECIMAL iInput,DECIMAL &pOutput)
7373
* Set Tunings using the last-rembered POn setting
7474
******************************************************************************/
7575
void BasicPIDLibrary::SetTunings(DECIMAL iKp, DECIMAL iKi, DECIMAL iKd){
76-
kp = iKp;
77-
ki = iKi * (DECIMAL)mSampleTime/1000.0;
78-
kd = iKd / (DECIMAL)mSampleTime/1000.0;
76+
this->kp = iKp;
77+
this->ki = iKi * (DECIMAL)this->mSampleTime/1000.0;
78+
this->kd = iKd / (DECIMAL)this->mSampleTime/1000.0;
7979
}
8080

8181
/* SetSampleTime(...) *********************************************************
@@ -85,12 +85,12 @@ void BasicPIDLibrary::SetSampleTime(int NewSampleTime)
8585
{
8686
if (NewSampleTime > 0)
8787
{
88-
//need ratio to keep relative to seconds?
88+
//need ratio to keep relative to seconds
8989
DECIMAL ratio = (DECIMAL)NewSampleTime
90-
/ (DECIMAL)mSampleTime;
91-
ki *= ratio;
92-
kd /= ratio;
93-
mSampleTime = (unsigned long)NewSampleTime;
90+
/ (DECIMAL)this->mSampleTime;
91+
this->ki *= ratio;
92+
this->kd /= ratio;
93+
this->mSampleTime = (unsigned long)NewSampleTime;
9494
}
9595
}
9696

@@ -104,19 +104,20 @@ void BasicPIDLibrary::SetSampleTime(int NewSampleTime)
104104
**************************************************************************/
105105
void BasicPIDLibrary::SetOutputLimits(DECIMAL Min, DECIMAL Max)
106106
{
107-
if(Min >= Max) return;
108-
mOutMin = Min;
109-
mOutMax = Max;
107+
if(Min >= Max)
108+
return;
109+
this->mOutMin = Min;
110+
this->mOutMax = Max;
110111
}
111112

112113
void BasicPIDLibrary::DisableController(void)
113114
{
114-
mEnabled = false;
115+
this->mEnabled = false;
115116
}
116117
void BasicPIDLibrary::EnableController(void)
117118
{
118-
mEnabled = true;
119-
mOutputSum = 0.0;
120-
mLastInput = 0.0;
121-
mLastTime = 0;
119+
this->mEnabled = true;
120+
this->mOutputSum = 0.0;
121+
this->mLastInput = 0.0;
122+
this->mLastTime = 0;
122123
}

0 commit comments

Comments
 (0)