printer: use voron-tap instead of magprobe
This commit is contained in:
		
							parent
							
								
									1a502753ea
								
							
						
					
					
						commit
						0dd6d6b370
					
				
					 8 changed files with 57 additions and 938 deletions
				
			
		|  | @ -4,8 +4,5 @@ | ||||||
| ##################################################################### | ##################################################################### | ||||||
| [include debug.cfg] | [include debug.cfg] | ||||||
| [include helpers.cfg] | [include helpers.cfg] | ||||||
| [include override.cfg] |  | ||||||
| [include print.cfg] | [include print.cfg] | ||||||
| [include probe.cfg] |  | ||||||
| [include z_calibration.cfg] |  | ||||||
| [include timelapse.cfg] | [include timelapse.cfg] | ||||||
|  |  | ||||||
|  | @ -59,19 +59,3 @@ gcode: | ||||||
|   M117 HEATING EXTRUDER from {printer.extruder.temperature} to {EXTRUDER} |   M117 HEATING EXTRUDER from {printer.extruder.temperature} to {EXTRUDER} | ||||||
|   M118 HEATING EXTRUDER from {printer.extruder.temperature} to {EXTRUDER} |   M118 HEATING EXTRUDER from {printer.extruder.temperature} to {EXTRUDER} | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| [gcode_macro ZC] |  | ||||||
| gcode: |  | ||||||
|   G28 |  | ||||||
|   CALIBRATE_Z |  | ||||||
|   G0 X150 Y30 Z2 F10000 |  | ||||||
|   G0 Z1 F300 |  | ||||||
| 
 |  | ||||||
| [gcode_macro TZC] |  | ||||||
| gcode: |  | ||||||
|   {% set N=params.N|default(1)|int %} |  | ||||||
|   {% for i in range(N) %} |  | ||||||
|     M118 move {(i+1)}/{N} |  | ||||||
|     G28 |  | ||||||
|     CALIBRATE_Z |  | ||||||
|   {% endfor %} |  | ||||||
|  |  | ||||||
|  | @ -1,147 +0,0 @@ | ||||||
| ##################################################################### |  | ||||||
| #	Customized standard macros |  | ||||||
| ##################################################################### |  | ||||||
| # |  | ||||||
| #        !!! Caution !!! |  | ||||||
| # |  | ||||||
| # PROBE_CALIBRATE can not dock the Magprobe automatically, as it |  | ||||||
| # start's a scripting process we need to stop at the execution |  | ||||||
| # of the base macro. Use |  | ||||||
| #  - PROBE_ABORT |  | ||||||
| #  - PROBE_ACCEPT |  | ||||||
| # instead of the original ABORT and ACCEPT to also dock the probe |  | ||||||
| # |  | ||||||
| # - BED_MESH_CALIBRATE |  | ||||||
| # - G0 |  | ||||||
| # - G1 |  | ||||||
| # - QUAD_GANTRY_LEVEL |  | ||||||
| ##################################################################### |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## BED_MESH_CALIBRATE |  | ||||||
| [gcode_macro BED_MESH_CALIBRATE] |  | ||||||
| description: Perform QGL and bed mesh leveling |  | ||||||
| rename_existing: _BED_MESH_CALIBRATE_BASE |  | ||||||
| gcode: |  | ||||||
|   ##### get params and prepare to send them to the base macro ##### |  | ||||||
|   {% set get_params = [] %} |  | ||||||
|   {% for key in params %} |  | ||||||
|     {% set get_params = get_params.append(key + "=" + params[key])  %} |  | ||||||
|   {% endfor %} |  | ||||||
|   ##### end of definitions ##### |  | ||||||
|   _CG28 |  | ||||||
|   BED_MESH_CLEAR |  | ||||||
|   ## check if QGL was already executed |  | ||||||
|   {% if printer.quad_gantry_level.applied|lower == 'false' %} |  | ||||||
|     QUAD_GANTRY_LEVEL PARK=false |  | ||||||
|   {% endif %} |  | ||||||
|   ATTACH_PROBE |  | ||||||
|   _BED_MESH_CALIBRATE_BASE {get_params|join(" ")} |  | ||||||
|   DETACH_PROBE |  | ||||||
| 
 |  | ||||||
| ## GO |  | ||||||
| # If your probe needs a Z move for attach/detach use either |  | ||||||
| #   G0 .... FORCE |  | ||||||
| [gcode_macro G0] |  | ||||||
| description: Move gcode that prevents moves lower than the limit when probe attached |  | ||||||
| rename_existing: G0.1 |  | ||||||
| gcode: |  | ||||||
|   ##### set manual override ##### |  | ||||||
|   {% if 'FORCE' in params|upper %} |  | ||||||
|     {% set force = 1 %} |  | ||||||
|   {% else %} |  | ||||||
|     {% set force = 0 %} |  | ||||||
|   {% endif %} |  | ||||||
|   ##### get params ##### |  | ||||||
|   {% set get_params = [] %} |  | ||||||
|   {% for key in params %} |  | ||||||
|     {% if key is not in ['G', 'FORCE'] %} ;G1/G0 is also seen as parameter |  | ||||||
|       {% set get_params = get_params.append(key + "=" + params[key])  %} |  | ||||||
|     {% endif %} |  | ||||||
|   {% endfor %} |  | ||||||
|   ##### add caller ##### |  | ||||||
|   {% set tmp = get_params.append("CALLER=G0") %} ;hack to append list objects outside of a loop |  | ||||||
|   ##### add force ##### |  | ||||||
|   {% set tmp = get_params.append("FORCE=" + force|string) %} ;hack to append list objects outside of a loop |  | ||||||
|   ##### end of definition ##### |  | ||||||
|   {% if printer['gcode_macro _MAG_PROBE'].state|lower == 'unknown' and force == 0 %} |  | ||||||
|     _MAG_PROBE ACTION=GET_STATUS RESPOND=0 |  | ||||||
|   {% endif %} |  | ||||||
|   _Z_MOVE_CHECK {get_params|join(" ")} |  | ||||||
| 
 |  | ||||||
