Document WATCH_TEMP_PERIOD
This commit is contained in:
parent
9a6423ea17
commit
deedb00c18
13 changed files with 50 additions and 42 deletions
|
@ -17,8 +17,8 @@
|
||||||
//// Heating sanity check:
|
//// Heating sanity check:
|
||||||
// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature
|
// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature
|
||||||
// If the temperature has not increased at the end of that period, the target temperature is set to zero.
|
// If the temperature has not increased at the end of that period, the target temperature is set to zero.
|
||||||
// It can be reset with another M104/M109. This check is also only triggered if the target temperature and the current temperature
|
// It can be reset with another M104/M109. This check is also only triggered if the target temperature and
|
||||||
// differ by at least 2x WATCH_TEMP_INCREASE
|
// the current temperature differ by at least 2x WATCH_TEMP_INCREASE
|
||||||
//#define WATCH_TEMP_PERIOD 40000 //40 seconds
|
//#define WATCH_TEMP_PERIOD 40000 //40 seconds
|
||||||
//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds
|
//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,8 @@
|
||||||
//// Heating sanity check:
|
//// Heating sanity check:
|
||||||
// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature
|
// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature
|
||||||
// If the temperature has not increased at the end of that period, the target temperature is set to zero.
|
// If the temperature has not increased at the end of that period, the target temperature is set to zero.
|
||||||
// It can be reset with another M104/M109. This check is also only triggered if the target temperature and the current temperature
|
// It can be reset with another M104/M109. This check is also only triggered if the target temperature and
|
||||||
// differ by at least 2x WATCH_TEMP_INCREASE
|
// the current temperature differ by at least 2x WATCH_TEMP_INCREASE
|
||||||
//#define WATCH_TEMP_PERIOD 40000 //40 seconds
|
//#define WATCH_TEMP_PERIOD 40000 //40 seconds
|
||||||
//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds
|
//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,8 @@
|
||||||
//// Heating sanity check:
|
//// Heating sanity check:
|
||||||
// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature
|
// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature
|
||||||
// If the temperature has not increased at the end of that period, the target temperature is set to zero.
|
// If the temperature has not increased at the end of that period, the target temperature is set to zero.
|
||||||
// It can be reset with another M104/M109. This check is also only triggered if the target temperature and the current temperature
|
// It can be reset with another M104/M109. This check is also only triggered if the target temperature and
|
||||||
// differ by at least 2x WATCH_TEMP_INCREASE
|
// the current temperature differ by at least 2x WATCH_TEMP_INCREASE
|
||||||
//#define WATCH_TEMP_PERIOD 40000 //40 seconds
|
//#define WATCH_TEMP_PERIOD 40000 //40 seconds
|
||||||
//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds
|
//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,8 @@
|
||||||
//// Heating sanity check:
|
//// Heating sanity check:
|
||||||
// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature
|
// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature
|
||||||
// If the temperature has not increased at the end of that period, the target temperature is set to zero.
|
// If the temperature has not increased at the end of that period, the target temperature is set to zero.
|
||||||
// It can be reset with another M104/M109. This check is also only triggered if the target temperature and the current temperature
|
// It can be reset with another M104/M109. This check is also only triggered if the target temperature and
|
||||||
// differ by at least 2x WATCH_TEMP_INCREASE
|
// the current temperature differ by at least 2x WATCH_TEMP_INCREASE
|
||||||
//#define WATCH_TEMP_PERIOD 40000 //40 seconds
|
//#define WATCH_TEMP_PERIOD 40000 //40 seconds
|
||||||
//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds
|
//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,8 @@
|
||||||
//// Heating sanity check:
|
//// Heating sanity check:
|
||||||
// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature
|
// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature
|
||||||
// If the temperature has not increased at the end of that period, the target temperature is set to zero.
|
// If the temperature has not increased at the end of that period, the target temperature is set to zero.
|
||||||
// It can be reset with another M104/M109. This check is also only triggered if the target temperature and the current temperature
|
// It can be reset with another M104/M109. This check is also only triggered if the target temperature and
|
||||||
// differ by at least 2x WATCH_TEMP_INCREASE
|
// the current temperature differ by at least 2x WATCH_TEMP_INCREASE
|
||||||
//#define WATCH_TEMP_PERIOD 40000 //40 seconds
|
//#define WATCH_TEMP_PERIOD 40000 //40 seconds
|
||||||
//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds
|
//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,8 @@
|
||||||
//// Heating sanity check:
|
//// Heating sanity check:
|
||||||
// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature
|
// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature
|
||||||
// If the temperature has not increased at the end of that period, the target temperature is set to zero.
|
// If the temperature has not increased at the end of that period, the target temperature is set to zero.
|
||||||
// It can be reset with another M104/M109. This check is also only triggered if the target temperature and the current temperature
|
// It can be reset with another M104/M109. This check is also only triggered if the target temperature and
|
||||||
// differ by at least 2x WATCH_TEMP_INCREASE
|
// the current temperature differ by at least 2x WATCH_TEMP_INCREASE
|
||||||
//#define WATCH_TEMP_PERIOD 40000 //40 seconds
|
//#define WATCH_TEMP_PERIOD 40000 //40 seconds
|
||||||
//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds
|
//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,8 @@
|
||||||
//// Heating sanity check:
|
//// Heating sanity check:
|
||||||
// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature
|
// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature
|
||||||
// If the temperature has not increased at the end of that period, the target temperature is set to zero.
|
// If the temperature has not increased at the end of that period, the target temperature is set to zero.
|
||||||
// It can be reset with another M104/M109. This check is also only triggered if the target temperature and the current temperature
|
// It can be reset with another M104/M109. This check is also only triggered if the target temperature and
|
||||||
// differ by at least 2x WATCH_TEMP_INCREASE
|
// the current temperature differ by at least 2x WATCH_TEMP_INCREASE
|
||||||
//#define WATCH_TEMP_PERIOD 40000 //40 seconds
|
//#define WATCH_TEMP_PERIOD 40000 //40 seconds
|
||||||
//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds
|
//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,8 @@
|
||||||
//// Heating sanity check:
|
//// Heating sanity check:
|
||||||
// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature
|
// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature
|
||||||
// If the temperature has not increased at the end of that period, the target temperature is set to zero.
|
// If the temperature has not increased at the end of that period, the target temperature is set to zero.
|
||||||
// It can be reset with another M104/M109. This check is also only triggered if the target temperature and the current temperature
|
// It can be reset with another M104/M109. This check is also only triggered if the target temperature and
|
||||||
// differ by at least 2x WATCH_TEMP_INCREASE
|
// the current temperature differ by at least 2x WATCH_TEMP_INCREASE
|
||||||
#define WATCH_TEMP_PERIOD 40000 //40 seconds
|
#define WATCH_TEMP_PERIOD 40000 //40 seconds
|
||||||
#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds
|
#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,8 @@
|
||||||
//// Heating sanity check:
|
//// Heating sanity check:
|
||||||
// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature
|
// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature
|
||||||
// If the temperature has not increased at the end of that period, the target temperature is set to zero.
|
// If the temperature has not increased at the end of that period, the target temperature is set to zero.
|
||||||
// It can be reset with another M104/M109. This check is also only triggered if the target temperature and the current temperature
|
// It can be reset with another M104/M109. This check is also only triggered if the target temperature and
|
||||||
// differ by at least 2x WATCH_TEMP_INCREASE
|
// the current temperature differ by at least 2x WATCH_TEMP_INCREASE
|
||||||
//#define WATCH_TEMP_PERIOD 40000 //40 seconds
|
//#define WATCH_TEMP_PERIOD 40000 //40 seconds
|
||||||
//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds
|
//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,8 @@
|
||||||
//// Heating sanity check:
|
//// Heating sanity check:
|
||||||
// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature
|
// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature
|
||||||
// If the temperature has not increased at the end of that period, the target temperature is set to zero.
|
// If the temperature has not increased at the end of that period, the target temperature is set to zero.
|
||||||
// It can be reset with another M104/M109. This check is also only triggered if the target temperature and the current temperature
|
// It can be reset with another M104/M109. This check is also only triggered if the target temperature and
|
||||||
// differ by at least 2x WATCH_TEMP_INCREASE
|
// the current temperature differ by at least 2x WATCH_TEMP_INCREASE
|
||||||
//#define WATCH_TEMP_PERIOD 40000 //40 seconds
|
//#define WATCH_TEMP_PERIOD 40000 //40 seconds
|
||||||
//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds
|
//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,8 @@
|
||||||
//// Heating sanity check:
|
//// Heating sanity check:
|
||||||
// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature
|
// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature
|
||||||
// If the temperature has not increased at the end of that period, the target temperature is set to zero.
|
// If the temperature has not increased at the end of that period, the target temperature is set to zero.
|
||||||
// It can be reset with another M104/M109. This check is also only triggered if the target temperature and the current temperature
|
// It can be reset with another M104/M109. This check is also only triggered if the target temperature and
|
||||||
// differ by at least 2x WATCH_TEMP_INCREASE
|
// the current temperature differ by at least 2x WATCH_TEMP_INCREASE
|
||||||
//#define WATCH_TEMP_PERIOD 40000 //40 seconds
|
//#define WATCH_TEMP_PERIOD 40000 //40 seconds
|
||||||
//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds
|
//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,8 @@
|
||||||
//// Heating sanity check:
|
//// Heating sanity check:
|
||||||
// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature
|
// This waits for the watch period in milliseconds whenever an M104 or M109 increases the target temperature
|
||||||
// If the temperature has not increased at the end of that period, the target temperature is set to zero.
|
// If the temperature has not increased at the end of that period, the target temperature is set to zero.
|
||||||
// It can be reset with another M104/M109. This check is also only triggered if the target temperature and the current temperature
|
// It can be reset with another M104/M109. This check is also only triggered if the target temperature and
|
||||||
// differ by at least 2x WATCH_TEMP_INCREASE
|
// the current temperature differ by at least 2x WATCH_TEMP_INCREASE
|
||||||
//#define WATCH_TEMP_PERIOD 40000 //40 seconds
|
//#define WATCH_TEMP_PERIOD 40000 //40 seconds
|
||||||
//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds
|
//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds
|
||||||
|
|
||||||
|
|
|
@ -172,8 +172,8 @@ static void updateTemperaturesFromRawValues();
|
||||||
|
|
||||||
#ifdef WATCH_TEMP_PERIOD
|
#ifdef WATCH_TEMP_PERIOD
|
||||||
int watch_start_temp[EXTRUDERS] = { 0 };
|
int watch_start_temp[EXTRUDERS] = { 0 };
|
||||||
millis_t watchmillis[EXTRUDERS] = { 0 };
|
millis_t watch_heater_next_ms[EXTRUDERS] = { 0 };
|
||||||
#endif //WATCH_TEMP_PERIOD
|
#endif
|
||||||
|
|
||||||
#ifndef SOFT_PWM_SCALE
|
#ifndef SOFT_PWM_SCALE
|
||||||
#define SOFT_PWM_SCALE 0
|
#define SOFT_PWM_SCALE 0
|
||||||
|
@ -447,14 +447,14 @@ void checkExtruderAutoFans()
|
||||||
//
|
//
|
||||||
// Temperature Error Handlers
|
// Temperature Error Handlers
|
||||||
//
|
//
|
||||||
inline void _temp_error(int e, const char *msg1, const char *msg2) {
|
inline void _temp_error(int e, const char *serial_msg, const char *lcd_msg) {
|
||||||
if (IsRunning()) {
|
if (IsRunning()) {
|
||||||
SERIAL_ERROR_START;
|
SERIAL_ERROR_START;
|
||||||
if (e >= 0) SERIAL_ERRORLN((int)e);
|
if (e >= 0) SERIAL_ERRORLN((int)e);
|
||||||
serialprintPGM(msg1);
|
serialprintPGM(serial_msg);
|
||||||
MYSERIAL.write('\n');
|
MYSERIAL.write('\n');
|
||||||
#ifdef ULTRA_LCD
|
#ifdef ULTRA_LCD
|
||||||
lcd_setalertstatuspgm(msg2);
|
lcd_setalertstatuspgm(lcd_msg);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
|
#ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
|
||||||
|
@ -602,7 +602,7 @@ void manage_heater() {
|
||||||
float ct = current_temperature[0];
|
float ct = current_temperature[0];
|
||||||
if (ct > min(HEATER_0_MAXTEMP, 1023)) max_temp_error(0);
|
if (ct > min(HEATER_0_MAXTEMP, 1023)) max_temp_error(0);
|
||||||
if (ct < max(HEATER_0_MINTEMP, 0.01)) min_temp_error(0);
|
if (ct < max(HEATER_0_MINTEMP, 0.01)) min_temp_error(0);
|
||||||
#endif //HEATER_0_USES_MAX6675
|
#endif
|
||||||
|
|
||||||
#if defined(WATCH_TEMP_PERIOD) || !defined(PIDTEMPBED) || HAS_AUTO_FAN
|
#if defined(WATCH_TEMP_PERIOD) || !defined(PIDTEMPBED) || HAS_AUTO_FAN
|
||||||
millis_t ms = millis();
|
millis_t ms = millis();
|
||||||
|
@ -620,26 +620,27 @@ void manage_heater() {
|
||||||
// Check if temperature is within the correct range
|
// Check if temperature is within the correct range
|
||||||
soft_pwm[e] = current_temperature[e] > minttemp[e] && current_temperature[e] < maxttemp[e] ? (int)pid_output >> 1 : 0;
|
soft_pwm[e] = current_temperature[e] > minttemp[e] && current_temperature[e] < maxttemp[e] ? (int)pid_output >> 1 : 0;
|
||||||
|
|
||||||
|
// Check if the temperature is failing to increase
|
||||||
#ifdef WATCH_TEMP_PERIOD
|
#ifdef WATCH_TEMP_PERIOD
|
||||||
if (watchmillis[e] && ms > watchmillis[e] + WATCH_TEMP_PERIOD) {
|
// Is it time to check this extruder's heater?
|
||||||
|
if (watch_heater_next_ms[e] && ms > watch_heater_next_ms[e]) {
|
||||||
|
// Has it failed to increase enough?
|
||||||
if (degHotend(e) < watch_start_temp[e] + WATCH_TEMP_INCREASE) {
|
if (degHotend(e) < watch_start_temp[e] + WATCH_TEMP_INCREASE) {
|
||||||
setTargetHotend(0, e);
|
// Stop!
|
||||||
LCD_MESSAGEPGM(MSG_HEATING_FAILED_LCD); // translatable
|
_temp_error(e, MSG_HEATING_FAILED, MSG_HEATING_FAILED_LCD);
|
||||||
SERIAL_ECHO_START;
|
|
||||||
SERIAL_ECHOLNPGM(MSG_HEATING_FAILED);
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
watchmillis[e] = 0;
|
watch_heater_next_ms[e] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif //WATCH_TEMP_PERIOD
|
#endif // WATCH_TEMP_PERIOD
|
||||||
|
|
||||||
#ifdef TEMP_SENSOR_1_AS_REDUNDANT
|
#ifdef TEMP_SENSOR_1_AS_REDUNDANT
|
||||||
if (fabs(current_temperature[0] - redundant_temperature) > MAX_REDUNDANT_TEMP_SENSOR_DIFF) {
|
if (fabs(current_temperature[0] - redundant_temperature) > MAX_REDUNDANT_TEMP_SENSOR_DIFF) {
|
||||||
disable_all_heaters();
|
disable_all_heaters();
|
||||||
_temp_error(0, PSTR(MSG_EXTRUDER_SWITCHED_OFF), PSTR(MSG_ERR_REDUNDANT_TEMP));
|
_temp_error(0, PSTR(MSG_EXTRUDER_SWITCHED_OFF), PSTR(MSG_ERR_REDUNDANT_TEMP));
|
||||||
}
|
}
|
||||||
#endif // TEMP_SENSOR_1_AS_REDUNDANT
|
#endif
|
||||||
|
|
||||||
} // Extruders Loop
|
} // Extruders Loop
|
||||||
|
|
||||||
|
@ -996,14 +997,21 @@ void tp_init() {
|
||||||
#endif //BED_MAXTEMP
|
#endif //BED_MAXTEMP
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Start Heating Sanity Check for hotends that are below
|
||||||
|
* their target temperature by a configurable margin.
|
||||||
|
* This is called when the temperature is set. (M104, M109)
|
||||||
|
*/
|
||||||
void setWatch() {
|
void setWatch() {
|
||||||
#ifdef WATCH_TEMP_PERIOD
|
#ifdef WATCH_TEMP_PERIOD
|
||||||
millis_t ms = millis();
|
millis_t ms = millis() + WATCH_TEMP_PERIOD;
|
||||||
for (int e = 0; e < EXTRUDERS; e++) {
|
for (int e = 0; e < EXTRUDERS; e++) {
|
||||||
if (degHotend(e) < degTargetHotend(e) - (WATCH_TEMP_INCREASE * 2)) {
|
if (degHotend(e) < degTargetHotend(e) - (WATCH_TEMP_INCREASE * 2)) {
|
||||||
watch_start_temp[e] = degHotend(e);
|
watch_start_temp[e] = degHotend(e);
|
||||||
watchmillis[e] = ms;
|
watch_heater_next_ms[e] = ms;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
watch_heater_next_ms[e] = 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue