Add "Thermal Runaway Protection" feature
This is a feature to protect your printer from burn up in flames if it has a thermistor coming off place (this happened to a friend of mine recently and motivated me writing this feature). The issue: If a thermistor come off, it will read a lower temperature than actual. The system will turn the heater on forever, burning up the filament and anything else around. After the temperature reaches the target for the first time, this feature will start measuring for how long the current temperature stays below the target minus _HYSTERESIS (set_temperature - THERMAL_RUNAWAY_PROTECTION_HYSTERESIS). If it stays longer than _PERIOD, it means the thermistor temperature cannot catch up with the target, so something *may be* wrong. Then, to be on the safe side, the system will he halt. Bear in mind the count down will just start AFTER the first time the thermistor temperature is over the target, so you will have no problem if your extruder heater takes 2 minutes to hit the target on heating.
This commit is contained in:
@ -154,6 +154,17 @@ void disable_heater();
|
||||
void setWatch();
|
||||
void updatePID();
|
||||
|
||||
#ifdef THERMAL_RUNAWAY_PROTECTION_PERIOD && THERMAL_RUNAWAY_PROTECTION_PERIOD > 0
|
||||
void thermal_runaway_protection(int *state, unsigned long *timer, float temperature, float target_temperature, int heater_id, int period_seconds, int hysteresis_degc);
|
||||
static int thermal_runaway_state_machine[3]; // = {0,0,0};
|
||||
static unsigned long thermal_runaway_timer[3]; // = {0,0,0};
|
||||
static bool thermal_runaway = false;
|
||||
#if TEMP_SENSOR_BED != 0
|
||||
static int thermal_runaway_bed_state_machine;
|
||||
static unsigned long thermal_runaway_bed_timer;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
FORCE_INLINE void autotempShutdown(){
|
||||
#ifdef AUTOTEMP
|
||||
if(autotemp_enabled)
|
||||
|
Reference in New Issue
Block a user