| ## TODO |  | ||||||
| ## G1 |  | ||||||
| # If your probe needs a Z move for attach/detach use either |  | ||||||
| #   G1 .... FORCE |  | ||||||
| # [gcode_macro G1] |  | ||||||
| # description: Move gcode that prevents moves lower than the limit when probe attached |  | ||||||
| # rename_existing: G1.1 |  | ||||||
| # gcode: |  | ||||||
| #   ##### set manual override ##### |  | ||||||
| #   {% if 'FORCE' in params|upper %} |  | ||||||
| #     {% set force = 1 %} |  | ||||||
| #   {% else %} |  | ||||||
| #     {% set force = 0 %} |  | ||||||
| #   {% endif %} |  | ||||||
| #   ##### get params ##### |  | ||||||
| #   {% set get_params = [] %} |  | ||||||
| #   {% for key in params %} |  | ||||||
| #     {% if key is not in ['G', 'FORCE'] %} ;G1/G0 is also seen as parameter |  | ||||||
| #       {% set get_params = get_params.append(key + "=" + params[key])  %} |  | ||||||
| #     {% endif %} |  | ||||||
| #   {% endfor %} |  | ||||||
| #   ##### add caller ##### |  | ||||||
| #   {% set tmp = get_params.append("CALLER=G1") %} ;hack to append list objects outside of a loop |  | ||||||
| #   ##### add force ##### |  | ||||||
| #   {% set tmp = get_params.append("FORCE=" + force|string) %} ;hack to append list objects outside of a loop |  | ||||||
| #   ##### end of definition ##### |  | ||||||
| #   {% if printer['gcode_macro _MAG_PROBE'].state|lower == 'unknown' and force == 0 %} |  | ||||||
| #     _MAG_PROBE ACTION=GET_STATUS RESPOND=0 |  | ||||||
| #   {% endif %} |  | ||||||
| #   _Z_MOVE_CHECK {get_params|join(" ")} |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## QUAD_GANTRY_LEVEL |  | ||||||
| [gcode_macro QUAD_GANTRY_LEVEL] |  | ||||||
| description: Level a flying gantry to a stationary bed |  | ||||||
| rename_existing: _QUAD_GANTRY_LEVEL |  | ||||||
| gcode: |  | ||||||
|   #####  get user defines  ##### |  | ||||||
|   {% set park_pos = printer['gcode_macro _USER_VARIABLE'].park_bed %} |  | ||||||
|   {% set z_hop = printer['gcode_macro _USER_VARIABLE'].z_hop|float %} |  | ||||||
|   ##### get toolhead position ##### |  | ||||||
|   {% set act_z = printer.toolhead.position.z|float %} |  | ||||||
|   #####  set default  ##### |  | ||||||
|   {% set park = params.PARK|default('true') %} |  | ||||||
|   #####  end of definitions  ##### |  | ||||||
|   # home all axes if not already |  | ||||||
|   {% if "xyz" not in printer.toolhead.homed_axes %} |  | ||||||
|     _CG28 |  | ||||||
|   {% endif %} |  | ||||||
|   SAVE_GCODE_STATE NAME=STATE_QUAD_GANTRY_LEVEL |  | ||||||
|   _SET_ACC VAL=HOME |  | ||||||
|   _SET_CURRENT VAL=HOME |  | ||||||
|   _CG28 RESET_SETTINGS=false |  | ||||||
|   {% if act_z < z_hop %} |  | ||||||
|     G1 Z{z_hop} F900 ; move head up to insure Probe is not triggered in error case |  | ||||||
|   {% endif %} |  | ||||||
|   ATTACH_PROBE |  | ||||||
|   _QUAD_GANTRY_LEVEL |  | ||||||
|   {% if params.CALIBRATE|default('false') == 'true' %} |  | ||||||
|     CALIBRATE_Z RESET_SETTINGS=false |  | ||||||
|   {% else %} |  | ||||||
|     DETACH_PROBE |  | ||||||
|   {% endif %} |  | ||||||
|   #G28 Z |  | ||||||
|   {% if params.RESET_SETTINGS|default('true') == 'true' %} |  | ||||||
|     _SET_CURRENT |  | ||||||
|     _SET_ACC |  | ||||||
|   {% endif %} |  | ||||||
|   {% if park|lower == 'true' %} |  | ||||||
|     G90 |  | ||||||
|     G0 Z{park_pos[2]} F1800           ; move nozzle to z high first |  | ||||||
|     G0 X{park_pos[0]} Y{park_pos[1]} F18000 ; home to get toolhead in the middle |  | ||||||
|   {% endif %} |  | ||||||
|   RESTORE_GCODE_STATE NAME=STATE_QUAD_GANTRY_LEVEL |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|  | @ -22,9 +22,10 @@ | ||||||
| gcode: | gcode: | ||||||
|   {% set x0=250 %} |   {% set x0=250 %} | ||||||
|   {% set x1=200 %} |   {% set x1=200 %} | ||||||
|   {% set y0=308 %} |   {% set y0=printer.toolhead.axis_maximum.y %} | ||||||
|   {% set z0=1.0 %} |   {% set z0=1.0 %} | ||||||
|   {% set z_hop = printer['gcode_macro _USER_VARIABLE'].z_hop|int %} |   # {% set z_hop = printer['gcode_macro _USER_VARIABLE'].z_hop|int %} | ||||||
|  |   {% set z_hop = 10 %} | ||||||
|   {% if "xyz" in printer.toolhead.homed_axes %} |   {% if "xyz" in printer.toolhead.homed_axes %} | ||||||
|     G0 Z{z_hop} F1000           # move Z to travel height |     G0 Z{z_hop} F1000           # move Z to travel height | ||||||
|     G0 X{x0} Y{y0} F6000        # move to x0/y0 |     G0 X{x0} Y{y0} F6000        # move to x0/y0 | ||||||
|  | @ -99,9 +100,9 @@ gcode: | ||||||
|     {% if z_safe > z_max %} |     {% if z_safe > z_max %} | ||||||
|         {% set z_safe = z_max %} |         {% set z_safe = z_max %} | ||||||
|     {% endif %} |     {% endif %} | ||||||
|     G91 |     G91                   # use relative coordinates | ||||||
|     G0 Z{z_safe} F1200 |     G0 Z{z_safe} F1200 | ||||||
|     G90 |     G90                   # use absolute coordinates | ||||||
|     G0 X{x_park} Y{y_park} F6000 |     G0 X{x_park} Y{y_park} F6000 | ||||||
|   {% else %} |   {% else %} | ||||||
|     M118 printer not homed |     M118 printer not homed | ||||||
|  | @ -126,12 +127,12 @@ gcode: | ||||||
|     {% if printer.extruder.can_extrude %} |     {% if printer.extruder.can_extrude %} | ||||||
|       G1 E-1.0 F1500.0 |       G1 E-1.0 F1500.0 | ||||||
|     {% endif %} |     {% endif %} | ||||||
|     G90 |     G90                   # use absolute coordinates | ||||||
|     SAVE_GCODE_STATE NAME=PAUSE_state |     SAVE_GCODE_STATE NAME=PAUSE_state | ||||||
|     _PAUSE_BASE |     _PAUSE_BASE | ||||||
|     G91 |     G91                   # use relative coordinates | ||||||
|     G1 Z{z_safe} F900 |     G1 Z{z_safe} F900 | ||||||
|     G90 |     G90                   # use absolute coordinates | ||||||
|     G0 X{x_park} Y{y_park} F6000 |     G0 X{x_park} Y{y_park} F6000 | ||||||
|   {% else %} |   {% else %} | ||||||
|     M117 already paused |     M117 already paused | ||||||
|  | @ -155,7 +156,7 @@ gcode: | ||||||
|   M118 CONFIGURING |   M118 CONFIGURING | ||||||
|   SET_GCODE_OFFSET Z=0.0  # reset z offset |   SET_GCODE_OFFSET Z=0.0  # reset z offset | ||||||
|   M140 S{BED}             # start bed heating to bed |   M140 S{BED}             # start bed heating to bed | ||||||
|   M104 S{EXTRUDER}        # start extruder heating |   # M104 S{EXTRUDER}        # start extruder heating | ||||||
|   G92 E0                  # reset extruder |   G92 E0                  # reset extruder | ||||||
|   G21                     # set units to millimeters |   G21                     # set units to millimeters | ||||||
|   G90                     # use absolute coordinates |   G90                     # use absolute coordinates | ||||||
|  | @ -180,14 +181,9 @@ gcode: | ||||||
|     M118 BED MESH LOAD {SHEET} |     M118 BED MESH LOAD {SHEET} | ||||||
|     BED_MESH_PROFILE LOAD={SHEET} |     BED_MESH_PROFILE LOAD={SHEET} | ||||||
|   {% endif %} |   {% endif %} | ||||||
|   # CALIBRATE_Z |  | ||||||
|   M117 CALIBRATE_Z |  | ||||||
|   M118 CALIBRATE_Z |  | ||||||
|   # G28 Z # irrelevant? |  | ||||||
|   BRUSHIE |  | ||||||
|   CALIBRATE_Z |  | ||||||
| 
 | 
 | ||||||
|   G92 E0                  #  reset extruder |   G92 E0                  # reset extruder | ||||||
|  |   G90                     # use absolute coordinates | ||||||
|   NOTIFY_BED BED={BED} |   NOTIFY_BED BED={BED} | ||||||
|   M190 S{BED}             # set and wait for actual bed temperature |   M190 S{BED}             # set and wait for actual bed temperature | ||||||
|   M109 S{EXTRUDER}        # set and wait for extruder temperature |   M109 S{EXTRUDER}        # set and wait for extruder temperature | ||||||
|  | @ -230,7 +226,8 @@ gcode: | ||||||
|   {% set x1=params.x1|default(200) %} |   {% set x1=params.x1|default(200) %} | ||||||
|   {% set y0=params.y0|default(2) %} |   {% set y0=params.y0|default(2) %} | ||||||
|   {% set y1=params.y1|default(3) %} |   {% set y1=params.y1|default(3) %} | ||||||
|   {% set z_hop = printer['gcode_macro _USER_VARIABLE'].z_hop|int %} |   # {% set z_hop = printer['gcode_macro _USER_VARIABLE'].z_hop|int %} | ||||||
|  |   {% set z_hop = 10 %} | ||||||
|   M118 purge nozzle |   M118 purge nozzle | ||||||
|   G0 Z{z_hop} F300            # move Z to travel height |   G0 Z{z_hop} F300            # move Z to travel height | ||||||
|   G0 X{x0} Y{y0} F5000        # move to x0/y0 |   G0 X{x0} Y{y0} F5000        # move to x0/y0 | ||||||
|  | @ -239,7 +236,7 @@ gcode: | ||||||
|   G0 Y{y1}                    # move to y1 |   G0 Y{y1}                    # move to y1 | ||||||
|   G0 X{x0} E10                # draw fine line |   G0 X{x0} E10                # draw fine line | ||||||
|   G0 X{x0-10}                 # move a little further |   G0 X{x0-10}                 # move a little further | ||||||
|   G0 E-5                      # retract filament |   # G0 E-5                      # retract filament | ||||||
|   G0 Z{z_hop} F300            # move Z to travel height |   G0 Z{z_hop} F300            # move Z to travel height | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										440
									
								
								macros/probe.cfg
									
										
									
									
									
								
							
							
						
						
									
										440
									
								
								macros/probe.cfg
									
										
									
									
									
								
							|  | @ -1,440 +0,0 @@ | ||||||
