From d75de68ced3c54913faa37dc63000b7596a20c0f Mon Sep 17 00:00:00 2001 From: jlas1 Date: Tue, 21 Dec 2021 01:25:41 +0000 Subject: [PATCH] Klicky macros move to the main repository (#546) * Updated macro for safer Z on Trident and Updated macro for safer Z on Trident and improved Z hop configuration * linked macros to main repository --- .../Klicky-Probe/Klipper_macro/README.md | 8 +- .../Klipper_macro/klicky-probe-for_VT.cfg | 773 ------------------ .../Klipper_macro/klicky-probe-for_v1.8.cfg | 773 ------------------ .../Klipper_macro/klicky-probe.cfg | 758 ----------------- .../Klipper_macro/z_calibration.cfg | 89 -- printer_mods/JosAr/Klicky-Probe/README.md | 8 +- printer_mods/JosAr/Klicky-Probe/README.pdf | Bin 49420386 -> 49420903 bytes 7 files changed, 6 insertions(+), 2403 deletions(-) delete mode 100644 printer_mods/JosAr/Klicky-Probe/Klipper_macro/klicky-probe-for_VT.cfg delete mode 100644 printer_mods/JosAr/Klicky-Probe/Klipper_macro/klicky-probe-for_v1.8.cfg delete mode 100644 printer_mods/JosAr/Klicky-Probe/Klipper_macro/klicky-probe.cfg delete mode 100644 printer_mods/JosAr/Klicky-Probe/Klipper_macro/z_calibration.cfg diff --git a/printer_mods/JosAr/Klicky-Probe/Klipper_macro/README.md b/printer_mods/JosAr/Klicky-Probe/Klipper_macro/README.md index c3e5a6493..8f1073dec 100644 --- a/printer_mods/JosAr/Klicky-Probe/Klipper_macro/README.md +++ b/printer_mods/JosAr/Klicky-Probe/Klipper_macro/README.md @@ -1,7 +1 @@ -Voron V2.4/VT: -If using the probe instead of a physical Z endstop please remember to comment out the homing override from your printer.cfg and use the klicky-probe.cfg one. - -Voron V1.8: -Due to the fact that the probe may hit the bed on the v1.8 when going to the physical Z endstop, please use the homing override included in klicky-probe.cfg instead of the one that you currently have in your printer.cfg . - -You may have a faster PRINT_START if you use Attach_Probe_Lock at the beginning and Dock_Probe_Unlock at the end. +Please download the Klipper macros form the main [Klicky repository](https://github.com/jlas1/Klicky-Probe). diff --git a/printer_mods/JosAr/Klicky-Probe/Klipper_macro/klicky-probe-for_VT.cfg b/printer_mods/JosAr/Klicky-Probe/Klipper_macro/klicky-probe-for_VT.cfg deleted file mode 100644 index 178b81fda..000000000 --- a/printer_mods/JosAr/Klicky-Probe/Klipper_macro/klicky-probe-for_VT.cfg +++ /dev/null @@ -1,773 +0,0 @@ -# This macro was provided by discord user Garrettwp to whom i give my thanks for sharing it with me. -# I have tweaked it a lot. -# -# this macro is based on the great Annex magprobe dockable probe macros "#Originally developed by Mental, modified for better use on K-series printers by RyanG and Trails" -# that macro can be found here https://github.com/Annex-Engineering/Annex-Engineering_Other_Printer_Mods/blob/master/All_Printers/Microswitch_Probe/Klipper_Macros/dockable_probe_macros.cfg -# -# by standing on the shoulders of giants, lets see if we can see further - -[gcode_macro _User_Variables] -variable_verbose: True # Enable verbose output -variable_travel_speed: 200 # how fast all other travel moves will be performed when running these macros -variable_dock_speed: 50 # how fast should the toolhead move when docking the probe for the final movement -variable_release_speed: 75 # how fast should the toolhead move to release the hold of the magnets after docking -variable_z_drop_speed: 20 # how fast the z will lower when moving to the z location to clear the probe -variable_home_z_height: 10 # Z when homing - -#bed type -variable_gravity: 'bed' # What goes down with gravity, bed or gantry? -variable_max_bed_y: 250 # maximum Bed size avoids doing a probe_accuracy outside the bed - -# if a separate Z endstop switch is in -# use, specify the coordinates of the switch here (Voron). -# Set to 0 to have the probe move to center of bed -variable_z_endstop_x: 1000 -variable_z_endstop_y: 1000 - -#dock location -variable_docklocation_x: 1000 # X Dock position -variable_docklocation_y: 1000 # Y Dock position -variable_docklocation_z: -128 # Z dock position (-128 for a gantry mount) -variable_dockarmslenght: 30 # Dock arms lenght, toolhead movement necessary to clear the dock arms - -#Umbilical to help untangle the umbilical in difficult situations -variable_umbilical: False # should we untabgle the umbilical -variable_umbilical_x: 15 # X umbilical position -variable_umbilical_y: 15 # Y umbilical position - -# location to park the toolhead -variable_park_toolhead: False # Enable toolhead parking -variable_parkposition_x: 75 -variable_parkposition_y: 75 -variable_parkposition_z: 30 - -# Do not modify below -gcode: - {% set Mx = printer['configfile'].config["stepper_x"]["position_max"]|float %} - {% set My = printer['configfile'].config["stepper_y"]["position_max"]|float %} - {% set Ox = printer['configfile'].config["probe"]["x_offset"]|float %} - {% set Oy = printer['configfile'].config["probe"]["y_offset"]|float %} - {% set Oz = printer['configfile'].config["probe"]["z_offset"]|float %} - - # if docklocation_z is zero, use Home Z height for safety - {% if docklocation_z == 0 %} - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=docklocation_z VALUE={ home_z_height } - {% endif %} - - # If x, y coordinates are set for z endstop, assign them - {% if z_endstop_x != 0 or z_endstop_y != 0 %} - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=z_endstop_x VALUE={ z_endstop_x } - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=z_endstop_y VALUE={ z_endstop_y } - - # if no x, y coordinates for z endstop, assume probe is endstop and move toolhead to center of bed - {% else %} - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=z_endstop_x VALUE={ (Mx * 0.5) - Ox } - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=z_endstop_y VALUE={ (My * 0.5) - Oy } - {% endif %} -# This macro was provided by discord user Garrettwp to whom i give my thanks for sharing it with me. -# I have tweaked it a lot. -# -# this macro is based on the great Annex magprobe dockable probe macros "#Originally developed by Mental, modified for better use on K-series printers by RyanG and Trails" -# that macro can be found here https://github.com/Annex-Engineering/Annex-Engineering_Other_Printer_Mods/blob/master/All_Printers/Microswitch_Probe/Klipper_Macros/dockable_probe_macros.cfg -# -# by standing on the shoulders of giants, lets see if we can see further - -[gcode_macro _Probe_Variables] -variable_probe_attached: False -variable_probe_state: False -variable_probe_lock: False -variable_z_endstop_x: 0 -variable_z_endstop_y: 0 -gcode: - - -[gcode_macro _exit_point] -gcode: - {% set function = 'pre_' ~ params.FUNCTION %} - {% set move = params.MOVE|default(0) %} - # mandatory to save the new safe position - M400 - RESTORE_GCODE_STATE NAME={function} MOVE={move} - - -[gcode_macro _entry_point] -gcode: - {% set function = 'pre_' ~ params.FUNCTION %} - # mandatory to save the new safe position - M400 - SAVE_GCODE_STATE NAME={function} - # removes the Z offset for better bed based docking - SET_GCODE_OFFSET Z=0 - # all the macros initially assume absolute positioning - G90 - -[gcode_macro _Homing_Variables] -gcode: - {% set R = params.RESET|default(0) %} - {% if R %} - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_lock VALUE={ False } - {% endif %} - -# Attach probe and lock it -[gcode_macro Attach_Probe_Lock] -description: Attaches Klicky Probe, can only be docked after unlocking -gcode: - Attach_Probe - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_lock VALUE={ True } - -# Dock probe and lock it -[gcode_macro Dock_Probe_Unlock] -description: Docks Klicky Probe even if it was locked -gcode: - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_lock VALUE={ False } - Dock_Probe - -# Unlock Probe -[gcode_macro Probe_Unlock] -description: Unlocks Klicky Probe state -gcode: - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_lock VALUE={ False } - -# Lock Probe -[gcode_macro Probe_Lock] -description: Locks Klicky Probe state -gcode: - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_lock VALUE={ True } - -# Attach Probe Routine -[gcode_macro Attach_Probe] -description: Attaches Klicky Probe -gcode: - # Get probe attach status - {% set P = printer["gcode_macro _Probe_Variables"].probe_attached %} - {% set L = printer["gcode_macro _Probe_Variables"].probe_lock %} - {% set V = printer["gcode_macro _User_Variables"].verbose %} - # Get Docking location - {% set Mx = printer["gcode_macro _User_Variables"].dockmove_x|default(0) %} - {% set My = printer["gcode_macro _User_Variables"].dockmove_y|default(0) %} - {% set Mz = printer["gcode_macro _User_Variables"].dockmove_z|default(0) %} - {% set Dx = printer["gcode_macro _User_Variables"].docklocation_x %} - {% set Dy = printer["gcode_macro _User_Variables"].docklocation_y %} - {% set Dz = printer["gcode_macro _User_Variables"].docklocation_z %} - {% set Ax = printer["gcode_macro _User_Variables"].attachmove_x|default(0) %} - {% set Ay = printer["gcode_macro _User_Variables"].attachmove_y|default(0) %} - {% set Az = printer["gcode_macro _User_Variables"].attachmove_z|default(0) %} - {% set Gm = printer["gcode_macro _User_Variables"].gravity %} - {% set Da = printer["gcode_macro _User_Variables"].dockarmslenght|default(0) %} - # Safe Z for travel - {% set Hzh = printer["gcode_macro _User_Variables"].home_z_height|float %} - #Set speed - {% set St = printer["gcode_macro _User_Variables"].travel_speed * 60 %} - {% set Sd = printer["gcode_macro _User_Variables"].dock_speed * 60 %} - {% set Sr = printer["gcode_macro _User_Variables"].release_speed * 60 %} - {% set Sz = printer["gcode_macro _User_Variables"].z_drop_speed * 60 %} - - _entry_point function=Attach_Probe - - #if there is no undock movement, assume older behavior - {% if Mx == My == Mz == 0 %} - {% set Mx = 40 %} - {% endif %} - #if there is no Attach movement, assume older behavior - {% if Ax == Ay == Az == 0 %} - {% set Ay = Da %} - {% endif %} - - # if x and y are not homed - {% if not 'xy' in printer.toolhead.homed_axes %} - { action_raise_error("Must Home X and Y Axis First!") } - - # If probe not attached and locked - {% elif not P and not L %} - {% if V %} - { action_respond_info("Attaching Probe") } - {% endif %} - - {% if (not 'z' in printer.toolhead.homed_axes) %} - {% if V %} - { action_respond_info("Resetting Z position to zero") } - {% endif %} - SET_KINEMATIC_POSITION Z=0 - {% if ('bed' in Gm) %} # checks if the bed or gantry move with gravity - {% set Hzh = 0 %} - {% elif ('gantry' in Gm) %} # checks if the bed or gantry move with gravity - {% set Hzh = Hzh %} - {% else %} - { action_raise_error("To avoid head crashes, configure Klicky probe gravity variable!") } - {% endif %} - - {% endif %} - #prior to saving actual position, check if its necessary to move to a safe Z - #that has enought overhead for the attached probe - {% if (printer.toolhead.position.z < Hzh) %} - {% if V %} - { action_respond_info("moving to a safe Z distance") } - {% endif %} - G0 Z{Hzh} F{Sz} - {% endif %} - - {% if (not 'z' in printer.toolhead.homed_axes) %} - {% if V %} - { action_respond_info("Resetting Z position to zero") } - {% endif %} - SET_KINEMATIC_POSITION Z=0 - {% endif %} - - {% if (printer.toolhead.position.z < Hzh) %} - G0 Z{Hzh} F{Sz} - {% endif %} - - _Umbilical_Path - - # Probe entry location - G0 X{Dx|int - Ax|int} Y{Dy|int - Ay|int} F{St} - {% if Dz != -128 %} - G0 Z{Dz|int - Az|int} F{Sd} - {% endif %} - - # Drop Probe to Probe location - {% if Dz != -128 %} - G0 Z{Dz} F{Sd} - {% endif %} - G0 X{Dx} Y{Dy} F{Sd} - - # Probe Attach - {% if Dz != -128 %} - G0 Z{Dz|int - Az|int} F{Sz} - {% endif %} - G0 X{Dx|int - Ax|int} Y{Dy|int - Ay|int} F{Sr} - - #Go to Z safe distance - {% if (printer.toolhead.position.z < Hzh) %} - G0 Z{Hzh} F{Sz} - {% endif %} - - _Park_Toolhead - - _CheckProbe action=attach - - {% elif L %} - {% if V %} - { action_respond_info("Probe locked!") } - {% endif %} - - # Probe attached, do nothing - _CheckProbe action=query - - {% else %} - {% if V %} - { action_respond_info("Probe already attached!") } - {% endif %} - - # Probe attached, do nothing - _CheckProbe action=query - - {% endif %} - _exit_point function=Attach_Probe - -# Dock Probe Routine -[gcode_macro Dock_Probe] -description: Docks Klicky Probe -gcode: - # Get probe attach status - {% set P = printer["gcode_macro _Probe_Variables"].probe_attached %} - {% set L = printer["gcode_macro _Probe_Variables"].probe_lock %} - {% set V = printer["gcode_macro _User_Variables"].verbose %} - # Get Docking location - {% set Mx = printer["gcode_macro _User_Variables"].dockmove_x|default(0) %} - {% set My = printer["gcode_macro _User_Variables"].dockmove_y|default(0) %} - {% set Mz = printer["gcode_macro _User_Variables"].dockmove_z|default(0) %} - {% set Dx = printer["gcode_macro _User_Variables"].docklocation_x %} - {% set Dy = printer["gcode_macro _User_Variables"].docklocation_y %} - {% set Dz = printer["gcode_macro _User_Variables"].docklocation_z %} - {% set Ax = printer["gcode_macro _User_Variables"].attachmove_x|default(0) %} - {% set Ay = printer["gcode_macro _User_Variables"].attachmove_y|default(0) %} - {% set Az = printer["gcode_macro _User_Variables"].attachmove_z|default(0) %} - {% set Da = printer["gcode_macro _User_Variables"].dockarmslenght|default(0) %} - # Safe Z for travel - {% set Hzh = printer["gcode_macro _User_Variables"].home_z_height|float %} - # Set speed - {% set St = printer["gcode_macro _User_Variables"].travel_speed * 60 %} - {% set Sd = printer["gcode_macro _User_Variables"].dock_speed * 60 %} - {% set Sr = printer["gcode_macro _User_Variables"].release_speed * 60 %} - {% set Sz = printer["gcode_macro _User_Variables"].z_drop_speed * 60 %} - - #if there is no undock movement, assume older behavior - {% if Mx == My == Mz == 0 %} - {% set Mx = 40 %} - {% endif %} - #if there is no Attach movement, assume older behavior - {% if Ax == Ay == Az == 0 %} - {% set Ay = Da %} - {% endif %} - - _entry_point function=Dock_Probe - - {% if not 'xyz' in printer.toolhead.homed_axes %} - { action_raise_error("Must Home X, Y and Z Axis First!") } - - # If probe not attached and not locked - {% elif P and not L %} - {% if V %} - { action_respond_info("Docking Probe") } - {% endif %} - - {% if (printer.toolhead.position.z < Hzh) %} - G0 Z{Hzh} F{Sz} - {% endif %} - - _Umbilical_Path - - # Probe entry location - G0 X{Dx|int - Ax|int} Y{Dy|int - Ay|int} F{St} - {% if Dz != -128 %} - G0 Z{Dz|int - Az|int} F{Sd} - {% endif %} - # Drop Probe to Probe location - G0 X{Dx} Y{Dy} F{Sd} - {% if Dz != -128 %} - G0 Z{Dz} F{Sd} - {% endif %} - # Probe decoupling - {% if Dz != -128 %} - G0 Z{Dz|int + Mz|int} F{Sr} - {% endif %} - G0 X{Dx|int + Mx|int} Y{Dy|int + My|int} F{Sr} - #Go to Z safe distance - {% if (printer.toolhead.position.z < Hzh) %} - G0 Z{Hzh} F{Sz} - {% endif %} - - _Park_Toolhead - - G4 P1000 - _CheckProbe action=dock - - {% elif L %} - {% if V %} - { action_respond_info("Probe locked!") } - {% endif %} - - # Probe docked, do nothing - _CheckProbe action=query - - {% else %} - {% if V %} - { action_respond_info("Probe already docked!") } - {% endif %} - - # Probe docked, do nothing - _CheckProbe action=query - - {% endif %} - _exit_point function=Dock_Probe - -# Probe Calibrate -[gcode_macro PROBE_CALIBRATE] -rename_existing: _PROBE_CALIBRATE -description:Calibrate the probe's z_offset with klicky automount -gcode: - {% set Hzh = printer["gcode_macro _User_Variables"].home_z_height|float %} - {% set Sz = printer["gcode_macro _User_Variables"].z_drop_speed * 60 %} - {% set St = printer["gcode_macro _User_Variables"].travel_speed %} - {% set Mx = printer['configfile'].config["stepper_x"]["position_max"]|float %} - {% set My = printer['configfile'].config["stepper_y"]["position_max"]|float %} - {% set Ox = printer['configfile'].config["probe"]["x_offset"]|float %} - {% set Oy = printer['configfile'].config["probe"]["y_offset"]|float %} - - {% if not 'xyz' in printer.toolhead.homed_axes %} - { action_raise_error("Must Home X, Y and Z Axis First!") } - {% endif %} - - _entry_point function=PROBE_CALIBRATE - - # Go to Z safe distance before saving location in order to - # avoid crashing the probe on the bed when coming back - {% if (printer.toolhead.position.z < Hzh) %} - G0 Z{Hzh} F{Sz} - {% endif %} - - #Protect against PROBE CALIBRATE performed from outside the bed - {% if (printer['gcode_move'].position.y > (My - Oy)) or (printer['gcode_move'].position.x > (Mx - Ox)) or (printer['gcode_move'].position.x < Ox) %} - { action_raise_error("Must perform PROBE_CALIBRATE with the probe above the BED!!!") } - {% endif%} - M400 # mandatory to save the new safe position - SAVE_GCODE_STATE NAME=_original_nozzle_location - - _CheckProbe action=query - Attach_Probe - - # Restore nozzle location to probe the right place - RESTORE_GCODE_STATE NAME=_original_nozzle_location MOVE=1 MOVE_SPEED={St} - - _PROBE_CALIBRATE {% for p in params - %}{'%s=%s ' % (p, params[p])}{% - endfor %} - - #store current nozzle location - SAVE_GCODE_STATE NAME=_original_nozzle_location - Dock_Probe - - # Restore nozzle location again at the end - RESTORE_GCODE_STATE NAME=_original_nozzle_location MOVE=1 MOVE_SPEED={St} - _exit_point function=PROBE_CALIBRATE - -# Probe Accuracy -[gcode_macro PROBE_ACCURACY] -rename_existing: _PROBE_ACCURACY -description:Probe Z-height accuracy at current XY position with klicky automount -gcode: - {% set Hzh = printer["gcode_macro _User_Variables"].home_z_height|float %} - {% set Sz = printer["gcode_macro _User_Variables"].z_drop_speed * 60 %} - {% set St = printer["gcode_macro _User_Variables"].travel_speed %} - {% set By = printer["gcode_macro _User_Variables"].max_bed_y %} - {% set Oy = printer['configfile'].config["probe"]["y_offset"]|float %} - - {% if not 'xyz' in printer.toolhead.homed_axes %} - { action_raise_error("Must Home X, Y and Z Axis First!") } - {% endif %} - - _entry_point function=PROBE_ACCURACY - - # Go to Z safe distance before saving location in order to - # avoid crashing the probe on the bed when coming back - {% if (printer.toolhead.position.z < Hzh) %} - G0 Z{Hzh} F{Sz} - {% endif %} - - #Protect against PROBE ACCURACY performed from outside the bed - {% if (printer.toolhead.position.y > (By - Oy)) %} - { action_raise_error("Must perform PROBE_ACCURACY with the probe above the BED!!!") } - {% endif%} - M400 # mandatory to save the new safe position - SAVE_GCODE_STATE NAME=_original_nozzle_location - - _CheckProbe action=query - Attach_Probe - - # Restore nozzle location to probe the right place - RESTORE_GCODE_STATE NAME=_original_nozzle_location MOVE=1 MOVE_SPEED={St} - - _PROBE_ACCURACY {% for p in params - %}{'%s=%s ' % (p, params[p])}{% - endfor %} - - #store current nozzle location - SAVE_GCODE_STATE NAME=_original_nozzle_location - - Dock_Probe - - # Restore nozzle location again at the end - RESTORE_GCODE_STATE NAME=_original_nozzle_location MOVE=1 MOVE_SPEED={St} - _exit_point function=PROBE_ACCURACY - -# enable to SET_KINEMATIC_POSITION for Z hop -[force_move] -enable_force_move: True - -# Homeing Override -[homing_override] -axes: xyz -gcode: - # collect user state variables - _User_Variables - {% set V = printer["gcode_macro _User_Variables"].verbose %} - {% set Hzh = printer["gcode_macro _User_Variables"].home_z_height|float %} - {% set Gm = printer["gcode_macro _User_Variables"].gravity %} - {% set Ax = printer["gcode_macro _User_Variables"].attachmove_x|default(0) %} - {% set Ay = printer["gcode_macro _User_Variables"].attachmove_y|default(0) %} - {% set Az = printer["gcode_macro _User_Variables"].attachmove_z|default(0) %} - {% set Da = printer["gcode_macro _User_Variables"].dockarmslenght|default(0) %} - - #if there is no Attach movement, assume older behavior - {% if Ax == Ay == Az == 0 %} - {% set Ay = Da %} - {% endif %} - - _CheckProbe action=query - - # reset parameters - {% set X, Y, Z = False, False, False %} - - # which axes have been requested for homing - {% if not 'X' in params - and not 'Y' in params - and not 'Z' in params %} - - {% set X, Y, Z = True, True, True %} - - {% else %} - {% if 'X' in params %} - {% set X = True %} - {% endif %} - - {% if 'Y' in params %} - {% set Y = True %} - {% endif %} - - {% if 'Z' in params %} - {% set Z = True %} - {% endif %} - - {% if 'X' in params - and 'Y' in params - and 'Z' in params %} - # reset homing state variables - # if homing all axes - _Homing_Variables reset=1 - {% endif %} - - {% endif %} - - _entry_point function=homing_override - - # if Z is not homed, do not move the bed if it goes down - {% if ('z' not in printer.toolhead.homed_axes) %} - {% if ('bed' in Gm) %} # checks if the bed or gantry move with gravity - {% set Hzh = 0 %} - {% elif ('gantry' in Gm) %} # checks if the bed or gantry move with gravity - {% set Hzh = Hzh %} - {% else %} - { action_raise_error("To avoid head crashes, configure Klicky probe gravity variable!") } - {% endif %} - {% endif %} - - {% if Z %} - {% if ('z' in printer.toolhead.homed_axes) %} - {% if (printer.toolhead.position.z < Hzh) %} - {% if V %} - { action_respond_info("Z too low, performing ZHOP") } - {% endif %} - G0 Z{Hzh} F1200 - {% endif %} - {% else %} - {% if V %} - { action_respond_info("Z not homed, forcing full G28") } - {% endif %} - SET_KINEMATIC_POSITION X=0 Y=0 Z=0 - G0 Z{Hzh} F600 - {% set X, Y, Z = True, True, True %} - {% endif %} - {% endif %} - - # if the dock is oriented on the Y, first do Y endstop - {% if Ay == 0 %} - # Home y - {% if Y %} - {% if V %} - { action_respond_info("Homing Y") } - {% endif %} - G28 Y0 - {% endif %} - {% set Y = 0 %} - {% endif %} - - # Home x - {% if X %} - {% if V %} - { action_respond_info("Homing X") } - {% endif %} - G28 X0 - {% endif %} - - # Home y - {% if Y %} - {% if V %} - { action_respond_info("Homing Y") } - {% endif %} - G28 Y0 - {% endif %} - - # Home z - {% if Z %} - {% if V %} - { action_respond_info("Homing Z") } - {% endif %} - - # if probe is configured as endstop, attach it, else dock the probe if attached - {% if printer['configfile'].config["stepper_z"]["endstop_pin"] == 'probe:z_virtual_endstop' %} - Attach_Probe - {% else %} - Dock_Probe - {% endif %} - - _Home_Z - - # if probe is configured as endstop, dock it - {% if printer['configfile'].config["stepper_z"]["endstop_pin"] == 'probe:z_virtual_endstop' %} - Dock_Probe - {% endif %} - {% endif %} - _CheckProbe action=query - - # park the toolhead - _Park_Toolhead - _exit_point function=homing_override - -# umbilical path setup -[gcode_macro _Umbilical_Path] -gcode: - {% set Ux = printer["gcode_macro _User_Variables"].umbilical_x %} - {% set Uy = printer["gcode_macro _User_Variables"].umbilical_y %} - {% set U = printer["gcode_macro _User_Variables"].umbilical %} - {% set Hzh = printer["gcode_macro _User_Variables"].home_z_height|float %} - {% set St = printer["gcode_macro _User_Variables"].travel_speed * 60 %} - - {% if U %} - # Used to give the umbilical a better path to follow and coil properly if dock is tight in space - _entry_point function=Umbilical_Path - G0 X{Ux} Y{Uy} Z{Hzh} F{St} - _exit_point function=Umbilical_Path - {% endif %} - - -# Home Z Routine -[gcode_macro _Home_Z] -gcode: - {% set Zx = printer["gcode_macro _Probe_Variables"].z_endstop_x %} - {% set Zy = printer["gcode_macro _Probe_Variables"].z_endstop_y %} - {% set Hzh = printer["gcode_macro _User_Variables"].home_z_height|float %} - {% set St = printer["gcode_macro _User_Variables"].travel_speed * 60 %} - {% set Sz = printer["gcode_macro _User_Variables"].z_drop_speed * 60 %} - - _entry_point function=Home_Z - - # if x and y are not homed yet, raise error - {% if not 'xy' in printer.toolhead.homed_axes %} - { action_raise_error("Must Home X and Y Axis First!") } - - {% else %} - {% if (not 'z' in printer.toolhead.homed_axes) %} - {% if V %} - { action_respond_info("Resetting Z position to zero") } - {% endif %} - SET_KINEMATIC_POSITION Z=0 - {% endif %} - - # move tool to safe homing position and home Z axis - # location of z endstop - G0 X{Zx} Y{Zy} F{St} - G28 Z0 - G0 Z{Hzh} F{Sz} - - {% endif %} - _exit_point function=Home_Z - - -# check to see if probe is where it is supposed to be after -# attaching/docking maneuver and set homing error or shutdown -[gcode_macro _CheckProbe] -variable_probe_state: 0 -gcode: - Query_Probe - _SetProbeState action={ ACTION } - - -# due to how templates are evaluated, we have query endstops in one -# macro and call another macro to make decisions based on the result -[gcode_macro _SetProbeState] -gcode: - {% set P = printer.probe.last_query %} - {% set V = printer["gcode_macro _User_Variables"].verbose %} - - # If triggered (true), probe not attached - {% if P %} - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_attached VALUE={ False } - - # If not triggered (false), probe attached - {% else %} - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_attached VALUE={ True } - {% endif %} - - {% if params.ACTION == 'query' %} - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_state VALUE={ P } - {% endif %} - - # if probe fails to attach/detach - # if not docked - {% if (not P and params.ACTION == 'dock') %} - { action_raise_error("Probe dock failed!") } - {% endif %} - - # if not attached - {% if P and params.ACTION == 'attach' %} - { action_raise_error("Probe attach failed!") } - {% endif %} - -# Park Toolhead Routine -[gcode_macro _Park_Toolhead] -gcode: - {% set P = printer["gcode_macro _User_Variables"].park_toolhead %} - {% set Px = printer["gcode_macro _User_Variables"].parkposition_x %} - {% set Py = printer["gcode_macro _User_Variables"].parkposition_y %} - {% set Pz = printer["gcode_macro _User_Variables"].parkposition_z %} - {% set St = printer["gcode_macro _User_Variables"].travel_speed * 60 %} - {% set V = printer["gcode_macro _User_Variables"].verbose %} - - _entry_point function=Park_Toolhead - - {% if (P and 'xyz' in printer.toolhead.homed_axes) %} - {% if V %} - { action_respond_info("Parking Toolhead") } - {% endif %} - G0 X{Px} Y{Py} Z{Pz} F{St} - {% endif %} - _exit_point function=Park_Toolhead - - -# Z Tilt Adjust -[gcode_macro Z_TILT_ADJUST] -rename_existing: _Z_TILT_ADJUST -description: -gcode: - {% set V = printer["gcode_macro _User_Variables"].verbose %} - {% if V %} - { action_respond_info("Z Tilt Adjust") } - {% endif %} - - _CheckProbe action=query - Attach_Probe - - _Z_TILT_ADJUST {% for p in params - %}{'%s=%s ' % (p, params[p])}{% - endfor %} - Dock_Probe - G28 Z0 - -[gcode_macro BED_MESH_CALIBRATE] -rename_existing: _BED_MESH_CALIBRATE -description: Perform Mesh Bed Leveling with klicky automount -gcode: - - {% set V = printer["gcode_macro _User_Variables"].verbose %} - {% if V %} - { action_respond_info("Bed Mesh Calibrate") } - {% endif %} - - _CheckProbe action=query - Attach_Probe - - _BED_MESH_CALIBRATE {% for p in params - %}{'%s=%s ' % (p, params[p])}{% - endfor %} - - Dock_Probe - -## Screws Tilt Adjust -#[gcode_macro SCREWS_TILT_CALCULATE] -#rename_existing: _SCREWS_TILT_CALCULATE -#description: -#gcode: -# {% set V = printer["gcode_macro _User_Variables"].verbose %} -# {% if V %} -# { action_respond_info("Screws Tilt Adjust") } -# {% endif %} -# -# _CheckProbe action=query -# Attach_Probe -# -# _SCREWS_TILT_CALCULATE {% for p in params -# %}{'%s=%s ' % (p, params[p])}{% -# endfor %} -# -# Dock_Probe diff --git a/printer_mods/JosAr/Klicky-Probe/Klipper_macro/klicky-probe-for_v1.8.cfg b/printer_mods/JosAr/Klicky-Probe/Klipper_macro/klicky-probe-for_v1.8.cfg deleted file mode 100644 index 1d8add5dd..000000000 --- a/printer_mods/JosAr/Klicky-Probe/Klipper_macro/klicky-probe-for_v1.8.cfg +++ /dev/null @@ -1,773 +0,0 @@ -# This macro was provided by discord user Garrettwp to whom i give my thanks for sharing it with me. -# I have tweaked it a lot. -# -# this macro is based on the great Annex magprobe dockable probe macros "#Originally developed by Mental, modified for better use on K-series printers by RyanG and Trails" -# that macro can be found here https://github.com/Annex-Engineering/Annex-Engineering_Other_Printer_Mods/blob/master/All_Printers/Microswitch_Probe/Klipper_Macros/dockable_probe_macros.cfg -# -# by standing on the shoulders of giants, lets see if we can see further - -[gcode_macro _User_Variables] -variable_verbose: True # Enable verbose output -variable_travel_speed: 200 # how fast all other travel moves will be performed when running these macros -variable_dock_speed: 50 # how fast should the toolhead move when docking the probe for the final movement -variable_release_speed: 75 # how fast should the toolhead move to release the hold of the magnets after docking -variable_z_drop_speed: 20 # how fast the z will lower when moving to the z location to clear the probe -variable_home_z_height: 10 # Z when homing - -#bed type -variable_gravity: 'bed' # What goes down with gravity, bed or gantry? -variable_max_bed_y: 250 # maximum Bed size avoids doing a probe_accuracy outside the bed - -# if a separate Z endstop switch is in -# use, specify the coordinates of the switch here (Voron). -# Set to 0 to have the probe move to center of bed -variable_z_endstop_x: 1000 -variable_z_endstop_y: 1000 - -#dock location -variable_docklocation_x: 1000 # X Dock position -variable_docklocation_y: 1000 # Y Dock position -variable_docklocation_z: -128 # Z dock position (-128 for a gantry mount) -variable_dockarmslenght: 30 # Dock arms lenght, toolhead movement necessary to clear the dock arms - -#Umbilical to help untangle the umbilical in difficult situations -variable_umbilical: False # should we untabgle the umbilical -variable_umbilical_x: 15 # X umbilical position -variable_umbilical_y: 15 # Y umbilical position - -# location to park the toolhead -variable_park_toolhead: False # Enable toolhead parking -variable_parkposition_x: 75 -variable_parkposition_y: 75 -variable_parkposition_z: 30 - -# Do not modify below -gcode: - {% set Mx = printer['configfile'].config["stepper_x"]["position_max"]|float %} - {% set My = printer['configfile'].config["stepper_y"]["position_max"]|float %} - {% set Ox = printer['configfile'].config["probe"]["x_offset"]|float %} - {% set Oy = printer['configfile'].config["probe"]["y_offset"]|float %} - {% set Oz = printer['configfile'].config["probe"]["z_offset"]|float %} - - # if docklocation_z is zero, use Home Z height for safety - {% if docklocation_z == 0 %} - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=docklocation_z VALUE={ home_z_height } - {% endif %} - - # If x, y coordinates are set for z endstop, assign them - {% if z_endstop_x != 0 or z_endstop_y != 0 %} - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=z_endstop_x VALUE={ z_endstop_x } - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=z_endstop_y VALUE={ z_endstop_y } - - # if no x, y coordinates for z endstop, assume probe is endstop and move toolhead to center of bed - {% else %} - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=z_endstop_x VALUE={ (Mx * 0.5) - Ox } - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=z_endstop_y VALUE={ (My * 0.5) - Oy } - {% endif %} -# This macro was provided by discord user Garrettwp to whom i give my thanks for sharing it with me. -# I have tweaked it a lot. -# -# this macro is based on the great Annex magprobe dockable probe macros "#Originally developed by Mental, modified for better use on K-series printers by RyanG and Trails" -# that macro can be found here https://github.com/Annex-Engineering/Annex-Engineering_Other_Printer_Mods/blob/master/All_Printers/Microswitch_Probe/Klipper_Macros/dockable_probe_macros.cfg -# -# by standing on the shoulders of giants, lets see if we can see further - -[gcode_macro _Probe_Variables] -variable_probe_attached: False -variable_probe_state: False -variable_probe_lock: False -variable_z_endstop_x: 0 -variable_z_endstop_y: 0 -gcode: - - -[gcode_macro _exit_point] -gcode: - {% set function = 'pre_' ~ params.FUNCTION %} - {% set move = params.MOVE|default(0) %} - # mandatory to save the new safe position - M400 - RESTORE_GCODE_STATE NAME={function} MOVE={move} - - -[gcode_macro _entry_point] -gcode: - {% set function = 'pre_' ~ params.FUNCTION %} - # mandatory to save the new safe position - M400 - SAVE_GCODE_STATE NAME={function} - # removes the Z offset for better bed based docking - SET_GCODE_OFFSET Z=0 - # all the macros initially assume absolute positioning - G90 - -[gcode_macro _Homing_Variables] -gcode: - {% set R = params.RESET|default(0) %} - {% if R %} - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_lock VALUE={ False } - {% endif %} - -# Attach probe and lock it -[gcode_macro Attach_Probe_Lock] -description: Attaches Klicky Probe, can only be docked after unlocking -gcode: - Attach_Probe - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_lock VALUE={ True } - -# Dock probe and lock it -[gcode_macro Dock_Probe_Unlock] -description: Docks Klicky Probe even if it was locked -gcode: - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_lock VALUE={ False } - Dock_Probe - -# Unlock Probe -[gcode_macro Probe_Unlock] -description: Unlocks Klicky Probe state -gcode: - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_lock VALUE={ False } - -# Lock Probe -[gcode_macro Probe_Lock] -description: Locks Klicky Probe state -gcode: - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_lock VALUE={ True } - -# Attach Probe Routine -[gcode_macro Attach_Probe] -description: Attaches Klicky Probe -gcode: - # Get probe attach status - {% set P = printer["gcode_macro _Probe_Variables"].probe_attached %} - {% set L = printer["gcode_macro _Probe_Variables"].probe_lock %} - {% set V = printer["gcode_macro _User_Variables"].verbose %} - # Get Docking location - {% set Mx = printer["gcode_macro _User_Variables"].dockmove_x|default(0) %} - {% set My = printer["gcode_macro _User_Variables"].dockmove_y|default(0) %} - {% set Mz = printer["gcode_macro _User_Variables"].dockmove_z|default(0) %} - {% set Dx = printer["gcode_macro _User_Variables"].docklocation_x %} - {% set Dy = printer["gcode_macro _User_Variables"].docklocation_y %} - {% set Dz = printer["gcode_macro _User_Variables"].docklocation_z %} - {% set Ax = printer["gcode_macro _User_Variables"].attachmove_x|default(0) %} - {% set Ay = printer["gcode_macro _User_Variables"].attachmove_y|default(0) %} - {% set Az = printer["gcode_macro _User_Variables"].attachmove_z|default(0) %} - {% set Gm = printer["gcode_macro _User_Variables"].gravity %} - {% set Da = printer["gcode_macro _User_Variables"].dockarmslenght|default(0) %} - # Safe Z for travel - {% set Hzh = printer["gcode_macro _User_Variables"].home_z_height|float %} - #Set speed - {% set St = printer["gcode_macro _User_Variables"].travel_speed * 60 %} - {% set Sd = printer["gcode_macro _User_Variables"].dock_speed * 60 %} - {% set Sr = printer["gcode_macro _User_Variables"].release_speed * 60 %} - {% set Sz = printer["gcode_macro _User_Variables"].z_drop_speed * 60 %} - - _entry_point function=Attach_Probe - - #if there is no undock movement, assume older behavior - {% if Mx == My == Mz == 0 %} - {% set Mx = 40 %} - {% endif %} - #if there is no Attach movement, assume older behavior - {% if Ax == Ay == Az == 0 %} - {% set Ay = Da %} - {% endif %} - - # if x and y are not homed - {% if not 'xy' in printer.toolhead.homed_axes %} - { action_raise_error("Must Home X and Y Axis First!") } - - # If probe not attached and locked - {% elif not P and not L %} - {% if V %} - { action_respond_info("Attaching Probe") } - {% endif %} - - {% if (not 'z' in printer.toolhead.homed_axes) %} - {% if V %} - { action_respond_info("Resetting Z position to zero") } - {% endif %} - SET_KINEMATIC_POSITION Z=0 - {% if ('bed' in Gm) %} # checks if the bed or gantry move with gravity - {% set Hzh = 0 %} - {% elif ('gantry' in Gm) %} # checks if the bed or gantry move with gravity - {% set Hzh = Hzh %} - {% else %} - { action_raise_error("To avoid head crashes, configure Klicky probe gravity variable!") } - {% endif %} - - {% endif %} - #prior to saving actual position, check if its necessary to move to a safe Z - #that has enought overhead for the attached probe - {% if (printer.toolhead.position.z < Hzh) %} - {% if V %} - { action_respond_info("moving to a safe Z distance") } - {% endif %} - G0 Z{Hzh} F{Sz} - {% endif %} - - {% if (not 'z' in printer.toolhead.homed_axes) %} - {% if V %} - { action_respond_info("Resetting Z position to zero") } - {% endif %} - SET_KINEMATIC_POSITION Z=0 - {% endif %} - - {% if (printer.toolhead.position.z < Hzh) %} - G0 Z{Hzh} F{Sz} - {% endif %} - - _Umbilical_Path - - # Probe entry location - G0 X{Dx|int - Ax|int} Y{Dy|int - Ay|int} F{St} - {% if Dz != -128 %} - G0 Z{Dz|int - Az|int} F{Sd} - {% endif %} - - # Drop Probe to Probe location - {% if Dz != -128 %} - G0 Z{Dz} F{Sd} - {% endif %} - G0 X{Dx} Y{Dy} F{Sd} - - # Probe Attach - {% if Dz != -128 %} - G0 Z{Dz|int - Az|int} F{Sz} - {% endif %} - G0 X{Dx|int - Ax|int} Y{Dy|int - Ay|int} F{Sr} - - #Go to Z safe distance - {% if (printer.toolhead.position.z < Hzh) %} - G0 Z{Hzh} F{Sz} - {% endif %} - - _Park_Toolhead - - _CheckProbe action=attach - - {% elif L %} - {% if V %} - { action_respond_info("Probe locked!") } - {% endif %} - - # Probe attached, do nothing - _CheckProbe action=query - - {% else %} - {% if V %} - { action_respond_info("Probe already attached!") } - {% endif %} - - # Probe attached, do nothing - _CheckProbe action=query - - {% endif %} - _exit_point function=Attach_Probe - -# Dock Probe Routine -[gcode_macro Dock_Probe] -description: Docks Klicky Probe -gcode: - # Get probe attach status - {% set P = printer["gcode_macro _Probe_Variables"].probe_attached %} - {% set L = printer["gcode_macro _Probe_Variables"].probe_lock %} - {% set V = printer["gcode_macro _User_Variables"].verbose %} - # Get Docking location - {% set Mx = printer["gcode_macro _User_Variables"].dockmove_x|default(0) %} - {% set My = printer["gcode_macro _User_Variables"].dockmove_y|default(0) %} - {% set Mz = printer["gcode_macro _User_Variables"].dockmove_z|default(0) %} - {% set Dx = printer["gcode_macro _User_Variables"].docklocation_x %} - {% set Dy = printer["gcode_macro _User_Variables"].docklocation_y %} - {% set Dz = printer["gcode_macro _User_Variables"].docklocation_z %} - {% set Ax = printer["gcode_macro _User_Variables"].attachmove_x|default(0) %} - {% set Ay = printer["gcode_macro _User_Variables"].attachmove_y|default(0) %} - {% set Az = printer["gcode_macro _User_Variables"].attachmove_z|default(0) %} - {% set Da = printer["gcode_macro _User_Variables"].dockarmslenght|default(0) %} - # Safe Z for travel - {% set Hzh = printer["gcode_macro _User_Variables"].home_z_height|float %} - # Set speed - {% set St = printer["gcode_macro _User_Variables"].travel_speed * 60 %} - {% set Sd = printer["gcode_macro _User_Variables"].dock_speed * 60 %} - {% set Sr = printer["gcode_macro _User_Variables"].release_speed * 60 %} - {% set Sz = printer["gcode_macro _User_Variables"].z_drop_speed * 60 %} - - #if there is no undock movement, assume older behavior - {% if Mx == My == Mz == 0 %} - {% set Mx = 40 %} - {% endif %} - #if there is no Attach movement, assume older behavior - {% if Ax == Ay == Az == 0 %} - {% set Ay = Da %} - {% endif %} - - _entry_point function=Dock_Probe - - {% if not 'xyz' in printer.toolhead.homed_axes %} - { action_raise_error("Must Home X, Y and Z Axis First!") } - - # If probe not attached and not locked - {% elif P and not L %} - {% if V %} - { action_respond_info("Docking Probe") } - {% endif %} - - {% if (printer.toolhead.position.z < Hzh) %} - G0 Z{Hzh} F{Sz} - {% endif %} - - _Umbilical_Path - - # Probe entry location - G0 X{Dx|int - Ax|int} Y{Dy|int - Ay|int} F{St} - {% if Dz != -128 %} - G0 Z{Dz|int - Az|int} F{Sd} - {% endif %} - # Drop Probe to Probe location - G0 X{Dx} Y{Dy} F{Sd} - {% if Dz != -128 %} - G0 Z{Dz} F{Sd} - {% endif %} - # Probe decoupling - {% if Dz != -128 %} - G0 Z{Dz|int + Mz|int} F{Sr} - {% endif %} - G0 X{Dx|int + Mx|int} Y{Dy|int + My|int} F{Sr} - #Go to Z safe distance - {% if (printer.toolhead.position.z < Hzh) %} - G0 Z{Hzh} F{Sz} - {% endif %} - - _Park_Toolhead - - G4 P1000 - _CheckProbe action=dock - - {% elif L %} - {% if V %} - { action_respond_info("Probe locked!") } - {% endif %} - - # Probe docked, do nothing - _CheckProbe action=query - - {% else %} - {% if V %} - { action_respond_info("Probe already docked!") } - {% endif %} - - # Probe docked, do nothing - _CheckProbe action=query - - {% endif %} - _exit_point function=Dock_Probe - -# Probe Calibrate -[gcode_macro PROBE_CALIBRATE] -rename_existing: _PROBE_CALIBRATE -description:Calibrate the probe's z_offset with klicky automount -gcode: - {% set Hzh = printer["gcode_macro _User_Variables"].home_z_height|float %} - {% set Sz = printer["gcode_macro _User_Variables"].z_drop_speed * 60 %} - {% set St = printer["gcode_macro _User_Variables"].travel_speed %} - {% set Mx = printer['configfile'].config["stepper_x"]["position_max"]|float %} - {% set My = printer['configfile'].config["stepper_y"]["position_max"]|float %} - {% set Ox = printer['configfile'].config["probe"]["x_offset"]|float %} - {% set Oy = printer['configfile'].config["probe"]["y_offset"]|float %} - - {% if not 'xyz' in printer.toolhead.homed_axes %} - { action_raise_error("Must Home X, Y and Z Axis First!") } - {% endif %} - - _entry_point function=PROBE_CALIBRATE - - # Go to Z safe distance before saving location in order to - # avoid crashing the probe on the bed when coming back - {% if (printer.toolhead.position.z < Hzh) %} - G0 Z{Hzh} F{Sz} - {% endif %} - - #Protect against PROBE CALIBRATE performed from outside the bed - {% if (printer['gcode_move'].position.y > (My - Oy)) or (printer['gcode_move'].position.x > (Mx - Ox)) or (printer['gcode_move'].position.x < Ox) %} - { action_raise_error("Must perform PROBE_CALIBRATE with the probe above the BED!!!") } - {% endif%} - M400 # mandatory to save the new safe position - SAVE_GCODE_STATE NAME=_original_nozzle_location - - _CheckProbe action=query - Attach_Probe - - # Restore nozzle location to probe the right place - RESTORE_GCODE_STATE NAME=_original_nozzle_location MOVE=1 MOVE_SPEED={St} - - _PROBE_CALIBRATE {% for p in params - %}{'%s=%s ' % (p, params[p])}{% - endfor %} - - #store current nozzle location - SAVE_GCODE_STATE NAME=_original_nozzle_location - Dock_Probe - - # Restore nozzle location again at the end - RESTORE_GCODE_STATE NAME=_original_nozzle_location MOVE=1 MOVE_SPEED={St} - _exit_point function=PROBE_CALIBRATE - -# Probe Accuracy -[gcode_macro PROBE_ACCURACY] -rename_existing: _PROBE_ACCURACY -description:Probe Z-height accuracy at current XY position with klicky automount -gcode: - {% set Hzh = printer["gcode_macro _User_Variables"].home_z_height|float %} - {% set Sz = printer["gcode_macro _User_Variables"].z_drop_speed * 60 %} - {% set St = printer["gcode_macro _User_Variables"].travel_speed %} - {% set By = printer["gcode_macro _User_Variables"].max_bed_y %} - {% set Oy = printer['configfile'].config["probe"]["y_offset"]|float %} - - {% if not 'xyz' in printer.toolhead.homed_axes %} - { action_raise_error("Must Home X, Y and Z Axis First!") } - {% endif %} - - _entry_point function=PROBE_ACCURACY - - # Go to Z safe distance before saving location in order to - # avoid crashing the probe on the bed when coming back - {% if (printer.toolhead.position.z < Hzh) %} - G0 Z{Hzh} F{Sz} - {% endif %} - - #Protect against PROBE ACCURACY performed from outside the bed - {% if (printer.toolhead.position.y > (By - Oy)) %} - { action_raise_error("Must perform PROBE_ACCURACY with the probe above the BED!!!") } - {% endif%} - M400 # mandatory to save the new safe position - SAVE_GCODE_STATE NAME=_original_nozzle_location - - _CheckProbe action=query - Attach_Probe - - # Restore nozzle location to probe the right place - RESTORE_GCODE_STATE NAME=_original_nozzle_location MOVE=1 MOVE_SPEED={St} - - _PROBE_ACCURACY {% for p in params - %}{'%s=%s ' % (p, params[p])}{% - endfor %} - - #store current nozzle location - SAVE_GCODE_STATE NAME=_original_nozzle_location - - Dock_Probe - - # Restore nozzle location again at the end - RESTORE_GCODE_STATE NAME=_original_nozzle_location MOVE=1 MOVE_SPEED={St} - _exit_point function=PROBE_ACCURACY - -# enable to SET_KINEMATIC_POSITION for Z hop -[force_move] -enable_force_move: True - -# Homeing Override -[homing_override] -axes: xyz -gcode: - # collect user state variables - _User_Variables - {% set V = printer["gcode_macro _User_Variables"].verbose %} - {% set Hzh = printer["gcode_macro _User_Variables"].home_z_height|float %} - {% set Gm = printer["gcode_macro _User_Variables"].gravity %} - {% set Ax = printer["gcode_macro _User_Variables"].attachmove_x|default(0) %} - {% set Ay = printer["gcode_macro _User_Variables"].attachmove_y|default(0) %} - {% set Az = printer["gcode_macro _User_Variables"].attachmove_z|default(0) %} - {% set Da = printer["gcode_macro _User_Variables"].dockarmslenght|default(0) %} - - #if there is no Attach movement, assume older behavior - {% if Ax == Ay == Az == 0 %} - {% set Ay = Da %} - {% endif %} - - _CheckProbe action=query - - # reset parameters - {% set X, Y, Z = False, False, False %} - - # which axes have been requested for homing - {% if not 'X' in params - and not 'Y' in params - and not 'Z' in params %} - - {% set X, Y, Z = True, True, True %} - - {% else %} - {% if 'X' in params %} - {% set X = True %} - {% endif %} - - {% if 'Y' in params %} - {% set Y = True %} - {% endif %} - - {% if 'Z' in params %} - {% set Z = True %} - {% endif %} - - {% if 'X' in params - and 'Y' in params - and 'Z' in params %} - # reset homing state variables - # if homing all axes - _Homing_Variables reset=1 - {% endif %} - - {% endif %} - - _entry_point function=homing_override - - # if Z is not homed, do not move the bed if it goes down - {% if ('z' not in printer.toolhead.homed_axes) %} - {% if ('bed' in Gm) %} # checks if the bed or gantry move with gravity - {% set Hzh = 0 %} - {% elif ('gantry' in Gm) %} # checks if the bed or gantry move with gravity - {% set Hzh = Hzh %} - {% else %} - { action_raise_error("To avoid head crashes, configure Klicky probe gravity variable!") } - {% endif %} - {% endif %} - - {% if Z %} - {% if ('z' in printer.toolhead.homed_axes) %} - {% if (printer.toolhead.position.z < Hzh) %} - {% if V %} - { action_respond_info("Z too low, performing ZHOP") } - {% endif %} - G0 Z{Hzh} F1200 - {% endif %} - {% else %} - {% if V %} - { action_respond_info("Z not homed, forcing full G28") } - {% endif %} - SET_KINEMATIC_POSITION X=0 Y=0 Z=0 - G0 Z{Hzh} F600 - {% set X, Y, Z = True, True, True %} - {% endif %} - {% endif %} - - # if the dock is oriented on the Y, first do Y endstop - {% if Ay == 0 %} - # Home y - {% if Y %} - {% if V %} - { action_respond_info("Homing Y") } - {% endif %} - G28 Y0 - {% endif %} - {% set Y = 0 %} - {% endif %} - - # Home x - {% if X %} - {% if V %} - { action_respond_info("Homing X") } - {% endif %} - G28 X0 - {% endif %} - - # Home y - {% if Y %} - {% if V %} - { action_respond_info("Homing Y") } - {% endif %} - G28 Y0 - {% endif %} - - # Home z - {% if Z %} - {% if V %} - { action_respond_info("Homing Z") } - {% endif %} - - # if probe is configured as endstop, attach it, else dock the probe if attached - {% if printer['configfile'].config["stepper_z"]["endstop_pin"] == 'probe:z_virtual_endstop' %} - Attach_Probe - {% else %} - Dock_Probe - {% endif %} - - _Home_Z - - # if probe is configured as endstop, dock it - {% if printer['configfile'].config["stepper_z"]["endstop_pin"] == 'probe:z_virtual_endstop' %} - Dock_Probe - {% endif %} - {% endif %} - _CheckProbe action=query - - # park the toolhead - _Park_Toolhead - _exit_point function=homing_override - -# umbilical path setup -[gcode_macro _Umbilical_Path] -gcode: - {% set Ux = printer["gcode_macro _User_Variables"].umbilical_x %} - {% set Uy = printer["gcode_macro _User_Variables"].umbilical_y %} - {% set U = printer["gcode_macro _User_Variables"].umbilical %} - {% set Hzh = printer["gcode_macro _User_Variables"].home_z_height|float %} - {% set St = printer["gcode_macro _User_Variables"].travel_speed * 60 %} - - {% if U %} - # Used to give the umbilical a better path to follow and coil properly if dock is tight in space - _entry_point function=Umbilical_Path - G0 X{Ux} Y{Uy} Z{Hzh} F{St} - _exit_point function=Umbilical_Path - {% endif %} - - -# Home Z Routine -[gcode_macro _Home_Z] -gcode: - {% set Zx = printer["gcode_macro _Probe_Variables"].z_endstop_x %} - {% set Zy = printer["gcode_macro _Probe_Variables"].z_endstop_y %} - {% set Hzh = printer["gcode_macro _User_Variables"].home_z_height|float %} - {% set St = printer["gcode_macro _User_Variables"].travel_speed * 60 %} - {% set Sz = printer["gcode_macro _User_Variables"].z_drop_speed * 60 %} - - _entry_point function=Home_Z - - # if x and y are not homed yet, raise error - {% if not 'xy' in printer.toolhead.homed_axes %} - { action_raise_error("Must Home X and Y Axis First!") } - - {% else %} - {% if (not 'z' in printer.toolhead.homed_axes) %} - {% if V %} - { action_respond_info("Resetting Z position to zero") } - {% endif %} - SET_KINEMATIC_POSITION Z=0 - {% endif %} - - # move tool to safe homing position and home Z axis - # location of z endstop - G0 X{Zx} Y{Zy} F{St} - G28 Z0 - G0 Z{Hzh} F{Sz} - - {% endif %} - _exit_point function=Home_Z - - -# check to see if probe is where it is supposed to be after -# attaching/docking maneuver and set homing error or shutdown -[gcode_macro _CheckProbe] -variable_probe_state: 0 -gcode: - Query_Probe - _SetProbeState action={ ACTION } - - -# due to how templates are evaluated, we have query endstops in one -# macro and call another macro to make decisions based on the result -[gcode_macro _SetProbeState] -gcode: - {% set P = printer.probe.last_query %} - {% set V = printer["gcode_macro _User_Variables"].verbose %} - - # If triggered (true), probe not attached - {% if P %} - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_attached VALUE={ False } - - # If not triggered (false), probe attached - {% else %} - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_attached VALUE={ True } - {% endif %} - - {% if params.ACTION == 'query' %} - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_state VALUE={ P } - {% endif %} - - # if probe fails to attach/detach - # if not docked - {% if (not P and params.ACTION == 'dock') %} - { action_raise_error("Probe dock failed!") } - {% endif %} - - # if not attached - {% if P and params.ACTION == 'attach' %} - { action_raise_error("Probe attach failed!") } - {% endif %} - -# Park Toolhead Routine -[gcode_macro _Park_Toolhead] -gcode: - {% set P = printer["gcode_macro _User_Variables"].park_toolhead %} - {% set Px = printer["gcode_macro _User_Variables"].parkposition_x %} - {% set Py = printer["gcode_macro _User_Variables"].parkposition_y %} - {% set Pz = printer["gcode_macro _User_Variables"].parkposition_z %} - {% set St = printer["gcode_macro _User_Variables"].travel_speed * 60 %} - {% set V = printer["gcode_macro _User_Variables"].verbose %} - - _entry_point function=Park_Toolhead - - {% if (P and 'xyz' in printer.toolhead.homed_axes) %} - {% if V %} - { action_respond_info("Parking Toolhead") } - {% endif %} - G0 X{Px} Y{Py} Z{Pz} F{St} - {% endif %} - _exit_point function=Park_Toolhead - - -## Z Tilt Adjust -#[gcode_macro Z_TILT_ADJUST] -#rename_existing: _Z_TILT_ADJUST -#description: -#gcode: -# {% set V = printer["gcode_macro _User_Variables"].verbose %} -# {% if V %} -# { action_respond_info("Z Tilt Adjust") } -# {% endif %} -# -# _CheckProbe action=query -# Attach_Probe -# -# _Z_TILT_ADJUST {% for p in params -# %}{'%s=%s ' % (p, params[p])}{% -# endfor %} -# Dock_Probe -# G28 Z0 - -[gcode_macro BED_MESH_CALIBRATE] -rename_existing: _BED_MESH_CALIBRATE -description: Perform Mesh Bed Leveling with klicky automount -gcode: - - {% set V = printer["gcode_macro _User_Variables"].verbose %} - {% if V %} - { action_respond_info("Bed Mesh Calibrate") } - {% endif %} - - _CheckProbe action=query - Attach_Probe - - _BED_MESH_CALIBRATE {% for p in params - %}{'%s=%s ' % (p, params[p])}{% - endfor %} - - Dock_Probe - -# Screws Tilt Adjust -[gcode_macro SCREWS_TILT_CALCULATE] -rename_existing: _SCREWS_TILT_CALCULATE -description: -gcode: - {% set V = printer["gcode_macro _User_Variables"].verbose %} - {% if V %} - { action_respond_info("Screws Tilt Adjust") } - {% endif %} - - _CheckProbe action=query - Attach_Probe - - _SCREWS_TILT_CALCULATE {% for p in params - %}{'%s=%s ' % (p, params[p])}{% - endfor %} - - Dock_Probe diff --git a/printer_mods/JosAr/Klicky-Probe/Klipper_macro/klicky-probe.cfg b/printer_mods/JosAr/Klicky-Probe/Klipper_macro/klicky-probe.cfg deleted file mode 100644 index 0d638fba0..000000000 --- a/printer_mods/JosAr/Klicky-Probe/Klipper_macro/klicky-probe.cfg +++ /dev/null @@ -1,758 +0,0 @@ -# This macro was provided by discord user Garrettwp to whom i give my thanks for sharing it with me. -# I have tweaked it a lot. -# -# this macro is based on the great Annex magprobe dockable probe macros "#Originally developed by Mental, modified for better use on K-series printers by RyanG and Trails" -# that macro can be found here https://github.com/Annex-Engineering/Annex-Engineering_Other_Printer_Mods/blob/master/All_Printers/Microswitch_Probe/Klipper_Macros/dockable_probe_macros.cfg -# -# by standing on the shoulders of giants, lets see if we can see further -# Klicky-probe.cfg version 16-11-2021 01 - -[gcode_macro _User_Variables] -variable_verbose: True # Enable verbose output -variable_travel_speed: 200 # how fast all other travel moves will be performed when running these macros -variable_dock_speed: 50 # how fast should the toolhead move when docking the probe for the final movement -variable_release_speed: 75 # how fast should the toolhead move to release the hold of the magnets after docking -variable_z_drop_speed: 20 # how fast the z will lower when moving to the z location to clear the probe -variable_home_z_height: 10 # Z when homing - -#bed type -variable_gravity: 'gantry' # What goes down with gravity, bed or gantry? -variable_max_bed_y: 250 # maximum Bed size avoids doing a probe_accuracy outside the bed - -# if a separate Z endstop switch is in -# use, specify the coordinates of the switch here (Voron). -# Set to 0 to have the probe move to center of bed -variable_z_endstop_x: 1000 -variable_z_endstop_y: 1000 - -#dock location -variable_docklocation_x: 1000 # X Dock position -variable_docklocation_y: 1000 # Y Dock position -variable_docklocation_z: -128 # Z dock position (-128 for a gantry mount) -variable_dockarmslenght: 30 # Dock arms lenght, toolhead movement necessary to clear the dock arms - -#Umbilical to help untangle the umbilical in difficult situations -variable_umbilical: False # should we untabgle the umbilical -variable_umbilical_x: 15 # X umbilical position -variable_umbilical_y: 15 # Y umbilical position - -# location to park the toolhead -variable_park_toolhead: False # Enable toolhead parking -variable_parkposition_x: 125 -variable_parkposition_y: 125 -variable_parkposition_z: 30 - -# Do not modify below -gcode: - {% set Mx = printer['configfile'].config["stepper_x"]["position_max"]|float %} - {% set My = printer['configfile'].config["stepper_y"]["position_max"]|float %} - {% set Ox = printer['configfile'].config["probe"]["x_offset"]|float %} - {% set Oy = printer['configfile'].config["probe"]["y_offset"]|float %} - {% set Oz = printer['configfile'].config["probe"]["z_offset"]|float %} - - # if docklocation_z is zero, use Home Z height for safety - {% if docklocation_z == 0 %} - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=docklocation_z VALUE={ home_z_height } - {% endif %} - - # If x, y coordinates are set for z endstop, assign them - {% if z_endstop_x != 0 or z_endstop_y != 0 %} - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=z_endstop_x VALUE={ z_endstop_x } - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=z_endstop_y VALUE={ z_endstop_y } - - # if no x, y coordinates for z endstop, assume probe is endstop and move toolhead to center of bed - {% else %} - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=z_endstop_x VALUE={ (Mx * 0.5) - Ox } - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=z_endstop_y VALUE={ (My * 0.5) - Oy } - {% endif %} -# This macro was provided by discord user Garrettwp to whom i give my thanks for sharing it with me. -# I have tweaked it a lot. -# -# this macro is based on the great Annex magprobe dockable probe macros "#Originally developed by Mental, modified for better use on K-series printers by RyanG and Trails" -# that macro can be found here https://github.com/Annex-Engineering/Annex-Engineering_Other_Printer_Mods/blob/master/All_Printers/Microswitch_Probe/Klipper_Macros/dockable_probe_macros.cfg -# -# by standing on the shoulders of giants, lets see if we can see further - -[gcode_macro _Probe_Variables] -variable_probe_attached: False -variable_probe_state: False -variable_probe_lock: False -variable_z_endstop_x: 0 -variable_z_endstop_y: 0 -gcode: - - -[gcode_macro _exit_point] -gcode: - {% set function = 'pre_' ~ params.FUNCTION %} - {% set move = params.MOVE|default(0) %} - # mandatory to save the new safe position - M400 - RESTORE_GCODE_STATE NAME={function} MOVE={move} - - -[gcode_macro _entry_point] -gcode: - {% set function = 'pre_' ~ params.FUNCTION %} - # mandatory to save the new safe position - M400 - SAVE_GCODE_STATE NAME={function} - # removes the Z offset for better bed based docking - SET_GCODE_OFFSET Z=0 - # all the macros initially assume absolute positioning - G90 - -[gcode_macro _Homing_Variables] -gcode: - {% set R = params.RESET|default(0) %} - {% if R %} - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_lock VALUE={ False } - {% endif %} - -# Attach probe and lock it -[gcode_macro Attach_Probe_Lock] -description: Attaches Klicky Probe, can only be docked after unlocking -gcode: - Attach_Probe - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_lock VALUE={ True } - -# Dock probe and lock it -[gcode_macro Dock_Probe_Unlock] -description: Docks Klicky Probe even if it was locked -gcode: - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_lock VALUE={ False } - Dock_Probe - -# Unlock Probe -[gcode_macro Probe_Unlock] -description: Unlocks Klicky Probe state -gcode: - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_lock VALUE={ False } - -# Lock Probe -[gcode_macro Probe_Lock] -description: Locks Klicky Probe state -gcode: - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_lock VALUE={ True } - -# Attach Probe Routine -[gcode_macro Attach_Probe] -description: Attaches Klicky Probe -gcode: - # Get probe attach status - {% set P = printer["gcode_macro _Probe_Variables"].probe_attached %} - {% set L = printer["gcode_macro _Probe_Variables"].probe_lock %} - {% set V = printer["gcode_macro _User_Variables"].verbose %} - # Get Docking location - {% set Mx = printer["gcode_macro _User_Variables"].dockmove_x|default(0) %} - {% set My = printer["gcode_macro _User_Variables"].dockmove_y|default(0) %} - {% set Mz = printer["gcode_macro _User_Variables"].dockmove_z|default(0) %} - {% set Dx = printer["gcode_macro _User_Variables"].docklocation_x %} - {% set Dy = printer["gcode_macro _User_Variables"].docklocation_y %} - {% set Dz = printer["gcode_macro _User_Variables"].docklocation_z %} - {% set Ax = printer["gcode_macro _User_Variables"].attachmove_x|default(0) %} - {% set Ay = printer["gcode_macro _User_Variables"].attachmove_y|default(0) %} - {% set Az = printer["gcode_macro _User_Variables"].attachmove_z|default(0) %} - {% set Gm = printer["gcode_macro _User_Variables"].gravity %} - {% set Da = printer["gcode_macro _User_Variables"].dockarmslenght|default(0) %} - # Safe Z for travel - {% set Hzh = printer["gcode_macro _User_Variables"].home_z_height|float %} - #Set speed - {% set St = printer["gcode_macro _User_Variables"].travel_speed * 60 %} - {% set Sd = printer["gcode_macro _User_Variables"].dock_speed * 60 %} - {% set Sr = printer["gcode_macro _User_Variables"].release_speed * 60 %} - {% set Sz = printer["gcode_macro _User_Variables"].z_drop_speed * 60 %} - - _entry_point function=Attach_Probe - - #if there is no undock movement, assume older behavior - {% if Mx == My == Mz == 0 %} - {% set Mx = 40 %} - {% endif %} - #if there is no Attach movement, assume older behavior - {% if Ax == Ay == Az == 0 %} - {% set Ay = Da %} - {% endif %} - - # if x and y are not homed - {% if not 'xy' in printer.toolhead.homed_axes %} - { action_raise_error("Must Home X and Y Axis First!") } - - # If probe not attached and locked - {% elif not P and not L %} - {% if V %} - { action_respond_info("Attaching Probe") } - {% endif %} - - {% if (not 'z' in printer.toolhead.homed_axes) %} - {% if V %} - { action_respond_info("Resetting Z position to zero") } - {% endif %} - SET_KINEMATIC_POSITION Z=0 - {% if ('bed' in Gm) %} # checks if the bed or gantry move with gravity - {% set Hzh = 0 %} - {% elif ('gantry' in Gm) %} # checks if the bed or gantry move with gravity - {% set Hzh = Hzh %} - {% else %} - { action_raise_error("To avoid head crashes, configure Klicky probe gravity variable!") } - {% endif %} - - {% endif %} - #prior to saving actual position, check if its necessary to move to a safe Z - #that has enought overhead for the attached probe - {% if (printer.toolhead.position.z < Hzh) %} - {% if V %} - { action_respond_info("moving to a safe Z distance") } - {% endif %} - G0 Z{Hzh} F{Sz} - {% endif %} - - {% if (not 'z' in printer.toolhead.homed_axes) %} - {% if V %} - { action_respond_info("Resetting Z position to zero") } - {% endif %} - SET_KINEMATIC_POSITION Z=0 - {% endif %} - - {% if (printer.toolhead.position.z < Hzh) %} - G0 Z{Hzh} F{Sz} - {% endif %} - - _Umbilical_Path - - # Probe entry location - G0 X{Dx|int - Ax|int} Y{Dy|int - Ay|int} F{St} - {% if Dz != -128 %} - G0 Z{Dz|int - Az|int} F{Sd} - {% endif %} - - # Drop Probe to Probe location - {% if Dz != -128 %} - G0 Z{Dz} F{Sd} - {% endif %} - G0 X{Dx} Y{Dy} F{Sd} - - # Probe Attach - {% if Dz != -128 %} - G0 Z{Dz|int - Az|int} F{Sz} - {% endif %} - G0 X{Dx|int - Ax|int} Y{Dy|int - Ay|int} F{Sr} - - #Go to Z safe distance - {% if (printer.toolhead.position.z < Hzh) %} - G0 Z{Hzh} F{Sz} - {% endif %} - - _Park_Toolhead - - _CheckProbe action=attach - - {% elif L %} - {% if V %} - { action_respond_info("Probe locked!") } - {% endif %} - - # Probe attached, do nothing - _CheckProbe action=query - - {% else %} - {% if V %} - { action_respond_info("Probe already attached!") } - {% endif %} - - # Probe attached, do nothing - _CheckProbe action=query - - {% endif %} - _exit_point function=Attach_Probe - -# Dock Probe Routine -[gcode_macro Dock_Probe] -description: Docks Klicky Probe -gcode: - # Get probe attach status - {% set P = printer["gcode_macro _Probe_Variables"].probe_attached %} - {% set L = printer["gcode_macro _Probe_Variables"].probe_lock %} - {% set V = printer["gcode_macro _User_Variables"].verbose %} - # Get Docking location - {% set Mx = printer["gcode_macro _User_Variables"].dockmove_x|default(0) %} - {% set My = printer["gcode_macro _User_Variables"].dockmove_y|default(0) %} - {% set Mz = printer["gcode_macro _User_Variables"].dockmove_z|default(0) %} - {% set Dx = printer["gcode_macro _User_Variables"].docklocation_x %} - {% set Dy = printer["gcode_macro _User_Variables"].docklocation_y %} - {% set Dz = printer["gcode_macro _User_Variables"].docklocation_z %} - {% set Ax = printer["gcode_macro _User_Variables"].attachmove_x|default(0) %} - {% set Ay = printer["gcode_macro _User_Variables"].attachmove_y|default(0) %} - {% set Az = printer["gcode_macro _User_Variables"].attachmove_z|default(0) %} - {% set Da = printer["gcode_macro _User_Variables"].dockarmslenght|default(0) %} - # Safe Z for travel - {% set Hzh = printer["gcode_macro _User_Variables"].home_z_height|float %} - # Set speed - {% set St = printer["gcode_macro _User_Variables"].travel_speed * 60 %} - {% set Sd = printer["gcode_macro _User_Variables"].dock_speed * 60 %} - {% set Sr = printer["gcode_macro _User_Variables"].release_speed * 60 %} - {% set Sz = printer["gcode_macro _User_Variables"].z_drop_speed * 60 %} - - #if there is no undock movement, assume older behavior - {% if Mx == My == Mz == 0 %} - {% set Mx = 40 %} - {% endif %} - #if there is no Attach movement, assume older behavior - {% if Ax == Ay == Az == 0 %} - {% set Ay = Da %} - {% endif %} - - _entry_point function=Dock_Probe - - {% if not 'xyz' in printer.toolhead.homed_axes %} - { action_raise_error("Must Home X, Y and Z Axis First!") } - - # If probe not attached and not locked - {% elif P and not L %} - {% if V %} - { action_respond_info("Docking Probe") } - {% endif %} - - {% if (printer.toolhead.position.z < Hzh) %} - G0 Z{Hzh} F{Sz} - {% endif %} - - _Umbilical_Path - - # Probe entry location - G0 X{Dx|int - Ax|int} Y{Dy|int - Ay|int} F{St} - {% if Dz != -128 %} - G0 Z{Dz|int - Az|int} F{Sd} - {% endif %} - # Drop Probe to Probe location - G0 X{Dx} Y{Dy} F{Sd} - {% if Dz != -128 %} - G0 Z{Dz} F{Sd} - {% endif %} - # Probe decoupling - {% if Dz != -128 %} - G0 Z{Dz|int + Mz|int} F{Sr} - {% endif %} - G0 X{Dx|int + Mx|int} Y{Dy|int + My|int} F{Sr} - #Go to Z safe distance - {% if (printer.toolhead.position.z < Hzh) %} - G0 Z{Hzh} F{Sz} - {% endif %} - - _Park_Toolhead - - G4 P1000 - _CheckProbe action=dock - - {% elif L %} - {% if V %} - { action_respond_info("Probe locked!") } - {% endif %} - - # Probe docked, do nothing - _CheckProbe action=query - - {% else %} - {% if V %} - { action_respond_info("Probe already docked!") } - {% endif %} - - # Probe docked, do nothing - _CheckProbe action=query - - {% endif %} - _exit_point function=Dock_Probe - -# Probe Calibrate -[gcode_macro PROBE_CALIBRATE] -rename_existing: _PROBE_CALIBRATE -description:Calibrate the probe's z_offset with klicky automount -gcode: - {% set Hzh = printer["gcode_macro _User_Variables"].home_z_height|float %} - {% set Sz = printer["gcode_macro _User_Variables"].z_drop_speed * 60 %} - {% set St = printer["gcode_macro _User_Variables"].travel_speed %} - {% set Mx = printer['configfile'].config["stepper_x"]["position_max"]|float %} - {% set My = printer['configfile'].config["stepper_y"]["position_max"]|float %} - {% set Ox = printer['configfile'].config["probe"]["x_offset"]|float %} - {% set Oy = printer['configfile'].config["probe"]["y_offset"]|float %} - - {% if not 'xyz' in printer.toolhead.homed_axes %} - { action_raise_error("Must Home X, Y and Z Axis First!") } - {% endif %} - - _entry_point function=PROBE_CALIBRATE - - # Go to Z safe distance before saving location in order to - # avoid crashing the probe on the bed when coming back - {% if (printer.toolhead.position.z < Hzh) %} - G0 Z{Hzh} F{Sz} - {% endif %} - - #Protect against PROBE CALIBRATE performed from outside the bed - {% if (printer['gcode_move'].position.y > (My - Oy)) or (printer['gcode_move'].position.x > (Mx - Ox)) or (printer['gcode_move'].position.x < Ox) %} - { action_raise_error("Must perform PROBE_CALIBRATE with the probe above the BED!!!") } - {% endif%} - M400 # mandatory to save the new safe position - SAVE_GCODE_STATE NAME=_original_nozzle_location - - _CheckProbe action=query - Attach_Probe - - # Restore nozzle location to probe the right place - RESTORE_GCODE_STATE NAME=_original_nozzle_location MOVE=1 MOVE_SPEED={St} - - _PROBE_CALIBRATE {% for p in params - %}{'%s=%s ' % (p, params[p])}{% - endfor %} - - #store current nozzle location - SAVE_GCODE_STATE NAME=_original_nozzle_location - Dock_Probe - - # Restore nozzle location again at the end - RESTORE_GCODE_STATE NAME=_original_nozzle_location MOVE=1 MOVE_SPEED={St} - _exit_point function=PROBE_CALIBRATE - -# Probe Accuracy -[gcode_macro PROBE_ACCURACY] -rename_existing: _PROBE_ACCURACY -description:Probe Z-height accuracy at current XY position with klicky automount -gcode: - {% set Hzh = printer["gcode_macro _User_Variables"].home_z_height|float %} - {% set Sz = printer["gcode_macro _User_Variables"].z_drop_speed * 60 %} - {% set St = printer["gcode_macro _User_Variables"].travel_speed %} - {% set By = printer["gcode_macro _User_Variables"].max_bed_y %} - {% set Oy = printer['configfile'].config["probe"]["y_offset"]|float %} - - {% if not 'xyz' in printer.toolhead.homed_axes %} - { action_raise_error("Must Home X, Y and Z Axis First!") } - {% endif %} - - _entry_point function=PROBE_ACCURACY - - # Go to Z safe distance before saving location in order to - # avoid crashing the probe on the bed when coming back - {% if (printer.toolhead.position.z < Hzh) %} - G0 Z{Hzh} F{Sz} - {% endif %} - - #Protect against PROBE ACCURACY performed from outside the bed - {% if (printer.toolhead.position.y > (By - Oy)) %} - { action_raise_error("Must perform PROBE_ACCURACY with the probe above the BED!!!") } - {% endif%} - M400 # mandatory to save the new safe position - SAVE_GCODE_STATE NAME=_original_nozzle_location - - _CheckProbe action=query - Attach_Probe - - # Restore nozzle location to probe the right place - RESTORE_GCODE_STATE NAME=_original_nozzle_location MOVE=1 MOVE_SPEED={St} - - _PROBE_ACCURACY {% for p in params - %}{'%s=%s ' % (p, params[p])}{% - endfor %} - - #store current nozzle location - SAVE_GCODE_STATE NAME=_original_nozzle_location - - Dock_Probe - - # Restore nozzle location again at the end - RESTORE_GCODE_STATE NAME=_original_nozzle_location MOVE=1 MOVE_SPEED={St} - _exit_point function=PROBE_ACCURACY - -# enable to SET_KINEMATIC_POSITION for Z hop -[force_move] -enable_force_move: True - -# Homeing Override -[homing_override] -axes: xyz -gcode: - # collect user state variables - _User_Variables - {% set V = printer["gcode_macro _User_Variables"].verbose %} - {% set Hzh = printer["gcode_macro _User_Variables"].home_z_height|float %} - {% set Gm = printer["gcode_macro _User_Variables"].gravity %} - {% set Ax = printer["gcode_macro _User_Variables"].attachmove_x|default(0) %} - {% set Ay = printer["gcode_macro _User_Variables"].attachmove_y|default(0) %} - {% set Az = printer["gcode_macro _User_Variables"].attachmove_z|default(0) %} - {% set Da = printer["gcode_macro _User_Variables"].dockarmslenght|default(0) %} - - #if there is no Attach movement, assume older behavior - {% if Ax == Ay == Az == 0 %} - {% set Ay = Da %} - {% endif %} - - _CheckProbe action=query - - # reset parameters - {% set X, Y, Z = False, False, False %} - - # which axes have been requested for homing - {% if not 'X' in params - and not 'Y' in params - and not 'Z' in params %} - - {% set X, Y, Z = True, True, True %} - - {% else %} - {% if 'X' in params %} - {% set X = True %} - {% endif %} - - {% if 'Y' in params %} - {% set Y = True %} - {% endif %} - - {% if 'Z' in params %} - {% set Z = True %} - {% endif %} - - {% if 'X' in params - and 'Y' in params - and 'Z' in params %} - # reset homing state variables - # if homing all axes - _Homing_Variables reset=1 - {% endif %} - - {% endif %} - - _entry_point function=homing_override - - # if Z is not homed, do not move the bed if it goes down - {% if ('z' not in printer.toolhead.homed_axes) %} - {% if ('bed' in Gm) %} # checks if the bed or gantry move with gravity - {% set Hzh = 0 %} - {% elif ('gantry' in Gm) %} # checks if the bed or gantry move with gravity - {% set Hzh = Hzh %} - {% else %} - { action_raise_error("To avoid head crashes, configure Klicky probe gravity variable!") } - {% endif %} - {% endif %} - - {% if Z %} - {% if ('z' in printer.toolhead.homed_axes) %} - {% if (printer.toolhead.position.z < Hzh) %} - {% if V %} - { action_respond_info("Z too low, performing ZHOP") } - {% endif %} - G0 Z{Hzh} F1200 - {% endif %} - {% else %} - {% if V %} - { action_respond_info("Z not homed, forcing full G28") } - {% endif %} - SET_KINEMATIC_POSITION X=0 Y=0 Z=0 - G0 Z{Hzh} F600 - {% set X, Y, Z = True, True, True %} - {% endif %} - {% endif %} - - # if the dock is oriented on the Y, first do Y endstop - {% if Ay == 0 %} - # Home y - {% if Y %} - {% if V %} - { action_respond_info("Homing Y") } - {% endif %} - G28 Y0 - {% endif %} - {% set Y = 0 %} - {% endif %} - - # Home x - {% if X %} - {% if V %} - { action_respond_info("Homing X") } - {% endif %} - G28 X0 - {% endif %} - - # Home y - {% if Y %} - {% if V %} - { action_respond_info("Homing Y") } - {% endif %} - G28 Y0 - {% endif %} - - # Home z - {% if Z %} - {% if V %} - { action_respond_info("Homing Z") } - {% endif %} - - # if probe is configured as endstop, attach it, else dock the probe if attached - {% if printer['configfile'].config["stepper_z"]["endstop_pin"] == 'probe:z_virtual_endstop' %} - Attach_Probe - {% else %} - Dock_Probe - {% endif %} - - _Home_Z - - # if probe is configured as endstop, dock it - {% if printer['configfile'].config["stepper_z"]["endstop_pin"] == 'probe:z_virtual_endstop' %} - Dock_Probe - {% endif %} - {% endif %} - _CheckProbe action=query - - # park the toolhead - _Park_Toolhead - _exit_point function=homing_override - -# umbilical path setup -[gcode_macro _Umbilical_Path] -gcode: - {% set Ux = printer["gcode_macro _User_Variables"].umbilical_x %} - {% set Uy = printer["gcode_macro _User_Variables"].umbilical_y %} - {% set U = printer["gcode_macro _User_Variables"].umbilical %} - {% set Hzh = printer["gcode_macro _User_Variables"].home_z_height|float %} - {% set St = printer["gcode_macro _User_Variables"].travel_speed * 60 %} - - {% if U %} - # Used to give the umbilical a better path to follow and coil properly if dock is tight in space - _entry_point function=Umbilical_Path - G0 X{Ux} Y{Uy} Z{Hzh} F{St} - _exit_point function=Umbilical_Path - {% endif %} - - -# Home Z Routine -[gcode_macro _Home_Z] -gcode: - {% set Zx = printer["gcode_macro _Probe_Variables"].z_endstop_x %} - {% set Zy = printer["gcode_macro _Probe_Variables"].z_endstop_y %} - {% set Hzh = printer["gcode_macro _User_Variables"].home_z_height|float %} - {% set St = printer["gcode_macro _User_Variables"].travel_speed * 60 %} - {% set Sz = printer["gcode_macro _User_Variables"].z_drop_speed * 60 %} - - _entry_point function=Home_Z - - # if x and y are not homed yet, raise error - {% if not 'xy' in printer.toolhead.homed_axes %} - { action_raise_error("Must Home X and Y Axis First!") } - - {% else %} - {% if (not 'z' in printer.toolhead.homed_axes) %} - {% if V %} - { action_respond_info("Resetting Z position to zero") } - {% endif %} - SET_KINEMATIC_POSITION Z=0 - {% endif %} - - # move tool to safe homing position and home Z axis - # location of z endstop - G0 X{Zx} Y{Zy} F{St} - G28 Z0 - G0 Z{Hzh} F{Sz} - - {% endif %} - _exit_point function=Home_Z - - -# check to see if probe is where it is supposed to be after -# attaching/docking maneuver and set homing error or shutdown -[gcode_macro _CheckProbe] -variable_probe_state: 0 -gcode: - Query_Probe - _SetProbeState action={ ACTION } - - -# due to how templates are evaluated, we have query endstops in one -# macro and call another macro to make decisions based on the result -[gcode_macro _SetProbeState] -gcode: - {% set P = printer.probe.last_query %} - {% set V = printer["gcode_macro _User_Variables"].verbose %} - - # If triggered (true), probe not attached - {% if P %} - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_attached VALUE={ False } - - # If not triggered (false), probe attached - {% else %} - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_attached VALUE={ True } - {% endif %} - - {% if params.ACTION == 'query' %} - SET_GCODE_VARIABLE MACRO=_Probe_Variables VARIABLE=probe_state VALUE={ P } - {% endif %} - - # if probe fails to attach/detach - # if not docked - {% if (not P and params.ACTION == 'dock') %} - { action_raise_error("Probe dock failed!") } - {% endif %} - - # if not attached - {% if P and params.ACTION == 'attach' %} - { action_raise_error("Probe attach failed!") } - {% endif %} - -# Park Toolhead Routine -[gcode_macro _Park_Toolhead] -gcode: - {% set P = printer["gcode_macro _User_Variables"].park_toolhead %} - {% set Px = printer["gcode_macro _User_Variables"].parkposition_x %} - {% set Py = printer["gcode_macro _User_Variables"].parkposition_y %} - {% set Pz = printer["gcode_macro _User_Variables"].parkposition_z %} - {% set St = printer["gcode_macro _User_Variables"].travel_speed * 60 %} - {% set V = printer["gcode_macro _User_Variables"].verbose %} - - _entry_point function=Park_Toolhead - - {% if (P and 'xyz' in printer.toolhead.homed_axes) %} - {% if V %} - { action_respond_info("Parking Toolhead") } - {% endif %} - G0 X{Px} Y{Py} Z{Pz} F{St} - {% endif %} - _exit_point function=Park_Toolhead - -# Quad Gantry Level -[gcode_macro QUAD_GANTRY_LEVEL] -rename_existing: _QUAD_GANTRY_LEVEL -description: Conform a moving, twistable gantry to the shape of a stationary bed with klicky automount -gcode: - {% set V = printer["gcode_macro _User_Variables"].verbose %} - {% if V %} - { action_respond_info("QG Level") } - {% endif %} - - _CheckProbe action=query - Attach_Probe - - _QUAD_GANTRY_LEVEL {% for p in params - %}{'%s=%s ' % (p, params[p])}{% - endfor %} - Dock_Probe - -# Bed Mesh Calibrate -[bed_mesh] - -[gcode_macro BED_MESH_CALIBRATE] -rename_existing: _BED_MESH_CALIBRATE -description: Perform Mesh Bed Leveling with klicky automount -gcode: - - {% set V = printer["gcode_macro _User_Variables"].verbose %} - {% if V %} - { action_respond_info("Bed Mesh Calibrate") } - {% endif %} - - _CheckProbe action=query - Attach_Probe - - _BED_MESH_CALIBRATE {% for p in params - %}{'%s=%s ' % (p, params[p])}{% - endfor %} - - Dock_Probe - - diff --git a/printer_mods/JosAr/Klicky-Probe/Klipper_macro/z_calibration.cfg b/printer_mods/JosAr/Klicky-Probe/Klipper_macro/z_calibration.cfg deleted file mode 100644 index 0695327fa..000000000 --- a/printer_mods/JosAr/Klicky-Probe/Klipper_macro/z_calibration.cfg +++ /dev/null @@ -1,89 +0,0 @@ -[z_calibration] - -## update these variable according to the documentation here https://github.com/protoloft/klipper_z_calibration -## you then should call CALIBRATE_Z as one of the last lines on your PRINT_START to set the Z offset dinamically -#probe_nozzle_x: YOUR Z Endstop X -#probe_nozzle_y: YOUR Z Endstop X -# The X and Y coordinates (in mm) for clicking the nozzle on the -# Z endstop. -#(probe_switch_x should be minus 5mm from the probe_nozzle_x) -#probe_switch_x: -#(probe_switch_y should be minus 10.5mm from the probe_nozzle_y) -#probe_switch_y: -# The X and Y coordinates (in mm) for clicking the probe's switch -# on the Z endstop. -#probe_bed_x: default from relative_reference_index of bed_mesh -#probe_bed_y: default from relative_reference_index of bed_mesh -# 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. -switch_offset: 0.42 -# The trigger point offset of the used klicky switch. -# This needs to be fined out manually. More on this later -# in this section.. -max_deviation: 1.5 -# The maximum allowed deviation of the calculated offset. -# If the offset exceeds this value, it will stop! -# The default is 1.0 mm. -#samples: default from [probe] section -# The number of times to probe each point. The probed z-values -# will be averaged. The default is from the probe's configuration. -#samples_tolerance: default from [probe] 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_retries: default from [probe] 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_result: default from [probe] section -# The calculation method when sampling more than once - either -# "median" or "average". The default is from the probe's configuration. -clearance: 10 -# 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: 0 -# Minimum valid distance (in mm) used for probing move. The -# default is from the Z rail configuration. -speed: 100 -# The moving speed in X and Y. The default is 50 mm/s. -#lift_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. -#probing_speed: default homing_speed from [stepper_z] section. -# The fast probing speed (in mm/s) used, when probing_first_fast -# is activated. The default is from the Z rail configuration. -#probing_second_speed: default second_homing_speed from [stepper_z] section. -# The slower speed (in mm/s) for probing the recorded samples. -# The default is second_homing_speed of the Z rail configuration. -#probing_retract_dist: default homing_retract_dist from [stepper_z] section. -# Distance to backoff (in mm) before probing the next sample. -# The default is homing_retract_dist from the Z rail configuration. -probing_first_fast: true -# 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. - -start_gcode: Dock_Probe_Unlock -# 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. -before_switch_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. -end_gcode: Dock_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. - -[gcode_macro CALIBRATE_Z] -rename_existing: BASE_CALIBRATE_Z -gcode: - M117 Z-Calibration.. - BASE_CALIBRATE_Z - M117 diff --git a/printer_mods/JosAr/Klicky-Probe/README.md b/printer_mods/JosAr/Klicky-Probe/README.md index a89ab8ed4..20cd7f972 100644 --- a/printer_mods/JosAr/Klicky-Probe/README.md +++ b/printer_mods/JosAr/Klicky-Probe/README.md @@ -24,7 +24,9 @@ Mental created the initial macro and one of the first magnetically attached micr Without them, and some others this effort would not be in the current state, many thanks to them all. -If you want to donate something regarding this project, use this [link](https://paypal.me/Josar154), thanks +If you want to donate something regarding this project, use this [link](https://paypal.me/Josar154) or [__Buy me some ABS!__](https://www.buymeacoffee.com/JosAr), thanks + + ![Klicky Probe image](Photos/Klicky_Probe.png) @@ -276,7 +278,7 @@ Normally the endstop pin have a hardware solution. ## Step 6: klipper configuration Dock/Undock Macro -You will need to add macros to klipper to be able to dock and undock the probe as necessary to do the Endstop (if necessary) and Quad Gantry Level, it is in the klipper Macro directory. +You will need to add macros to klipper to be able to dock and undock the probe as necessary to do the Endstop (if necessary) and Quad Gantry Level, to ease updates on this repository, they are on the main [Klicky repository](https://github.com/jlas1/Klicky-Probe) The macro is based on a version provided by the user garrettwp on Discord, many thanks to him. I have tweaked it a lot. @@ -362,7 +364,7 @@ position_max: 305 If you want to use the Z endstop switch of the Voron to calculate the Z-Offset, use the new [automatic Z calibration](https://github.com/protoloft/klipper_z_calibration). Most of necessary macros are already included in the klicky-probe.cfg, what is missing is the specific z_calibration configuration and the macro that is called to do the actual calibration. -All of this is included in the [Klicky automatic Z calibration configuration](./Klipper_macro/z_calibration.cfg) +All of this is included in the Klicky automatic Z calibration configuration, that can be found on the main [Klicky repository](https://github.com/jlas1/Klicky-Probe) You should then add a call to CALIBRATE_Z at the end of your PRINTER_START (before any purge line). diff --git a/printer_mods/JosAr/Klicky-Probe/README.pdf b/printer_mods/JosAr/Klicky-Probe/README.pdf index 4d10b25e0278c120ef43f569faf45590150f2c29..a6e79f00264142dae06153afb4bb277a0ea0c491 100644 GIT binary patch delta 64581 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%0ATC5 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 Zjf;WucsCHpi0rKFY+MM`)KV(a{|8?QT=)P0 delta 64192 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