Merge pull request #3653 from thinkyhead/rc_bed_temp_watch_merge
Introduce temp watch protection for the bed
This commit is contained in:
		
						commit
						60c6efb75c
					
				| @ -80,13 +80,23 @@ | ||||
| #endif | ||||
| 
 | ||||
| /**
 | ||||
|  * Thermal Protection parameters for the bed | ||||
|  * are like the above for the hotends. | ||||
|  * WATCH_TEMP_BED_PERIOD and WATCH_TEMP_BED_INCREASE are not imlemented now. | ||||
|  * Thermal Protection parameters for the bed are just as above for hotends. | ||||
|  */ | ||||
| #if ENABLED(THERMAL_PROTECTION_BED) | ||||
|   #define THERMAL_PROTECTION_BED_PERIOD 20    // Seconds
 | ||||
|   #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius
 | ||||
| 
 | ||||
|   /**
 | ||||
|    * Whenever an M140 or M190 increases the target temperature the firmware will wait for the | ||||
|    * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE | ||||
|    * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, | ||||
|    * but only if the current temperature is far enough below the target for a reliable test. | ||||
|    * | ||||
|    * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease | ||||
|    * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) | ||||
|    */ | ||||
|   #define WATCH_BED_TEMP_PERIOD 60                // Seconds
 | ||||
|   #define WATCH_BED_TEMP_INCREASE 2               // Degrees Celsius
 | ||||
| #endif | ||||
| 
 | ||||
| #if ENABLED(PIDTEMP) | ||||
|  | ||||
| @ -80,13 +80,23 @@ | ||||
| #endif | ||||
| 
 | ||||
| /**
 | ||||
|  * Thermal Protection parameters for the bed | ||||
|  * are like the above for the hotends. | ||||
|  * WATCH_TEMP_BED_PERIOD and WATCH_TEMP_BED_INCREASE are not imlemented now. | ||||
|  * Thermal Protection parameters for the bed are just as above for hotends. | ||||
|  */ | ||||
| #if ENABLED(THERMAL_PROTECTION_BED) | ||||
|   #define THERMAL_PROTECTION_BED_PERIOD 20    // Seconds
 | ||||
|   #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius
 | ||||
| 
 | ||||
|   /**
 | ||||
|    * Whenever an M140 or M190 increases the target temperature the firmware will wait for the | ||||
|    * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE | ||||
|    * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, | ||||
|    * but only if the current temperature is far enough below the target for a reliable test. | ||||
|    * | ||||
|    * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease | ||||
|    * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) | ||||
|    */ | ||||
|   #define WATCH_BED_TEMP_PERIOD 60                // Seconds
 | ||||
|   #define WATCH_BED_TEMP_INCREASE 2               // Degrees Celsius
 | ||||
| #endif | ||||
| 
 | ||||
| #if ENABLED(PIDTEMP) | ||||
|  | ||||
| @ -80,13 +80,23 @@ | ||||
| #endif | ||||
| 
 | ||||
| /**
 | ||||
|  * Thermal Protection parameters for the bed | ||||
|  * are like the above for the hotends. | ||||
|  * WATCH_TEMP_BED_PERIOD and WATCH_TEMP_BED_INCREASE are not imlemented now. | ||||
|  * Thermal Protection parameters for the bed are just as above for hotends. | ||||
|  */ | ||||
| #if ENABLED(THERMAL_PROTECTION_BED) | ||||
|   #define THERMAL_PROTECTION_BED_PERIOD 20    // Seconds
 | ||||
|   #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius
 | ||||
| 
 | ||||
|   /**
 | ||||
|    * Whenever an M140 or M190 increases the target temperature the firmware will wait for the | ||||
|    * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE | ||||
|    * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, | ||||
|    * but only if the current temperature is far enough below the target for a reliable test. | ||||
|    * | ||||
|    * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease | ||||
|    * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) | ||||
|    */ | ||||
|   #define WATCH_BED_TEMP_PERIOD 60                // Seconds
 | ||||