| ##################################################################### |  | ||||||
| # Macros for mag probe |  | ||||||
| # - ATTACH_PROBE |  | ||||||
| # - DETACH_PROBE |  | ||||||
| # - GET_PROBE_STATUS |  | ||||||
| # - QUERY_PROBE |  | ||||||
| # - PROBE |  | ||||||
| # - PROBE_ABORT |  | ||||||
| # - PROBE_ACCURACY |  | ||||||
| # - PROBE_ACCEPT |  | ||||||
| # - PROBE_CALIBRATE |  | ||||||
| # - SET_PROBE_STATUS |  | ||||||
| # - _ATTACH_PROBE |  | ||||||
| # - _DOCK_PROBE |  | ||||||
| # - _MAG_PROBE |  | ||||||
| # - _PROBE_ACTION |  | ||||||
| # - _Z_MOVE_CHECK |  | ||||||
| ##################################################################### |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## ATTACH_PROBE |  | ||||||
| [gcode_macro ATTACH_PROBE] |  | ||||||
| description: Attaching the MagProbe if not already attached |  | ||||||
| gcode: |  | ||||||
|   _MAG_PROBE ACTION=ATTACH |  | ||||||
|   _MAG_PROBE ACTION=CHECK_ATTACH |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## DETACH_PROBE |  | ||||||
| [gcode_macro DETACH_PROBE] |  | ||||||
| description: Dock the MagProbe if not already docked |  | ||||||
| gcode: |  | ||||||
|   _MAG_PROBE ACTION=DOCK |  | ||||||
|   _MAG_PROBE ACTION=CHECK_DOCK |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## GET_PROBE_STATUS |  | ||||||
| [gcode_macro GET_PROBE_STATUS] |  | ||||||
| description: Prints the current MagProbe state, valid probe states are UNKNOWN, ATTACHED and DOCKED |  | ||||||
| gcode: |  | ||||||
|   _MAG_PROBE ACTION=GET_STATUS RESPOND=1 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## QUERY_PROBE |  | ||||||
| [gcode_macro QUERY_PROBE] |  | ||||||
| description: Return the status of the z-probe and store ID |  | ||||||
| rename_existing: _QUERY_PROBE_BASE |  | ||||||
| variable_id: 0 |  | ||||||
| gcode: |  | ||||||
|   {% set id = params.ID|default(0) %} ; call id 0 means invalid |  | ||||||
|   _QUERY_PROBE_BASE |  | ||||||
|   SET_GCODE_VARIABLE MACRO=QUERY_PROBE VARIABLE=id VALUE={id} |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## PROBE |  | ||||||
| [gcode_macro PROBE] |  | ||||||
| description: Probe Z-height at current XY position and dock/undock MagProbe |  | ||||||
| rename_existing: _PROBE_BASE |  | ||||||
| gcode: |  | ||||||
|   #####  get new parameter. ##### |  | ||||||
|   {% set dock = params.DOCK|default(1)|int %} ; use DOCK=0 to omit the probe docking |  | ||||||
|   ##### get user defines  ##### |  | ||||||
|   {% set z_min = printer['gcode_macro _USER_VARIABLE'].probe_z_min|float %} |  | ||||||
|   {% set t_speed = printer['gcode_macro _USER_VARIABLE'].probe_travel_speed|float * 60 %} |  | ||||||
|   ##### get toolhead parameters ##### |  | ||||||
|   {% set act_z = printer.gcode_move.gcode_position.z|float %} |  | ||||||
|   {% set absolute_coordinates = printer.gcode_move.absolute_coordinates|lower %} |  | ||||||
|   ##### get params and prepare to send them to the base macro ##### |  | ||||||
|   {% set get_params = [] %} |  | ||||||
|   {% for key in params %} |  | ||||||
|     {% set get_params = get_params.append(key + "=" + params[key])  %} |  | ||||||
|   {% endfor %} |  | ||||||
|   ##### end of definitions ##### |  | ||||||
|   # as we need to return to the position with the probe we need to be at least at z_min |  | ||||||
|   G90 ; absolute positioning |  | ||||||
|   {% if act_z < z_min %} |  | ||||||
|     {action_respond_info("PROBE: High must be above %.2f" % z_min)} |  | ||||||
|     G1 Z{z_min} F900 ; move head up |  | ||||||
|   {% endif %} |  | ||||||
|   M400 ; get the buffer cleared first |  | ||||||
|   SAVE_GCODE_STATE NAME=STATE_PROBE |  | ||||||
|   ATTACH_PROBE |  | ||||||
|   RESTORE_GCODE_STATE NAME=STATE_PROBE MOVE=1 MOVE_SPEED={t_speed} |  | ||||||
|   {% if printer.toolhead.position.y|float > 270 %} |  | ||||||
|     G0 Y270 |  | ||||||
|   {% endif %} |  | ||||||
|   _PROBE_BASE {get_params|join(" ")} |  | ||||||
|   G1 Z{z_min} F900 ; move head up to remove trigger |  | ||||||
|   {% if dock == 1 %} |  | ||||||
|     DETACH_PROBE |  | ||||||
|     RESTORE_GCODE_STATE NAME=STATE_PROBE MOVE=1 MOVE_SPEED={t_speed} |  | ||||||
|   {% endif %} |  | ||||||
|   {% if absolute_coordinates == 'false' %} G91 {% endif %} |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## PROBE_ABORT |  | ||||||
| [gcode_macro PROBE_ABORT] |  | ||||||
| description: Abort manual Z probing tool for Probe and dock MagProbe |  | ||||||
| variable_caller: 'unknown' |  | ||||||
| variable_absolute_coordinates: False |  | ||||||
| gcode: |  | ||||||
|   ##### get user defines  ##### |  | ||||||
|   {% set t_speed = printer['gcode_macro _USER_VARIABLE'].probe_travel_speed|float * 60 %} |  | ||||||
|   ##### end of definitions ##### |  | ||||||
|   {% if caller|lower|string == 'calib' %} |  | ||||||
|     ABORT |  | ||||||
|     DETACH_PROBE |  | ||||||
|     RESTORE_GCODE_STATE NAME=STATE_PROBE_CALIBRATE MOVE=1 MOVE_SPEED={t_speed} |  | ||||||
|     {% if absolute_coordinates == 'false' %} G91 {% endif %} |  | ||||||
|       SET_GCODE_VARIABLE MACRO=PROBE_ABORT VARIABLE=caller VALUE='"unknown"' |  | ||||||
|   {% else %} |  | ||||||
|     {action_respond_info("PROBE_ABORT: Executed while PROBE_CALIBRATE is not running")} |  | ||||||
|   {% endif %} |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## PROBE_ACCURACY |  | ||||||
| [gcode_macro PROBE_ACCURACY] |  | ||||||
| description: Probe Z-height accuracy at current XY position and dock/undock MagProbe |  | ||||||
| rename_existing: _PROBE_ACCURACY_BASE |  | ||||||
| gcode: |  | ||||||
|   #####  get new parameter. ##### |  | ||||||
|   {% set dock = params.DOCK|default(1)|int %} ; use DOCK=0 to omit the probe docking |  | ||||||
|   ##### get user defines  ##### |  | ||||||
|   {% set z_min = printer['gcode_macro _USER_VARIABLE'].probe_z_min|float %} |  | ||||||
|   {% set t_speed = printer['gcode_macro _USER_VARIABLE'].probe_travel_speed|float * 60 %} |  | ||||||
|   ##### get toolhead parameters ##### |  | ||||||
|   {% set act_z = printer.gcode_move.gcode_position.z|float %} |  | ||||||
|   {% set absolute_coordinates = printer.gcode_move.absolute_coordinates|lower %} |  | ||||||
|   ##### get params and prepare to send them to the base macro ##### |  | ||||||
|   {% set get_params = [] %} |  | ||||||
|   {% for key in params %} |  | ||||||
|     {% set get_params = get_params.append(key + "=" + params[key])  %} |  | ||||||
|   {% endfor %} |  | ||||||
|   ##### end of definitions ##### |  | ||||||
|   # as we need to return to the position with the probe we need to be at least at z_min |  | ||||||
|   G90 ; absolute positioning |  | ||||||
|   {% if act_z < z_min %} |  | ||||||
|     {action_respond_info("PROBE_ACCURACY: High must be above %.2f" % z_min)} |  | ||||||
|     G1 Z{z_min} F900 ; move head up |  | ||||||
|   {% endif %} |  | ||||||
|   M400 ; get the buffer cleared first |  | ||||||
|   SAVE_GCODE_STATE NAME=STATE_PROBE_ACCURACY |  | ||||||
|   ATTACH_PROBE |  | ||||||
|   RESTORE_GCODE_STATE NAME=STATE_PROBE_ACCURACY MOVE=1 MOVE_SPEED={t_speed} |  | ||||||
|   _PROBE_ACCURACY_BASE {get_params|join(" ")} |  | ||||||
|   {% if dock == 1 %} |  | ||||||
|     DETACH_PROBE |  | ||||||
|     RESTORE_GCODE_STATE NAME=STATE_PROBE_ACCURACY MOVE=1 MOVE_SPEED={t_speed} |  | ||||||
|   {% endif %} |  | ||||||
|   {% if absolute_coordinates == 'false' %} G91 {% endif %} |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## PROBE_ACCEPT |  | ||||||
| [gcode_macro PROBE_ACCEPT] |  | ||||||
| description: Accept the current Z position for Probe and dock MagProbe |  | ||||||
| gcode: |  | ||||||
|   #####  get variables from ABORT  ##### |  | ||||||
|   {% set caller = printer['gcode_macro PROBE_ABORT'].caller %} |  | ||||||
|   {% set absolute_coordinates = printer['gcode_macro PROBE_ABORT'].absolute_coordinates %} |  | ||||||
|   ##### get user defines  ##### |  | ||||||
|   {% set t_speed = printer['gcode_macro _USER_VARIABLE'].probe_travel_speed|float * 60 %} |  | ||||||
|   ##### end of definitions ##### |  | ||||||
|   {% if caller|lower|string == 'calib' %} |  | ||||||
|     ACCEPT |  | ||||||
|     DETACH_PROBE |  | ||||||
|     RESTORE_GCODE_STATE NAME=STATE_PROBE_CALIBRATE MOVE=1 MOVE_SPEED={t_speed} |  | ||||||
|     {% if absolute_coordinates == 'false' %} G91 {% endif %} |  | ||||||
|       SET_GCODE_VARIABLE MACRO=PROBE_ABORT VARIABLE=caller VALUE='"unknown"' |  | ||||||
|   {% else %} |  | ||||||
|     {action_respond_info("PROBE_ACCEPT: Executed while PROBE_CALIBRATE is not running")} |  | ||||||
|   {% endif %} |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## PROBE_CALIBRATE |  | ||||||
| [gcode_macro PROBE_CALIBRATE] |  | ||||||
| description: Calibrate the probes z_offset and undock MagProbe |  | ||||||
| rename_existing: _PROBE_CALIBRATE_BASE |  | ||||||
| gcode: |  | ||||||
|   ##### get user defines  ##### |  | ||||||
|   {% set z_min = printer['gcode_macro _USER_VARIABLE'].probe_z_min|float %} |  | ||||||
|   {% set t_speed = printer['gcode_macro _USER_VARIABLE'].probe_travel_speed|float * 60 %} |  | ||||||
|   ##### get toolhead parameters ##### |  | ||||||
|   {% set act_z = printer.gcode_move.gcode_position.z|float %} |  | ||||||
|   {% set absolute_coordinates = printer.gcode_move.absolute_coordinates|lower %} |  | ||||||
|   ##### get params and prepare to send them to the base macro ##### |  | ||||||
|   {% set get_params = [] %} |  | ||||||
|   {% for key in params %} |  | ||||||
|     {% set get_params = get_params.append(key + "=" + params[key])  %} |  | ||||||
|   {% endfor %} |  | ||||||
|   ##### end of definitions ##### |  | ||||||
|   # as we need to return to the position with the probe we need to be at least at z_min |  | ||||||
|   G90 ; absolute positioning |  | ||||||
|   {% if act_z < z_min %} |  | ||||||
|     {action_respond_info("PROBE_CALIBRATE: High must be above %.2f" % z_min)} |  | ||||||
|     G1 Z{z_min} F900 ; move head up |  | ||||||
|   {% endif %} |  | ||||||
|   M400 ; get the buffer cleared first |  | ||||||
|   SAVE_GCODE_STATE NAME=STATE_PROBE_CALIBRATE |  | ||||||
|   ATTACH_PROBE |  | ||||||
|   RESTORE_GCODE_STATE NAME=STATE_PROBE_CALIBRATE MOVE=1 MOVE_SPEED={t_speed} |  | ||||||
|   SET_GCODE_VARIABLE MACRO=PROBE_ABORT VARIABLE=caller VALUE='"calib"' |  | ||||||
|   SET_GCODE_VARIABLE MACRO=PROBE_ABORT VARIABLE=absolute_coordinates VALUE='"{absolute_coordinates}"' |  | ||||||
|   _PROBE_CALIBRATE_BASE {get_params|join(" ")} |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## SET_PROBE_STATUS |  | ||||||
| [gcode_macro SET_PROBE_STATUS] |  | ||||||
| description: Manually specify MagProbe status, valid probe states are UNKNOWN, ATTACHED and DOCKED |  | ||||||
| variable_state: 'unknown' |  | ||||||
| gcode: |  | ||||||
|   {% if 'STATE' in params|upper and |  | ||||||
|         (params.STATE|lower == 'unknown' or params.STATE|lower == 'attached' or params.STATE|lower == 'docked') %} |  | ||||||
|     SET_GCODE_VARIABLE MACRO=SET_PROBE_STATUS VARIABLE=state VALUE='"{params.STATE|lower}"' |  | ||||||
|     SET_GCODE_VARIABLE MACRO=_MAG_PROBE VARIABLE=state VALUE='"{params.STATE|lower}"' |  | ||||||
|   {% else %} |  | ||||||
|     {% set state = params.STATE|default('none') %} |  | ||||||
|     {action_raise_error("Invalid probe state: %s. Valid probe states are [UNKNOWN, ATTACHED, DOCKED]" % state|upper)} |  | ||||||
|   {% endif %} |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## _ATTACH_PROBE |  | ||||||
| [gcode_macro _ATTACH_PROBE] |  | ||||||
| description: Helper: Attach MagProbe |  | ||||||
| gcode: |  | ||||||
|   ##### Get user defines ##### |  | ||||||
|   {% set dock_x = printer['gcode_macro _USER_VARIABLE'].probe_dock_x %} |  | ||||||
|   {% set dock_y = printer['gcode_macro _USER_VARIABLE'].probe_dock_y %} |  | ||||||
|   {% set dock_z = printer['gcode_macro _USER_VARIABLE'].probe_dock_z %} |  | ||||||
|   {% set undock_x = printer['gcode_macro _USER_VARIABLE'].probe_undock_x %} |  | ||||||
|   {% set undock_y = printer['gcode_macro _USER_VARIABLE'].probe_undock_y %} |  | ||||||
|   {% set undock_z = printer['gcode_macro _USER_VARIABLE'].probe_undock_z %} |  | ||||||
|   {% set z_min = printer['gcode_macro _USER_VARIABLE'].probe_z_min|float %} |  | ||||||
|   {% set t_speed = printer['gcode_macro _USER_VARIABLE'].probe_travel_speed|float * 60 %} |  | ||||||
|   {% set d_speed = printer['gcode_macro _USER_VARIABLE'].probe_dock_speed|float * 60 %} |  | ||||||
|   ##### get toolhead position ##### |  | ||||||
|   {% set act_z = printer.toolhead.position.z|float %} |  | ||||||
|   ##### end of definitions ##### |  | ||||||
|   SAVE_GCODE_STATE NAME=STATE_ATTACH_PROBE |  | ||||||
|   SET_GCODE_OFFSET Z=0.0                ; reset offset - will be restored |  | ||||||
|   G90                                   ; absolute positioning |  | ||||||
|   {% if act_z < z_min %} |  | ||||||
|     G0 Z{z_min} F1500                   ; move head up |  | ||||||
|   {% endif %} |  | ||||||
| 
 |  | ||||||
