Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add option WAIT_FOR_HOTEND under PROBING_HEATERS_OFF. #20835

Merged

Conversation

slowbro
Copy link
Member

@slowbro slowbro commented Jan 21, 2021

Description

Wait for the hotend to come back up to temp between probes, to ensure that the temperature
does not droop excessively when probing. This was pointed out in #20595 - when running a
long G29 command before printing, but after a M109, the planner will trudge ahead at
whatever temperature the nozzle happens to be at after probing. In other cases this can
be useful if one wants to have a constant nozzle temp when probing, due to thermal expansion,
such as when using NOZZLE_AS_PROBE or anything else that uses the nozzle directly.

Requirements

Temperature changes require a hotend and hotend temp sensor. Use-cases require a probe, as well as PROBING_HEATERS_OFF. It is used in homing (when USE_PROBE_FOR_Z_HOMING), as well as normal probing moves.

Benefits

Adds the ability to ensure the hotend is at a certain temperature when probing. Also has the fringe benefit of not letting the hotend temperature drop too far when probing, meaning the hotend is at the expected temperature after, say, G29 J5 which would take a while with the heater being off the majority of the time, not letting the temp recover. This prevents a print starting with a severely under-temp (but not < EXTRUDE_MIN_TEMP) hotend.

Configurations

Click to expand config diff

diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h
index 7b1c1d494a..f9131659a8 100644
--- a/Marlin/Configuration.h
+++ b/Marlin/Configuration.h
@@ -839,7 +839,7 @@
 #define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
 
 // Force the use of the probe for Z-axis homing
-//#define USE_PROBE_FOR_Z_HOMING
+#define USE_PROBE_FOR_Z_HOMING
 
 /**
  * Z_MIN_PROBE_PIN
@@ -894,7 +894,7 @@
 /**
  * The BLTouch probe uses a Hall effect sensor and emulates a servo.
  */
-//#define BLTOUCH
+#define BLTOUCH // for example
 
 /**
  * Touch-MI Probe by hotends.fr
@@ -1081,10 +1081,10 @@
  * These options are most useful for the BLTouch probe, but may also improve
  * readings with inductive probes and piezo sensors.
  */
-//#define PROBING_HEATERS_OFF       // Turn heaters off when probing
+#define PROBING_HEATERS_OFF       // Turn heaters off when probing
 #if ENABLED(PROBING_HEATERS_OFF)
   //#define WAIT_FOR_BED_HEATER     // Wait for bed to heat back up between probes (to improve accuracy)
-  //#define WAIT_FOR_HOTEND         // Wait for hotend to heat back up between probes (to improve accuracy & prevent undertemp extrudes)
+  #define WAIT_FOR_HOTEND         // Wait for hotend to heat back up between probes (to improve accuracy & prevent undertemp extrudes)
 #endif
 //#define PROBING_FANS_OFF          // Turn fans off when probing
 //#define PROBING_STEPPERS_OFF      // Turn steppers off (unless needed to hold position) when probing
@@ -1499,7 +1499,7 @@
 // - Move the Z probe (or nozzle) to a defined XY point before Z Homing.
 // - Prevent Z homing when the Z probe is outside bed area.
 //
-//#define Z_SAFE_HOMING
+#define Z_SAFE_HOMING
 
 #if ENABLED(Z_SAFE_HOMING)
   #define Z_SAFE_HOMING_X_POINT X_CENTER  // X point for Z homing

Related Issues

Related to, but may not necessarily be the best fix for, #20595. I'll leave that judgement to the maintainers, though.

Wait for the hotend to come back up to temp between probes, to ensure that the temperature
does not droop excessively when probing. This was pointed out in MarlinFirmware#20595 - when running a
long `G29` command before printing, but after a `M109`, the planner will trudge ahead at
whatever temperature the nozzle happens to be at after probing. In other cases this can
be useful if one wants to have a constant nozzle temp when probing, due to thermal expansion,
such as when using `NOZZLE_AS_PROBE` or anything else that uses the nozzle directly.
@thinkyhead
Copy link
Member

We know the bed can expand and contract in a very pronounced way, and that is why we want the bed to be at a consistent temperature for each probe reading. But how does the temperature of the hotend affect the result of a probe reading?

@slowbro
Copy link
Member Author

slowbro commented Jan 21, 2021

The main goal in mind when creating this was to solve #20595, but I think it could have benefits for actual probing when using the nozzle itself as a probe. It's a rather large chunk of metal at 190C+ which likely expands a little. That's all assumption on my part, however... I don't have empirical data.

I was thinking about this a little more last night after I submitted it. Perhaps instead of this being a 'heat every time' option, it could be a range in which to keep the hotend? For example, a setting that would keep the hotend within x degrees C of the setpoint, so it would trigger/delay probing less.

The main problem stated in #20595 is that long probing sessions with PROBING_HEATERS_OFF can leave the hotend at a very low temperature. When this is done at the beginning of a print, the first extrudes are not at the originally defined M109 temperature, since the heater spends the majority of the time off while probing.

@slowbro slowbro marked this pull request as draft January 28, 2021 21:03
@thinkyhead thinkyhead marked this pull request as ready for review January 29, 2021 02:44
@thinkyhead
Copy link
Member

thinkyhead commented Jan 29, 2021

If that is the main issue, then a proper solution — when using PROBING_HEATERS_OFF — would be for the machine to wait for the heaters to get back up to temperature at the end of G29 before allowing the print job to continue.

I'm not sure if it would also be good to do that in immediate mode when someone just initiates G29 from the console or from the controller menu….

thinkyhead added a commit to MarlinFirmware/Configurations that referenced this pull request Jan 30, 2021
@Sebazzz
Copy link
Contributor

Sebazzz commented Feb 28, 2021

If that is the main issue, then a proper solution — when using PROBING_HEATERS_OFF — would be for the machine to wait for the heaters to get back up to temperature at the end of G29 before allowing the print job to continue.

Yes, exactly. And after homing.

vyacheslav-shubin pushed a commit to vyacheslav-shubin/Marlin that referenced this pull request Mar 10, 2021
vyacheslav-shubin pushed a commit to vyacheslav-shubin/Marlin that referenced this pull request Mar 10, 2021
W4tel-BiDi pushed a commit to W4tel-BiDi/Marlin that referenced this pull request Apr 5, 2021
@slowbro slowbro deleted the probing-wait-for-hotend branch June 28, 2021 05:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants