Skip to content

Commit e2c5d6c

Browse files
committed
Update QuickPID.cpp
Uses fixed point math for smaller coefficients, floating point math for larger coefficients.
1 parent c4ee218 commit e2c5d6c

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

QuickPID.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,16 @@ bool QuickPID::Compute()
6666
error = *mySetpoint - input;
6767

6868
/*Working error, Proportional on Measurement and Remaining PID output*/
69-
if (!pOnE) outputSum += FX_MUL(FL_FX(ki) , error) - FX_MUL(FL_FX(kpd), dInput);
69+
if (!pOnE) {
70+
if (ki < 31 && kpd < 31) outputSum += FX_MUL(FL_FX(ki) , error) - FX_MUL(FL_FX(kpd), dInput);
71+
else outputSum += (ki * error) - (kpd * dInput);
72+
}
7073

7174
/*Working error, Proportional on Error and remaining PID output*/
72-
if (pOnE) outputSum += FX_MUL(FL_FX(kpi) , error) - FX_MUL(FL_FX(kd), dInput);
75+
if (pOnE) {
76+
if (kpi < 31 && kd < 31) outputSum += FX_MUL(FL_FX(kpi) , error) - FX_MUL(FL_FX(kd), dInput);
77+
else outputSum += (kpi * error) - (kd * dInput);
78+
}
7379

7480
if (outputSum > outMax) outputSum = outMax;
7581
if (outputSum < outMin) outputSum = outMin;

0 commit comments

Comments
 (0)