|   ##### gantry dock: |  | ||||||
|   G0 X{undock_x} Y{undock_y} F{t_speed} ; move next to mag-probe |  | ||||||
|   G0 X{dock_x} F{d_speed}               ; move sideways to attach probe |  | ||||||
|   G0 Y{dock_y} F{d_speed}               ; move out of holder |  | ||||||
| 
 |  | ||||||
|   RESTORE_GCODE_STATE NAME=STATE_ATTACH_PROBE |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## _DOCK_PROBE |  | ||||||
| [gcode_macro _DOCK_PROBE] |  | ||||||
| description: Helper: Dock MagProbe |  | ||||||
| gcode: |  | ||||||
|   ##### Get user defines ##### |  | ||||||
|   {% set dock_x = printer['gcode_macro _USER_VARIABLE'].probe_dock_x %} |  | ||||||
|   {% set dock_y = printer['gcode_macro _USER_VARIABLE'].probe_dock_y %} |  | ||||||
|   {% set dock_z = printer['gcode_macro _USER_VARIABLE'].probe_dock_z %} |  | ||||||
|   {% set undock_x = printer['gcode_macro _USER_VARIABLE'].probe_undock_x %} |  | ||||||
|   {% set undock_y = printer['gcode_macro _USER_VARIABLE'].probe_undock_y %} |  | ||||||
|   {% set undock_z = printer['gcode_macro _USER_VARIABLE'].probe_undock_z %} |  | ||||||
|   {% set z_min = printer['gcode_macro _USER_VARIABLE'].probe_z_min|float %} |  | ||||||
|   {% set t_speed = printer['gcode_macro _USER_VARIABLE'].probe_travel_speed|float * 60 %} |  | ||||||
|   {% set d_speed = printer['gcode_macro _USER_VARIABLE'].probe_dock_speed|float * 60 %} |  | ||||||
|   ##### get toolhead position ##### |  | ||||||
|   {% set act_z = printer.toolhead.position.z|float %} |  | ||||||
|   ##### end of definitions ##### |  | ||||||
|   SAVE_GCODE_STATE NAME=STATE_DOCK_PROBE |  | ||||||
|   SET_GCODE_OFFSET Z=0.0                ; reset offset - will be restored |  | ||||||
|   G90                                   ; absolute positioning |  | ||||||
|   {% if act_z < z_min %} |  | ||||||
|     G0 Z{z_min} F900                    ; move head up |  | ||||||
|   {% endif %} |  | ||||||
| 
 |  | ||||||
|   ################################################################### |  | ||||||
|   #        !!! Caution !!! |  | ||||||
|   # |  | ||||||
|   # Adapt for your needs if needed !! |  | ||||||
|   ################################################################### |  | ||||||
| 
 |  | ||||||
|   ##### Example for a bed dock: |  | ||||||
|   #G0 X{dock_x} Y{dock_y} F{t_speed}     ; move to mag-probe |  | ||||||
|   #G0 Z{dock_z} F1500 FORCE              ; move down to probe |  | ||||||
|   #G0 Y{undock_y} F{d_speed}             ; move into the holder |  | ||||||
|   #G0 Z{undock_z} F1500                  ; move upwards to remove probe |  | ||||||
| 
 |  | ||||||
|   ##### Example for a gantry dock: |  | ||||||
|   G0 X{dock_x} Y{dock_y} F{t_speed}     ; move in front of mag-probe |  | ||||||
|   G0 Y{undock_y} F{d_speed}             ; move into the holder |  | ||||||
|   G0 X{undock_x} F{d_speed}             ; move sideways to remove probe |  | ||||||
| 
 |  | ||||||
