Browse Source

temperature.cpp:Add PID Conditional integration on heated bed.

pull/1/head
David Forrest 11 years ago
parent
commit
984177c40c
  1. 9
      Marlin/temperature.cpp

9
Marlin/temperature.cpp

@ -565,7 +565,14 @@ void manage_heater()
dTerm_bed= (bedKd * (pid_input - temp_dState_bed))*K2 + (K1 * dTerm_bed); dTerm_bed= (bedKd * (pid_input - temp_dState_bed))*K2 + (K1 * dTerm_bed);
temp_dState_bed = pid_input; temp_dState_bed = pid_input;
pid_output = constrain(pTerm_bed + iTerm_bed - dTerm_bed, 0, MAX_BED_POWER); pid_output = pTerm_bed + iTerm_bed - dTerm_bed;
if (pid_output > MAX_BED_PID) {
if (pid_error_bed > 0 ) temp_iState_bed -= pid_error_bed; // conditional un-integration
pid_output=PID_MAX;
} else if (pid_output < 0){
if (pid_error_bed < 0 ) temp_iState_bed -= pid_error_bed; // conditional un-integration
pid_output=0;
}
#else #else
pid_output = constrain(target_temperature_bed, 0, MAX_BED_POWER); pid_output = constrain(target_temperature_bed, 0, MAX_BED_POWER);

Loading…
Cancel
Save