|   #define WATCH_BED_TEMP_INCREASE 2               // Degrees Celsius
 | ||||
| #endif | ||||
| 
 | ||||
| #if ENABLED(PIDTEMP) | ||||
|  | ||||
| @ -80,13 +80,23 @@ | ||||
| #endif | ||||
| 
 | ||||
| /**
 | ||||
|  * Thermal Protection parameters for the bed | ||||
|  * are like the above for the hotends. | ||||
|  * WATCH_TEMP_BED_PERIOD and WATCH_TEMP_BED_INCREASE are not imlemented now. | ||||
|  * Thermal Protection parameters for the bed are just as above for hotends. | ||||
|  */ | ||||
| #if ENABLED(THERMAL_PROTECTION_BED) | ||||
|   #define THERMAL_PROTECTION_BED_PERIOD 20    // Seconds
 | ||||
|   #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius
 | ||||
| 
 | ||||
|   /**
 | ||||
|    * Whenever an M140 or M190 increases the target temperature the firmware will wait for the | ||||
|    * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE | ||||
|    * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, | ||||
|    * but only if the current temperature is far enough below the target for a reliable test. | ||||
|    * | ||||
|    * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease | ||||
|    * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) | ||||
|    */ | ||||
|   #define WATCH_BED_TEMP_PERIOD 60                // Seconds
 | ||||
|   #define WATCH_BED_TEMP_INCREASE 2               // Degrees Celsius
 | ||||
| #endif | ||||
| 
 | ||||
| #if ENABLED(PIDTEMP) | ||||
|  | ||||
| @ -86,13 +86,23 @@ | ||||
| #endif | ||||
| 
 | ||||
| /**
 | ||||
|  * Thermal Protection parameters for the bed | ||||
|  * are like the above for the hotends. | ||||
|  * WATCH_TEMP_BED_PERIOD and WATCH_TEMP_BED_INCREASE are not imlemented now. | ||||
|  * Thermal Protection parameters for the bed are just as above for hotends. | ||||
|  */ | ||||
| #if ENABLED(THERMAL_PROTECTION_BED) | ||||
|   #define THERMAL_PROTECTION_BED_PERIOD 20    // Seconds
 | ||||
|   #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius
 | ||||
| 
 | ||||
|   /**
 | ||||
|    * Whenever an M140 or M190 increases the target temperature the firmware will wait for the | ||||
|    * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE | ||||
|    * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, | ||||
|    * but only if the current temperature is far enough below the target for a reliable test. | ||||
|    * | ||||
|    * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease | ||||
|    * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) | ||||
|    */ | ||||
|   #define WATCH_BED_TEMP_PERIOD 60                // Seconds
 | ||||
|   #define WATCH_BED_TEMP_INCREASE 2               // Degrees Celsius
 | ||||
| #endif | ||||
| 
 | ||||
| #if ENABLED(PIDTEMP) | ||||
|  | ||||
| @ -80,13 +80,23 @@ | ||||
| #endif | ||||
| 
 | ||||
| /**
 | ||||
|  * Thermal Protection parameters for the bed | ||||
|  * are like the above for the hotends. | ||||
|  * WATCH_TEMP_BED_PERIOD and WATCH_TEMP_BED_INCREASE are not imlemented now. | ||||
|  * Thermal Protection parameters for the bed are just as above for hotends. | ||||
|  */ | ||||
| #if ENABLED(THERMAL_PROTECTION_BED) | ||||
|   #define THERMAL_PROTECTION_BED_PERIOD 20    // Seconds
 | ||||
|   #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius
 | ||||
| 
 | ||||
|   /**
 | ||||
|    * Whenever an M140 or M190 increases the target temperature the firmware will wait for the | ||||
|    * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE | ||||
|    * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, | ||||
|    * but only if the current temperature is far enough below the target for a reliable test. | ||||
|    * | ||||
|    * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease | ||||
|    * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) | ||||
|    */ | ||||
|   #define WATCH_BED_TEMP_PERIOD 60                // Seconds
 | ||||