|   RESTORE_GCODE_STATE NAME=STATE_DOCK_PROBE |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## MAG_PROBE |  | ||||||
| # QUERY_PROBE must run direct before _PROBE_ACTION |  | ||||||
| # that relation is insured by the caller id |  | ||||||
| [gcode_macro _MAG_PROBE] |  | ||||||
| description: Helper: Query MagProbe state and request action |  | ||||||
| variable_state: 'unknown' |  | ||||||
| variable_id: 0 |  | ||||||
| gcode: |  | ||||||
|   ##### add RESPOND if specified ##### |  | ||||||
|   {% if 'RESPOND' in params|upper %} |  | ||||||
|     {% set respond = "RESPOND=" + params.RESPOND %} |  | ||||||
|   {% else %} |  | ||||||
|     {% set respond = "" %} |  | ||||||
|   {% endif %} |  | ||||||
|   ##### generate an id not equal to 0 ##### |  | ||||||
|   {% if id == 0 %} |  | ||||||
|     {% set id = 1 %} |  | ||||||
|   {% else %} |  | ||||||
|     {% set id = id + 1 %} |  | ||||||
|   {% endif %} |  | ||||||
|   ##### end of definition ##### |  | ||||||
|   QUERY_PROBE ID={id} |  | ||||||
|   _PROBE_ACTION ACTION={params.ACTION} ID={id} {respond} |  | ||||||
|   SET_GCODE_VARIABLE MACRO=_MAG_PROBE VARIABLE=id VALUE={id} |  | ||||||
|   M400 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## _PROBE_ACTION |  | ||||||
| [gcode_macro _PROBE_ACTION] |  | ||||||
| description: Helper: Perform MagProbe action |  | ||||||
| gcode: |  | ||||||
|   ##### get params and defaults ##### |  | ||||||
|   {% set default_respond = printer['gcode_macro _USER_VARIABLE'].respond_probe_action|default(1)|int %} |  | ||||||
|   {% set respond = params.RESPOND|default(default_respond)|int %} |  | ||||||
|   {% set action = params.ACTION|lower %} |  | ||||||
|   {% set id = params.ID|default(0)|int %} ; call id 0 means invalid |  | ||||||
|   ##### get probe variables ##### |  | ||||||
|   {% set probe_id = printer['gcode_macro QUERY_PROBE'].id|default(0)|int %} |  | ||||||
|   {% set man_state = printer['gcode_macro SET_PROBE_STATUS'].state|lower %} |  | ||||||
|   ##### generate state ##### |  | ||||||
|   {% if man_state != 'unknown' %} |  | ||||||
|     SET_GCODE_VARIABLE MACRO=SET_PROBE_STATUS VARIABLE=state VALUE='"unknown"' |  | ||||||
|     {% set state = man_state %} |  | ||||||
|     {% if respond == 1 %} |  | ||||||
|       {action_respond_info("MagProbe: State was set to %s by SET_PROBE_STATUS"% man_state|upper)} |  | ||||||
|     {% endif %} |  | ||||||
|   {% elif id == 0 or id != probe_id %} |  | ||||||
|     {action_raise_error("MagProbe: Call ID invalid or does not match QUERY_PROBE call ID")} |  | ||||||
|   {% elif printer.probe.last_query|lower == 'false' %} |  | ||||||
|     {action_raise_error("MagProbe: Please execute QUERY_PROBE first")} |  | ||||||
|   {% else %} |  | ||||||
|     {% if printer.probe.last_query|int == 0 %} |  | ||||||
|       {% set state = 'attached' %} |  | ||||||
|     {% else %} |  | ||||||
|       {% set state = 'docked' %} |  | ||||||
|     {% endif %} |  | ||||||
|   {% endif %} |  | ||||||
|   ##### end of defines ##### |  | ||||||
|   SET_GCODE_VARIABLE MACRO=_MAG_PROBE VARIABLE=state VALUE='"{state}"' |  | ||||||
|   {% if action == 'attach' %} |  | ||||||
|     {% if state == 'docked' %} |  | ||||||
|       {% if respond == 1 %} |  | ||||||
|         {action_respond_info("MagProbe: Attach Probe")} |  | ||||||
|       {% endif %} |  | ||||||
|       _ATTACH_PROBE |  | ||||||
|     {% else %} |  | ||||||
|       {% if respond == 1 %} |  | ||||||
|         {action_respond_info("MagProbe: already attached")} |  | ||||||
|       {% endif %} |  | ||||||
|     {% endif %} |  | ||||||
|   {% elif action == 'dock' %} |  | ||||||
|     {% if state == 'attached' %} |  | ||||||
|       {% if respond == 1 %} |  | ||||||
|         {action_respond_info("MagProbe: Dock Probe")} |  | ||||||
|       {% endif %} |  | ||||||
|       _DOCK_PROBE |  | ||||||
|     {% else %} |  | ||||||
|       {% if respond == 1 %} |  | ||||||
|         {action_respond_info("MagProbe: already docked")} |  | ||||||
|       {% endif %} |  | ||||||
|     {% endif %} |  | ||||||
|   {% elif action == 'check_dock' %} |  | ||||||
|     {% if state != 'docked' %} |  | ||||||
|       {action_raise_error("MagProbe: dock failed!")} |  | ||||||
|     {% endif %} |  | ||||||
|   {% elif action == 'check_attach' %} |  | ||||||
|     {% if state != 'attached' %} |  | ||||||
|       {action_raise_error("MagProbe: attach failed!")} |  | ||||||
|     {% endif %} |  | ||||||
|   {% elif action == 'get_status' %} |  | ||||||
|     {% if respond == 1 %} |  | ||||||
|       {action_respond_info("MagProbe Status: %s" % state)} |  | ||||||
|     {% endif %} |  | ||||||
|   {% else %} |  | ||||||
|     {action_raise_error("MagProbe: action not defined")} |  | ||||||
|   {% endif %} |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## _Z_MOVE_CHECK |  | ||||||
| [gcode_macro _Z_MOVE_CHECK] |  | ||||||
| description: Helper: Check limit and perform move |  | ||||||
| gcode: |  | ||||||
|   ##### define defaults ###### |  | ||||||
|   {% set caller = params.CALLER|default('G0')|upper %} |  | ||||||
|   {% set force = params.FORCE|default(0)|int %} |  | ||||||
|   ##### z values ##### |  | ||||||
|   {% set z_min = printer['gcode_macro _USER_VARIABLE'].probe_z_min|float %} |  | ||||||
|   {% set z_act = printer.toolhead.position.z|float %} |  | ||||||
|   ##### MagProbe state ##### |  | ||||||
|   {% set probe_state = printer['gcode_macro _MAG_PROBE'].state|lower %} |  | ||||||
|   ##### get params and prepare to send them to the base macro ##### |  | ||||||
|   {% set get_params = [] %} |  | ||||||
|   {% for key in params %} |  | ||||||
|     {% if key is not in ['Z', 'CALLER', 'FORCE'] %} |  | ||||||
|       {% set get_params = get_params.append(key + params[key]) %} |  | ||||||
|     {% elif key is in ['Z'] %} |  | ||||||
|       {% if force == 1 %} ;manual override of probe check |  | ||||||
|         {% set get_params = get_params.append(key + params[key]) %} |  | ||||||
|       {% elif probe_state ==  'unknown' %} |  | ||||||
|         {action_raise_error("%s: MagProbe state %s run \"_MAG_PROBE ACTION=GET_STATUS\"" % (caller, probe_state|upper))} |  | ||||||
|       {% elif probe_state ==  'docked' %} |  | ||||||
|         {% set get_params = get_params.append(key + params[key]) %} |  | ||||||
|       {% elif probe_state ==  'attached' %} |  | ||||||
|         ##### define move target position depending on absolute_coordinates ##### |  | ||||||
|         {% if printer.gcode_move.absolute_coordinates|lower == 'true' %} |  | ||||||
|           {% set z_target = params.Z|float %} |  | ||||||
|         {% else %} |  | ||||||
|           {% set z_target = z_act + params.Z|float %} |  | ||||||
|         {% endif %} |  | ||||||
|         ##### decide if a Z move can be executed ##### |  | ||||||
|         {% if z_target > z_min or z_act < z_target %} |  | ||||||
|           {% set get_params = get_params.append(key + params[key]) %} |  | ||||||
|         {% else %} |  | ||||||
|           {action_respond_info("%s: Z Moves lower than %.1fmm not allowed with installed probe" % (caller,z_min))} |  | ||||||
|         {% endif %} |  | ||||||
|       {% else %} |  | ||||||
|         {action_raise_error("%s: MagProbe state %s not valid" % (caller, probe_state|upper))} |  | ||||||
|       {% endif %} |  | ||||||
|     {% endif %} |  | ||||||
|   {% endfor %} |  | ||||||
|   ##### end of definitions ##### |  | ||||||
|   {caller}.1 {get_params|join(" ")} |  | ||||||
|  | @ -1,121 +0,0 @@ | ||||||
| ##################################################################### |  | ||||||
| # Macros for z-calibration |  | ||||||
| # - CALIBRATE_Z |  | ||||||
| # - _CG28 |  | ||||||
| # - _SET_CURRENT |  | ||||||
| # - _SET_ACC |  | ||||||
| ##################################################################### |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## CALIBRATE_Z |  | ||||||
| [gcode_macro CALIBRATE_Z] |  | ||||||
| description: Automatically calibrates the nozzles offset to the print surface and dock/undock MagProbe |  | ||||||
| rename_existing: _CALIBRATE_Z_BASE |  | ||||||
| gcode: |  | ||||||
|   ##### get user defines  ##### |  | ||||||
|   {% set z_hop = printer['gcode_macro _USER_VARIABLE'].probe_z_min|float %} |  | ||||||
|   ##### get toolhead parameters ##### |  | ||||||
|   {% set act_z = printer.gcode_move.gcode_position.z|float %} |  | ||||||
|   #### end of definitions ##### |  | ||||||
|   ## reduce current of motors |  | ||||||
|   _SET_ACC VAL=HOME |  | ||||||
|   _SET_CURRENT VAL=HOME |  | ||||||
|   _CG28 RESET_SETTINGS=false |  | ||||||
|   {% if act_z < z_hop %} |  | ||||||
|     G90 ; absolute positioning |  | ||||||
|     {action_respond_info("CALIBRATE_Z: High must be above %.2f" % z_hop)} |  | ||||||
|     G1 Z{z_hop} F900 ; move head up |  | ||||||
|   {% endif %} |  | ||||||
|   {% if printer.quad_gantry_level.applied|lower == 'false' %} |  | ||||||
|     QUAD_GANTRY_LEVEL PARK=false |  | ||||||
|   {% endif %} |  | ||||||
|   #ATTACH_PROBE ; if not using start_gcode |  | ||||||
|   _CALIBRATE_Z_BASE |  | ||||||
|   #DETACH_PROBE ; if not using end_gcode |  | ||||||
|   {% if params.RESET_SETTINGS|default('true') == 'true' %} |  | ||||||
|     ## return to org current settings |  | ||||||
|     _SET_CURRENT |  | ||||||
|     _SET_ACC |  | ||||||
|   {% endif %} |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## _CG28 |  | ||||||
| [gcode_macro _CG28] |  | ||||||
| description: conditional home |  | ||||||
| gcode: |  | ||||||
|   {% if "xyz" not in printer.toolhead.homed_axes %} |  | ||||||
|     G28 RESET_SETTINGS={ params.RESET_SETTINGS|default('true') } |  | ||||||
|   {% endif %} |  | ||||||
| 
 |  | ||||||
