Skip to content

Commit

Permalink
Beacon: re-zero with contact before creating scan compensation mesh (#…
Browse files Browse the repository at this point in the history
…305)

* Homing: add reusable safe z home and z hop macros

* Macros: use new z hop and safe z home macros

* Beacon: re-zero with contact before creating scan compensation mesh

* Macros: remove last occurence of manual move to z-home

* Macros: fix Z_HOP description and naming.

* Homing: add missing speed variable in _MOVE_TO_SAFE_Z_HOME

* Beacon: fix z-hop speed in BEACON_POKE_TEST

* Beacon: fix missing z-hop speed in BEACON_FINAL_CALIBRATION

* Beacon: minor aestethic code changes
  • Loading branch information
miklschmidt authored Oct 12, 2024
1 parent 1554948 commit 41d4c7b
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 104 deletions.
62 changes: 39 additions & 23 deletions homing.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -155,21 +155,7 @@ gcode:
# config
{% set x_homed = 'x' in printer.toolhead.homed_axes %}
{% set y_homed = 'y' in printer.toolhead.homed_axes %}
{% set speed = printer["gcode_macro RatOS"].macro_travel_speed|float * 60 %}
{% set z_hop = printer.configfile.config.ratos_homing.z_hop|float %}
{% set z_hop_speed = printer.configfile.config.ratos_homing.z_hop_speed|float * 60 %}
{% set z_speed = printer["gcode_macro RatOS"].macro_z_speed|float * 60 %}
{% set printable_x_max = printer["gcode_macro RatOS"].printable_x_max|float %}
{% set printable_y_max = printer["gcode_macro RatOS"].printable_y_max|float %}
{% set z_probe = printer["gcode_macro RatOS"].z_probe %}
{% set safe_home_x = printer["gcode_macro RatOS"].safe_home_x %}
{% if safe_home_x is not defined or safe_home_x|lower == 'middle' %}
{% set safe_home_x = printable_x_max / 2 %}
{% endif %}
{% set safe_home_y = printer["gcode_macro RatOS"].safe_home_y %}
{% if safe_home_y is not defined or safe_home_y|lower == 'middle' %}
{% set safe_home_y = printable_y_max / 2 %}
{% endif %}

# beacon contact config
{% set beacon_contact_z_homing = true if printer["gcode_macro RatOS"].beacon_contact_z_homing|default(false)|lower == 'true' else false %}
Expand All @@ -179,7 +165,7 @@ gcode:
{% set Y = true if params.Y|lower == 'true' else false %}
{% set Z = true if params.Z|lower == 'true' else false %}

DEBUG_ECHO PREFIX="HOME_Z" MSG="printable_x_max: {printable_x_max}, printable_y_max: {printable_y_max}, safe_home_x: {safe_home_x}, safe_home_y: {safe_home_y}, axis_maximum.x: {printer.toolhead.axis_maximum.x}, axis_maximum.y: {printer.toolhead.axis_maximum.y}, bed_margin_x: {printer['gcode_macro RatOS'].bed_margin_x}, bed_margin_y: {printer['gcode_macro RatOS'].bed_margin_y}"
DEBUG_ECHO PREFIX="HOME_Z" MSG="x_homed: {x_homed}, y_homed: {y_homed}, z_probe: {z_probe}, beacon_contact_z_homing: {beacon_contact_z_homing}"

# home z
{% if Z or not Y and not X %}
Expand All @@ -189,26 +175,24 @@ gcode:
{% else %}
{% if z_probe == "stowable" %}
DEPLOY_PROBE
G0 X{safe_home_x} Y{safe_home_y} F{speed}
_MOVE_TO_SAFE_Z_HOME
{% if printer.configfile.settings.beacon is defined and beacon_contact_z_homing %}
BEACON_AUTO_CALIBRATE SKIP_MODEL_CREATION=1
G0 Z{z_hop} F{z_hop_speed}
G0 X{safe_home_x} Y{safe_home_y} F{speed}
_MOVE_TO_SAFE_Z_HOME Z_HOP=True
{% else %}
G28 Z
{% endif %}
G0 Z{z_hop} F{z_hop_speed}
_Z_HOP
STOW_PROBE
{% else %}
G0 X{safe_home_x} Y{safe_home_y} F{speed}
_MOVE_TO_SAFE_Z_HOME
{% if printer.configfile.settings.beacon is defined and beacon_contact_z_homing %}
BEACON_AUTO_CALIBRATE SKIP_MODEL_CREATION=1
G0 Z{z_hop} F{z_hop_speed}
G0 X{safe_home_x} Y{safe_home_y} F{speed}
_MOVE_TO_SAFE_Z_HOME Z_HOP=True
{% else %}
G28 Z
{% endif %}
G0 Z{z_hop} F{z_hop_speed}
_Z_HOP
{% endif %}
{% endif %}
{% endif %}
Expand Down Expand Up @@ -345,6 +329,38 @@ gcode:
# Handle toolhead settings
RESTORE_TOOLHEAD_SETTINGS KEY="home_y_sensorless"

[gcode_macro _Z_HOP]
description: Move Z axis up by Z_HOP distance at Z_HOP_SPEED. In relative mode it will move Z axis up by Z_HOP distance. In absolute mode it will move Z axis to Z_HOP distance.
gcode:
{% set z_hop = printer.configfile.config.ratos_homing.z_hop|float %}
{% set z_hop_speed = printer.configfile.config.ratos_homing.z_hop_speed|float * 60 %}

G0 Z{z_hop} F{z_hop_speed}

[gcode_macro _MOVE_TO_SAFE_Z_HOME]
description: Move to safe home position with optional Z_HOP (pass Z_HOP=True as parameter)
gcode:
{% set speed = printer["gcode_macro RatOS"].macro_travel_speed|float * 60 %}
{% set printable_x_max = printer["gcode_macro RatOS"].printable_x_max|float %}
{% set printable_y_max = printer["gcode_macro RatOS"].printable_y_max|float %}
{% set safe_home_x = printer["gcode_macro RatOS"].safe_home_x %}
{% if safe_home_x is not defined or safe_home_x|lower == 'middle' %}
{% set safe_home_x = printable_x_max / 2 %}
{% endif %}
{% set safe_home_y = printer["gcode_macro RatOS"].safe_home_y %}
{% if safe_home_y is not defined or safe_home_y|lower == 'middle' %}
{% set safe_home_y = printable_y_max / 2 %}
{% endif %}

{% if params.Z_HOP is defined %}
_Z_HOP
{% endif %}

DEBUG_ECHO PREFIX="_MOVE_TO_SAFE_Z_HOME" MSG="axis_maximum.x: {printer.toolhead.axis_maximum.x}, axis_maximum.y: {printer.toolhead.axis_maximum.y}, bed_margin_x: {printer['gcode_macro RatOS'].bed_margin_x}, bed_margin_y: {printer['gcode_macro RatOS'].bed_margin_y}, safe_home_x: {safe_home_x}, safe_home_y: {safe_home_y}, printable_x_max: {printable_x_max}, printable_y_max: {printable_y_max}"

# Go to safe home
G0 X{safe_home_x} Y{safe_home_y} F{speed}

[gcode_macro MAYBE_HOME]
description: Only home unhomed axis
variable_is_kinematic_position_overriden: False
Expand Down
22 changes: 4 additions & 18 deletions macros.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -332,8 +332,6 @@ gcode:
{% set total_layer_count = params.TOTAL_LAYER_COUNT|default(0)|int %}
{% set extruder_first_layer_temp = (params.EXTRUDER_TEMP|default("")).split(",") %}
{% set client_post_processor_version = params.POST_PROCESSOR_VERSION|default(0)|int %}
{% set z_hop = printer.configfile.config.ratos_homing.z_hop|float %}
{% set z_speed = printer["gcode_macro RatOS"].macro_z_speed|float * 60 %}

# echo first print coordinates
RATOS_ECHO MSG="First print coordinates X:{first_x} Y:{first_y}"
Expand Down Expand Up @@ -579,7 +577,7 @@ gcode:
MAYBE_HOME

# Make sure we're clear of the bed
G1 Z{z_hop} F{z_speed}
_Z_HOP

# move toolhead to the oozeguard if needed
{% if idex_mode != '' and not (printer.configfile.settings.beacon is defined and beacon_contact_start_print_true_zero) %}
Expand Down Expand Up @@ -870,7 +868,7 @@ gcode:
SET_DUAL_CARRIAGE CARRIAGE=1 MODE=PRIMARY
{% endif %}
{% else %}
G0 X{safe_home_x} Y{safe_home_y} F{speed}
_MOVE_TO_SAFE_Z_HOME
{% endif %}
# Always soak close to first layer height.
G0 Z2 F{z_speed}
Expand All @@ -888,8 +886,6 @@ gcode:
{% set min_temp = printer["gcode_macro RatOS"].preheat_extruder_temp|float %}
{% set max_temp = printer["gcode_macro RatOS"].preheat_extruder_temp|float + 5 %}
{% set speed = printer["gcode_macro RatOS"].macro_travel_speed|float * 60 %}
{% set z_hop_speed = printer.configfile.config.ratos_homing.z_hop_speed|float * 60 %}
{% set z_hop = printer.configfile.config.ratos_homing.z_hop|float %}
{% set default_toolhead = printer["gcode_macro RatOS"].default_toolhead|default(0)|int %}
{% set printable_x_max = printer["gcode_macro RatOS"].printable_x_max|float %}
{% set printable_y_max = printer["gcode_macro RatOS"].printable_y_max|float %}
Expand Down Expand Up @@ -942,7 +938,7 @@ gcode:

# raise z after heat soaking the beacon
{% if printer.configfile.settings.beacon is defined %}
G0 Z{z_hop} F{z_hop_speed}
_Z_HOP
{% endif %}

# automated toolhead z-offset calibration
Expand Down Expand Up @@ -1008,16 +1004,6 @@ gcode:
{% set speed = printer["gcode_macro RatOS"].macro_travel_speed|float * 60 %}
{% set z_speed = printer["gcode_macro RatOS"].macro_z_speed|float * 60 %}
{% set default_toolhead = printer["gcode_macro RatOS"].default_toolhead|default(0)|int %}
{% set printable_x_max = printer["gcode_macro RatOS"].printable_x_max|float %}
{% set printable_y_max = printer["gcode_macro RatOS"].printable_y_max|float %}
{% set safe_home_x = printer["gcode_macro RatOS"].safe_home_x %}
{% if safe_home_x is not defined or safe_home_x|lower == 'middle' %}
{% set safe_home_x = printable_x_max / 2 %}
{% endif %}
{% set safe_home_y = printer["gcode_macro RatOS"].safe_home_y %}
{% if safe_home_y is not defined or safe_home_y|lower == 'middle' %}
{% set safe_home_y = printable_y_max / 2 %}
{% endif %}

# beacon contact config
{% set beacon_contact_true_zero_temp = printer["gcode_macro RatOS"].beacon_contact_true_zero_temp|default(150)|int %}
Expand All @@ -1040,7 +1026,7 @@ gcode:

# moving to safe z-calibration position
G0 Z5 F{z_speed}
G0 X{safe_home_x} Y{safe_home_y} F{speed}
_MOVE_TO_SAFE_Z_HOME
# set probing toolhead to probing temperature
RATOS_ECHO MSG="Heating extruder to probing temperature..."
SET_HEATER_TEMPERATURE HEATER={"extruder" if default_toolhead == 0 else "extruder1"} TARGET={beacon_contact_true_zero_temp}
Expand Down
3 changes: 1 addition & 2 deletions macros/idex/vaoc_z_probe_testing.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -301,9 +301,8 @@ gcode:
{% set printable_x_max = printer["gcode_macro RatOS"].printable_x_max|float %}
{% set printable_y_max = printer["gcode_macro RatOS"].printable_y_max|float %}
{% set speed = printer["gcode_macro RatOS"].macro_travel_speed|float * 60 %}
{% set z_hop = printer.configfile.config.ratos_homing.z_hop|float %}

G0 Z{z_hop} F6000
_Z_HOP
{% for i in range(3) %}
{% for i in range(5) %}
G0 X{printable_x_max/2} Y{printable_y_max/2} F{speed}
Expand Down
81 changes: 26 additions & 55 deletions z-probe/beacon.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -155,12 +155,6 @@ gcode:

# config
{% set speed = printer["gcode_macro RatOS"].macro_travel_speed * 60 %}
{% set z_speed = printer["gcode_macro RatOS"].macro_z_speed|float * 60 %}
{% set z_hop = printer.configfile.config.ratos_homing.z_hop|float %}
{% set printable_x_max = printer["gcode_macro RatOS"].printable_x_max|float %}
{% set printable_y_max = printer["gcode_macro RatOS"].printable_y_max|float %}
{% set center_x = printable_x_max / 2 %}
{% set center_y = printable_y_max / 2 %}

# home x and y axis if not homed already
MAYBE_HOME X=True Y=True
Expand All @@ -171,14 +165,14 @@ gcode:
# Absolute positioning
G90

# move to printable center
G1 X{center_x} Y{center_y} F{(speed)}
# Go to safe home
_MOVE_TO_SAFE_Z_HOME