|   #define WATCH_BED_TEMP_INCREASE 2               // Degrees Celsius
 | ||||
| #endif | ||||
| 
 | ||||
| #if ENABLED(PIDTEMP) | ||||
|  | ||||
| @ -80,13 +80,23 @@ | ||||
| #endif | ||||
| 
 | ||||
| /**
 | ||||
|  * Thermal Protection parameters for the bed | ||||
|  * are like the above for the hotends. | ||||
|  * WATCH_TEMP_BED_PERIOD and WATCH_TEMP_BED_INCREASE are not imlemented now. | ||||
|  * Thermal Protection parameters for the bed are just as above for hotends. | ||||
|  */ | ||||
| #if ENABLED(THERMAL_PROTECTION_BED) | ||||
|   #define THERMAL_PROTECTION_BED_PERIOD 20    // Seconds
 | ||||
|   #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius
 | ||||
| 
 | ||||
|   /**
 | ||||
|    * Whenever an M140 or M190 increases the target temperature the firmware will wait for the | ||||
|    * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE | ||||
|    * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, | ||||
|    * but only if the current temperature is far enough below the target for a reliable test. | ||||
|    * | ||||
|    * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease | ||||
|    * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) | ||||
|    */ | ||||
|   #define WATCH_BED_TEMP_PERIOD 60                // Seconds
 | ||||
|   #define WATCH_BED_TEMP_INCREASE 2               // Degrees Celsius
 | ||||
| #endif | ||||
| 
 | ||||
| #if ENABLED(PIDTEMP) | ||||
|  | ||||
| @ -80,13 +80,23 @@ | ||||
| #endif | ||||
| 
 | ||||
| /**
 | ||||
|  * Thermal Protection parameters for the bed | ||||
|  * are like the above for the hotends. | ||||
|  * WATCH_TEMP_BED_PERIOD and WATCH_TEMP_BED_INCREASE are not imlemented now. | ||||
|  * Thermal Protection parameters for the bed are just as above for hotends. | ||||
|  */ | ||||
| #if ENABLED(THERMAL_PROTECTION_BED) | ||||
|   #define THERMAL_PROTECTION_BED_PERIOD 20    // Seconds
 | ||||
|   #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius
 | ||||
| 
 | ||||
|   /**
 | ||||
|    * Whenever an M140 or M190 increases the target temperature the firmware will wait for the | ||||
|    * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE | ||||
|    * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, | ||||
|    * but only if the current temperature is far enough below the target for a reliable test. | ||||
|    * | ||||
|    * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease | ||||
|    * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) | ||||
|    */ | ||||
|   #define WATCH_BED_TEMP_PERIOD 60                // Seconds
 | ||||
|   #define WATCH_BED_TEMP_INCREASE 2               // Degrees Celsius
 | ||||
| #endif | ||||
| 
 | ||||
| #if ENABLED(PIDTEMP) | ||||
|  | ||||
| @ -80,13 +80,23 @@ | ||||
| #endif | ||||
| 
 | ||||
| /**
 | ||||
|  * Thermal Protection parameters for the bed | ||||
|  * are like the above for the hotends. | ||||
|  * WATCH_TEMP_BED_PERIOD and WATCH_TEMP_BED_INCREASE are not imlemented now. | ||||
|  * Thermal Protection parameters for the bed are just as above for hotends. | ||||
|  */ | ||||
| #if ENABLED(THERMAL_PROTECTION_BED) | ||||
|   #define THERMAL_PROTECTION_BED_PERIOD 20    // Seconds
 | ||||
|   #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius
 | ||||
| 
 | ||||
|   /**
 | ||||
|    * Whenever an M140 or M190 increases the target temperature the firmware will wait for the | ||||
|    * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE | ||||
|    * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, | ||||
|    * but only if the current temperature is far enough below the target for a reliable test. | ||||
|    * | ||||
|    * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease | ||||
|    * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) | ||||
|    */ | ||||
|   #define WATCH_BED_TEMP_PERIOD 60                // Seconds
 | ||||
