From c660870f87b54fee2cf43e79147ba214ab2f53b1 Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Thu, 8 Aug 2024 20:54:30 -0700 Subject: [PATCH 01/43] Create beacon_contact.cfg --- config/hardware/probes/beacon_contact.cfg | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 config/hardware/probes/beacon_contact.cfg diff --git a/config/hardware/probes/beacon_contact.cfg b/config/hardware/probes/beacon_contact.cfg new file mode 100644 index 000000000..72d57f25f --- /dev/null +++ b/config/hardware/probes/beacon_contact.cfg @@ -0,0 +1,22 @@ +# This probe type is for a Beacon probe used directly as a virtual Z endstop +# rather than with an existing physical endstop. To use this configuration, +# you will need to manually add the Beacon Klipper plugin! + +## Then, you should just add the following two lines to your overrides and everything should work! +## The rest of the allowed config entries are available on this link: config/hardware/probes/inductive_virtual.cfg +# [beacon] +# serial: /dev/serial/by-id/usb-Beacon_Beacon_... + + +[gcode_macro _USER_VARIABLES] +# We can declare an "inductive_virtual" probe type as it's pretty close to the Beacon way of working and should just work! +variable_probe_type_enabled: "beacon_contact" +variable_startprint_actions: "extruder_preheating", "bed_soak", "chamber_soak", "tilt_calib", "extruder_heating", "purge", "clean", "z_offset", "bedmesh", "primeline" +gcode: + +# Beacon probe definition also include the probe management macro directly from here +[include ../../../macros/base/probing/generic_probe.cfg] + +[stepper_z] +endstop_pin: probe:z_virtual_endstop +homing_retract_dist: 0 From ae1bab17d59c97e5f9005937fbd804d7ad34d03d Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Thu, 8 Aug 2024 21:40:04 -0700 Subject: [PATCH 02/43] Rename homing_override.cfg to homing_override.cf_ --- macros/base/homing/{homing_override.cfg => homing_override.cf_} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename macros/base/homing/{homing_override.cfg => homing_override.cf_} (100%) diff --git a/macros/base/homing/homing_override.cfg b/macros/base/homing/homing_override.cf_ similarity index 100% rename from macros/base/homing/homing_override.cfg rename to macros/base/homing/homing_override.cf_ From a3c5b270c87365e2d82de89a81d82d280cb3e456 Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Thu, 8 Aug 2024 21:56:56 -0700 Subject: [PATCH 03/43] Don't import homing_override by default. --- config/machine.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/machine.cfg b/config/machine.cfg index 734cb60f5..b46073ce3 100644 --- a/config/machine.cfg +++ b/config/machine.cfg @@ -51,7 +51,7 @@ resolution: 0.1 [include ../scripts/*.cfg] [include ../macros/base/*.cfg] -[include ../macros/base/homing/homing_*.cfg] +[include ../macros/base/homing/homing_conditional.cfg] [include ../macros/calibration/calib*.cfg] From 9bae3f464f41c7a9ea79b04b650bc1a209858a17 Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Thu, 8 Aug 2024 21:57:26 -0700 Subject: [PATCH 04/43] Rename homing_override.cf_ to homing_override.cfg --- macros/base/homing/{homing_override.cf_ => homing_override.cfg} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename macros/base/homing/{homing_override.cf_ => homing_override.cfg} (100%) diff --git a/macros/base/homing/homing_override.cf_ b/macros/base/homing/homing_override.cfg similarity index 100% rename from macros/base/homing/homing_override.cf_ rename to macros/base/homing/homing_override.cfg From d1f698d7110adad51dad22148a72824bc62d59c0 Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Thu, 8 Aug 2024 22:02:19 -0700 Subject: [PATCH 05/43] Move homing_override include into probe configs that will use it --- macros/base/probing/generic_probe.cfg | 2 ++ 1 file changed, 2 insertions(+) diff --git a/macros/base/probing/generic_probe.cfg b/macros/base/probing/generic_probe.cfg index e2a23f825..05c8ebcdd 100644 --- a/macros/base/probing/generic_probe.cfg +++ b/macros/base/probing/generic_probe.cfg @@ -4,6 +4,8 @@ # - Dockable probe: need to be attached/docked when used # - ... can be improved depending of new probes needs ... +[include ../homing/homing_override.cfg] + [gcode_macro ACTIVATE_PROBE] description: Put the machine in a state being able to probe variable_temperature: 0 From 98ea15988363ee9e9ed9c0d74bdc4bb20a2461c0 Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Thu, 8 Aug 2024 22:04:12 -0700 Subject: [PATCH 06/43] Don't include generic_probe.cfg --- config/hardware/probes/beacon_contact.cfg | 3 --- 1 file changed, 3 deletions(-) diff --git a/config/hardware/probes/beacon_contact.cfg b/config/hardware/probes/beacon_contact.cfg index 72d57f25f..559ddf681 100644 --- a/config/hardware/probes/beacon_contact.cfg +++ b/config/hardware/probes/beacon_contact.cfg @@ -14,9 +14,6 @@ variable_probe_type_enabled: "beacon_contact" variable_startprint_actions: "extruder_preheating", "bed_soak", "chamber_soak", "tilt_calib", "extruder_heating", "purge", "clean", "z_offset", "bedmesh", "primeline" gcode: -# Beacon probe definition also include the probe management macro directly from here -[include ../../../macros/base/probing/generic_probe.cfg] - [stepper_z] endstop_pin: probe:z_virtual_endstop homing_retract_dist: 0 From c3e567c8597c3b0eb6cdfd2a3f68a0444dab4030 Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Thu, 8 Aug 2024 22:16:27 -0700 Subject: [PATCH 07/43] Add beacon_contact to printer.cfg template --- user_templates/printer.cfg | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/user_templates/printer.cfg b/user_templates/printer.cfg index ae4c1ca3f..bfd14826a 100644 --- a/user_templates/printer.cfg +++ b/user_templates/printer.cfg @@ -105,7 +105,8 @@ # [include config/hardware/probes/bltouch_virtual.cfg] ## Beacon probe also used as virtual Z endstop. Do not forget to install the plugin and add the [beacon] section to make it work! -# [include config/hardware/probes/beacon_virtual.cfg] +# [include config/hardware/probes/beacon_virtual.cfg] # Uncomment if Beacon firmware version is 1.x +# [include config/hardware/probes/beacon_contact.cfg] # Uncomment if Beacon firmware verison is 2.x or higher # ---------------------------------------------------------------------------------------- From e09bd858dcf3437e6145cc0248816291509497b8 Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Thu, 8 Aug 2024 22:21:47 -0700 Subject: [PATCH 08/43] Fix typo --- user_templates/printer.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user_templates/printer.cfg b/user_templates/printer.cfg index bfd14826a..829df380a 100644 --- a/user_templates/printer.cfg +++ b/user_templates/printer.cfg @@ -106,7 +106,7 @@ ## Beacon probe also used as virtual Z endstop. Do not forget to install the plugin and add the [beacon] section to make it work! # [include config/hardware/probes/beacon_virtual.cfg] # Uncomment if Beacon firmware version is 1.x -# [include config/hardware/probes/beacon_contact.cfg] # Uncomment if Beacon firmware verison is 2.x or higher +# [include config/hardware/probes/beacon_contact.cfg] # Uncomment if Beacon firmware version is 2.x or higher # ---------------------------------------------------------------------------------------- From f86bd2a4455d5ea3c8e06c298570a15c5239fe89 Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Fri, 9 Aug 2024 00:37:51 -0700 Subject: [PATCH 09/43] Re-format heatsoak message --- macros/helpers/heatsoak.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/macros/helpers/heatsoak.cfg b/macros/helpers/heatsoak.cfg index 7be25f746..27cec4ef8 100644 --- a/macros/helpers/heatsoak.cfg +++ b/macros/helpers/heatsoak.cfg @@ -55,7 +55,7 @@ gcode: {% if TIME > 0 %} {% for i in range(0, TIME) %} - RESPOND MSG="Heatsoak bed, {TIME-i}mn left..." + RESPOND MSG="Heatsoak bed, {TIME-i} min{'s' if TIME-i > 1} left..." G4 P{60000 * 1} {% endfor %} {% else %} From e83dabc7b644363ac102137df49788eca2ee59b6 Mon Sep 17 00:00:00 2001 From: crkochan <5183896+crkochan@users.noreply.github.com> Date: Fri, 9 Aug 2024 17:17:41 -0700 Subject: [PATCH 10/43] Add beacon max probing temp variable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …plus some whitespace clean-up --- user_templates/variables.cfg | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/user_templates/variables.cfg b/user_templates/variables.cfg index 8abb6d79a..d9c744a86 100644 --- a/user_templates/variables.cfg +++ b/user_templates/variables.cfg @@ -85,7 +85,7 @@ variable_probe_min_z_travel: 20 ## Z height to move to when detaching probe ## Setting to 'None' or removing this variable will prevent any -## change in z position when detaching the probe +## change in z position when detaching the probe variable_probe_stow_z_height: None ## Position of the probe dock @@ -108,7 +108,7 @@ variable_probe_move_attach_length: 30 variable_probe_move_dock_length: 30 ## Y -## ^ +## ^ ## | back ## | ^ ## | left < O > right @@ -130,6 +130,13 @@ variable_tap_max_probing_temp: 150 variable_tap_deactivation_zhop: 5 # this is used to Z hop before restoring the temperature to avoid burnt PEI +########################################################## +# Beacon probe variables (if available in the machine) +########################################################## + +variable_beacon_max_probing_temp: 150 + + ########################################## # Material and specific print parameters ########################################## From 7ab1d653da11f88dde1a9e84bdda420ea4e58b06 Mon Sep 17 00:00:00 2001 From: crkochan <5183896+crkochan@users.noreply.github.com> Date: Fri, 9 Aug 2024 17:19:15 -0700 Subject: [PATCH 11/43] Add beacon to extruder pre-heat module --- macros/base/start_print.cfg | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/macros/base/start_print.cfg b/macros/base/start_print.cfg index b5f05a782..f4a8ebf73 100644 --- a/macros/base/start_print.cfg +++ b/macros/base/start_print.cfg @@ -19,7 +19,7 @@ gcode: # Get all the parameters passed from the slicer {% set BED_TEMP = params.BED_TEMP|default(printer["gcode_macro _USER_VARIABLES"].print_default_bed_temp)|float %} # Bed temperature {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(printer["gcode_macro _USER_VARIABLES"].print_default_extruder_temp)|float %} # Extruder temperature - {% set Z_ADJUST = params.Z_ADJUST|default(0)|float %} # Optionnal Z adjustement from the slicer profile (ex. use it if you have textured vs smooth slicer profiles) + {% set Z_ADJUST = params.Z_ADJUST|default(0)|float %} # Optionnal Z adjustement from the slicer profile (ex. use it if you have textured vs smooth slicer profiles) {% set SOAK = params.SOAK|default(printer["gcode_macro _USER_VARIABLES"].print_default_soak)|int %} # Heatsoak time of the bed in minutes {% set CHAMBER_TEMP = params.CHAMBER|default(printer["gcode_macro _USER_VARIABLES"].print_default_chamber_temp)|int %} # Chamber temperature setpoint {% set CHAMBER_MAXTIME = params.CHAMBER_MAXTIME|default(printer["gcode_macro _USER_VARIABLES"].print_default_chamber_max_heating_time)|int %} # Chamber heatsoak timeout in minutes @@ -46,7 +46,7 @@ gcode: SET_GCODE_VARIABLE MACRO=START_PRINT VARIABLE=fl_size VALUE='"{FL_SIZE}"' SET_GCODE_VARIABLE MACRO=START_PRINT VARIABLE=bed_mesh_profile VALUE='"{BED_MESH_PROFILE}"' SET_GCODE_VARIABLE MACRO=START_PRINT VARIABLE=adaptive_primeline VALUE={ADAPTIVE_PRIMELINE} - + {% if params.TOTAL_LAYER %} # total layers count (if provided by the slicer) SET_PRINT_STATS_INFO TOTAL_LAYER={params.TOTAL_LAYER|int} SET_GCODE_VARIABLE MACRO=START_PRINT VARIABLE=total_layer VALUE={params.TOTAL_LAYER|int} @@ -256,7 +256,7 @@ gcode: {% if SOAK > 0 %} G0 X{max_x|int / 2} Y{max_y|int / 3} Z50 F{St} {% endif %} - + # Put the bed temperature target and wait for the soak HEATSOAK_BED TEMP={BED_TEMP} SOAKTIME={SOAK} {% else %} @@ -449,14 +449,14 @@ gcode: RESPOND MSG="Pre-heating the nozzle to a safe temperature..." {% endif %} - {% if probe_type_enabled == "vorontap" %} + {% if probe_type_enabled == "vorontap" or probe_type_enabled == "beacon_contact" %} M109 S{safe_extruder_temp} {% if verbose %} RESPOND MSG="Extruder at safe temperature of {safe_extruder_temp} degrees" - {% endif %} + {% endif %} {% else %} {% if printer.extruder.target < safe_extruder_temp %} - M104 S{safe_extruder_temp} + M104 S{safe_extruder_temp} {% if verbose %} RESPOND MSG="Extruder is heating at temperature of {safe_extruder_temp} degrees" {% endif %} @@ -496,4 +496,3 @@ gcode: # [gcode_macro _MODULE_CUSTOM3] # gcode: # ## Your custom code here - From b051cb725927cbfe4831491c3dba4d19a4bf2ce9 Mon Sep 17 00:00:00 2001 From: crkochan <5183896+crkochan@users.noreply.github.com> Date: Fri, 9 Aug 2024 17:22:38 -0700 Subject: [PATCH 12/43] Add deactivation zhop variable for Beacon MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pretty sure this isn’t really neaded, but added just in case. --- user_templates/variables.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/user_templates/variables.cfg b/user_templates/variables.cfg index d9c744a86..d51684f16 100644 --- a/user_templates/variables.cfg +++ b/user_templates/variables.cfg @@ -135,6 +135,7 @@ variable_tap_deactivation_zhop: 5 # this is used to Z hop before restoring the t ########################################################## variable_beacon_max_probing_temp: 150 +variable_beacon_deactivation_zhop: 5 # this is used to Z hop before restoring the temperature to avoid burnt PEI ########################################## From 28f17b6ddc425a2828fb448a52c8b5263f6f6762 Mon Sep 17 00:00:00 2001 From: crkochan <5183896+crkochan@users.noreply.github.com> Date: Fri, 9 Aug 2024 17:26:21 -0700 Subject: [PATCH 13/43] Updated beacon_contact hardware config * Added macro include for activation and deactivation gcode * Added macro include for homing hooks that re-implement portions of homing_override --- config/hardware/probes/beacon_contact.cfg | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/config/hardware/probes/beacon_contact.cfg b/config/hardware/probes/beacon_contact.cfg index 559ddf681..af84fcbda 100644 --- a/config/hardware/probes/beacon_contact.cfg +++ b/config/hardware/probes/beacon_contact.cfg @@ -14,6 +14,16 @@ variable_probe_type_enabled: "beacon_contact" variable_startprint_actions: "extruder_preheating", "bed_soak", "chamber_soak", "tilt_calib", "extruder_heating", "purge", "clean", "z_offset", "bedmesh", "primeline" gcode: +# Beacon probe definition also include the probe management macros directly from here +[include ../../../macros/base/probing/beacon_probe.cfg] +[include ../../../macros/base/probing/beacon_homing_hooks.cfg] + [stepper_z] endstop_pin: probe:z_virtual_endstop homing_retract_dist: 0 + +[beacon] +home_gcode_pre_x: _HOME_PRE_AXIS AXIS=X +home_gcode_post_x: _HOME_POST_AXIS AXIS=X +home_gcode_pre_y: _HOME_PRE_AXIS AXIS=Y +home_gcode_post_y: _HOME_POST_AXIS AXIS=Y From 5adc5234b454de4d61e123cd09d48e3ca0857b98 Mon Sep 17 00:00:00 2001 From: crkochan <5183896+crkochan@users.noreply.github.com> Date: Fri, 9 Aug 2024 19:17:59 -0700 Subject: [PATCH 14/43] Add Activate/Deactivate macros for beacon_contact Macros re-purposed from vorontap because the nozzle will be touching the bed surface --- macros/base/homing/beacon_probe.cfg | 53 +++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 macros/base/homing/beacon_probe.cfg diff --git a/macros/base/homing/beacon_probe.cfg b/macros/base/homing/beacon_probe.cfg new file mode 100644 index 000000000..06d91940e --- /dev/null +++ b/macros/base/homing/beacon_probe.cfg @@ -0,0 +1,53 @@ +# This file is used as an interface to activate/deactivate every probe type +# depending of the needs: +# - Beacon: need to be at a correct nozzle temperature to avoid burning the PEI when used + +[gcode_macro ACTIVATE_PROBE] +description: Put the machine in a state being able to probe +variable_temperature: 0 +gcode: + {% set beacon_max_probing_temp = printer["gcode_macro _USER_VARIABLES"].beacon_max_probing_temp|float %} + + # Check the temperature and lower it if needed + SAVE_GCODE_STATE NAME=BEFORE_BEACON_ACTION + + {% set ACTUAL_TEMP = printer.extruder.temperature %} + {% set TARGET_TEMP = printer.extruder.target %} + + SET_GCODE_VARIABLE MACRO=ACTIVATE_PROBE VARIABLE=temperature VALUE={TARGET_TEMP} + + {% if TARGET_TEMP > beacon_max_probing_temp %} + { action_respond_info('Extruder temperature target of %.1fC is too high for Beacon probing, lowering to %.1fC' % (TARGET_TEMP, beacon_max_probing_temp)) } + M106 S255 ; 100% the part cooling fan to help the extruder cooling + M109 S{beacon_max_probing_temp} + M106 S0 ; Stop the part cooling fan + {% else %} + # Temperature target is already low enough, but nozzle may still be too hot + {% if ACTUAL_TEMP > beacon_max_probing_temp + 3 %} + M106 S255 ; 100% the part cooling fan to help the extruder cooling + TEMPERATURE_WAIT SENSOR=extruder MAXIMUM={beacon_max_probing_temp} + M106 S0 ; Stop the part cooling fan + {% endif %} + {% endif %} + + +[gcode_macro DEACTIVATE_PROBE] +description: Revert the machine to a normal state after probing +gcode: + {% set beacon_deactivation_zhop = printer["gcode_macro _USER_VARIABLES"].beacon_deactivation_zhop %} + {% set Sz = printer["gcode_macro _USER_VARIABLES"].z_drop_speed * 60 %} + + # Check and restore the nozzle temperature if needed + # Small Z hop to avoid restoring the temperature directly on the PEI + {% set z_safe = printer.toolhead.position.z + beacon_deactivation_zhop %} + {% if z_safe > printer.toolhead.axis_maximum.z %} + {% set z_safe = printer.toolhead.axis_maximum.z %} + {% endif %} + G90 + G1 Z{z_safe} F{Sz} + + # Then restoring the temperature + {% set old_target_temperature = printer["gcode_macro ACTIVATE_PROBE"].temperature %} + M109 S{old_target_temperature} + + RESTORE_GCODE_STATE NAME=BEFORE_BEACON_ACTION From b6b252217808540a2f44f0d64e78e94509e65ea1 Mon Sep 17 00:00:00 2001 From: crkochan <5183896+crkochan@users.noreply.github.com> Date: Fri, 9 Aug 2024 19:21:05 -0700 Subject: [PATCH 15/43] Add beacon homing hooks Pre and post homing hooks are being used to re-implement large portions of functionality from homing_override. * Current adjustments for sensorless homing * Endstop backoffs * Status lighting * Accel adjustments --- macros/base/homing/beacon_homing_hooks.cfg | 138 +++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 macros/base/homing/beacon_homing_hooks.cfg diff --git a/macros/base/homing/beacon_homing_hooks.cfg b/macros/base/homing/beacon_homing_hooks.cfg new file mode 100644 index 000000000..d7f0b545d --- /dev/null +++ b/macros/base/homing/beacon_homing_hooks.cfg @@ -0,0 +1,138 @@ +[gcode_macro _HOME_PRE_AXIS] +description: Perform actions prior to homing an axis +gcode: + {% set axis = params.AXIS %} + {% set kinematics = printer['configfile'].config['printer']['kinematics'] %} + {% set homing_travel_accel = printer['gcode_macro _USER_VARIABLES'].homing_travel_accel %} + {% set sensorless_homing_enabled = printer['gcode_macro _USER_VARIABLES'].sensorless_homing_enabled %} + {% set sensorless_current_factor = printer['gcode_macro _USER_VARIABLES'].sensorless_current_factor / 100 %} + + {% set old_current_x = printer.configfile.config[x_driver ~ ' stepper_x'].run_current|float %} + {% set old_current_y = printer.configfile.config[y_driver ~ ' stepper_y'].run_current|float %} + {% set old_current_z = printer.configfile.config[z_driver ~ ' stepper_z'].run_current|float %} + {% set new_current_x = sensorless_current_factor * old_current_x %} + {% set new_current_y = sensorless_current_factor * old_current_y %} + {% set new_current_z = sensorless_current_factor * old_current_z %} + + # reset parameters + {% set X, Y = False, False %} + + # which axis has been requested for homing + {% if axis == 'X' %} + {% set X = True %} + {% elif axis == 'Y' %} + {% set Y = True %} + {% endif %} + + {% if status_leds_enabled %} + STATUS_LEDS COLOR='HOMING' + {% endif %} + + # Set the homing acceleration prior to any movement + SET_GCODE_VARIABLE MACRO=_HOME_PRE_AXIS VARIABLE=saved_accel VALUE={printer.toolhead.max_accel} + M204 S{homing_travel_accel} + + {% if bed_mesh_enabled %} + BED_MESH_CLEAR + {% endif %} + + G90 + + {% if sensorless_homing_enabled %} + {% if kinematics == 'corexy' %} + SET_TMC_CURRENT STEPPER=stepper_x CURRENT={new_current_x} + SET_TMC_CURRENT STEPPER=stepper_y CURRENT={new_current_y} + M400 + {% elif kinematics == 'corexz' %} + {% if X %} + SET_TMC_CURRENT STEPPER=stepper_x CURRENT={old_current_x} + SET_TMC_CURRENT STEPPER=stepper_z CURRENT={old_current_z} + {% elif Y %} + SET_TMC_CURRENT STEPPER=stepper_y CURRENT={old_current_y} + {% endif %} + M400 + {% elif kinematics == 'cartesian' %} + {% if X %} + SET_TMC_CURRENT STEPPER=stepper_x CURRENT={new_current_x} + {% elif Y %} + SET_TMC_CURRENT STEPPER=stepper_x CURRENT={new_current_y} + {% endif %} + M400 + {% endif %} + {% endif %} + + {% if verbose %} + { action_respond_info('Homing %s' % axis) } + {% endif %} + +[gcode_macro _HOME_POST_AXIS] +description: Perform actions after homing an axis +gcode: + {% set axis = params.AXIS %} + {% set kinematics = printer['configfile'].config['printer']['kinematics'] %} + {% set sensorless_homing_enabled = printer['gcode_macro _USER_VARIABLES'].sensorless_homing_enabled %} + {% set sensorless_current_factor = printer['gcode_macro _USER_VARIABLES'].sensorless_current_factor / 100 %} + {% set homing_travel_speed = printer['gcode_macro _USER_VARIABLES'].homing_travel_speed * 60 %} + + {% set x_homing_backoff, y_homing_backoff = printer['gcode_macro _USER_VARIABLES'].homing_backoff_distance_xy|map('float') %} + + {% set x_position_endstop = printer['configfile'].config['stepper_x']['position_endstop']|float %} + {% set y_position_endstop = printer['configfile'].config['stepper_y']['position_endstop']|float %} + {% set x_position_center = printer.toolhead.axis_maximum.x|int/2 - printer.toolhead.axis_minimum.x|int/2 %} + {% set y_position_center = printer.toolhead.axis_maximum.y|int/2 - printer.toolhead.axis_minimum.y|int/2 %} + + {% set old_current_x = printer.configfile.config[x_driver ~ ' stepper_x'].run_current|float %} + {% set old_current_y = printer.configfile.config[y_driver ~ ' stepper_y'].run_current|float %} + {% set old_current_z = printer.configfile.config[z_driver ~ ' stepper_z'].run_current|float %} + + # reset parameters + {% set X, Y = False, False %} + + # Which axis has been requested for homing + {% if axis == 'X' %} + {% set X = True %} + {% elif axis == 'Y' %} + {% set Y = True %} + {% endif %} + + # Ensure absolute mode is set + {% if not printer['gcode_move'].absolute_coordinates %} + G90 + {% endif %} + + # Move away from the endstop a bit + {% if X %} + G1 X{x_position_endstop + x_homing_backoff} F{homing_travel_speed} + {% elif Y %} + G1 Y{y_position_endstop + y_homing_backoff} F{homing_travel_speed} + {% endif %} + + {% if sensorless_homing_enabled %} + {% if kinematics == "corexy" %} + M400 + SET_TMC_CURRENT STEPPER=stepper_x CURRENT={old_current_x} + SET_TMC_CURRENT STEPPER=stepper_y CURRENT={old_current_y} + {% elif kinematics == "corexz" %} + {% if X %} + M400 + SET_TMC_CURRENT STEPPER=stepper_x CURRENT={old_current_x} + SET_TMC_CURRENT STEPPER=stepper_z CURRENT={old_current_z} + {% elif Y %} + SET_TMC_CURRENT STEPPER=stepper_y CURRENT={old_current_y} + {% endif %} + {% elif kinematics == "cartesian" %} + {% if X %} + SET_TMC_CURRENT STEPPER=stepper_x CURRENT={old_current_x} + {% elif Y %} + SET_TMC_CURRENT STEPPER=stepper_y CURRENT={old_current_y} + {% endif %} + {% endif %} + {% endif %} + + # Reset acceleration values to what it was before + {% set saved_accel = printer["gcode_macro _HOME_PRE_AXIS"].saved_accel %} + SET_VELOCITY_LIMIT ACCEL={saved_accel} + + {% if status_leds_enabled %} + STATUS_LEDS COLOR="READY" + {% endif %} From b54acdc5b6f2dda0888e49b1a754c78c9b043ad6 Mon Sep 17 00:00:00 2001 From: crkochan <5183896+crkochan@users.noreply.github.com> Date: Fri, 9 Aug 2024 19:29:58 -0700 Subject: [PATCH 16/43] Remove usused vars --- macros/base/homing/beacon_homing_hooks.cfg | 2 -- 1 file changed, 2 deletions(-) diff --git a/macros/base/homing/beacon_homing_hooks.cfg b/macros/base/homing/beacon_homing_hooks.cfg index d7f0b545d..b5e088055 100644 --- a/macros/base/homing/beacon_homing_hooks.cfg +++ b/macros/base/homing/beacon_homing_hooks.cfg @@ -78,8 +78,6 @@ gcode: {% set x_position_endstop = printer['configfile'].config['stepper_x']['position_endstop']|float %} {% set y_position_endstop = printer['configfile'].config['stepper_y']['position_endstop']|float %} - {% set x_position_center = printer.toolhead.axis_maximum.x|int/2 - printer.toolhead.axis_minimum.x|int/2 %} - {% set y_position_center = printer.toolhead.axis_maximum.y|int/2 - printer.toolhead.axis_minimum.y|int/2 %} {% set old_current_x = printer.configfile.config[x_driver ~ ' stepper_x'].run_current|float %} {% set old_current_y = printer.configfile.config[y_driver ~ ' stepper_y'].run_current|float %} From 7aefef50aa7f3faba923b193f385366045d81ae3 Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Fri, 9 Aug 2024 23:07:10 -0700 Subject: [PATCH 17/43] Fix includes and file location --- config/hardware/probes/beacon_contact.cfg | 2 +- macros/base/{homing => probing}/beacon_probe.cfg | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename macros/base/{homing => probing}/beacon_probe.cfg (100%) diff --git a/config/hardware/probes/beacon_contact.cfg b/config/hardware/probes/beacon_contact.cfg index af84fcbda..bca304bb1 100644 --- a/config/hardware/probes/beacon_contact.cfg +++ b/config/hardware/probes/beacon_contact.cfg @@ -16,7 +16,7 @@ gcode: # Beacon probe definition also include the probe management macros directly from here [include ../../../macros/base/probing/beacon_probe.cfg] -[include ../../../macros/base/probing/beacon_homing_hooks.cfg] +[include ../../../macros/base/homing/beacon_homing_hooks.cfg] [stepper_z] endstop_pin: probe:z_virtual_endstop diff --git a/macros/base/homing/beacon_probe.cfg b/macros/base/probing/beacon_probe.cfg similarity index 100% rename from macros/base/homing/beacon_probe.cfg rename to macros/base/probing/beacon_probe.cfg From 48c722fddcad94c50913098fa8046ad9b0594273 Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Fri, 9 Aug 2024 23:42:13 -0700 Subject: [PATCH 18/43] Add missing vars --- macros/base/homing/beacon_homing_hooks.cfg | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/macros/base/homing/beacon_homing_hooks.cfg b/macros/base/homing/beacon_homing_hooks.cfg index b5e088055..18887c6ba 100644 --- a/macros/base/homing/beacon_homing_hooks.cfg +++ b/macros/base/homing/beacon_homing_hooks.cfg @@ -7,6 +7,9 @@ gcode: {% set sensorless_homing_enabled = printer['gcode_macro _USER_VARIABLES'].sensorless_homing_enabled %} {% set sensorless_current_factor = printer['gcode_macro _USER_VARIABLES'].sensorless_current_factor / 100 %} + {% set x_driver = printer["gcode_macro _USER_VARIABLES"].x_driver %} + {% set y_driver = printer["gcode_macro _USER_VARIABLES"].y_driver %} + {% set z_driver = printer["gcode_macro _USER_VARIABLES"].z_driver %} {% set old_current_x = printer.configfile.config[x_driver ~ ' stepper_x'].run_current|float %} {% set old_current_y = printer.configfile.config[y_driver ~ ' stepper_y'].run_current|float %} {% set old_current_z = printer.configfile.config[z_driver ~ ' stepper_z'].run_current|float %} @@ -79,6 +82,9 @@ gcode: {% set x_position_endstop = printer['configfile'].config['stepper_x']['position_endstop']|float %} {% set y_position_endstop = printer['configfile'].config['stepper_y']['position_endstop']|float %} + {% set x_driver = printer["gcode_macro _USER_VARIABLES"].x_driver %} + {% set y_driver = printer["gcode_macro _USER_VARIABLES"].y_driver %} + {% set z_driver = printer["gcode_macro _USER_VARIABLES"].z_driver %} {% set old_current_x = printer.configfile.config[x_driver ~ ' stepper_x'].run_current|float %} {% set old_current_y = printer.configfile.config[y_driver ~ ' stepper_y'].run_current|float %} {% set old_current_z = printer.configfile.config[z_driver ~ ' stepper_z'].run_current|float %} From 5fe9bca2da5abbf70b4a168b779b80467a4af90e Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Fri, 9 Aug 2024 23:54:54 -0700 Subject: [PATCH 19/43] Add variable declaration and missing vars --- macros/base/homing/beacon_homing_hooks.cfg | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/macros/base/homing/beacon_homing_hooks.cfg b/macros/base/homing/beacon_homing_hooks.cfg index 18887c6ba..703030bd3 100644 --- a/macros/base/homing/beacon_homing_hooks.cfg +++ b/macros/base/homing/beacon_homing_hooks.cfg @@ -1,11 +1,15 @@ [gcode_macro _HOME_PRE_AXIS] description: Perform actions prior to homing an axis +variable_saved_accel: 0 gcode: {% set axis = params.AXIS %} - {% set kinematics = printer['configfile'].config['printer']['kinematics'] %} + {% set bed_mesh_enabled = printer["gcode_macro _USER_VARIABLES"].bed_mesh_enabled %} {% set homing_travel_accel = printer['gcode_macro _USER_VARIABLES'].homing_travel_accel %} + {% set kinematics = printer['configfile'].config['printer']['kinematics'] %} {% set sensorless_homing_enabled = printer['gcode_macro _USER_VARIABLES'].sensorless_homing_enabled %} {% set sensorless_current_factor = printer['gcode_macro _USER_VARIABLES'].sensorless_current_factor / 100 %} + {% set status_leds_enabled = printer["gcode_macro _USER_VARIABLES"].status_leds_enabled %} + {% set verbose = printer["gcode_macro _USER_VARIABLES"].verbose %} {% set x_driver = printer["gcode_macro _USER_VARIABLES"].x_driver %} {% set y_driver = printer["gcode_macro _USER_VARIABLES"].y_driver %} @@ -72,10 +76,11 @@ gcode: description: Perform actions after homing an axis gcode: {% set axis = params.AXIS %} + {% set homing_travel_speed = printer['gcode_macro _USER_VARIABLES'].homing_travel_speed * 60 %} {% set kinematics = printer['configfile'].config['printer']['kinematics'] %} - {% set sensorless_homing_enabled = printer['gcode_macro _USER_VARIABLES'].sensorless_homing_enabled %} {% set sensorless_current_factor = printer['gcode_macro _USER_VARIABLES'].sensorless_current_factor / 100 %} - {% set homing_travel_speed = printer['gcode_macro _USER_VARIABLES'].homing_travel_speed * 60 %} + {% set sensorless_homing_enabled = printer['gcode_macro _USER_VARIABLES'].sensorless_homing_enabled %} + {% set status_leds_enabled = printer["gcode_macro _USER_VARIABLES"].status_leds_enabled %} {% set x_homing_backoff, y_homing_backoff = printer['gcode_macro _USER_VARIABLES'].homing_backoff_distance_xy|map('float') %} From 4a993aaf3486d3e665dbc7f7ff05d01051b08a10 Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Sat, 10 Aug 2024 04:02:34 -0700 Subject: [PATCH 20/43] Set contact optimized startprint_actions --- config/hardware/probes/beacon_contact.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/hardware/probes/beacon_contact.cfg b/config/hardware/probes/beacon_contact.cfg index bca304bb1..c310d95f4 100644 --- a/config/hardware/probes/beacon_contact.cfg +++ b/config/hardware/probes/beacon_contact.cfg @@ -11,7 +11,7 @@ [gcode_macro _USER_VARIABLES] # We can declare an "inductive_virtual" probe type as it's pretty close to the Beacon way of working and should just work! variable_probe_type_enabled: "beacon_contact" -variable_startprint_actions: "extruder_preheating", "bed_soak", "chamber_soak", "tilt_calib", "extruder_heating", "purge", "clean", "z_offset", "bedmesh", "primeline" +variable_startprint_actions: "extruder_preheating", "bed_soak", "chamber_soak", "tilt_calib", "bedmesh", "extruder_heating", "purge", "clean", "primeline" gcode: # Beacon probe definition also include the probe management macros directly from here From 8e4eb2a4a1a45ce5b2763b0854ac4faf4e88a85c Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Sat, 10 Aug 2024 04:04:18 -0700 Subject: [PATCH 21/43] Move post status_leds to delay_gcode Keeps the LEDs from quickly cyling between X and Y homing. --- macros/base/homing/beacon_homing_hooks.cfg | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/macros/base/homing/beacon_homing_hooks.cfg b/macros/base/homing/beacon_homing_hooks.cfg index 703030bd3..683ac2c6c 100644 --- a/macros/base/homing/beacon_homing_hooks.cfg +++ b/macros/base/homing/beacon_homing_hooks.cfg @@ -24,6 +24,9 @@ gcode: # reset parameters {% set X, Y = False, False %} + # Cancel delayed gcode + UPDATE_DELAYED_GCODE ID=_set_status_leds_ready DURATION=0 + # which axis has been requested for homing {% if axis == 'X' %} {% set X = True %} @@ -72,6 +75,7 @@ gcode: { action_respond_info('Homing %s' % axis) } {% endif %} + [gcode_macro _HOME_POST_AXIS] description: Perform actions after homing an axis gcode: @@ -142,6 +146,11 @@ gcode: {% set saved_accel = printer["gcode_macro _HOME_PRE_AXIS"].saved_accel %} SET_VELOCITY_LIMIT ACCEL={saved_accel} + # Set delayed gcode + UPDATE_DELAYED_GCODE ID=_set_status_leds_ready DURATION=0.5 + +[delayed_gcode _set_status_leds_ready] +gcode: {% if status_leds_enabled %} STATUS_LEDS COLOR="READY" {% endif %} From 01d4a90f3d2905957af2793d90758c6d4db988d1 Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Sat, 10 Aug 2024 04:09:17 -0700 Subject: [PATCH 22/43] Forgot a variable --- macros/base/homing/beacon_homing_hooks.cfg | 2 ++ 1 file changed, 2 insertions(+) diff --git a/macros/base/homing/beacon_homing_hooks.cfg b/macros/base/homing/beacon_homing_hooks.cfg index 683ac2c6c..c6e60807c 100644 --- a/macros/base/homing/beacon_homing_hooks.cfg +++ b/macros/base/homing/beacon_homing_hooks.cfg @@ -151,6 +151,8 @@ gcode: [delayed_gcode _set_status_leds_ready] gcode: + {% set status_leds_enabled = printer["gcode_macro _USER_VARIABLES"].status_leds_enabled %} + {% if status_leds_enabled %} STATUS_LEDS COLOR="READY" {% endif %} From 9d950440d819f4624c154d897743e8a8a8788cbb Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Sat, 10 Aug 2024 18:58:01 -0700 Subject: [PATCH 23/43] Fix incorrect command --- macros/base/homing/homing_override.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/macros/base/homing/homing_override.cfg b/macros/base/homing/homing_override.cfg index 02f605d9b..5df83df99 100644 --- a/macros/base/homing/homing_override.cfg +++ b/macros/base/homing/homing_override.cfg @@ -284,7 +284,7 @@ gcode: {% endif %} {% else %} - { action_respond_error("Axis homing order not valid. Choose either X or Y first in the variables.cfg file!") } + { action_raise_error("Axis homing order not valid. Choose either X or Y first in the variables.cfg file!") } {% endif %} From a21e8c4c91058209041679b17121d093d605e9c8 Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Sat, 10 Aug 2024 19:05:16 -0700 Subject: [PATCH 24/43] Add macro variable to STATUS_LEDS Variable can be used for conditional actions based on the active color value. --- macros/hardware_functions/status_leds.cfg | 2 ++ 1 file changed, 2 insertions(+) diff --git a/macros/hardware_functions/status_leds.cfg b/macros/hardware_functions/status_leds.cfg index a2acdd0c4..57c946c85 100644 --- a/macros/hardware_functions/status_leds.cfg +++ b/macros/hardware_functions/status_leds.cfg @@ -98,6 +98,7 @@ gcode: _SET_LEDS_BY_NAME LEDS="nozzle" COLOR="off" TRANSMIT={transmit} [gcode_macro STATUS_LEDS] +variable_status_leds_color: '' gcode: {% set color = params.COLOR|default('off')|lower %} {% set logo_leds_name = printer["gcode_macro _USER_VARIABLES"]["status_leds_logo_led_name"] %} @@ -209,6 +210,7 @@ gcode: SET_LED_EFFECT EFFECT={"sb_logo_" + status_color[color].logo} REPLACE=1 FADETIME=0.5 SET_LED_EFFECT EFFECT={"sb_nozzle_" + status_color[color].nozzle} REPLACE=1 FADETIME=0.5 {% endif %} + SET_GCODE_VARIABLE MACRO=STATUS_LEDS VARIABLE=status_leds_color VALUE={color} {% endif %} {% if printer["gcode_macro _USER_VARIABLES"].status_leds_caselight_enabled%} From e27a3449f5af4250b0e319a239814b3f6b76eecc Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Sat, 10 Aug 2024 19:12:06 -0700 Subject: [PATCH 25/43] Present value as a string literal --- macros/hardware_functions/status_leds.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/macros/hardware_functions/status_leds.cfg b/macros/hardware_functions/status_leds.cfg index 57c946c85..f679115f9 100644 --- a/macros/hardware_functions/status_leds.cfg +++ b/macros/hardware_functions/status_leds.cfg @@ -210,7 +210,7 @@ gcode: SET_LED_EFFECT EFFECT={"sb_logo_" + status_color[color].logo} REPLACE=1 FADETIME=0.5 SET_LED_EFFECT EFFECT={"sb_nozzle_" + status_color[color].nozzle} REPLACE=1 FADETIME=0.5 {% endif %} - SET_GCODE_VARIABLE MACRO=STATUS_LEDS VARIABLE=status_leds_color VALUE={color} + SET_GCODE_VARIABLE MACRO=STATUS_LEDS VARIABLE=status_leds_color VALUE='"{color}"' {% endif %} {% if printer["gcode_macro _USER_VARIABLES"].status_leds_caselight_enabled%} From 70a1bba6934d7eda923a9b0a0144636fda3f917d Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Sat, 10 Aug 2024 19:13:51 -0700 Subject: [PATCH 26/43] Case and quotes adjustments --- macros/hardware_functions/status_leds.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/macros/hardware_functions/status_leds.cfg b/macros/hardware_functions/status_leds.cfg index f679115f9..7d09039b2 100644 --- a/macros/hardware_functions/status_leds.cfg +++ b/macros/hardware_functions/status_leds.cfg @@ -210,7 +210,7 @@ gcode: SET_LED_EFFECT EFFECT={"sb_logo_" + status_color[color].logo} REPLACE=1 FADETIME=0.5 SET_LED_EFFECT EFFECT={"sb_nozzle_" + status_color[color].nozzle} REPLACE=1 FADETIME=0.5 {% endif %} - SET_GCODE_VARIABLE MACRO=STATUS_LEDS VARIABLE=status_leds_color VALUE='"{color}"' + SET_GCODE_VARIABLE macro=STATUS_LEDS variable=status_leds_color value="{color}" {% endif %} {% if printer["gcode_macro _USER_VARIABLES"].status_leds_caselight_enabled%} From 438be2f46baf79102a6ad8bf8fedf1d1da89d6ca Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Sat, 10 Aug 2024 19:18:23 -0700 Subject: [PATCH 27/43] Change quote type --- macros/hardware_functions/status_leds.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/macros/hardware_functions/status_leds.cfg b/macros/hardware_functions/status_leds.cfg index 7d09039b2..07638b5c0 100644 --- a/macros/hardware_functions/status_leds.cfg +++ b/macros/hardware_functions/status_leds.cfg @@ -98,7 +98,7 @@ gcode: _SET_LEDS_BY_NAME LEDS="nozzle" COLOR="off" TRANSMIT={transmit} [gcode_macro STATUS_LEDS] -variable_status_leds_color: '' +variable_status_leds_color: "" gcode: {% set color = params.COLOR|default('off')|lower %} {% set logo_leds_name = printer["gcode_macro _USER_VARIABLES"]["status_leds_logo_led_name"] %} From d43765b6520830594674e46cc8442196fbe143ca Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Sat, 10 Aug 2024 19:24:14 -0700 Subject: [PATCH 28/43] More quotes --- macros/hardware_functions/status_leds.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/macros/hardware_functions/status_leds.cfg b/macros/hardware_functions/status_leds.cfg index 07638b5c0..f1eb2da8d 100644 --- a/macros/hardware_functions/status_leds.cfg +++ b/macros/hardware_functions/status_leds.cfg @@ -210,7 +210,7 @@ gcode: SET_LED_EFFECT EFFECT={"sb_logo_" + status_color[color].logo} REPLACE=1 FADETIME=0.5 SET_LED_EFFECT EFFECT={"sb_nozzle_" + status_color[color].nozzle} REPLACE=1 FADETIME=0.5 {% endif %} - SET_GCODE_VARIABLE macro=STATUS_LEDS variable=status_leds_color value="{color}" + SET_GCODE_VARIABLE macro=STATUS_LEDS variable=status_leds_color value='"{color}"' {% endif %} {% if printer["gcode_macro _USER_VARIABLES"].status_leds_caselight_enabled%} From 2ade6d13044bc11ed5d3abbabbdfea508e3275d1 Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Sat, 10 Aug 2024 19:42:02 -0700 Subject: [PATCH 29/43] Discard use of delayed_gcode beacon_klipper has undocumented hook features that are called before or after homing either the x or y axis --- macros/base/homing/beacon_homing_hooks.cfg | 78 +++++++++++++--------- 1 file changed, 48 insertions(+), 30 deletions(-) diff --git a/macros/base/homing/beacon_homing_hooks.cfg b/macros/base/homing/beacon_homing_hooks.cfg index c6e60807c..7c2e61a4a 100644 --- a/macros/base/homing/beacon_homing_hooks.cfg +++ b/macros/base/homing/beacon_homing_hooks.cfg @@ -1,14 +1,10 @@ [gcode_macro _HOME_PRE_AXIS] description: Perform actions prior to homing an axis -variable_saved_accel: 0 gcode: {% set axis = params.AXIS %} - {% set bed_mesh_enabled = printer["gcode_macro _USER_VARIABLES"].bed_mesh_enabled %} - {% set homing_travel_accel = printer['gcode_macro _USER_VARIABLES'].homing_travel_accel %} {% set kinematics = printer['configfile'].config['printer']['kinematics'] %} {% set sensorless_homing_enabled = printer['gcode_macro _USER_VARIABLES'].sensorless_homing_enabled %} {% set sensorless_current_factor = printer['gcode_macro _USER_VARIABLES'].sensorless_current_factor / 100 %} - {% set status_leds_enabled = printer["gcode_macro _USER_VARIABLES"].status_leds_enabled %} {% set verbose = printer["gcode_macro _USER_VARIABLES"].verbose %} {% set x_driver = printer["gcode_macro _USER_VARIABLES"].x_driver %} @@ -24,9 +20,6 @@ gcode: # reset parameters {% set X, Y = False, False %} - # Cancel delayed gcode - UPDATE_DELAYED_GCODE ID=_set_status_leds_ready DURATION=0 - # which axis has been requested for homing {% if axis == 'X' %} {% set X = True %} @@ -34,19 +27,6 @@ gcode: {% set Y = True %} {% endif %} - {% if status_leds_enabled %} - STATUS_LEDS COLOR='HOMING' - {% endif %} - - # Set the homing acceleration prior to any movement - SET_GCODE_VARIABLE MACRO=_HOME_PRE_AXIS VARIABLE=saved_accel VALUE={printer.toolhead.max_accel} - M204 S{homing_travel_accel} - - {% if bed_mesh_enabled %} - BED_MESH_CLEAR - {% endif %} - - G90 {% if sensorless_homing_enabled %} {% if kinematics == 'corexy' %} @@ -84,7 +64,6 @@ gcode: {% set kinematics = printer['configfile'].config['printer']['kinematics'] %} {% set sensorless_current_factor = printer['gcode_macro _USER_VARIABLES'].sensorless_current_factor / 100 %} {% set sensorless_homing_enabled = printer['gcode_macro _USER_VARIABLES'].sensorless_homing_enabled %} - {% set status_leds_enabled = printer["gcode_macro _USER_VARIABLES"].status_leds_enabled %} {% set x_homing_backoff, y_homing_backoff = printer['gcode_macro _USER_VARIABLES'].homing_backoff_distance_xy|map('float') %} @@ -142,17 +121,56 @@ gcode: {% endif %} {% endif %} - # Reset acceleration values to what it was before - {% set saved_accel = printer["gcode_macro _HOME_PRE_AXIS"].saved_accel %} - SET_VELOCITY_LIMIT ACCEL={saved_accel} - - # Set delayed gcode - UPDATE_DELAYED_GCODE ID=_set_status_leds_ready DURATION=0.5 -[delayed_gcode _set_status_leds_ready] +[gcode_macro _HOME_XY] +description: Perform actions before or after homing x or y axis +variable_saved_accel: 0 gcode: + {% set stage = params.STAGE %} + + {% set bed_mesh_enabled = printer["gcode_macro _USER_VARIABLES"].bed_mesh_enabled %} + {% set homing_travel_accel = printer['gcode_macro _USER_VARIABLES'].homing_travel_accel %} {% set status_leds_enabled = printer["gcode_macro _USER_VARIABLES"].status_leds_enabled %} + + # reset parameters + {% set pre, post = False, False %} + + # Which axis has been requested for homing + {% if stage == 'PRE' %} + {% set pre = True %} + {% elif stage == 'POST' %} + {% set post = True %} + {% else %} + { action_raise_error('Unrecognized STAGE value, valid choices: PRE, POST') } + {% endif %} + + {% if pre %} + # Set the homing acceleration prior to any movement + SET_GCODE_VARIABLE MACRO=_HOME_XY VARIABLE=saved_accel VALUE={printer.toolhead.max_accel} + M204 S{homing_travel_accel} + + {% if bed_mesh_enabled %} + BED_MESH_CLEAR + {% endif %} + + G90 + + {% if status_leds_enabled %} + {% set status_leds_color = printer['gcode_macro STATUS_LEDS'].status_leds_color|default('') %} + {% if not status_leds_color == 'homing' %} + STATUS_LEDS COLOR="homing" + {% endif %} + {% endif %} + {% elif post %} + # Reset acceleration values to what it was before + {% set saved_accel = printer["gcode_macro _HOME_XY"].saved_accel %} + SET_VELOCITY_LIMIT ACCEL={saved_accel} - {% if status_leds_enabled %} - STATUS_LEDS COLOR="READY" + {% if status_leds_enabled %} + {% set status_leds_color = printer['gcode_macro STATUS_LEDS'].status_leds_color|default('') %} + {% if not status_leds_color == 'ready' %} + STATUS_LEDS COLOR="ready" + {% endif %} + {% endif %} {% endif %} + From 3e9e35a3a20665d32adb82247bb9624caea74588 Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Sat, 10 Aug 2024 19:42:39 -0700 Subject: [PATCH 30/43] Add xy hooks --- config/hardware/probes/beacon_contact.cfg | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/hardware/probes/beacon_contact.cfg b/config/hardware/probes/beacon_contact.cfg index c310d95f4..6583aa28e 100644 --- a/config/hardware/probes/beacon_contact.cfg +++ b/config/hardware/probes/beacon_contact.cfg @@ -27,3 +27,5 @@ home_gcode_pre_x: _HOME_PRE_AXIS AXIS=X home_gcode_post_x: _HOME_POST_AXIS AXIS=X home_gcode_pre_y: _HOME_PRE_AXIS AXIS=Y home_gcode_post_y: _HOME_POST_AXIS AXIS=Y +home_gcode_pre_xy: _HOME_XY STAGE=PRE +home_gcode_post_xy: _HOME_XY STAGE=POST From 0f64405d62c237fe870fd2f45ea96965f4e5c3d2 Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Sat, 10 Aug 2024 19:53:00 -0700 Subject: [PATCH 31/43] Add activation macro --- macros/base/homing/beacon_homing_hooks.cfg | 34 ++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/macros/base/homing/beacon_homing_hooks.cfg b/macros/base/homing/beacon_homing_hooks.cfg index 7c2e61a4a..a522c4554 100644 --- a/macros/base/homing/beacon_homing_hooks.cfg +++ b/macros/base/homing/beacon_homing_hooks.cfg @@ -174,3 +174,37 @@ gcode: {% endif %} {% endif %} +[gcode_macro _CONTACT_MACRO] +description: Perform actions before or after contact activate/deactivate +gcode: + {% set stage = params.STAGE %} + + {% set status_leds_enabled = printer["gcode_macro _USER_VARIABLES"].status_leds_enabled %} + + # reset parameters + {% set activate, deactivate = False, False %} + + # Which axis has been requested for homing + {% if stage == 'ACTIVATE' %} + {% set activate = True %} + {% elif stage == 'DEACTIVATE' %} + {% set deactivate = True %} + {% else %} + { action_raise_error('Unrecognized STAGE value, valid choices: ACTIVATE, DEACTIVATE') } + {% endif %} + + {% if activate %} + {% if status_leds_enabled %} + {% set status_leds_color = printer['gcode_macro STATUS_LEDS'].status_leds_color|default('') %} + {% if not status_leds_color == 'homing' %} + STATUS_LEDS COLOR="homing" + {% endif %} + {% endif %} + {% elif deactivate %} + {% if status_leds_enabled %} + {% set status_leds_color = printer['gcode_macro STATUS_LEDS'].status_leds_color|default('') %} + {% if not status_leds_color == 'ready' %} + STATUS_LEDS COLOR="ready" + {% endif %} + {% endif %} + {% endif %} From 2ffcb6362cd54eb6b1be4184630066616d420d82 Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Sat, 10 Aug 2024 19:55:54 -0700 Subject: [PATCH 32/43] Add contact macro --- config/hardware/probes/beacon_contact.cfg | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/config/hardware/probes/beacon_contact.cfg b/config/hardware/probes/beacon_contact.cfg index 6583aa28e..24ba9a8b7 100644 --- a/config/hardware/probes/beacon_contact.cfg +++ b/config/hardware/probes/beacon_contact.cfg @@ -27,5 +27,7 @@ home_gcode_pre_x: _HOME_PRE_AXIS AXIS=X home_gcode_post_x: _HOME_POST_AXIS AXIS=X home_gcode_pre_y: _HOME_PRE_AXIS AXIS=Y home_gcode_post_y: _HOME_POST_AXIS AXIS=Y -home_gcode_pre_xy: _HOME_XY STAGE=PRE -home_gcode_post_xy: _HOME_XY STAGE=POST +home_gcode_pre_xy: _HOME_XY STAGE=pre +home_gcode_post_xy: _HOME_XY STAGE=post +contact_activate_gcode: _CONTACT_MACRO STAGE=activate +contact_deactivate_gcode: _CONTACT_MACRO STAGE=deactivate From 619794b8de2dae1a70ffb1ba5a327613b7370c40 Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Sat, 10 Aug 2024 19:56:23 -0700 Subject: [PATCH 33/43] Case change --- macros/base/homing/beacon_homing_hooks.cfg | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/macros/base/homing/beacon_homing_hooks.cfg b/macros/base/homing/beacon_homing_hooks.cfg index a522c4554..c600d70d9 100644 --- a/macros/base/homing/beacon_homing_hooks.cfg +++ b/macros/base/homing/beacon_homing_hooks.cfg @@ -126,7 +126,7 @@ gcode: description: Perform actions before or after homing x or y axis variable_saved_accel: 0 gcode: - {% set stage = params.STAGE %} + {% set stage = params.STAGE|lower %} {% set bed_mesh_enabled = printer["gcode_macro _USER_VARIABLES"].bed_mesh_enabled %} {% set homing_travel_accel = printer['gcode_macro _USER_VARIABLES'].homing_travel_accel %} @@ -136,12 +136,12 @@ gcode: {% set pre, post = False, False %} # Which axis has been requested for homing - {% if stage == 'PRE' %} + {% if stage == 'pre' %} {% set pre = True %} - {% elif stage == 'POST' %} + {% elif stage == 'post' %} {% set post = True %} {% else %} - { action_raise_error('Unrecognized STAGE value, valid choices: PRE, POST') } + { action_raise_error('Unrecognized STAGE value, valid choices: pre, post') } {% endif %} {% if pre %} @@ -177,7 +177,7 @@ gcode: [gcode_macro _CONTACT_MACRO] description: Perform actions before or after contact activate/deactivate gcode: - {% set stage = params.STAGE %} + {% set stage = params.STAGE|lower %} {% set status_leds_enabled = printer["gcode_macro _USER_VARIABLES"].status_leds_enabled %} @@ -185,12 +185,12 @@ gcode: {% set activate, deactivate = False, False %} # Which axis has been requested for homing - {% if stage == 'ACTIVATE' %} + {% if stage == 'activate' %} {% set activate = True %} - {% elif stage == 'DEACTIVATE' %} + {% elif stage == 'deactivate' %} {% set deactivate = True %} {% else %} - { action_raise_error('Unrecognized STAGE value, valid choices: ACTIVATE, DEACTIVATE') } + { action_raise_error('Unrecognized STAGE value, valid choices: activate, deactivate') } {% endif %} {% if activate %} From 94943a23f02c2ec7b3c7a80f252d721f3f39ba94 Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Sat, 10 Aug 2024 20:07:12 -0700 Subject: [PATCH 34/43] Add recommend homing configuration --- config/hardware/probes/beacon_contact.cfg | 3 +++ 1 file changed, 3 insertions(+) diff --git a/config/hardware/probes/beacon_contact.cfg b/config/hardware/probes/beacon_contact.cfg index 24ba9a8b7..3afc96c36 100644 --- a/config/hardware/probes/beacon_contact.cfg +++ b/config/hardware/probes/beacon_contact.cfg @@ -23,6 +23,9 @@ endstop_pin: probe:z_virtual_endstop homing_retract_dist: 0 [beacon] +home_method: contact +home_method_when_homed: proximity +home_autocalibrate: unhomed home_gcode_pre_x: _HOME_PRE_AXIS AXIS=X home_gcode_post_x: _HOME_POST_AXIS AXIS=X home_gcode_pre_y: _HOME_PRE_AXIS AXIS=Y From 44e8ddea11378154401289cc4e7b3ae56aab9a98 Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Sat, 10 Aug 2024 23:41:37 -0700 Subject: [PATCH 35/43] Revert status_leds --- macros/base/homing/beacon_homing_hooks.cfg | 20 ++++---------------- macros/hardware_functions/status_leds.cfg | 2 -- 2 files changed, 4 insertions(+), 18 deletions(-) diff --git a/macros/base/homing/beacon_homing_hooks.cfg b/macros/base/homing/beacon_homing_hooks.cfg index c600d70d9..d5fbb7e78 100644 --- a/macros/base/homing/beacon_homing_hooks.cfg +++ b/macros/base/homing/beacon_homing_hooks.cfg @@ -156,10 +156,7 @@ gcode: G90 {% if status_leds_enabled %} - {% set status_leds_color = printer['gcode_macro STATUS_LEDS'].status_leds_color|default('') %} - {% if not status_leds_color == 'homing' %} - STATUS_LEDS COLOR="homing" - {% endif %} + STATUS_LEDS COLOR="homing" {% endif %} {% elif post %} # Reset acceleration values to what it was before @@ -167,10 +164,7 @@ gcode: SET_VELOCITY_LIMIT ACCEL={saved_accel} {% if status_leds_enabled %} - {% set status_leds_color = printer['gcode_macro STATUS_LEDS'].status_leds_color|default('') %} - {% if not status_leds_color == 'ready' %} - STATUS_LEDS COLOR="ready" - {% endif %} + STATUS_LEDS COLOR="ready" {% endif %} {% endif %} @@ -195,16 +189,10 @@ gcode: {% if activate %} {% if status_leds_enabled %} - {% set status_leds_color = printer['gcode_macro STATUS_LEDS'].status_leds_color|default('') %} - {% if not status_leds_color == 'homing' %} - STATUS_LEDS COLOR="homing" - {% endif %} + STATUS_LEDS COLOR="homing" {% endif %} {% elif deactivate %} {% if status_leds_enabled %} - {% set status_leds_color = printer['gcode_macro STATUS_LEDS'].status_leds_color|default('') %} - {% if not status_leds_color == 'ready' %} - STATUS_LEDS COLOR="ready" - {% endif %} + STATUS_LEDS COLOR="ready" {% endif %} {% endif %} diff --git a/macros/hardware_functions/status_leds.cfg b/macros/hardware_functions/status_leds.cfg index f1eb2da8d..a2acdd0c4 100644 --- a/macros/hardware_functions/status_leds.cfg +++ b/macros/hardware_functions/status_leds.cfg @@ -98,7 +98,6 @@ gcode: _SET_LEDS_BY_NAME LEDS="nozzle" COLOR="off" TRANSMIT={transmit} [gcode_macro STATUS_LEDS] -variable_status_leds_color: "" gcode: {% set color = params.COLOR|default('off')|lower %} {% set logo_leds_name = printer["gcode_macro _USER_VARIABLES"]["status_leds_logo_led_name"] %} @@ -210,7 +209,6 @@ gcode: SET_LED_EFFECT EFFECT={"sb_logo_" + status_color[color].logo} REPLACE=1 FADETIME=0.5 SET_LED_EFFECT EFFECT={"sb_nozzle_" + status_color[color].nozzle} REPLACE=1 FADETIME=0.5 {% endif %} - SET_GCODE_VARIABLE macro=STATUS_LEDS variable=status_leds_color value='"{color}"' {% endif %} {% if printer["gcode_macro _USER_VARIABLES"].status_leds_caselight_enabled%} From fb24ffcafac328f82690ba2f8c6f0cbdd0903f06 Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Sat, 10 Aug 2024 23:56:00 -0700 Subject: [PATCH 36/43] Hook improvments and minor bug fixes (#1) * Fix incorrect command * Add macro variable to STATUS_LEDS Variable can be used for conditional actions based on the active color value. * Present value as a string literal * Case and quotes adjustments * Change quote type * More quotes * Discard use of delayed_gcode beacon_klipper has undocumented hook features that are called before or after homing either the x or y axis * Add xy hooks * Add activation macro * Add contact macro * Case change * Add recommend homing configuration * Revert status_leds --- config/hardware/probes/beacon_contact.cfg | 7 ++ macros/base/homing/beacon_homing_hooks.cfg | 100 ++++++++++++++------- macros/base/homing/homing_override.cfg | 2 +- 3 files changed, 78 insertions(+), 31 deletions(-) diff --git a/config/hardware/probes/beacon_contact.cfg b/config/hardware/probes/beacon_contact.cfg index c310d95f4..3afc96c36 100644 --- a/config/hardware/probes/beacon_contact.cfg +++ b/config/hardware/probes/beacon_contact.cfg @@ -23,7 +23,14 @@ endstop_pin: probe:z_virtual_endstop homing_retract_dist: 0 [beacon] +home_method: contact +home_method_when_homed: proximity +home_autocalibrate: unhomed home_gcode_pre_x: _HOME_PRE_AXIS AXIS=X home_gcode_post_x: _HOME_POST_AXIS AXIS=X home_gcode_pre_y: _HOME_PRE_AXIS AXIS=Y home_gcode_post_y: _HOME_POST_AXIS AXIS=Y +home_gcode_pre_xy: _HOME_XY STAGE=pre +home_gcode_post_xy: _HOME_XY STAGE=post +contact_activate_gcode: _CONTACT_MACRO STAGE=activate +contact_deactivate_gcode: _CONTACT_MACRO STAGE=deactivate diff --git a/macros/base/homing/beacon_homing_hooks.cfg b/macros/base/homing/beacon_homing_hooks.cfg index c6e60807c..d5fbb7e78 100644 --- a/macros/base/homing/beacon_homing_hooks.cfg +++ b/macros/base/homing/beacon_homing_hooks.cfg @@ -1,14 +1,10 @@ [gcode_macro _HOME_PRE_AXIS] description: Perform actions prior to homing an axis -variable_saved_accel: 0 gcode: {% set axis = params.AXIS %} - {% set bed_mesh_enabled = printer["gcode_macro _USER_VARIABLES"].bed_mesh_enabled %} - {% set homing_travel_accel = printer['gcode_macro _USER_VARIABLES'].homing_travel_accel %} {% set kinematics = printer['configfile'].config['printer']['kinematics'] %} {% set sensorless_homing_enabled = printer['gcode_macro _USER_VARIABLES'].sensorless_homing_enabled %} {% set sensorless_current_factor = printer['gcode_macro _USER_VARIABLES'].sensorless_current_factor / 100 %} - {% set status_leds_enabled = printer["gcode_macro _USER_VARIABLES"].status_leds_enabled %} {% set verbose = printer["gcode_macro _USER_VARIABLES"].verbose %} {% set x_driver = printer["gcode_macro _USER_VARIABLES"].x_driver %} @@ -24,9 +20,6 @@ gcode: # reset parameters {% set X, Y = False, False %} - # Cancel delayed gcode - UPDATE_DELAYED_GCODE ID=_set_status_leds_ready DURATION=0 - # which axis has been requested for homing {% if axis == 'X' %} {% set X = True %} @@ -34,19 +27,6 @@ gcode: {% set Y = True %} {% endif %} - {% if status_leds_enabled %} - STATUS_LEDS COLOR='HOMING' - {% endif %} - - # Set the homing acceleration prior to any movement - SET_GCODE_VARIABLE MACRO=_HOME_PRE_AXIS VARIABLE=saved_accel VALUE={printer.toolhead.max_accel} - M204 S{homing_travel_accel} - - {% if bed_mesh_enabled %} - BED_MESH_CLEAR - {% endif %} - - G90 {% if sensorless_homing_enabled %} {% if kinematics == 'corexy' %} @@ -84,7 +64,6 @@ gcode: {% set kinematics = printer['configfile'].config['printer']['kinematics'] %} {% set sensorless_current_factor = printer['gcode_macro _USER_VARIABLES'].sensorless_current_factor / 100 %} {% set sensorless_homing_enabled = printer['gcode_macro _USER_VARIABLES'].sensorless_homing_enabled %} - {% set status_leds_enabled = printer["gcode_macro _USER_VARIABLES"].status_leds_enabled %} {% set x_homing_backoff, y_homing_backoff = printer['gcode_macro _USER_VARIABLES'].homing_backoff_distance_xy|map('float') %} @@ -142,17 +121,78 @@ gcode: {% endif %} {% endif %} - # Reset acceleration values to what it was before - {% set saved_accel = printer["gcode_macro _HOME_PRE_AXIS"].saved_accel %} - SET_VELOCITY_LIMIT ACCEL={saved_accel} - # Set delayed gcode - UPDATE_DELAYED_GCODE ID=_set_status_leds_ready DURATION=0.5 - -[delayed_gcode _set_status_leds_ready] +[gcode_macro _HOME_XY] +description: Perform actions before or after homing x or y axis +variable_saved_accel: 0 gcode: + {% set stage = params.STAGE|lower %} + + {% set bed_mesh_enabled = printer["gcode_macro _USER_VARIABLES"].bed_mesh_enabled %} + {% set homing_travel_accel = printer['gcode_macro _USER_VARIABLES'].homing_travel_accel %} {% set status_leds_enabled = printer["gcode_macro _USER_VARIABLES"].status_leds_enabled %} + + # reset parameters + {% set pre, post = False, False %} + + # Which axis has been requested for homing + {% if stage == 'pre' %} + {% set pre = True %} + {% elif stage == 'post' %} + {% set post = True %} + {% else %} + { action_raise_error('Unrecognized STAGE value, valid choices: pre, post') } + {% endif %} + + {% if pre %} + # Set the homing acceleration prior to any movement + SET_GCODE_VARIABLE MACRO=_HOME_XY VARIABLE=saved_accel VALUE={printer.toolhead.max_accel} + M204 S{homing_travel_accel} + + {% if bed_mesh_enabled %} + BED_MESH_CLEAR + {% endif %} + + G90 + + {% if status_leds_enabled %} + STATUS_LEDS COLOR="homing" + {% endif %} + {% elif post %} + # Reset acceleration values to what it was before + {% set saved_accel = printer["gcode_macro _HOME_XY"].saved_accel %} + SET_VELOCITY_LIMIT ACCEL={saved_accel} - {% if status_leds_enabled %} - STATUS_LEDS COLOR="READY" + {% if status_leds_enabled %} + STATUS_LEDS COLOR="ready" + {% endif %} + {% endif %} + +[gcode_macro _CONTACT_MACRO] +description: Perform actions before or after contact activate/deactivate +gcode: + {% set stage = params.STAGE|lower %} + + {% set status_leds_enabled = printer["gcode_macro _USER_VARIABLES"].status_leds_enabled %} + + # reset parameters + {% set activate, deactivate = False, False %} + + # Which axis has been requested for homing + {% if stage == 'activate' %} + {% set activate = True %} + {% elif stage == 'deactivate' %} + {% set deactivate = True %} + {% else %} + { action_raise_error('Unrecognized STAGE value, valid choices: activate, deactivate') } + {% endif %} + + {% if activate %} + {% if status_leds_enabled %} + STATUS_LEDS COLOR="homing" + {% endif %} + {% elif deactivate %} + {% if status_leds_enabled %} + STATUS_LEDS COLOR="ready" + {% endif %} {% endif %} diff --git a/macros/base/homing/homing_override.cfg b/macros/base/homing/homing_override.cfg index 02f605d9b..5df83df99 100644 --- a/macros/base/homing/homing_override.cfg +++ b/macros/base/homing/homing_override.cfg @@ -284,7 +284,7 @@ gcode: {% endif %} {% else %} - { action_respond_error("Axis homing order not valid. Choose either X or Y first in the variables.cfg file!") } + { action_raise_error("Axis homing order not valid. Choose either X or Y first in the variables.cfg file!") } {% endif %} From d3171a0fe6ee35df3e76c0d8c8c5e338940c1e26 Mon Sep 17 00:00:00 2001 From: crkochan <5183896+crkochan@users.noreply.github.com> Date: Sun, 11 Aug 2024 12:59:03 -0700 Subject: [PATCH 37/43] Add fast QGL/Z-Tilt macros --- config/hardware/probes/beacon_contact.cfg | 1 + .../overrides/beacon_probe_overrides.cfg | 80 +++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 macros/base/probing/overrides/beacon_probe_overrides.cfg diff --git a/config/hardware/probes/beacon_contact.cfg b/config/hardware/probes/beacon_contact.cfg index 3afc96c36..23ed0b2f7 100644 --- a/config/hardware/probes/beacon_contact.cfg +++ b/config/hardware/probes/beacon_contact.cfg @@ -16,6 +16,7 @@ gcode: # Beacon probe definition also include the probe management macros directly from here [include ../../../macros/base/probing/beacon_probe.cfg] +[include ../../../macros/base/probing/overrides/beacon_probe_overrides.cfg] [include ../../../macros/base/homing/beacon_homing_hooks.cfg] [stepper_z] diff --git a/macros/base/probing/overrides/beacon_probe_overrides.cfg b/macros/base/probing/overrides/beacon_probe_overrides.cfg new file mode 100644 index 000000000..3aae014c5 --- /dev/null +++ b/macros/base/probing/overrides/beacon_probe_overrides.cfg @@ -0,0 +1,80 @@ +############################################################################# +# Probe macros base on the defaults but modified with Beacon specific improvements +# Improvements are from the ANNEX Discord and allow for QGL/Tilt in scan mode +############################################################################# + +[gcode_macro FAST_QUAD_GANTRY_LEVEL] +description: Conform a moving, twistable gantry to the shape of a stationary bed, optimized for Beacon Probe +gcode: + {% set tilting_travel_accel = printer["gcode_macro _USER_VARIABLES"].tilting_travel_accel %} + {% set status_leds_enabled = printer["gcode_macro _USER_VARIABLES"].status_leds_enabled %} + {% set verbose = printer["gcode_macro _USER_VARIABLES"].verbose %} + + {% if verbose %} + { action_respond_info("Beacon QGL") } + {% endif %} + + _CG28 + + {% if status_leds_enabled %} + STATUS_LEDS COLOR="LEVELING" + {% endif %} + + ACTIVATE_PROBE + + # Set the tilting acceleration prior to any movement + {% set saved_accel = printer.toolhead.max_accel %} + M204 S{tilting_travel_accel} + + {% if printer.quad_gantry_level.applied|lower == 'false' %} + _BASE_QUAD_GANTRY_LEVEL RETRY_TOLERANCE=1 {rawparams} + {% endif %} + _BASE_QUAD_GANTRY_LEVEL HORIZONTAL_MOVE_Z=2 {rawparams} + + # Reset acceleration values to what it was before + SET_VELOCITY_LIMIT ACCEL={saved_accel} + + DEACTIVATE_PROBE + + {% if status_leds_enabled %} + STATUS_LEDS COLOR="READY" + {% endif %} + + +[gcode_macro FAST_Z_TILT_ADJUST] +description: Conform a moving bed to the shape of a stationary gantry with dockable probe automount, optimized for Beacon Probe +gcode: + {% set tilting_travel_accel = printer["gcode_macro _USER_VARIABLES"].tilting_travel_accel %} + {% set status_leds_enabled = printer["gcode_macro _USER_VARIABLES"].status_leds_enabled %} + {% set verbose = printer["gcode_macro _USER_VARIABLES"].verbose %} + + + {% if verbose %} + { action_respond_info("Beacon Z tilt adjust") } + {% endif %} + + _CG28 + + {% if status_leds_enabled %} + STATUS_LEDS COLOR="LEVELING" + {% endif %} + + ACTIVATE_PROBE + + # Set the tilting acceleration prior to any movement + {% set saved_accel = printer.toolhead.max_accel %} + M204 S{tilting_travel_accel} + + {% if printer.quad_gantry_level.applied|lower == 'false' %} + _BASE_Z_TILT_ADJUST RETRY_TOLERANCE=1 {rawparams} + {% endif %} + _BASE_Z_TILT_ADJUST HORIZONTAL_MOVE_Z=2 {rawparams} + + # Reset acceleration values to what it was before + SET_VELOCITY_LIMIT ACCEL={saved_accel} + + DEACTIVATE_PROBE + + {% if status_leds_enabled %} + STATUS_LEDS COLOR="READY" + {% endif %} From 677ebb63ab3dd116337f119fe3e00b0f080a2997 Mon Sep 17 00:00:00 2001 From: crkochan <5183896+crkochan@users.noreply.github.com> Date: Sun, 11 Aug 2024 13:01:33 -0700 Subject: [PATCH 38/43] Chomp whitespace --- macros/base/probing/overrides/beacon_probe_overrides.cfg | 1 - 1 file changed, 1 deletion(-) diff --git a/macros/base/probing/overrides/beacon_probe_overrides.cfg b/macros/base/probing/overrides/beacon_probe_overrides.cfg index 3aae014c5..d7c16fa60 100644 --- a/macros/base/probing/overrides/beacon_probe_overrides.cfg +++ b/macros/base/probing/overrides/beacon_probe_overrides.cfg @@ -48,7 +48,6 @@ gcode: {% set status_leds_enabled = printer["gcode_macro _USER_VARIABLES"].status_leds_enabled %} {% set verbose = printer["gcode_macro _USER_VARIABLES"].verbose %} - {% if verbose %} { action_respond_info("Beacon Z tilt adjust") } {% endif %} From 9006c0a8d1e56344dc21599b59450385770b8963 Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Sun, 11 Aug 2024 13:03:00 -0700 Subject: [PATCH 39/43] Add fast QGL/Z-Tilt macros (#2) * Fix incorrect command * Add macro variable to STATUS_LEDS Variable can be used for conditional actions based on the active color value. * Present value as a string literal * Case and quotes adjustments * Change quote type * More quotes * Discard use of delayed_gcode beacon_klipper has undocumented hook features that are called before or after homing either the x or y axis * Add xy hooks * Add activation macro * Add contact macro * Case change * Add recommend homing configuration * Revert status_leds * Add fast QGL/Z-Tilt macros * Chomp whitespace --- config/hardware/probes/beacon_contact.cfg | 1 + .../overrides/beacon_probe_overrides.cfg | 79 +++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 macros/base/probing/overrides/beacon_probe_overrides.cfg diff --git a/config/hardware/probes/beacon_contact.cfg b/config/hardware/probes/beacon_contact.cfg index 3afc96c36..23ed0b2f7 100644 --- a/config/hardware/probes/beacon_contact.cfg +++ b/config/hardware/probes/beacon_contact.cfg @@ -16,6 +16,7 @@ gcode: # Beacon probe definition also include the probe management macros directly from here [include ../../../macros/base/probing/beacon_probe.cfg] +[include ../../../macros/base/probing/overrides/beacon_probe_overrides.cfg] [include ../../../macros/base/homing/beacon_homing_hooks.cfg] [stepper_z] diff --git a/macros/base/probing/overrides/beacon_probe_overrides.cfg b/macros/base/probing/overrides/beacon_probe_overrides.cfg new file mode 100644 index 000000000..d7c16fa60 --- /dev/null +++ b/macros/base/probing/overrides/beacon_probe_overrides.cfg @@ -0,0 +1,79 @@ +############################################################################# +# Probe macros base on the defaults but modified with Beacon specific improvements +# Improvements are from the ANNEX Discord and allow for QGL/Tilt in scan mode +############################################################################# + +[gcode_macro FAST_QUAD_GANTRY_LEVEL] +description: Conform a moving, twistable gantry to the shape of a stationary bed, optimized for Beacon Probe +gcode: + {% set tilting_travel_accel = printer["gcode_macro _USER_VARIABLES"].tilting_travel_accel %} + {% set status_leds_enabled = printer["gcode_macro _USER_VARIABLES"].status_leds_enabled %} + {% set verbose = printer["gcode_macro _USER_VARIABLES"].verbose %} + + {% if verbose %} + { action_respond_info("Beacon QGL") } + {% endif %} + + _CG28 + + {% if status_leds_enabled %} + STATUS_LEDS COLOR="LEVELING" + {% endif %} + + ACTIVATE_PROBE + + # Set the tilting acceleration prior to any movement + {% set saved_accel = printer.toolhead.max_accel %} + M204 S{tilting_travel_accel} + + {% if printer.quad_gantry_level.applied|lower == 'false' %} + _BASE_QUAD_GANTRY_LEVEL RETRY_TOLERANCE=1 {rawparams} + {% endif %} + _BASE_QUAD_GANTRY_LEVEL HORIZONTAL_MOVE_Z=2 {rawparams} + + # Reset acceleration values to what it was before + SET_VELOCITY_LIMIT ACCEL={saved_accel} + + DEACTIVATE_PROBE + + {% if status_leds_enabled %} + STATUS_LEDS COLOR="READY" + {% endif %} + + +[gcode_macro FAST_Z_TILT_ADJUST] +description: Conform a moving bed to the shape of a stationary gantry with dockable probe automount, optimized for Beacon Probe +gcode: + {% set tilting_travel_accel = printer["gcode_macro _USER_VARIABLES"].tilting_travel_accel %} + {% set status_leds_enabled = printer["gcode_macro _USER_VARIABLES"].status_leds_enabled %} + {% set verbose = printer["gcode_macro _USER_VARIABLES"].verbose %} + + {% if verbose %} + { action_respond_info("Beacon Z tilt adjust") } + {% endif %} + + _CG28 + + {% if status_leds_enabled %} + STATUS_LEDS COLOR="LEVELING" + {% endif %} + + ACTIVATE_PROBE + + # Set the tilting acceleration prior to any movement + {% set saved_accel = printer.toolhead.max_accel %} + M204 S{tilting_travel_accel} + + {% if printer.quad_gantry_level.applied|lower == 'false' %} + _BASE_Z_TILT_ADJUST RETRY_TOLERANCE=1 {rawparams} + {% endif %} + _BASE_Z_TILT_ADJUST HORIZONTAL_MOVE_Z=2 {rawparams} + + # Reset acceleration values to what it was before + SET_VELOCITY_LIMIT ACCEL={saved_accel} + + DEACTIVATE_PROBE + + {% if status_leds_enabled %} + STATUS_LEDS COLOR="READY" + {% endif %} From 6aba8adb0988cc7ecdec708f3af5f56b9fa71775 Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Sun, 11 Aug 2024 21:39:24 -0700 Subject: [PATCH 40/43] Implement hardware check --- config/hardware/probes/beacon_contact.cfg | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/config/hardware/probes/beacon_contact.cfg b/config/hardware/probes/beacon_contact.cfg index 23ed0b2f7..a2a9ac9ac 100644 --- a/config/hardware/probes/beacon_contact.cfg +++ b/config/hardware/probes/beacon_contact.cfg @@ -35,3 +35,20 @@ home_gcode_pre_xy: _HOME_XY STAGE=pre home_gcode_post_xy: _HOME_XY STAGE=post contact_activate_gcode: _CONTACT_MACRO STAGE=activate contact_deactivate_gcode: _CONTACT_MACRO STAGE=deactivate + +[gcode_macro _beacon_contact_hardware_check] +gcode: + {% if 'mcu beacon' in printer %} + {% set version = printer['mcu beacon'].mcu_version.split(' ')|last %} + {% set major = version.split('.')|first|int %} + {% if version < '2' %} + {action_raise_error('Beacon firmware is too old. Found: %s, Expected: 2.0.0 or higher' % version)} + {% endif %} + {% else %} + {action_raise_error('Beacon MCU was not found')} + {% endif %} + +[delayed_gcode _do_beacon_contact_hardware_check] +initial_duration: 5 +gcode: + _beacon_contact_hardware_check From abe42098bd117d116cc09ff2c941e619a058610b Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Wed, 21 Aug 2024 16:31:12 -0700 Subject: [PATCH 41/43] Probing status flag and ensure beacon calibration (#4) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add calibration to G28 on probe activation Guarantees some calibration occurs when home_method is set to proximity, and home_autocalibrate is set to none. * Track probe activation status Trying to avoid the probing hooks changing status LEDs when they shouldn’t --- macros/base/homing/beacon_homing_hooks.cfg | 28 ++++++++++++---------- macros/base/probing/beacon_probe.cfg | 9 +++++++ 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/macros/base/homing/beacon_homing_hooks.cfg b/macros/base/homing/beacon_homing_hooks.cfg index d5fbb7e78..93f7c82bd 100644 --- a/macros/base/homing/beacon_homing_hooks.cfg +++ b/macros/base/homing/beacon_homing_hooks.cfg @@ -127,10 +127,11 @@ description: Perform actions before or after homing x or y axis variable_saved_accel: 0 gcode: {% set stage = params.STAGE|lower %} - + {% set bed_mesh_enabled = printer["gcode_macro _USER_VARIABLES"].bed_mesh_enabled %} {% set homing_travel_accel = printer['gcode_macro _USER_VARIABLES'].homing_travel_accel %} {% set status_leds_enabled = printer["gcode_macro _USER_VARIABLES"].status_leds_enabled %} + {% set probing_active = printer["gcode_macro ACTIVATE_PROBE"].is_active %} # reset parameters {% set pre, post = False, False %} @@ -141,7 +142,7 @@ gcode: {% elif stage == 'post' %} {% set post = True %} {% else %} - { action_raise_error('Unrecognized STAGE value, valid choices: pre, post') } + { action_raise_error('Unrecognized STAGE value, valid choices: pre, post') } {% endif %} {% if pre %} @@ -162,7 +163,7 @@ gcode: # Reset acceleration values to what it was before {% set saved_accel = printer["gcode_macro _HOME_XY"].saved_accel %} SET_VELOCITY_LIMIT ACCEL={saved_accel} - + {% if status_leds_enabled %} STATUS_LEDS COLOR="ready" {% endif %} @@ -172,8 +173,9 @@ gcode: description: Perform actions before or after contact activate/deactivate gcode: {% set stage = params.STAGE|lower %} - + {% set status_leds_enabled = printer["gcode_macro _USER_VARIABLES"].status_leds_enabled %} + {% set probing_active = printer["gcode_macro ACTIVATE_PROBE"].is_active %} # reset parameters {% set activate, deactivate = False, False %} @@ -184,15 +186,17 @@ gcode: {% elif stage == 'deactivate' %} {% set deactivate = True %} {% else %} - { action_raise_error('Unrecognized STAGE value, valid choices: activate, deactivate') } + { action_raise_error('Unrecognized STAGE value, valid choices: activate, deactivate') } {% endif %} - {% if activate %} - {% if status_leds_enabled %} - STATUS_LEDS COLOR="homing" - {% endif %} - {% elif deactivate %} - {% if status_leds_enabled %} - STATUS_LEDS COLOR="ready" + {% if not probing_active %} + {% if activate %} + {% if status_leds_enabled %} + STATUS_LEDS COLOR="homing" + {% endif %} + {% elif deactivate %} + {% if status_leds_enabled %} + STATUS_LEDS COLOR="ready" + {% endif %} {% endif %} {% endif %} diff --git a/macros/base/probing/beacon_probe.cfg b/macros/base/probing/beacon_probe.cfg index 06d91940e..3ae666052 100644 --- a/macros/base/probing/beacon_probe.cfg +++ b/macros/base/probing/beacon_probe.cfg @@ -5,9 +5,12 @@ [gcode_macro ACTIVATE_PROBE] description: Put the machine in a state being able to probe variable_temperature: 0 +variable_is_active: False gcode: {% set beacon_max_probing_temp = printer["gcode_macro _USER_VARIABLES"].beacon_max_probing_temp|float %} + SET_GCODE_VARIABLE MACRO=ACTIVATE_PROBE VARIABLE=is_active VALUE=True + # Check the temperature and lower it if needed SAVE_GCODE_STATE NAME=BEFORE_BEACON_ACTION @@ -30,6 +33,8 @@ gcode: {% endif %} {% endif %} + G28 Z METHOD=CONTACT CALIBRATE=1 ; calibrate z offset and beacon model hot + [gcode_macro DEACTIVATE_PROBE] description: Revert the machine to a normal state after probing @@ -37,6 +42,8 @@ gcode: {% set beacon_deactivation_zhop = printer["gcode_macro _USER_VARIABLES"].beacon_deactivation_zhop %} {% set Sz = printer["gcode_macro _USER_VARIABLES"].z_drop_speed * 60 %} + G28 Z METHOD=CONTACT CALIBRATE=0 ; calibrate z offset only after tilt + # Check and restore the nozzle temperature if needed # Small Z hop to avoid restoring the temperature directly on the PEI {% set z_safe = printer.toolhead.position.z + beacon_deactivation_zhop %} @@ -51,3 +58,5 @@ gcode: M109 S{old_target_temperature} RESTORE_GCODE_STATE NAME=BEFORE_BEACON_ACTION + + SET_GCODE_VARIABLE MACRO=ACTIVATE_PROBE VARIABLE=is_active VALUE=False From 55b34faddebd3ddbbe8ec8b0e18e39011614a504 Mon Sep 17 00:00:00 2001 From: crkochan <5183896+crkochan@users.noreply.github.com> Date: Mon, 26 Aug 2024 10:23:19 -0700 Subject: [PATCH 42/43] Add more quick start defaults from Beacon docs If home_xy_position is unset, Klipper will throw an `Option 'home_method' is not valid` error message. Adding it, plus other defaults from the Beacon Contact docs. --- config/hardware/probes/beacon_contact.cfg | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/config/hardware/probes/beacon_contact.cfg b/config/hardware/probes/beacon_contact.cfg index a2a9ac9ac..9e50182aa 100644 --- a/config/hardware/probes/beacon_contact.cfg +++ b/config/hardware/probes/beacon_contact.cfg @@ -24,6 +24,11 @@ endstop_pin: probe:z_virtual_endstop homing_retract_dist: 0 [beacon] +home_xy_position: 117.5, 117.5 # update with your safe position +home_z_hop: 5 +home_z_hop_speed: 30 +home_xy_move_speed: 300 +home_y_before_x: false home_method: contact home_method_when_homed: proximity home_autocalibrate: unhomed From f3b050139da564315d28efc85c9245da7faaefa7 Mon Sep 17 00:00:00 2001 From: Claire Kochan <5183896+crkochan@users.noreply.github.com> Date: Mon, 26 Aug 2024 10:27:12 -0700 Subject: [PATCH 43/43] Beacon contact testing (#5) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add calibration to G28 on probe activation Guarantees some calibration occurs when home_method is set to proximity, and home_autocalibrate is set to none. * Track probe activation status Trying to avoid the probing hooks changing status LEDs when they shouldn’t * Calibrate after tilt * Update model prior to tilt * Fix inconsistent indents --- macros/base/probing/beacon_probe.cfg | 4 ++-- macros/base/probing/overrides/beacon_probe_overrides.cfg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/macros/base/probing/beacon_probe.cfg b/macros/base/probing/beacon_probe.cfg index 3ae666052..738127a04 100644 --- a/macros/base/probing/beacon_probe.cfg +++ b/macros/base/probing/beacon_probe.cfg @@ -33,7 +33,7 @@ gcode: {% endif %} {% endif %} - G28 Z METHOD=CONTACT CALIBRATE=1 ; calibrate z offset and beacon model hot + G28 Z METHOD=CONTACT CALIBRATE=1 [gcode_macro DEACTIVATE_PROBE] @@ -42,7 +42,7 @@ gcode: {% set beacon_deactivation_zhop = printer["gcode_macro _USER_VARIABLES"].beacon_deactivation_zhop %} {% set Sz = printer["gcode_macro _USER_VARIABLES"].z_drop_speed * 60 %} - G28 Z METHOD=CONTACT CALIBRATE=0 ; calibrate z offset only after tilt + G28 Z METHOD=CONTACT CALIBRATE=1 # Check and restore the nozzle temperature if needed # Small Z hop to avoid restoring the temperature directly on the PEI diff --git a/macros/base/probing/overrides/beacon_probe_overrides.cfg b/macros/base/probing/overrides/beacon_probe_overrides.cfg index d7c16fa60..5dd0682ea 100644 --- a/macros/base/probing/overrides/beacon_probe_overrides.cfg +++ b/macros/base/probing/overrides/beacon_probe_overrides.cfg @@ -27,7 +27,7 @@ gcode: M204 S{tilting_travel_accel} {% if printer.quad_gantry_level.applied|lower == 'false' %} - _BASE_QUAD_GANTRY_LEVEL RETRY_TOLERANCE=1 {rawparams} + _BASE_QUAD_GANTRY_LEVEL RETRY_TOLERANCE=1 {rawparams} {% endif %} _BASE_QUAD_GANTRY_LEVEL HORIZONTAL_MOVE_Z=2 {rawparams} @@ -65,7 +65,7 @@ gcode: M204 S{tilting_travel_accel} {% if printer.quad_gantry_level.applied|lower == 'false' %} - _BASE_Z_TILT_ADJUST RETRY_TOLERANCE=1 {rawparams} + _BASE_Z_TILT_ADJUST RETRY_TOLERANCE=1 {rawparams} {% endif %} _BASE_Z_TILT_ADJUST HORIZONTAL_MOVE_Z=2 {rawparams}