# auto calibrate beacon
BEACON_AUTO_CALIBRATE

# raise toolhead to safe z-height
G0 Z{z_hop} F{z_speed}
_Z_HOP

# echo
RATOS_ECHO MSG="Initial beacon contact calibration finished!"
Expand All @@ -200,10 +194,9 @@ gcode:
{% set automated = true if params._AUTOMATED|default(false)|lower == 'true' else false %}

# config
{% set z_speed = printer["gcode_macro RatOS"].macro_z_speed|float * 60 %}
{% set z_hop = printer.configfile.config.ratos_homing.z_hop|float %}
{% set default_toolhead = printer["gcode_macro RatOS"].default_toolhead|default(0)|int %}
{% set bed_heat_soak_time = printer["gcode_macro RatOS"].bed_heat_soak_time|default(0)|int %}
{% set z_hop_speed = printer.configfile.config.ratos_homing.z_hop_speed|float * 60 %}

# home and abl the printer if needed
_BEACON_HOME_AND_ABL
Expand All @@ -220,7 +213,7 @@ gcode:
G90

# lower toolhead to heat soaking z height
G0 Z2 F{z_speed}
G0 Z2 F{z_hop_speed}

# echo
RATOS_ECHO MSG="Waiting for calibration temperature..."
Expand All @@ -237,6 +230,9 @@ gcode:
G4 P{(bed_heat_soak_time * 1000)}
{% endif %}

# Make sure we're at safe z-height before calibration
_Z_HOP

# auto calibrate beacon
BEACON_AUTO_CALIBRATE

Expand All @@ -252,7 +248,7 @@ gcode:
{% endif %}

# raise toolhead to safe z-height
G0 Z{z_hop} F{z_speed}
_Z_HOP

# echo
RATOS_ECHO MSG="Final beacon contact calibration finished!"
Expand Down Expand Up @@ -280,8 +276,7 @@ gcode:
{% set automated = true if params._AUTOMATED|default(false)|lower == 'true' else false %}

# config
{% set z_speed = printer["gcode_macro RatOS"].macro_z_speed|float * 60 %}
{% set z_hop = printer.configfile.config.ratos_homing.z_hop|float %}
{% set z_hop_speed = printer.configfile.config.ratos_homing.z_hop_speed|float * 60 %}

# reset results
SET_GCODE_VARIABLE MACRO=BEACON_POKE_TEST VARIABLE=poke_result_1 VALUE=-1
Expand All @@ -297,7 +292,7 @@ gcode:
_LED_BEACON_CALIBRATION_START

# lower toolhead to poking z-height
G0 Z5 F{z_speed}
G0 Z5 F{z_hop_speed}

# poke the bed
_BEACON_PROBE_POKE
Expand All @@ -316,7 +311,7 @@ gcode:
_BEACON_STORE_POKE I=5

# raise toolhead to safe z-height
G0 Z{z_hop} F{z_speed}
_Z_HOP

# echo
RATOS_ECHO MSG="Beacon poke test finished!"
Expand Down Expand Up @@ -422,18 +417,6 @@ gcode:
# config
{% set test_margin = 30 %}
{% set speed = printer["gcode_macro RatOS"].macro_travel_speed|float * 60 %}
{% set z_speed = printer["gcode_macro RatOS"].macro_z_speed|float * 60 %}
{% set z_hop = printer.configfile.config.ratos_homing.z_hop|float %}
{% set printable_x_max = printer["gcode_macro RatOS"].printable_x_max|float %}
{% set printable_y_max = printer["gcode_macro RatOS"].printable_y_max|float %}
{% set safe_home_x = printer["gcode_macro RatOS"].safe_home_x %}
{% if safe_home_x is not defined or safe_home_x|lower == 'middle' %}
{% set safe_home_x = printable_x_max / 2 %}
{% endif %}
{% set safe_home_y = printer["gcode_macro RatOS"].safe_home_y %}
{% if safe_home_y is not defined or safe_home_y|lower == 'middle' %}
{% set safe_home_y = printable_y_max / 2 %}
{% endif %}
{% set default_toolhead = printer["gcode_macro RatOS"].default_toolhead|default(0)|int %}
{% set poke_bottom = printer["gcode_macro RatOS"].beacon_contact_poke_bottom_limit|default(-1)|float %}

Expand All @@ -453,7 +436,6 @@ gcode:

# settle the mechanics down
{% for i in range(10) %}

beacon_poke speed=3 top=5 bottom={poke_bottom}
{% endfor %}

