@@ -191,13 +191,13 @@ typedef struct { float p, i, d, c, f; } raw_pidcf_t;
191
191
float cTerm () const { return 0 ; }
192
192
float fTerm () const { return 0 ; }
193
193
void set_Kp (float p) { Kp = p; }
194
- void set_Ki (float i) { Ki = scalePID_i (i); max_power_over_i_gain = float (MAX_POW) / Ki - float (MIN_POW);}
194
+ void set_Ki (float i) { Ki = scalePID_i (i); max_power_over_i_gain = float (MAX_POW) / Ki - float (MIN_POW); }
195
195
void set_Kd (float d) { Kd = scalePID_d (d); }
196
196
void set_Kc (float ) {}
197
197
void set_Kf (float ) {}
198
198
int low () const { return MIN_POW; }
199
199
int high () const { return MAX_POW; }
200
- void reset () { pid_reset = true ; pid_below = false ;}
200
+ void reset () { pid_reset = true ; pid_below = false ; }
201
201
void set (float p, float i, float d, float c=1 , float f=0 ) { set_Kp (p); set_Ki (i); set_Kd (d); set_Kc (c); set_Kf (f); }
202
202
void set (const raw_pid_t &raw) { set (raw.p , raw.i , raw.d ); }
203
203
void set (const raw_pidcf_t &raw) { set (raw.p , raw.i , raw.d , raw.c , raw.f ); }
@@ -220,22 +220,17 @@ typedef struct { float p, i, d, c, f; } raw_pidcf_t;
220
220
}
221
221
else {
222
222
if (pid_reset) {
223
- pid_reset = false ;
223
+ temp_iState = pid_below ? max_power_over_i_gain : 0 ;
224
224
work_d = 0 ;
225
- if (pid_below) {
226
- temp_iState = max_power_over_i_gain;
227
- pid_below = false ;
228
- }
229
- else {
230
- temp_iState = 0 ;
231
- }
225
+ pid_reset = false ;
226
+ pid_below = false ;
232
227
}
233
228
234
- temp_iState = constrain (temp_iState + pid_error, -max_power_over_i_gain/ 4 . 0f , max_power_over_i_gain);
229
+ temp_iState = constrain (temp_iState + pid_error, -0 . 25f * max_power_over_i_gain , max_power_over_i_gain);
235
230
236
231
work_p = Kp * pid_error;
237
232
work_i = Ki * temp_iState;
238
- work_d = work_d + PID_K2 * (Kd * (temp_dState - current) - work_d);
233
+ work_d += (Kd * (temp_dState - current) - work_d) * PID_K2 ;
239
234
240
235
output_pow = constrain (work_p + work_i + work_d + float (MIN_POW), 0 , MAX_POW);
241
236
}
0 commit comments