| ## _SET_ACC |  | ||||||
| [gcode_macro _SET_ACC] |  | ||||||
| description: Helper: Set accel and accel_to_decel value |  | ||||||
| variable_last_val: 'CONFIG' |  | ||||||
| gcode: |  | ||||||
|   ##### set default value ##### |  | ||||||
|   {% set default_respond = printer['gcode_macro _USER_VARIABLE'].respond_set_acc|int %} |  | ||||||
|   {% set val = params.VAL|default('CONFIG') %} |  | ||||||
|   {% set respond = params.RESPOND|default(default_respond)|int %} |  | ||||||
|   {% if val == 'HOME' %} |  | ||||||
|     {% set accel = printer['gcode_macro _USER_VARIABLE'].home_accel %} |  | ||||||
|     {% set accel_to_decel = printer['gcode_macro _USER_VARIABLE'].home_accel|int / 2 %} |  | ||||||
|   {% else %} |  | ||||||
|     {% set accel = printer.configfile.settings.printer.max_accel %} |  | ||||||
|     {% set accel_to_decel = printer.configfile.settings.printer.max_accel_to_decel %} |  | ||||||
|   {% endif %} |  | ||||||
|   ##### end of definition ##### |  | ||||||
|   {% if val != last_val %} |  | ||||||
|     SET_GCODE_VARIABLE MACRO=_SET_ACC VARIABLE=last_val VALUE='"{val}"' |  | ||||||
|     {% if respond == 1 %} |  | ||||||
|       {action_respond_info("VELOCITY_LIMIT set ACCEL: %d ACCEL_TO_DECEL: %d" % (accel|int, accel_to_decel|int))} |  | ||||||
|     {% endif %} |  | ||||||
|     SET_VELOCITY_LIMIT ACCEL={accel} ACCEL_TO_DECEL={accel_to_decel} RESPOND=0 |  | ||||||
|   {% endif %} |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## _SET_CURRENT |  | ||||||
| [gcode_macro _SET_CURRENT] |  | ||||||
| description: Helper: Set Z-drive motor current |  | ||||||
| variable_last_val: 'CONFIG' |  | ||||||
| gcode: |  | ||||||
|   ###### set default values ##### |  | ||||||
|   {% set default_respond = printer['gcode_macro _USER_VARIABLE'].respond_set_current|int %} |  | ||||||
|   {% set val = params.VAL|default('CONFIG') %} |  | ||||||
|   {% set respond = params.Z_RESPOND|default(default_respond)|int %} |  | ||||||
|   {% if val == 'HOME' %} |  | ||||||
|     {% set xy_run  = printer['gcode_macro _USER_VARIABLE'].xy_home_current %} |  | ||||||
|     {% set xy_hold = printer['gcode_macro _USER_VARIABLE'].xy_home_current %} |  | ||||||
|     {% set z_run  = printer['gcode_macro _USER_VARIABLE'].z_home_current %} |  | ||||||
|     {% set z_hold = printer['gcode_macro _USER_VARIABLE'].z_home_current %} |  | ||||||
|   {% else %} |  | ||||||
|     ## XY |  | ||||||
|     {% if 'tmc2209 stepper_x' in printer.configfile.settings %} |  | ||||||
|       {% set xy_run  = printer.configfile.settings['tmc2209 stepper_x'].run_current %} |  | ||||||
|       {% set xy_hold = printer.configfile.settings['tmc2209 stepper_x'].hold_current %} |  | ||||||
|     {% elif 'tmc5160 stepper_x' in printer.configfile.settings %} |  | ||||||
|       {% set xy_run  = printer.configfile.settings['tmc5160 stepper_x'].run_current %} |  | ||||||
|       {% set xy_hold = printer.configfile.settings['tmc5160 stepper_x'].hold_current %} |  | ||||||
|     {% endif %} |  | ||||||
|     ## Z |  | ||||||
|     {% if 'tmc2209 stepper_z' in printer.configfile.settings %} |  | ||||||
|       {% set z_run  = printer.configfile.settings['tmc2209 stepper_z'].run_current %} |  | ||||||
|       {% set z_hold = printer.configfile.settings['tmc2209 stepper_z'].hold_current %} |  | ||||||
|     {% elif 'tmc5160 stepper_z' in printer.configfile.settings %} |  | ||||||
|       {% set z_run  = printer.configfile.settings['tmc5160 stepper_z'].run_current %} |  | ||||||
|       {% set z_hold = printer.configfile.settings['tmc5160 stepper_z'].hold_current %} |  | ||||||
|     {% endif %} |  | ||||||
|   {% endif %} |  | ||||||
|   ##### end of definition ##### |  | ||||||
|   {% if val != last_val %} |  | ||||||
|     SET_GCODE_VARIABLE MACRO=_SET_CURRENT VARIABLE=last_val VALUE='"{val}"' |  | ||||||
|     {% if respond == 1 %} |  | ||||||
|       {action_respond_info("Home&Probe: RunCur %.2fA rms HoldCur %.2fA rms" % (z_run|float, z_hold|float))} |  | ||||||
|     {% endif %} |  | ||||||
|     SET_TMC_CURRENT STEPPER=stepper_x  CURRENT={xy_run} HOLDCURRENT={xy_hold} |  | ||||||
|     SET_TMC_CURRENT STEPPER=stepper_y  CURRENT={xy_run} HOLDCURRENT={xy_hold} |  | ||||||
|     SET_TMC_CURRENT STEPPER=stepper_z  CURRENT={z_run} HOLDCURRENT={z_hold} |  | ||||||
|     SET_TMC_CURRENT STEPPER=stepper_z1 CURRENT={z_run} HOLDCURRENT={z_hold} |  | ||||||
|     SET_TMC_CURRENT STEPPER=stepper_z2 CURRENT={z_run} HOLDCURRENT={z_hold} |  | ||||||
|     SET_TMC_CURRENT STEPPER=stepper_z3 CURRENT={z_run} HOLDCURRENT={z_hold} |  | ||||||
|     M400 |  | ||||||
|   {% endif %} |  | ||||||
							
								
								
									
										73
									
								
								printer.cfg
									
										
									
									
									
								
							
							
						
						
									
										73
									
								
								printer.cfg
									
										
									
									
									
								
							|  | @ -63,7 +63,6 @@ path: /home/pi/gcode_files | ||||||
| [include fans.cfg] | [include fans.cfg] | ||||||
| [include input_shaper.cfg] | [include input_shaper.cfg] | ||||||
| # [include resonance_test.cfg] | # [include resonance_test.cfg] | ||||||
| [include z_calibration.cfg] |  | ||||||
| [include ercf/hardware.cfg] | [include ercf/hardware.cfg] | ||||||
| [include ercf/software.cfg] | [include ercf/software.cfg] | ||||||
| 
 | 
 | ||||||
|  | @ -108,8 +107,8 @@ microsteps: 32 | ||||||
| full_steps_per_rotation: 400  # 200: 1.8 deg stepper, 400: 0.9 deg stepper | full_steps_per_rotation: 400  # 200: 1.8 deg stepper, 400: 0.9 deg stepper | ||||||
| endstop_pin: PG9 | endstop_pin: PG9 | ||||||
| position_min: 0 | position_min: 0 | ||||||
| position_endstop: 306 | position_endstop: 303 | ||||||
| position_max: 308 | position_max: 305 | ||||||
| homing_speed: 30              # Max 100 | homing_speed: 30              # Max 100 | ||||||
| homing_retract_dist: 5 | homing_retract_dist: 5 | ||||||
| homing_positive_dir: true | homing_positive_dir: true | ||||||
|  | @ -137,15 +136,13 @@ enable_pin: !PG5 | ||||||
| rotation_distance: 40 | rotation_distance: 40 | ||||||
| gear_ratio: 80:16 | gear_ratio: 80:16 | ||||||
| microsteps: 32 | microsteps: 32 | ||||||
| endstop_pin: PG10 | endstop_pin: probe:z_virtual_endstop | ||||||
| ## actual_position = measured_position_endstop - position_endstop |  | ||||||
| position_endstop: 0 |  | ||||||
| position_max: 290 | position_max: 290 | ||||||
| position_min: -1 | position_min: -2 | ||||||
| homing_speed: 8.0             # speed: mm/sec, feedrate: mm/min | homing_speed: 5.0             # speed: mm/sec, feedrate: mm/min | ||||||
| homing_retract_speed: 10 | homing_retract_speed: 10 | ||||||
| second_homing_speed: 2 | second_homing_speed: 2 | ||||||
| homing_retract_dist: 3 | homing_retract_dist: 5 | ||||||
| 
 | 
 | ||||||
| [tmc2209 stepper_z] | [tmc2209 stepper_z] | ||||||
| uart_pin: PC6 | uart_pin: PC6 | ||||||
|  | @ -312,13 +309,9 @@ max_temp: 100 | ||||||
| [idle_timeout] | [idle_timeout] | ||||||
| timeout: 1800 | timeout: 1800 | ||||||
| 
 | 
 | ||||||
| ## replaced with homing_override in klicky-probe.cfg | [safe_z_home] | ||||||
| # [safe_z_home] | home_xy_position: 150, 150 | ||||||
| # ## XY Location of the Z Endstop Switch | z_hop: 10 | ||||||
| # home_xy_position: 94, 306 |  | ||||||
| # speed: 100 |  | ||||||
| # z_hop: 10 |  | ||||||
| # z_hop_speed: 25 |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| ##################################################################### | ##################################################################### | ||||||
|  | @ -326,19 +319,36 @@ timeout: 1800 | ||||||
| ##################################################################### | ##################################################################### | ||||||
| 
 | 
 | ||||||
| [probe] | [probe] | ||||||
| ## Microswitch probe | ## Voron-Tap | ||||||
| pin: ^PG11 | pin: ^PG11 | ||||||
| x_offset: 0 | x_offset: 0 | ||||||
| y_offset: 30 | y_offset: 0 | ||||||
| z_offset: 12 | #z_offset: 0 | ||||||
| speed: 5.0 | speed: 5.0 | ||||||
| lift_speed: 20 | lift_speed: 10 | ||||||
| samples: 3 | samples: 3 | ||||||
| samples_result: median | samples_result: median | ||||||
| sample_retract_dist: 2 | sample_retract_dist: 3 | ||||||
| samples_tolerance: 0.01 | samples_tolerance: 0.01 | ||||||
| samples_tolerance_retries: 5 | samples_tolerance_retries: 5 | ||||||
| 
 | 
 | ||||||
|  | activate_gcode: | ||||||
|  |     {% set PROBE_TEMP = 150 %} | ||||||
|  |     {% set MAX_TEMP = PROBE_TEMP + 5 %} | ||||||
|  |     {% set ACTUAL_TEMP = printer.extruder.temperature %} | ||||||
|  |     {% set TARGET_TEMP = printer.extruder.target %} | ||||||
|  | 
 | ||||||