Expand All @@ -474,8 +456,7 @@ gcode:
_BEACON_STORE_NOZZLE_TEMP_OFFSET TEMP=250

# move back to home position
G0 Z{z_hop} F{z_speed}
G0 X{safe_home_x} Y{safe_home_y} F{speed}
_MOVE_TO_SAFE_Z_HOME Z_HOP=True

# turn heater off
SET_HEATER_TEMPERATURE HEATER={"extruder" if default_toolhead == 0 else "extruder1"} TARGET=0
Expand Down Expand Up @@ -649,8 +630,6 @@ variable_margin_y: 40
gcode:
# config
{% set speed = printer["gcode_macro RatOS"].macro_travel_speed|float * 60 %}
{% set z_speed = printer["gcode_macro RatOS"].macro_z_speed|float * 60 %}
{% set z_hop = printer.configfile.config.ratos_homing.z_hop|float %}
{% set printable_x_max = printer["gcode_macro RatOS"].printable_x_max|float %}
{% set printable_y_max = printer["gcode_macro RatOS"].printable_y_max|float %}
{% set safe_home_x = printer["gcode_macro RatOS"].safe_home_x %}
Expand Down Expand Up @@ -730,8 +709,7 @@ gcode:
_BEACON_STORE_GANTRY_TWIST LOCATION="left"

# move back to home position
G0 Z{z_hop} F{z_speed}
G0 X{safe_home_x} Y{safe_home_y} F{speed}
_MOVE_TO_SAFE_Z_HOME Z_HOP=True

# echo results
_BEACON_ECHO_GANTRY_TWIST
Expand Down Expand Up @@ -872,6 +850,9 @@ gcode:
{% endif %}
{% endif %}

# Zero Z with contact to make sure the mesh is created at true zero
BEACON_AUTO_CALIBRATE SKIP_MODEL_CREATION=1

# create contact mesh
BED_MESH_CALIBRATE PROBE_METHOD=contact USE_CONTACT_AREA=1 SAMPLES=2 SAMPLES_DROP=1 SAMPLES_TOLERANCE_RETRIES=10 PROBE_COUNT={probe_count[0]},{probe_count[1]} PROFILE={profile}

Expand All @@ -887,7 +868,7 @@ gcode:
{% endif %}

# home z
G28 Z
BEACON_AUTO_CALIBRATE SKIP_MODEL_CREATION=1

# visual feedback
{% if not automated %}
Expand Down Expand Up @@ -938,24 +919,14 @@ gcode:
#####
[gcode_macro _BEACON_HOME_AND_ABL]
gcode:
# config
{% set speed = printer["gcode_macro RatOS"].macro_travel_speed|float * 60 %}
{% set z_speed = printer["gcode_macro RatOS"].macro_z_speed|float * 60 %}
{% set z_hop_speed = printer.configfile.config.ratos_homing.z_hop_speed|float * 60 %}
{% set z_hop = printer.configfile.config.ratos_homing.z_hop|float %}
{% set printable_x_max = printer["gcode_macro RatOS"].printable_x_max|float %}
{% set printable_y_max = printer["gcode_macro RatOS"].printable_y_max|float %}
{% set safe_home_x = printer["gcode_macro RatOS"].safe_home_x %}
{% if safe_home_x is not defined or safe_home_x|lower == 'middle' %}
{% set safe_home_x = printable_x_max / 2 %}
{% endif %}
{% set safe_home_y = printer["gcode_macro RatOS"].safe_home_y %}
{% if safe_home_y is not defined or safe_home_y|lower == 'middle' %}
{% set safe_home_y = printable_y_max / 2 %}
{% endif %}
# home X/Y if not homed already
MAYBE_HOME X=True Y=True

# Go to safe home
_MOVE_TO_SAFE_Z_HOME Z_HOP=True

# home if not homed already
MAYBE_HOME
# Home z with contact
BEACON_AUTO_CALIBRATE SKIP_MODEL_CREATION=1

# automatic bed leveling
{% set needs_rehoming = False %}
Expand All @@ -974,7 +945,7 @@ gcode:

# Home again as Z will have changed after automatic bed leveling.
{% if needs_rehoming %}
G28 Z
BEACON_AUTO_CALIBRATE SKIP_MODEL_CREATION=1
{% endif %}

[gcode_macro _BEACON_SAVE_MULTIPLIER]
Expand Down
Loading

0 comments on commit 41d4c7b

Please sign in to comment.