diff --git a/config/hardware/probes/beacon_contact.cfg b/config/hardware/probes/beacon_contact.cfg new file mode 100644 index 000000000..9e50182aa --- /dev/null +++ b/config/hardware/probes/beacon_contact.cfg @@ -0,0 +1,59 @@ +# 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", "bedmesh", "extruder_heating", "purge", "clean", "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/overrides/beacon_probe_overrides.cfg] +[include ../../../macros/base/homing/beacon_homing_hooks.cfg] + +[stepper_z] +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 +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 + +[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 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] diff --git a/macros/base/homing/beacon_homing_hooks.cfg b/macros/base/homing/beacon_homing_hooks.cfg new file mode 100644 index 000000000..93f7c82bd --- /dev/null +++ b/macros/base/homing/beacon_homing_hooks.cfg @@ -0,0 +1,202 @@ +[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 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 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 %} + {% 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 %} + {% 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 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 homing_travel_speed = printer['gcode_macro _USER_VARIABLES'].homing_travel_speed * 60 %} + {% 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 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_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 %} + + # 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 %} + + +[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 %} + {% set probing_active = printer["gcode_macro ACTIVATE_PROBE"].is_active %} + + # 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" + {% 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 %} + {% set probing_active = printer["gcode_macro ACTIVATE_PROBE"].is_active %} + + # 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 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/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 %} diff --git a/macros/base/probing/beacon_probe.cfg b/macros/base/probing/beacon_probe.cfg new file mode 100644 index 000000000..738127a04 --- /dev/null +++ b/macros/base/probing/beacon_probe.cfg @@ -0,0 +1,62 @@ +# 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 +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 + + {% 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 %} + + G28 Z METHOD=CONTACT CALIBRATE=1 + + +[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 %} + + 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 + {% 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 + + SET_GCODE_VARIABLE MACRO=ACTIVATE_PROBE VARIABLE=is_active VALUE=False 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 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..5dd0682ea --- /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 %} 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 - 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 %} diff --git a/user_templates/printer.cfg b/user_templates/printer.cfg index ae4c1ca3f..829df380a 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 version is 2.x or higher # ---------------------------------------------------------------------------------------- diff --git a/user_templates/variables.cfg b/user_templates/variables.cfg index 8abb6d79a..d51684f16 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,14 @@ 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 +variable_beacon_deactivation_zhop: 5 # this is used to Z hop before restoring the temperature to avoid burnt PEI + + ########################################## # Material and specific print parameters ##########################################