|  |     {% if TARGET_TEMP > PROBE_TEMP %} | ||||||
|  |         { action_respond_info('Extruder temperature target of %.1fC is too high, lowering to %.1fC' % (TARGET_TEMP, PROBE_TEMP)) } | ||||||
|  |         M109 S{ PROBE_TEMP } | ||||||
|  |     {% else %} | ||||||
|  |         # Temperature target is already low enough, but nozzle may still be too hot. | ||||||
|  |         {% if ACTUAL_TEMP > MAX_TEMP %} | ||||||
|  |             { action_respond_info('Extruder temperature %.1fC is still too high, waiting until below %.1fC' % (ACTUAL_TEMP, MAX_TEMP)) } | ||||||
|  |             TEMPERATURE_WAIT SENSOR=extruder MAXIMUM={ MAX_TEMP } | ||||||
|  |         {% endif %} | ||||||
|  |     {% endif %} | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| [bed_mesh] | [bed_mesh] | ||||||
| speed: 500 | speed: 500 | ||||||
|  | @ -395,15 +405,15 @@ max_adjust: 10 | ||||||
| #*# [bed_mesh default] | #*# [bed_mesh default] | ||||||
| #*# version = 1 | #*# version = 1 | ||||||
| #*# points = | #*# points = | ||||||
| #*# 	  0.063750, 0.050000, 0.041250, 0.030000, 0.022500, 0.021250, 0.011250, 0.011250, -0.003750 | #*# 	  -0.010000, -0.012500, -0.016250, -0.006250, -0.013750, 0.018750, -0.003750, 0.008750, 0.005000 | ||||||
| #*# 	  0.060000, 0.036250, 0.038750, 0.022500, -0.002500, 0.005000, -0.012500, -0.006250, -0.026250 | #*# 	  -0.010000, -0.016250, -0.012500, -0.010000, -0.028750, -0.013750, -0.017500, 0.000000, -0.007500 | ||||||
| #*# 	  0.052500, 0.027500, 0.028750, 0.023750, -0.001250, -0.010000, -0.022500, -0.028750, -0.045000 | #*# 	  -0.026250, -0.031250, -0.018750, -0.013750, -0.001250, -0.005000, -0.008750, 0.008750, 0.005000 | ||||||
| #*# 	  0.031250, 0.007500, 0.001250, -0.006250, -0.003750, -0.002500, -0.028750, -0.041250, -0.061250 | #*# 	  -0.007500, -0.025000, -0.013750, -0.008750, -0.002500, 0.000000, -0.010000, -0.002500, -0.006250 | ||||||
| #*# 	  0.033750, 0.015000, 0.001250, 0.023750, 0.000000, -0.005000, -0.038750, -0.041250, -0.071250 | #*# 	  -0.010000, 0.000000, -0.005000, 0.002500, 0.000000, 0.028750, -0.001250, 0.010000, 0.020000 | ||||||
| #*# 	  0.030000, 0.020000, -0.000000, -0.011250, -0.020000, -0.016250, -0.028750, -0.040000, -0.071250 | #*# 	  -0.027500, -0.026250, -0.032500, -0.022500, -0.028750, -0.016250, -0.015000, -0.018750, -0.028750 | ||||||
| #*# 	  0.012500, 0.003750, -0.011250, -0.017500, -0.023750, -0.032500, -0.045000, -0.052500, -0.086250 | #*# 	  -0.021250, -0.011250, -0.011250, -0.015000, -0.016250, -0.006250, -0.012500, -0.008750, -0.002500 | ||||||
| #*# 	  0.030000, 0.022500, 0.001250, -0.006250, -0.012500, -0.015000, -0.023750, -0.035000, -0.056250 | #*# 	  -0.005000, -0.002500, -0.007500, -0.007500, 0.006250, 0.007500, -0.003750, 0.010000, -0.008750 | ||||||
| #*# 	  0.053750, 0.038750, 0.057500, 0.008750, 0.002500, -0.002500, -0.007500, -0.012500, -0.033750 | #*# 	  -0.002500, 0.027500, 0.053750, 0.021250, 0.016250, 0.038750, 0.021250, 0.012500, -0.011250 | ||||||
| #*# tension = 0.2 | #*# tension = 0.2 | ||||||
| #*# min_x = 40.0 | #*# min_x = 40.0 | ||||||
| #*# algo = bicubic | #*# algo = bicubic | ||||||
|  | @ -414,3 +424,6 @@ max_adjust: 10 | ||||||
| #*# max_y = 290.0 | #*# max_y = 290.0 | ||||||
| #*# mesh_x_pps = 2 | #*# mesh_x_pps = 2 | ||||||
| #*# max_x = 260.0 | #*# max_x = 260.0 | ||||||
|  | #*# | ||||||
|  | #*# [probe] | ||||||
|  | #*# z_offset = -0.710 | ||||||
|  |  | ||||||
|  | @ -1,164 +0,0 @@ | ||||||
| ##################################################################### |  | ||||||
| #    User Variables |  | ||||||
| ##################################################################### |  | ||||||
| [gcode_macro _USER_VARIABLE] |  | ||||||
| description: Helper: Contains User defined printer variables |  | ||||||
| ##### Homing and general movement ##### |  | ||||||
| variable_z_endstop_x: 94              ; z Endstop x position inside right profile |  | ||||||
| variable_z_endstop_y: 306             ; z Endstop y position |  | ||||||
| variable_z_hop: 12                    ; z hop for moves e.g homing |  | ||||||
| variable_xy_home_current: 0.6         ; reduced homing current for x and y |  | ||||||
| variable_z_home_current: 0.5          ; reduced homing current for z |  | ||||||
| variable_home_accel: 1000             ; reduced ACCEL for homing |  | ||||||
| ##### Mag Probe ##### |  | ||||||
| variable_probe_dock_x: 53             ; x toolhead position before docking probe |  | ||||||
| variable_probe_dock_y: 246            ; y toolhead position before docking probe |  | ||||||
| variable_probe_dock_z: 12             ; z toolhead position before docking probe (only for bed dock) |  | ||||||
| variable_probe_undock_x: 103          ; x toolhead position after docking probe |  | ||||||
| variable_probe_undock_y: 305          ; y toolhead position after docking probe |  | ||||||
| variable_probe_undock_z: 12           ; z toolhead position after docking probe (only for bed dock) |  | ||||||
| variable_probe_z_min: 12              ; z minimum height to avoid crash |  | ||||||
| variable_probe_travel_speed: 100      ; dock moves travel speed |  | ||||||
| variable_probe_dock_speed: 100        ; dock speed for attach/dock |  | ||||||
| ##### Respond defaults ##### |  | ||||||
| variable_respond_set_current: 0       ; default of RESPOND if not set in the call |  | ||||||
| variable_respond_set_acc: 0           ; default of RESPOND if not set in the call |  | ||||||
| variable_respond_probe_action: 1      ; default of RESPOND if not set in the call |  | ||||||
| ##### Park Position ##### |  | ||||||
| variable_park_bed: [280,280,30]       ; different park position |  | ||||||
| gcode: |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ##################################################################### |  | ||||||
| #    Z Calibration |  | ||||||
| ##################################################################### |  | ||||||
| [z_calibration] |  | ||||||
| #   The X and Y coordinates (in mm) for clicking the nozzle on the |  | ||||||
| #   Z endstop. |  | ||||||
| probe_nozzle_x: 94 |  | ||||||
| probe_nozzle_y: 307 |  | ||||||
| #   The X and Y coordinates (in mm) for clicking the probe's switch |  | ||||||
| #   on the Z endstop. |  | ||||||
| probe_switch_x: 90 |  | ||||||
| probe_switch_y: 283 |  | ||||||
| #   The X and Y coordinates (in mm) for probing on the print surface |  | ||||||
| #   (e.g. the center point) These coordinates will be adapted by the |  | ||||||
| #   probe's X and Y offsets. The default is the relative_reference_index |  | ||||||
| #   of the configured bed_mesh. It will raise an error if there is no |  | ||||||
| #   probe_bed site and no bed_mesh with a relative_reference_index |  | ||||||
| #   configured. |  | ||||||
| probe_bed_x: 150 |  | ||||||
| probe_bed_y: 150 |  | ||||||
| #   The trigger point offset of the used mag-probe switch. |  | ||||||
| #   This needs to be fined out manually. More on this later |  | ||||||
| #   in this section. smaller switch_offset -> more distance to  the build plate |  | ||||||
| switch_offset: 0.59 |  | ||||||
| #   The maximum allowed deviation of the calculated offset. |  | ||||||
| #   If the offset exceeds this value, it will stop! |  | ||||||
| #   The default is 1.0 mm. |  | ||||||
| max_deviation: 1.0 |  | ||||||
| #   The number of times to probe each point. The probed z-values |  | ||||||
| #   will be averaged. The default is from the probe's configuration. |  | ||||||
| #samples: default from "probe:samples" section |  | ||||||
| #   The maximum Z distance (in mm) that a sample may differ from other |  | ||||||
| #   samples. The default is from the probe's configuration. |  | ||||||
| #samples_tolerance: default from "probe:samples_tolerance" section |  | ||||||
| #   The number of times to retry if a sample is found that exceeds |  | ||||||
| #   samples_tolerance. The default is from the probe's configuration. |  | ||||||
| #samples_tolerance_retries: default from "probe:samples_tolerance_retries" section |  | ||||||
| #   The calculation method when sampling more than once - either |  | ||||||
| #   "median" or "average". The default is from the probe's configuration. |  | ||||||
| #samples_result: default from "probe:samples_result" section |  | ||||||
| #   The distance in mm to move up before moving to the next |  | ||||||
| #   position. The default is two times the z_offset from the probe's |  | ||||||
| #   configuration. |  | ||||||
| #position_min: default from "stepper_z:position_min" section. |  | ||||||
| #   Extra clearance when moving |  | ||||||
| clearance: 10 |  | ||||||
| #   The moving speed in X and Y. The default is 50 mm/s. |  | ||||||
| speed: 100 |  | ||||||
| #   Speed (in mm/s) of the Z axis when lifting the probe between |  | ||||||
| #   samples and clearance moves. The default is from the probe's |  | ||||||
| #   configuration. |  | ||||||
| #lift_speed: default from "probe:lift_speed" section |  | ||||||
| #   The fast probing speed (in mm/s) used, when probing_first_fast |  | ||||||
| #   is activated. The default is from the Z rail configuration. |  | ||||||
| #probing_speed: default from "stepper_z:homing_speed" section. |  | ||||||
| #   The slower speed (in mm/s) for probing the recorded samples. |  | ||||||
| #   The default is second_homing_speed of the Z rail configuration. |  | ||||||
| #probing_second_speed: default from "stepper_z:second_homing_speed" section. |  | ||||||
| #   Distance to back off (in mm) before probing the next sample. |  | ||||||
| #   The default is homing_retract_dist from the Z rail configuration. |  | ||||||
| #probing_retract_dist: default from "stepper_z:homing_retract_dist" section. |  | ||||||
| #   If true, the first probing is done faster by the probing speed. |  | ||||||
| #   This is to get faster down and the result is not recorded as a |  | ||||||
| #   probing sample. The default is false. |  | ||||||
| probing_first_fast: true |  | ||||||
| #   A list of G-Code commands to execute prior to each calibration command. |  | ||||||
| #   See docs/Command_Templates.md for G-Code format. |  | ||||||
| #   This can be used to attach the probe. |  | ||||||
| start_gcode: ATTACH_PROBE |  | ||||||
| #   A list of G-Code commands to execute prior to each probing on the |  | ||||||
| #   mag-probe. See docs/Command_Templates.md for G-Code format. |  | ||||||
| #   This can be used to attach the probe after probing on the nozzle and |  | ||||||
| #   before probing on the mag-probe. |  | ||||||
| before_switch_gcode: ATTACH_PROBE |  | ||||||
| #   A list of G-Code commands to execute after each calibration command. |  | ||||||
| #   See docs/Command_Templates.md for G-Code format. This can be used to |  | ||||||
| #   detach the probe afterwards. |  | ||||||
| end_gcode: DETACH_PROBE |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ##################################################################### |  | ||||||
| #    Homing definition |  | ||||||
| ##################################################################### |  | ||||||
| [homing_override] |  | ||||||
| axes: z |  | ||||||
| set_position_z: 0 |  | ||||||
| gcode: |  | ||||||
|   ##### get user defines ##### |  | ||||||
|   # use -10 as default to insure it error in case the variable is not existing |  | ||||||
|   {% set z_endstop_x = printer['gcode_macro _USER_VARIABLE'].z_endstop_x|default(-10) %} |  | ||||||
|   {% set z_endstop_y = printer['gcode_macro _USER_VARIABLE'].z_endstop_y|default(-10) %} |  | ||||||
|   {% set z_hop = printer['gcode_macro _USER_VARIABLE'].z_hop %} |  | ||||||
|   ##### end of definitions ##### |  | ||||||
|   SAVE_GCODE_STATE NAME=HOMING_state |  | ||||||
| 
 |  | ||||||
|   ## reduce current of Z motors |  | ||||||
|   _SET_ACC VAL=HOME |  | ||||||
|   _SET_CURRENT VAL=HOME |  | ||||||
| 
 |  | ||||||
|   G91                           ; relative positioning |  | ||||||
|   G0 Z10 F1500                  ; move z 10 up |  | ||||||
|   G90                           ; absolute positioning |  | ||||||
| 
 |  | ||||||
|   # Home X and Y only for G28 or G28 XYZ |  | ||||||
|   {% if 'Z' in params %} |  | ||||||
|     {% if "x" not in printer.toolhead.homed_axes %} |  | ||||||
|       G28 X |  | ||||||
|     {% endif %} |  | ||||||
|     {% if "y" not in printer.toolhead.homed_axes %} |  | ||||||
|       G28 Y |  | ||||||
|     {% endif %} |  | ||||||
|   {% else %} |  | ||||||
|     G28 X Y |  | ||||||
|   {% endif %} |  | ||||||
| 
 |  | ||||||
|   ## XY Location of the Z Endstop Switch |  | ||||||
|   G0 X{z_endstop_x} Y{z_endstop_y} F6000 |  | ||||||
|   G28 Z                         ; home Z |  | ||||||
|   G0 Z3 F1500                   ; move up |  | ||||||
| 
 |  | ||||||
|   ## return to org current settings |  | ||||||
|   {% if params.RESET_SETTINGS|default('true') == 'true' %} |  | ||||||
|     DETACH_PROBE |  | ||||||
|     _SET_CURRENT |  | ||||||
|     _SET_ACC |  | ||||||
|   {% endif %} |  | ||||||
| 
 |  | ||||||
|   # Lift Z |  | ||||||
|   # TODO check speed |  | ||||||
|   # G0 Z{z_hop} F1800 |  | ||||||
|   G0 Z{z_hop} F1300 |  | ||||||
| 
 |  | ||||||
|   RESTORE_GCODE_STATE NAME=HOMING_state |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue