diff --git a/Firmware/temperature.cpp b/Firmware/temperature.cpp index a5a7e7ee4..7e509b64e 100644 --- a/Firmware/temperature.cpp +++ b/Firmware/temperature.cpp @@ -396,7 +396,7 @@ void updatePID() { #ifdef PIDTEMP for(int e = 0; e < EXTRUDERS; e++) { - iState_sum_max[e] = PID_INTEGRAL_DRIVE_MAX / cs.Ki; + iState_sum_max[e] = PID_INTEGRAL_DRIVE_MAX / Ki; } #endif #ifdef PIDTEMPBED @@ -525,13 +525,13 @@ void manage_heater() pid_reset[e] = false; } #ifndef PonM - pTerm[e] = cs.Kp * pid_error[e]; + pTerm[e] = Kp * pid_error[e]; iState_sum[e] += pid_error[e]; iState_sum[e] = constrain(iState_sum[e], iState_sum_min[e], iState_sum_max[e]); - iTerm[e] = cs.Ki * iState_sum[e]; + iTerm[e] = Ki * iState_sum[e]; // K1 defined in Configuration.h in the PID settings #define K2 (1.0-K1) - dTerm[e] = (cs.Kd * (pid_input - dState_last[e]))*K2 + (K1 * dTerm[e]); // e.g. digital filtration of derivative term changes + dTerm[e] = (Kd * (pid_input - dState_last[e]))*K2 + (K1 * dTerm[e]); // e.g. digital filtration of derivative term changes pid_output = pTerm[e] + iTerm[e] - dTerm[e]; // subtraction due to "Derivative on Measurement" method (i.e. derivative of input instead derivative of error is used) if (pid_output > PID_MAX) { if (pid_error[e] > 0 ) iState_sum[e] -= pid_error[e]; // conditional un-integration @@ -541,10 +541,10 @@ void manage_heater() pid_output=0; } #else // PonM ("Proportional on Measurement" method) - iState_sum[e] += cs.Ki * pid_error[e]; - iState_sum[e] -= cs.Kp * (pid_input - dState_last[e]); + iState_sum[e] += Ki * pid_error[e]; + iState_sum[e] -= Kp * (pid_input - dState_last[e]); iState_sum[e] = constrain(iState_sum[e], 0, PID_INTEGRAL_DRIVE_MAX); - dTerm[e] = cs.Kd * (pid_input - dState_last[e]); + dTerm[e] = Kd * (pid_input - dState_last[e]); pid_output = iState_sum[e] - dTerm[e]; // subtraction due to "Derivative on Measurement" method (i.e. derivative of input instead derivative of error is used) pid_output = constrain(pid_output, 0, PID_MAX); #endif // PonM @@ -906,7 +906,7 @@ void tp_init() maxttemp[e] = maxttemp[0]; #ifdef PIDTEMP iState_sum_min[e] = 0.0; - iState_sum_max[e] = PID_INTEGRAL_DRIVE_MAX / cs.Ki; + iState_sum_max[e] = PID_INTEGRAL_DRIVE_MAX / Ki; #endif //PIDTEMP #ifdef PIDTEMPBED temp_iState_min_bed = 0.0;