|   #define WATCH_BED_TEMP_INCREASE 2               // Degrees Celsius
 | ||||
| #endif | ||||
| 
 | ||||
| #if ENABLED(PIDTEMP) | ||||
|  | ||||
| @ -80,13 +80,23 @@ | ||||
| #endif | ||||
| 
 | ||||
| /**
 | ||||
|  * Thermal Protection parameters for the bed | ||||
|  * are like the above for the hotends. | ||||
|  * WATCH_TEMP_BED_PERIOD and WATCH_TEMP_BED_INCREASE are not imlemented now. | ||||
|  * Thermal Protection parameters for the bed are just as above for hotends. | ||||
|  */ | ||||
| #if ENABLED(THERMAL_PROTECTION_BED) | ||||
|   #define THERMAL_PROTECTION_BED_PERIOD 120   // Seconds
 | ||||
|   #define THERMAL_PROTECTION_BED_HYSTERESIS 4 // Degrees Celsius
 | ||||
| 
 | ||||
|   /**
 | ||||
|    * Whenever an M140 or M190 increases the target temperature the firmware will wait for the | ||||
|    * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE | ||||
|    * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, | ||||
|    * but only if the current temperature is far enough below the target for a reliable test. | ||||
|    * | ||||
|    * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease | ||||
|    * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) | ||||
|    */ | ||||
|   #define WATCH_BED_TEMP_PERIOD 60                // Seconds
 | ||||
|   #define WATCH_BED_TEMP_INCREASE 2               // Degrees Celsius
 | ||||
| #endif | ||||
| 
 | ||||
| #if ENABLED(PIDTEMP) | ||||
|  | ||||
| @ -80,13 +80,23 @@ | ||||
| #endif | ||||
| 
 | ||||
| /**
 | ||||
|  * Thermal Protection parameters for the bed | ||||
|  * are like the above for the hotends. | ||||
|  * WATCH_TEMP_BED_PERIOD and WATCH_TEMP_BED_INCREASE are not imlemented now. | ||||
|  * Thermal Protection parameters for the bed are just as above for hotends. | ||||
|  */ | ||||
| #if ENABLED(THERMAL_PROTECTION_BED) | ||||
|   #define THERMAL_PROTECTION_BED_PERIOD 20    // Seconds
 | ||||
|   #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius
 | ||||
| 
 | ||||
|   /**
 | ||||
|    * Whenever an M140 or M190 increases the target temperature the firmware will wait for the | ||||
|    * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE | ||||
|    * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, | ||||
|    * but only if the current temperature is far enough below the target for a reliable test. | ||||
|    * | ||||
|    * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease | ||||
|    * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) | ||||
|    */ | ||||
|   #define WATCH_BED_TEMP_PERIOD 60                // Seconds
 | ||||
|   #define WATCH_BED_TEMP_INCREASE 2               // Degrees Celsius
 | ||||
| #endif | ||||
| 
 | ||||
| #if ENABLED(PIDTEMP) | ||||
|  | ||||
| @ -80,13 +80,23 @@ | ||||
| #endif | ||||
| 
 | ||||
| /**
 | ||||
|  * Thermal Protection parameters for the bed | ||||
|  * are like the above for the hotends. | ||||
|  * WATCH_TEMP_BED_PERIOD and WATCH_TEMP_BED_INCREASE are not imlemented now. | ||||
|  * Thermal Protection parameters for the bed are just as above for hotends. | ||||
|  */ | ||||
| #if ENABLED(THERMAL_PROTECTION_BED) | ||||
|   #define THERMAL_PROTECTION_BED_PERIOD 20    // Seconds
 | ||||
|   #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius
 | ||||
| 
 | ||||
|   /**
 | ||||
|    * Whenever an M140 or M190 increases the target temperature the firmware will wait for the | ||||
|    * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE | ||||
|    * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, | ||||
|    * but only if the current temperature is far enough below the target for a reliable test. | ||||
|    * | ||||
|    * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease | ||||
|    * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) | ||||
|    */ | ||||
|   #define WATCH_BED_TEMP_PERIOD 60                // Seconds
 | ||||
|   #define WATCH_BED_TEMP_INCREASE 2               // Degrees Celsius
 | ||||
| #endif | ||||
| 
 | ||||
| #if ENABLED(PIDTEMP) | ||||
|  | ||||
| @ -85,13 +85,23 @@ | ||||
| #endif | ||||
| 
 | ||||
| /**
 | ||||
|  * Thermal Protection parameters for the bed | ||||
|  * are like the above for the hotends. | ||||
|  * WATCH_TEMP_BED_PERIOD and WATCH_TEMP_BED_INCREASE are not imlemented now. | ||||
|  * Thermal Protection parameters for the bed are just as above for hotends. | ||||
|  */ | ||||
| #if ENABLED(THERMAL_PROTECTION_BED) | ||||
|   #define THERMAL_PROTECTION_BED_PERIOD 20    // Seconds
 | ||||
|   #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius
 | ||||
| 
 | ||||
|   /**
 | ||||
|    * Whenever an M140 or M190 increases the target temperature the firmware will wait for the | ||||
|    * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE | ||||
|    * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, | ||||
|    * but only if the current temperature is far enough below the target for a reliable test. | ||||
|    * | ||||
|    * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease | ||||
|    * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) | ||||
|    */ | ||||
|   #define WATCH_BED_TEMP_PERIOD 60                // Seconds
 | ||||
|   #define WATCH_BED_TEMP_INCREASE 2               // Degrees Celsius
 | ||||
| #endif | ||||
| 
 | ||||
| #if ENABLED(PIDTEMP) | ||||
|  | ||||
| @ -80,13 +80,23 @@ | ||||
| #endif | ||||
| 
 | ||||
| /**
 | ||||
|  * Thermal Protection parameters for the bed | ||||
|  * are like the above for the hotends. | ||||
|  * WATCH_TEMP_BED_PERIOD and WATCH_TEMP_BED_INCREASE are not imlemented now. | ||||
|  * Thermal Protection parameters for the bed are just as above for hotends. | ||||
|  */ | ||||
| #if ENABLED(THERMAL_PROTECTION_BED) | ||||
|   #define THERMAL_PROTECTION_BED_PERIOD 20    // Seconds
 | ||||
|   #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius
 | ||||
| 
 | ||||
|   /**
 | ||||
|    * Whenever an M140 or M190 increases the target temperature the firmware will wait for the | ||||
|    * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE | ||||
|    * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, | ||||
|    * but only if the current temperature is far enough below the target for a reliable test. | ||||
|    * | ||||
|    * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease | ||||
|    * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) | ||||
|    */ | ||||
|   #define WATCH_BED_TEMP_PERIOD 60                // Seconds
 | ||||
|   #define WATCH_BED_TEMP_INCREASE 2               // Degrees Celsius
 | ||||
| #endif | ||||
| 
 | ||||
| #if ENABLED(PIDTEMP) | ||||
|  | ||||
| @ -80,13 +80,23 @@ | ||||
| #endif | ||||
| 
 | ||||
| /**
 | ||||
|  * Thermal Protection parameters for the bed | ||||
|  * are like the above for the hotends. | ||||
|  * WATCH_TEMP_BED_PERIOD and WATCH_TEMP_BED_INCREASE are not imlemented now. | ||||
|  * Thermal Protection parameters for the bed are just as above for hotends. | ||||
|  */ | ||||
| #if ENABLED(THERMAL_PROTECTION_BED) | ||||
|   #define THERMAL_PROTECTION_BED_PERIOD 20    // Seconds
 | ||||
|   #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius
 | ||||
| 
 | ||||
|   /**
 | ||||
|    * Whenever an M140 or M190 increases the target temperature the firmware will wait for the | ||||
|    * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE | ||||
|    * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, | ||||
|    * but only if the current temperature is far enough below the target for a reliable test. | ||||
|    * | ||||
|    * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease | ||||
|    * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) | ||||
|    */ | ||||
|   #define WATCH_BED_TEMP_PERIOD 60                // Seconds
 | ||||
|   #define WATCH_BED_TEMP_INCREASE 2               // Degrees Celsius
 | ||||
| #endif | ||||
| 
 | ||||
| #if ENABLED(PIDTEMP) | ||||
|  | ||||
| @ -80,13 +80,23 @@ | ||||
| #endif | ||||
| 
 | ||||
| /**
 | ||||
|  * Thermal Protection parameters for the bed | ||||
|  * are like the above for the hotends. | ||||
|  * WATCH_TEMP_BED_PERIOD and WATCH_TEMP_BED_INCREASE are not imlemented now. | ||||
|  * Thermal Protection parameters for the bed are just as above for hotends. | ||||
|  */ | ||||
| #if ENABLED(THERMAL_PROTECTION_BED) | ||||
|   #define THERMAL_PROTECTION_BED_PERIOD 20    // Seconds
 | ||||
|   #define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius
 | ||||
| 
 | ||||
|   /**
 | ||||
|    * Whenever an M140 or M190 increases the target temperature the firmware will wait for the | ||||
|    * WATCH_BED_TEMP_PERIOD to expire, and if the temperature hasn't increased by WATCH_BED_TEMP_INCREASE | ||||
|    * degrees, the machine is halted, requiring a hard reset. This test restarts with any M140/M190, | ||||
|    * but only if the current temperature is far enough below the target for a reliable test. | ||||
|    * | ||||
|    * If you get too many "Heating failed" errors, increase WATCH_BED_TEMP_PERIOD and/or decrease | ||||
|    * WATCH_BED_TEMP_INCREASE. (WATCH_BED_TEMP_INCREASE should not be below 2.) | ||||
|    */ | ||||
|   #define WATCH_BED_TEMP_PERIOD 60                // Seconds
 | ||||
|   #define WATCH_BED_TEMP_INCREASE 2               // Degrees Celsius
 | ||||
| #endif | ||||
| 
 | ||||
| #if ENABLED(PIDTEMP) | ||||
|  | ||||
| @ -200,11 +200,16 @@ static float analog2temp(int raw, uint8_t e); | ||||
| static float analog2tempBed(int raw); | ||||
| static void updateTemperaturesFromRawValues(); | ||||
| 
 | ||||
| #if ENABLED(THERMAL_PROTECTION_HOTENDS) | ||||
| #if ENABLED(THERMAL_PROTECTION_HOTENDS) && WATCH_TEMP_PERIOD > 0 | ||||
|   int watch_target_temp[EXTRUDERS] = { 0 }; | ||||
|   millis_t watch_heater_next_ms[EXTRUDERS] = { 0 }; | ||||
| #endif | ||||
| 
 | ||||
| #if ENABLED(THERMAL_PROTECTION_BED) && WATCH_BED_TEMP_PERIOD > 0 | ||||
|   int watch_target_bed_temp = 0; | ||||
|   millis_t watch_bed_next_ms = 0; | ||||
| #endif | ||||
| 
 | ||||
