diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index dda42f2f23..9c1f255fd1 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -1059,8 +1059,8 @@ // Require a minimum temperature when ubefore allowing probing. Useful on machines such as the Lulzbot series // which uses a conductive nozzle or the Creality CR6 and other strain gauge sensors to prevent misreads from filament debris. -#define PROBE_REQUIRES_MINTEMP_NOZZLE 150 -#define PROBE_REQUIRES_MINTEMP_BED 50 +//#define PROBE_REQUIRES_MINTEMP_NOZZLE 150 +//#define PROBE_REQUIRES_MINTEMP_BED 50 @@ -1653,6 +1653,13 @@ // For a purge/clean station mounted on the X axis //#define NOZZLE_CLEAN_NO_Y + #define NOZZLE_CLEAN_MIN_TEMP + #if ENABLED(NOZZLE_CLEAN_MIN_TEMP) + #define NOZZE_CLEAN_TEMP 170 + // Default behavior is to skip nozzles that are too cold. The allows you to force them to heat instead + //#define NOZLE_CLEAN_HEAT_LOWTEMP + #endif + // Explicit wipe G-code script applies to a G12 with no arguments. //#define WIPE_SEQUENCE_COMMANDS "G1 X-17 Y25 Z10 F4000\nG1 Z1\nM114\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 X-17 Y25\nG1 X-17 Y95\nG1 Z15\nM400\nG0 X-10.0 Y-9.0" diff --git a/Marlin/src/libs/nozzle.cpp b/Marlin/src/libs/nozzle.cpp index 10021005e5..0fb382dc27 100644 --- a/Marlin/src/libs/nozzle.cpp +++ b/Marlin/src/libs/nozzle.cpp @@ -153,6 +153,19 @@ Nozzle nozzle; const uint8_t arrPos = ANY(SINGLENOZZLE, MIXING_EXTRUDER) ? 0 : active_extruder; + #if ENABLED(NOZZLE_CLEAN_MIN_TEMP) && NOZZE_CLEAN_TEMP > 0 + if(thermalManager.degTargetHotend(arrPos)) < NOZZE_CLEAN_TEMP) { + #if ENABLED(NOZLE_CLEAN_HEAT_LOWTEMP) + SERIAL_ECHOLNPGM("Nozzle too Cold - Heating"); + thermalManager.setTargetHotend(NOZZE_CLEAN_TEMP, arrPos); + thermalManager.wait_for_hotend(0); + #else + SERIAL_ECHOLNPGM("Nozzle too cold - Skipping Wipe"); + return; + #endif + } + #endif + #if HAS_SOFTWARE_ENDSTOPS #define LIMIT_AXIS(A) do{ \ diff --git a/Marlin/src/module/probe.cpp b/Marlin/src/module/probe.cpp index 381783011b..c3fa8ac934 100644 --- a/Marlin/src/module/probe.cpp +++ b/Marlin/src/module/probe.cpp @@ -348,6 +348,8 @@ bool Probe::set_deployed(const bool deploy) { constexpr bool deploy_stow_condition = true; #endif + bool setting_bed = false; + bool setting_hotend = false; #if defined(PROBE_REQUIRES_MINTEMP_NOZZLE) && PROBE_REQUIRES_MINTEMP_NOZZLE < 0 && HAS_TEMP_HOTEND if (thermalManager.degTargetHotend(0) < PROBE_REQUIRES_MINTEMP_NOZZLE) { bool setting_hotend = false; @@ -359,7 +361,6 @@ bool Probe::set_deployed(const bool deploy) { #endif #if defined(PROBE_REQUIRES_MINTEMP_BED) && PROBE_REQUIRES_MINTEMP_BED < 0 && HAS_HEATED_BED - bool setting_hotend, setting_bed = false; if (thermalManager.degBed() < PROBE_REQUIRES_MINTEMP_BED) { uint16_t bedTemperature = AUTOLEVEL_PREHEAT_BED_TEMP; SERIAL_ECHOLNPAIR("Preheating bed to ", bedTemperature);