| #ifndef SOFT_PWM_SCALE | ||||
|   #define SOFT_PWM_SCALE 0 | ||||
| #endif | ||||
| @ -717,7 +722,7 @@ void manage_heater() { | ||||
|     if (ct < max(HEATER_0_MINTEMP, 0.01)) min_temp_error(0); | ||||
|   #endif | ||||
| 
 | ||||
|   #if ENABLED(THERMAL_PROTECTION_HOTENDS) || DISABLED(PIDTEMPBED) || HAS_AUTO_FAN | ||||
|   #if (ENABLED(THERMAL_PROTECTION_HOTENDS) && WATCH_TEMP_PERIOD > 0) || (ENABLED(THERMAL_PROTECTION_BED) && WATCH_BED_TEMP_PERIOD > 0) || DISABLED(PIDTEMPBED) || HAS_AUTO_FAN | ||||
|     millis_t ms = millis(); | ||||
|   #endif | ||||
| 
 | ||||
| @ -734,7 +739,7 @@ void manage_heater() { | ||||
|     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
 | ||||
|     #if ENABLED(THERMAL_PROTECTION_HOTENDS) | ||||
|     #if ENABLED(THERMAL_PROTECTION_HOTENDS) && WATCH_TEMP_PERIOD > 0 | ||||
| 
 | ||||
|       // Is it time to check this extruder's heater?
 | ||||
|       if (watch_heater_next_ms[e] && ELAPSED(ms, watch_heater_next_ms[e])) { | ||||
| @ -751,6 +756,24 @@ void manage_heater() { | ||||
| 
 | ||||
|     #endif // THERMAL_PROTECTION_HOTENDS
 | ||||
| 
 | ||||
|     // Check if the temperature is failing to increase
 | ||||
|     #if ENABLED(THERMAL_PROTECTION_BED) && WATCH_BED_TEMP_PERIOD > 0 | ||||
| 
 | ||||
|       // Is it time to check the bed?
 | ||||
|       if (watch_bed_next_ms && ELAPSED(ms, watch_bed_next_ms)) { | ||||
|         // Has it failed to increase enough?
 | ||||
|         if (degBed() < watch_target_bed_temp) { | ||||
|           // Stop!
 | ||||
|           _temp_error(-1, PSTR(MSG_T_HEATING_FAILED), PSTR(MSG_HEATING_FAILED_LCD)); | ||||
|         } | ||||
|         else { | ||||
|           // Start again if the target is still far off
 | ||||
|           start_watching_bed(); | ||||
|         } | ||||
|       } | ||||
| 
 | ||||
|     #endif // THERMAL_PROTECTION_HOTENDS
 | ||||
| 
 | ||||
|     #if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT) | ||||
|       if (fabs(current_temperature[0] - redundant_temperature) > MAX_REDUNDANT_TEMP_SENSOR_DIFF) { | ||||
|         _temp_error(0, PSTR(MSG_REDUNDANCY), PSTR(MSG_ERR_REDUNDANT_TEMP)); | ||||
| @ -1160,7 +1183,7 @@ void tp_init() { | ||||
|   #endif //BED_MAXTEMP
 | ||||
| } | ||||
| 
 | ||||
| #if ENABLED(THERMAL_PROTECTION_HOTENDS) | ||||
| #if ENABLED(THERMAL_PROTECTION_HOTENDS) && WATCH_TEMP_PERIOD > 0 | ||||
|   /**
 | ||||
|    * Start Heating Sanity Check for hotends that are below | ||||
|    * their target temperature by a configurable margin. | ||||
| @ -1176,6 +1199,22 @@ void tp_init() { | ||||
|   } | ||||
| #endif | ||||
| 
 | ||||
| #if ENABLED(THERMAL_PROTECTION_BED) && WATCH_BED_TEMP_PERIOD > 0 | ||||
|   /**
 | ||||
|    * Start Heating Sanity Check for hotends that are below | ||||
|    * their target temperature by a configurable margin. | ||||
|    * This is called when the temperature is set. (M140, M190) | ||||
|    */ | ||||
|   void start_watching_bed() { | ||||
|     if (degBed() < degTargetBed() - (WATCH_BED_TEMP_INCREASE + TEMP_BED_HYSTERESIS + 1)) { | ||||
|       watch_target_bed_temp = degBed() + WATCH_BED_TEMP_INCREASE; | ||||
|       watch_bed_next_ms = millis() + (WATCH_BED_TEMP_PERIOD) * 1000UL; | ||||
|     } | ||||
|     else | ||||
|       watch_bed_next_ms = 0; | ||||
|   } | ||||
| #endif | ||||
| 
 | ||||
| #if ENABLED(THERMAL_PROTECTION_HOTENDS) || ENABLED(THERMAL_PROTECTION_BED) | ||||
| 
 | ||||
|   void thermal_runaway_protection(TRState* state, millis_t* timer, float temperature, float target_temperature, int heater_id, int period_seconds, int hysteresis_degc) { | ||||
|  | ||||
| @ -128,17 +128,26 @@ FORCE_INLINE float rawBedTemp() { return current_temperature_bed_raw; } | ||||
| FORCE_INLINE float degTargetHotend(uint8_t extruder) { return target_temperature[extruder]; } | ||||
| FORCE_INLINE float degTargetBed() { return target_temperature_bed; } | ||||
| 
 | ||||
| #if ENABLED(THERMAL_PROTECTION_HOTENDS) | ||||
| #if ENABLED(THERMAL_PROTECTION_HOTENDS) && WATCH_TEMP_PERIOD > 0 | ||||
|   void start_watching_heater(int e = 0); | ||||
| #endif | ||||
| 
 | ||||
| #if ENABLED(THERMAL_PROTECTION_BED) && WATCH_BED_TEMP_PERIOD > 0 | ||||
|   void start_watching_bed(); | ||||
| #endif | ||||
| 
 | ||||
| FORCE_INLINE void setTargetHotend(const float& celsius, uint8_t extruder) { | ||||
|   target_temperature[extruder] = celsius; | ||||
|   #if ENABLED(THERMAL_PROTECTION_HOTENDS) | ||||
|   #if ENABLED(THERMAL_PROTECTION_HOTENDS) && WATCH_TEMP_PERIOD > 0 | ||||
|     start_watching_heater(extruder); | ||||
|   #endif | ||||
| } | ||||
| FORCE_INLINE void setTargetBed(const float& celsius) { target_temperature_bed = celsius; } | ||||
| FORCE_INLINE void setTargetBed(const float& celsius) { | ||||
|   target_temperature_bed = celsius; | ||||
|   #if ENABLED(THERMAL_PROTECTION_BED) && WATCH_BED_TEMP_PERIOD > 0 | ||||
|     start_watching_bed(); | ||||
|   #endif | ||||
| } | ||||
| 
 | ||||
| FORCE_INLINE bool isHeatingHotend(uint8_t extruder) { return target_temperature[extruder] > current_temperature[extruder]; } | ||||
| FORCE_INLINE bool isHeatingBed() { return target_temperature_bed > current_temperature_bed; } | ||||
|  | ||||
| @ -603,7 +603,7 @@ void lcd_set_home_offsets() { | ||||
| /**
 | ||||
|  * Watch temperature callbacks | ||||
|  */ | ||||
| #if ENABLED(THERMAL_PROTECTION_HOTENDS) | ||||
| #if ENABLED(THERMAL_PROTECTION_HOTENDS) && WATCH_TEMP_PERIOD > 0 | ||||
|   #if TEMP_SENSOR_0 != 0 | ||||
|     void watch_temp_callback_E0() { start_watching_heater(0); } | ||||
|   #endif | ||||
| @ -631,6 +631,16 @@ void lcd_set_home_offsets() { | ||||
|   #endif // EXTRUDERS > 3
 | ||||
| #endif | ||||
| 
 | ||||
| #if ENABLED(THERMAL_PROTECTION_BED) && WATCH_BED_TEMP_PERIOD > 0 | ||||
|   #if TEMP_SENSOR_BED != 0 | ||||
|     void watch_temp_callback_bed() { start_watching_bed(); } | ||||
|   #endif | ||||
| #else | ||||
|   #if TEMP_SENSOR_BED != 0 | ||||
|     void watch_temp_callback_bed() {} | ||||
|   #endif | ||||
| #endif | ||||
| 
 | ||||
| /**
 | ||||
|  * | ||||
|  * "Tune" submenu | ||||
| @ -685,7 +695,7 @@ static void lcd_tune_menu() { | ||||
|   // Bed:
 | ||||
|   //
 | ||||
|   #if TEMP_SENSOR_BED != 0 | ||||
|     MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_BED, &target_temperature_bed, 0, BED_MAXTEMP - 15); | ||||
|     MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_BED, &target_temperature_bed, 0, BED_MAXTEMP - 15, watch_temp_callback_bed); | ||||
|   #endif | ||||
| 
 | ||||
|   //
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user