Added drop-in replacement, code optimization, improved setup & assemb… (#555)

* Added drop-in replacement, code optimization, improved setup & assembly guides

* Add files via upload

* Delete Dock_arm_endblock_Quickdraw_VSW.stl

* Add files via upload

* Add files via upload

* Add files via upload

* Delete quickdraw_SW_probe.PNG

* Add files via upload

* Update README.md

* Delete Dock_Arm_Quickdraw_VSW.stl

* Update README.md

* Delete Quickdraw_Probe_VSW.step

* Add files via upload

* Update dock_macros.cfg

* Update README.md

* Delete printer_mods/hymness1/Quickdraw_probe_Voron_Switchwire/Klipper_Macros directory

* Add files via upload

* Add files via upload

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Add files via upload

* Add files via upload

* Delete KeyBak_Mount_Z_endstop.stl
This commit is contained in:
hymness1 2021-12-31 16:43:58 -05:00 committed by GitHub
parent 997ae5278a
commit 5719e86d50
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 19085 additions and 67104 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,79 +1,80 @@
#### Warning : This is for an official Voron Switchwire. It is also assumed that your toolhead can be clear of the bed when the bed is pushed all the way to the rear of the printer with the X gantry resting on the lower endstop blocks. If not, I recommend using a Z-max endstop microswitch for initial Z-homing, or manually attaching the probe.
The macros are working on official Klipper firmware.
The values that are in the config file are the values I use for my Switchwire. You can still use these macros if you use the files for the probe and dock from Annex Engineering. If you do, you'll want to change the value for variable_detach from 1 to 2.
For the initial homing for the Z-axis, there are options for probe homing, sensorless homing and endstop microswitch homing.
There are some safety measures, but this is still a work in progress. For the moment, failing to dock will kill the printer (M112), as failing to dock properly could result in damaging the probe itself or the bed. As for failing to attach the probe, you'll get an error message stating that the probe reports as triggered prior to movement. Be sure to add `Dock_probe` to your print_start macro after your bed mesh or other probing actions.
You can find my `printer.cfg` and other relevant macros for reference [here](https://github.com/hymness1/Switchwire_Things/tree/main/klipper_config)
# Initial Startup
I'm assuming you already have an up and running Switchwire prior to using the Quickdraw Probe and using the modded KeyBak mount.
1. Backup your `printer.cfg` file
2. Upload `dock_macros.cfg` to `klipper_config` folder. Do not include it yet in `printer.cfg`
3. Manually move the toolhead so you can easily attach and detach the probe manually
4. With the probe detached, run `query_probe` in the terminal. It should report as triggered
5. With the probe attached, run `query_probe`. It should report as open
* If it reports as open when detached and triggered when attached, you'll need to invert the pin in your `printer.cfg` file in the `[probe]` section.
* Press down the trigger of the probe microswitch and issue a `query_probe` command. It should report as triggered. A third hand might be handy.
6. Manually move the toolhead higher up. Home the toolhead and test that it triggers by pressing the trigger on the probe. If not kill the printer.
7. In `printer.cfg`, in the `[probe]` section, change `y_offset` to `-34.5` and `speed` to `3`. Save and restart firmware.
8. Set your Z-offset
* Home the toolhead
* Manually remove the probe from the toolhead
* Use the paper test to get your Z-offset
* Update your `printer.cfg` `[probe]` section with the calculated Z-offset.
* Save and restart firmware
* You could also use `probe_calibrate` to set your z_offset. Be sure to manually remove the probe after probing.
9. Get the dock coordinates
* Attach the probe to the toolhead
* Home the toolhead
* Using Fluidd or Mainsail UI, or the terminal, go at Z15 (or any height higher than the dock) and slowly move the toolhead towards the dock (it should be at X250). Slowly move the toolhead down 1mm at a time, verify that the dock and the probe are aligned on the X direction (if not, adjust the X coordinates or if you can't, you might need the spacer). Continue to move the toolhead down up to the point that the probe is in the dock (without pressing down against it). Take notes of the coordinates.
* Move the toolhead 25mm to the left. Probe should detach and stay in the dock. If everything is good, repeat the last steps another time to verify and go to the next step.
10. Update `dock_macros.cfg` with your dock coordinates. Also update all the other values in the GlobalVariables section with your printer specific values. Save and exit.
11. In `printer.cfg` :
* Remove or comment `[safe_z_home]` and/or `[homing_override]` sections
* In `[stepper_z]` section, change `endstop_pin` for the pin used for the modded KeyBak microswitch
* In the same section, add the parameter `position_endstop` and enter the value for the Z coordinate of the modded KeyBak microswitch location (for example, mine is set at `-2.6`). We'll calibrate it in the next step. Save and restart firmware.
12. Detach the probe from the toolhead. Manually move the toolhead at the middle of the gantry. Push the bed all the way to the rear.
13. Issue the command `query_endstops`. Your Z endstop should report as open.
14. Issue the command `query_endstops` while pressing down your Z endstop trigger. Your Z endstop should report as triggered.
* If the last 2 steps doesn't report as they should, invert the `endstop_pin` or check your wiring.
15. Test your Z endstop :
* Issue a `G28 Z0` command. Manually press the Z endstop trigger. If the toolhead continues to go down, kill the printer, adjust your `printer.cfg` section or check your wiring. When everything work as intended, continue to the next step.
16. Still with the toolhead in the middle of the gantry and the bed all the way to the rear, issue a `G28 Z0` command.
17. In the terminal, issue `G0 Z15` command. Manually attach the probe to the toolhead.
18. In the terminal, issue `G28 X0` command.
19. Using Fluidd or Mainsail UI, or using the terminal, move to the dock X coordinate. Move the toolhead down 1mm at a time and babystep so the probe enters the dock as in step 9. Try to have it at the same location as when you calculated the dock coordinates earlier. Note the Z coordinate.
* This doesn't have to be super precise. Z endstop homing is only used for the initial Z homing in order to attach the probe from the dock.
20. Calculate `last step dock Z coordinate` minus `dock Z coordinate from step 7`.
21. In `printer.cfg`
* Add `[include dock_macros.cfg]`
* Enter the correct value for the `position_endstop` in `stepper_z` section by substracting the result in step 20.
* Save and restart firmware
# Normal behavior and general notes
The Z endstop microswitch (whether using the modded KeyBak mount or a switch located at Z-max) is only used for initial Z homing if the probe is not already attached to the toolhead. It is a good idea to add `Park_toolhead` to your end_print macro or cancel_print macro, so the probe is virtually always attached to the toolhead.
When homing with the probe attached, terminal will report a wrong value for Z position that should be way higher than supposed, in example `probe at 125.000,84.500 is z=236.425000`. It is normal behavior and is a workaround the fact that you can't have 2 different Z endstops. After homing, position of the toolhead is set to probe z_offset.
Be sure to add `Dock_probe` in your print_start macro after the bed mesh or other probing actions.
Sensorless homing for initial Z homing does work, but I don't recommend it. The KeyBak can be somewhat inconsistent in its tension and can lead to unwanted behavior.
If you don't plan to use a Z endstop microswitch or sensorless homing for initial Z homing, don't change your `endstop_pin` in the `stepper_z` section of `printer.cfg`.
# About the modded KeyBak mount and the endstop microswitch located at Z_min (or sensorless homing at Z_min) and Y travel
The Switchwire has about 230mm of print area in the Y direction, but has around 250mm of Y travel (mine has 257mm), from the endstop to the endblock. About 20 of those millimeters are located outside the bed at the front when the bed is pushed all the way to the rear of the printer. At this location, the nozzle and the part cooling ducts can be clear of the bed when homing at Z_min. The default `printer.cfg` for the VSW with an SKR Mini E3 V2 calls for 0 as position_min and 250 as position_max, whilst it should be, at least that is my case, -25 as position_min and 232 as position_max. When populating the variables in `dock_macros.cfg`, be sure to enter an existing value for `variable_y_min`, and that this value is located outside the bed. If you are using default config for `printer.cfg`, 0 should be a safe coordinate. If you changed the config file for the real travel in the Y axis, -20 should be a safe coordinate. Failure to enter an existing or safe value could at best prevent you from homing with the message `Move out of range`, or at worst crash the nozzle into the bed.
![SW_Y_travel](../Pictures/SW_Y_travel.png)
* In yellow : Printable area
* In red : Full Y travel area
* In green : Y travel outside the bed. Lower end of this area is a safe place to home at Z_min
#### Warning : This is for an official Voron Switchwire. It is also assumed that your toolhead can be clear of the bed when the bed is pushed all the way to the rear of the printer with the X gantry resting on the lower endstop blocks. If not, I recommend using a Z-max endstop microswitch for initial Z-homing, or manually attaching the probe.
The macros are working on official Klipper firmware.
The values that are in the config file are the values I use for my Switchwire. You can still use these macros if you use the files for the probe and dock from Annex Engineering. If you do, you'll want to change the value for variable_detach from 1 to 2.
For the initial homing for the Z-axis, there are options for probe homing and endstop microswitch homing, be it at Z_min with the modded KeyBak mount or at Z_max.
There are some safety measures, but this is still a work in progress. For the moment, failing to dock will kill the printer (M112), as failing to dock properly could result in damaging the probe itself or the bed. As for failing to attach the probe, you'll get an error message stating that the probe reports as triggered prior to movement. Be sure to add `Dock_probe` to your print_start macro after your bed mesh or other probing actions.
You can find my `printer.cfg` and other relevant macros for reference [here](https://github.com/hymness1/Switchwire_Things/tree/main/klipper_config)
# Initial Startup
I'm assuming you already have an up and running Switchwire prior to using the Quickdraw Probe and using the modded KeyBak mount.
1. Backup your `printer.cfg` file
2. Download [dock_macros.cfg](https://raw.githubusercontent.com/hymness1/Quickdraw_VSW/main/klipper_config/dock_macros.cfg) and add the file to `klipper_config` folder. Do not include it yet in `printer.cfg`
3. Manually move the toolhead so you can easily attach and detach the probe manually
4. With the probe detached, run `query_probe` in the terminal. It should report as triggered
5. With the probe attached, run `query_probe`. It should report as open
* If it reports as open when detached and triggered when attached, you'll need to invert the pin in your `printer.cfg` file in the `[probe]` section.
* Press down the trigger of the probe microswitch and issue a `query_probe` command. It should report as triggered. A third hand might be handy.
6. Manually move the toolhead higher up. Home the toolhead and test that it triggers by pressing the trigger on the probe. If not kill the printer.
7. In `printer.cfg` :
* In the `[probe]` section, change `y_offset` to `34.5` and `speed` to `3`.
* In the `[homing_override]` section, change the last line from `G0 Z5 F500` to `G0 Z15 F500`.
* Save and restart firmware.
9. Set your Z-offset
* Home the toolhead
* Manually remove the probe from the toolhead
* Use the paper test to get your Z-offset
* Update your `printer.cfg` `[probe]` section with the calculated Z-offset.
* Save and restart firmware
* You could also use `probe_calibrate` to set your z_offset. Be sure to manually remove the probe after probing.
10. Get the dock coordinates
* Attach the probe to the toolhead
* Home the toolhead
* Using Fluidd or Mainsail UI, or the terminal, go at Z15 (or any height higher than the dock) and slowly move the toolhead towards the dock (it should be at X250). Slowly move the toolhead down 1mm at a time, verify that the dock and the probe are aligned on the X direction (if not, adjust the X coordinates or if you can't, you might need the spacer). Continue to move the toolhead down up to the point that the probe is in the dock (without pressing down against it). Take notes of the coordinates.
* Move the toolhead 25mm to the left. Probe should detach and stay in the dock. If everything is good, repeat the last steps another time to verify and go to the next step.
11. Update `dock_macros.cfg` with your dock coordinates. Also update all the other values in the GlobalVariables section with your printer specific values. Save and exit.
12. In `printer.cfg` :
* Remove or comment `[safe_z_home]` and/or `[homing_override]` sections
* In `[stepper_z]` section, change `endstop_pin` for the pin used for the modded KeyBak microswitch
* In the same section, add the parameter `position_endstop` and enter the value for the Z coordinate of the modded KeyBak microswitch location (for example, mine is set at `-2.6`). We'll calibrate it in the next step. Save and restart firmware.
13. Detach the probe from the toolhead. Manually move the toolhead at the middle of the gantry. Push the bed all the way to the rear.
14. Issue the command `query_endstops`. Your Z endstop should report as open.
15. Issue the command `query_endstops` while pressing down your Z endstop trigger. Your Z endstop should report as triggered.
* If the last 2 steps doesn't report as they should, invert the `endstop_pin` or check your wiring.
16. Test your Z endstop :
* Issue a `G28 Z0` command. Manually press the Z endstop trigger. If the toolhead continues to go down, kill the printer, adjust your `printer.cfg` section or check your wiring. When everything work as intended, continue to the next step.
17. Still with the toolhead in the middle of the gantry and the bed all the way to the rear, issue a `G28 Z0` command.
18. In the terminal, issue `G0 Z25` command. Manually attach the probe to the toolhead.
19. In the terminal, issue `G28 X0` command.
20. Using Fluidd or Mainsail UI, or using the terminal, move to the dock X coordinate. Move the toolhead down 1mm at a time and babystep so the probe enters the dock as in step 9. Try to have it at the same location as when you calculated the dock coordinates earlier. Note the Z coordinate.
* This doesn't have to be super precise. Z endstop homing is only used for the initial Z homing in order to attach the probe from the dock.
21. Calculate `last step dock Z coordinate` minus `dock Z coordinate from step 7`.
22. In `printer.cfg`
* Add `[include dock_macros.cfg]`
* Enter the correct value for the `position_endstop` in `stepper_z` section by substracting the result in step 20.
* Save and restart firmware
# Normal behavior and general notes
The Z endstop microswitch (whether using the modded KeyBak mount or a switch located at Z-max) is only used for initial Z homing if the probe is not already attached to the toolhead. It is a good idea to add `Park_toolhead` to your end_print macro or cancel_print macro, so the probe is virtually always attached to the toolhead.
When homing with the probe attached, terminal will report a wrong value for Z position that should be way higher than supposed, in example `probe at 125.000,84.500 is z=236.425000`. It is normal behavior and is a workaround the fact that you can't have 2 different Z endstops. After homing, position of the toolhead is set to probe z_offset.
Be sure to add `Dock_probe` in your print_start macro after the bed mesh or other probing actions.
If you don't plan to use a Z endstop microswitch for initial Z homing, don't change your `endstop_pin` in the `stepper_z` section of `printer.cfg`.
# About the modded KeyBak mount and the endstop microswitch located at Z_min (or sensorless homing at Z_min) and Y travel
The Switchwire has about 230mm of print area in the Y direction, but has around 250mm of Y travel (mine has 257mm), from the endstop to the endblock. About 20 of those millimeters are located outside the bed at the front when the bed is pushed all the way to the rear of the printer. At this location, the nozzle and the part cooling ducts can be clear of the bed when homing at Z_min. If it's not your case, please use another method for initial Z homing, like a microswitch located at Z_max.
![SW_Y_travel](../Pictures/SW_Y_travel.png)
* In yellow : Printable area
* In red : Full Y travel area
* In green : Y travel outside the bed. Lower end of this area is a safe place to home at Z_min

View File

@ -1,391 +0,0 @@
###############################################################################
#### Edit this section ####
###############################################################################
[gcode_macro GlobalVariables]
# Location of the probe when docked.
variable_dock_x: 250 # X location
variable_dock_z: 4 # Z location
# What way does the probe detach from the carriage ?
variable_detach: 1 # 1(horizontally/my remix), 2(vertically/Annex)
# What other way can you home the Z-Axis (prior to attaching the probe)? Use 2 or 3 ONLY if you can have the nozzle and part-cooling fangs past the bed at Z ~-3
variable_initial_homing: 3 # 1(none/probe only), 2(sensorless homing), 3(Z-min microswitch endstop), 4(Z-max microswitch endstop)
# The distance to move along x when docking/undocking the probe from the dock
variable_dock_x_offset: 27 # The carriage needs 27mm of clearance with the docked probe
# The distance to move along z when attaching/detaching the probe to/from the toolhead
variable_dock_z_offset: 10
# Travel and Dock speeds
variable_travel_speed: 9000
variable_dock_speed: 6000
# World Coordinates
variable_home_x: 125 # X coordinate of the center of your bed
variable_home_y: 119 # Y coordinate of the center of your bed
variable_probe_x_offset: 0 # Probe X offset. Should be 0 for Switchwire/Voron Afterburner toolhead
variable_probe_y_offset: 34.5 # Probe Y offset. Depends or the orientation of the microswitch. 34.5 if for modded SW carriage with microswitch trigger facing the rear
variable_z_max: 252 # Maximum travel for the Z axis. Look for position_max in stepper_z section of printer.cfg
variable_y_min: -20 # Minimum travel for Y axis. Used in sensorless and Z-min initial homing. Nozzle and part-cooling fangs must be past the bed. Look for position_min in stepper_y section of printer.cfg
variable_y_max: 230 # Maximum travel for the Y axis. Look for position_max in stepper_y section in printer.cfg
## Sensorless Homing ##
# If you plan to use sensorless homing for the Z axis for the initial homing, uncomment the next section and enter stepper motors current as in your printer.cfg file
#variable_x_run_current: 0.5
#variable_x_hold_current: 0.3
#variable_z_run_current: 0.5
#variable_z_hold_current: 0.3
#variable_homing_x_run_current: 0.9 # Those are the values I used with good results for sensorless homing
#variable_homing_x_hold_current: 0.9
#variable_homing_z_run_current: 0.9
#variable_homing_z_hold_current: 0.9
gcode:
###############################################################################
###############################################################################
[homing_override]
axes: xyz
gcode:
query_probe
do_Home
[gcode_macro do_Home]
gcode:
GlobalVariables
{% set dock_x = printer["gcode_macro GlobalVariables"].dock_x %}
{% set dock_z = printer["gcode_macro GlobalVariables"].dock_z %}
{% set detach = printer["gcode_macro GlobalVariables"].detach %}
{% set dock_z_offset = printer["gcode_macro GlobalVariables"].dock_z_offset %}
{% set travel_speed = printer["gcode_macro GlobalVariables"].travel_speed %}
{% set initial_homing = printer["gcode_macro GlobalVariables"].initial_homing %}
{% if printer.toolhead.homed_axes == 'xyz' %}
G90
{% if detach == 1 %}
G0 Z{ dock_z + dock_z_offset } F{ travel_speed }
{% endif %}
{% if detach == 2 %}
G0 Z{ dock_z } F{ travel_speed }
{% endif %}
G28 X0 Y0
Attach_probe
PROBE_HOMING
{% else %}
SET_KINEMATIC_POSITION X={ dock_x } Z=0
G90
{% if detach == 1 %}
G0 Z{ dock_z + dock_z_offset } F{ travel_speed }
{% endif %}
{% if detach == 2 %}
G0 Z{ dock_z } F{ travel_speed }
{% endif %}
G28 X0 Y0
{% if printer.probe.last_query == 0 %}
PROBE_HOMING
{% endif %}
{% if printer.probe.last_query == 1 %}
{% if initial_homing == 1 %}
RESPOND TYPE=error MSG="Please attach probe"
M117 Please attach probe
{% endif %}
{% if initial_homing == 2 %}
SENSORLESS_HOMING
{% endif %}
{% if initial_homing == 3 %}
PROBELESS_HOMING
{% endif %}
{% if initial_homing == 4 %}
PROBELESS_HOMING
{% endif %}
{% endif %}
{% endif %}
[gcode_macro PROBELESS_HOMING]
gcode:
GlobalVariables
{% set dock_z = printer["gcode_macro GlobalVariables"].dock_z %}
{% set dock_z_offset = printer["gcode_macro GlobalVariables"].dock_z_offset %}
{% set travel_speed = printer["gcode_macro GlobalVariables"].travel_speed %}
{% set home_x = printer["gcode_macro GlobalVariables"].home_x %}
{% set home_y = printer["gcode_macro GlobalVariables"].home_y %}
{% set probe_x_offset = printer["gcode_macro GlobalVariables"].probe_x_offset %}
{% set probe_y_offset = printer["gcode_macro GlobalVariables"].probe_y_offset %}
{% set y_min = printer["gcode_macro GlobalVariables"].y_min %}
{% set initial_homing = printer["gcode_macro GlobalVariables"].initial_homing %}
{% if initial_homing == 3 %}
G0 X{ home_x - probe_x_offset } Y{ y_min } F{ travel_speed }
{% endif %}
{% if initial_homing == 4 %}
G0 X{ home_x - probe_x_offset } Y{ home_y - probe_y_offset } F{ travel_speed }
{% endif %}
G28 Z0
G0 Z{dock_z + dock_z_offset } F{ travel_speed }
Attach_probe
Adjust_Z
[gcode_macro Set_Home_Current]
gcode:
GlobalVariables
{% set homing_x_run_current = printer["gcode_macro GlobalVariables"].homing_x_run_current %}
{% set homing_x_hold_current = printer["gcode_macro GlobalVariables"].homing_x_hold_current %}
{% set homing_z_run_current = printer["gcode_macro GlobalVariables"].homing_z_run_current %}
{% set homing_z_hold_current = printer["gcode_macro GlobalVariables"].homing_z_hold_current %}
SET_TMC_CURRENT STEPPER=stepper_x CURRENT=homing_x_run_current HOLDCURRENT=homing_x_run_current
SET_TMC_CURRENT STEPPER=stepper_z CURRENT=homing_x_run_current HOLDCURRENT=homing_x_run_current
[gcode_macro Set_Print_Current]
gcode:
GlobalVariables
{% set x_run_current = printer["gcode_macro GlobalVariables"].x_run_current %}
{% set x_hold_current = printer["gcode_macro GlobalVariables"].x_hold_current %}
{% set z_run_current = printer["gcode_macro GlobalVariables"].z_run_current %}
{% set z_hold_current = printer["gcode_macro GlobalVariables"].z_hold_current %}
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={ x_run_current } HOLDCURRENT={ x_hold_current }
SET_TMC_CURRENT STEPPER=stepper_z CURRENT={ z_run_current } HOLDCURRENT={ z_hold_current }
[gcode_macro SENSORLESS_HOMING]
gcode:
GlobalVariables
{% set dock_z = printer["gcode_macro GlobalVariables"].dock_z %}
{% set dock_z_offset = printer["gcode_macro GlobalVariables"].dock_z_offset %}
{% set travel_speed = printer["gcode_macro GlobalVariables"].travel_speed %}
{% set home_x = printer["gcode_macro GlobalVariables"].home_x %}
{% set probe_x_offset = printer["gcode_macro GlobalVariables"].probe_x_offset %}
{% set y_min = printer["gcode_macro GlobalVariables"].y_min %}
G0 X{ home_x - probe_x_offset } Y { y_min } F9000
Set_Home_Current
G28 Z0
G0 Z{dock_z + dock_z_offset } F{ travel_speed }
Set_Print_Current
G28 X0
Attach_probe
Adjust_Z
[gcode_macro PROBE_HOMING]
gcode:
Adjust_Z
[gcode_macro Adjust_Z]
gcode:
GlobalVariables
{% set travel_speed = printer["gcode_macro GlobalVariables"].travel_speed %}
{% set home_x = printer["gcode_macro GlobalVariables"].home_x %}
{% set home_y = printer["gcode_macro GlobalVariables"].home_y %}
{% set probe_x_offset = printer["gcode_macro GlobalVariables"].probe_x_offset %}
{% set probe_y_offset = printer["gcode_macro GlobalVariables"].probe_y_offset %}
{% set z_max = printer["gcode_macro GlobalVariables"].z_max %}
{% set probe_offset_z = printer.configfile.config.probe.z_offset|float %}
G0 X{ home_x - probe_x_offset } Y{ home_y - probe_y_offset } F { travel_speed }
SET_KINEMATIC_POSITION Z={ z_max }
PROBE PROBE_SPEED=10
G91
G0 Z2 F{ travel_speed }
G90
PROBE PROBE_SPEED=5
SET_KINEMATIC_POSITION Z={probe_offset_z}
G0 Z4 F{ travel_speed }
[gcode_macro Dock_probe]
gcode:
query_probe
do_Dock
[gcode_macro do_Dock]
gcode:
{% if printer.probe.last_query == 1 %}
RESPOND PREFIX= MSG="Probe is already docked!"
M117 Probe is already docked!
{% else %}
GlobalVariables
{% set dock_x = printer["gcode_macro GlobalVariables"].dock_x %}
{% set dock_z = printer["gcode_macro GlobalVariables"].dock_z %}
{% set detach = printer["gcode_macro GlobalVariables"].detach %}
{% set home_y = printer["gcode_macro GlobalVariables"].home_y %}
{% set dock_x_offset = printer["gcode_macro GlobalVariables"].dock_x_offset %}
{% set dock_z_offset = printer["gcode_macro GlobalVariables"].dock_z_offset %}
{% set travel_speed = printer["gcode_macro GlobalVariables"].travel_speed %}
{% set dock_speed = printer["gcode_macro GlobalVariables"].dock_speed %}
{% set probe_y_offset = printer["gcode_macro GlobalVariables"].probe_y_offset %}
{% if printer.toolhead.homed_axes != 'xyz' %}
G28 # Home All Axes
{% endif %}
G90
{% if detach == 1 %}
G0 Z{ dock_z + dock_z_offset } F{ travel_speed }
{% endif %}
{% if detach == 2 %}
G0 X{ dock_x - dock_x_offset } F{ travel_speed }
G0 Z{ dock_z } F{ travel_speed }
{% endif %}
G0 X{ dock_x } Y{ home_y - probe_y_offset } F{ dock_speed }
{% if detach == 1 %}
G0 Z{ dock_z } F{ dock_speed }
{% endif %}
{% if detach == 2 %}
G0 Z{ dock_z + dock_z_offset } F{ dock_speed }
{% endif %}
G0 X{ dock_x - dock_x_offset } Y{ home_y - probe_y_offset } F{ dock_speed }
G0 Z5 F{ travel_speed }
{% endif %}
verify_Docking
[gcode_macro verify_Docking]
gcode:
query_probe
safe_Dock
[gcode_macro safe_Dock]
gcode:
{% if printer.probe.last_query != 1 %}
M112
{% endif %}
[gcode_macro Attach_probe]
gcode:
query_probe
do_Attach
[gcode_macro do_Attach]
gcode:
{% if printer.probe.last_query == 0 %}
RESPOND PREFIX= MSG="Probe is already attached!"
M117 Probe is already attached!
{% else %}
GlobalVariables
{% set dock_x = printer["gcode_macro GlobalVariables"].dock_x %}
{% set dock_z = printer["gcode_macro GlobalVariables"].dock_z %}
{% set detach = printer["gcode_macro GlobalVariables"].detach %}
{% set dock_x_offset = printer["gcode_macro GlobalVariables"].dock_x_offset %}
{% set dock_z_offset = printer["gcode_macro GlobalVariables"].dock_z_offset %}
{% set travel_speed = printer["gcode_macro GlobalVariables"].travel_speed %}
{% set dock_speed = printer["gcode_macro GlobalVariables"].dock_speed %}
{% set home_y = printer["gcode_macro GlobalVariables"].home_y %}
{% set probe_y_offset = printer["gcode_macro GlobalVariables"].probe_y_offset %}
{% if printer.toolhead.homed_axes != 'xyz' %}
G28 # Home All Axes
{% endif %}
G91
G0 X{ 0 - dock_x_offset } F { travel_speed }
G90
{% if detach == 2 %}
G0 Z{ dock_z + dock_z_offset } F{ travel_speed }
{% endif %}
{% if detach == 1 %}
G0 Z{ dock_z } F{ travel_speed }
{% endif %}
G0 X{ dock_x } Y{ home_y - probe_y_offset } F{ dock_speed }
{% if detach == 2 %}
G0 Z{ dock_z } F{ dock_speed }
{% endif %}
{% if detach == 1 %}
G0 Z{ dock_z + dock_z_offset } F{ dock_speed }
{% endif %}
G0 X{ dock_x - dock_x_offset } Y{ home_y - probe_y_offset } F{ dock_speed }
G0 Z5 F{ travel_speed }
{% endif %}
[gcode_macro Park_toolhead]
gcode:
query_probe
do_Park
[gcode_macro do_Park]
gcode:
GlobalVariables
{% set dock_x = printer["gcode_macro GlobalVariables"].dock_x %}
{% set dock_z = printer["gcode_macro GlobalVariables"].dock_z %}
{% set detach = printer["gcode_macro GlobalVariables"].detach %}
{% set dock_x_offset = printer["gcode_macro GlobalVariables"].dock_x_offset %}
{% set dock_z_offset = printer["gcode_macro GlobalVariables"].dock_z_offset %}
{% set travel_speed = printer["gcode_macro GlobalVariables"].travel_speed %}
{% set dock_speed = printer["gcode_macro GlobalVariables"].dock_speed %}
{% set home_y = printer["gcode_macro GlobalVariables"].home_y %}
{% set probe_y_offset = printer["gcode_macro GlobalVariables"].probe_y_offset %}
{% set y_max = printer["gcode_macro GlobalVariables"].y_max %}
RESPOND PREFIX= MSG="Parking toolhead"
SET_GCODE_OFFSET Z=0
{% if printer.probe.last_query == 0 %}
G90
{% if detach == 1 %}
G0 Z{ dock_z + dock_z_offset }
{% endif %}
{% if detach == 2 %}
G91
G0 X{ 0 - dock_x_offset} F{ travel_speed }
G90
G0 Z{ dock_z }
{% endif %}
G0 X{ dock_x } Y{ home_y - probe_y_offset } F{ dock_speed }
{% if detach == 1 %}
G0 Z{ dock_z } F{ dock_speed }
{% endif %}
{% else %}
G91
G0 Z10 F{ travel_speed } # Move toolhead up to prevent hitting printed parts
G90
G0 Y{ y_max } F{ travel_speed } # Move the bed to prevent hitting printed parts
G0 X{ dock_x - dock_x_offset } F{ travel_speed }
G0 Z{ dock_z } F{ travel_speed }
G0 X{ dock_x } F{ dock_speed }
{% endif %}
[gcode_macro BED_MESH_CALIBRATE]
rename_existing: _BED_MESH_CALIBRATE
gcode:
Attach_probe
_BED_MESH_CALIBRATE {% for p in params
%}{'%s=%s' % (p, params[p])}{%
endfor %}
[gcode_macro SCREWS_TILT_CALCULATE]
rename_existing: _SCREWS_TILT_CALCULATE
gcode:
Attach_probe
_SCREWS_TILT_CALCULATE {% for p in params
%}{'%s=%s' % (p, params[p])}{%
endfor %}
#[gcode_macro PROBE_ACCURACY]
#rename_existing: _PROBE_ACCURACY
#gcode:
# GlobalVariables
# {% set travel_speed = printer["gcode_macro GlobalVariables"].travel_speed %}
# {% set home_x = printer["gcode_macro GlobalVariables"].home_x %}
# {% set home_y = printer["gcode_macro GlobalVariables"].home_y %}
# {% set probe_x_offset = printer["gcode_macro GlobalVariables"].probe_x_offset %}
# {% set probe_y_offset = printer["gcode_macro GlobalVariables"].probe_y_offset %}
#
# Attach_probe
# G0 X{ home_x - probe_x_offset } Y{ home_y - probe_y_offset } F { travel_speed }
# _PROBE_ACCURACY {% for p in params
# %}{'%s=%s' % (p, params[p])}{%
# endfor %}
[force_move]
enable_force_move: True

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

After

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 206 KiB

After

Width:  |  Height:  |  Size: 200 KiB

View File

@ -1,24 +1,28 @@
# Quickdraw probe for Voron Switchwire
A Magnetically Coupled, Removable, Z Probe and Dock System inspired by the design from [Annex Engineering](https://github.com/Annex-Engineering/Quickdraw_Probe) and remade from scratch so it works better on the Voron Switchwire. Basically, the probe and dock has been designed so the probe detaches on the X-axis instead of the Z-axis, being easier on the magnets and so better reliability, whilst the dock arm has been improved by shaving 3mm of thickness, allowing for the docking coordinates to be at X250 and a better fit on the right vertical 3030 extrusion. A spacer is available if for some reason you need a bit of play in the dock coordinates and you'd only have to scale it to the right thickness.
The KeyBak mount has been modified so you can screw in a microswitch, allowing to home the Z axis prior to picking up the probe from the dock.
By using the dock, you will loose 27mm of X travel.
![alt text](Pictures/quickdraw_SW_remix.png)
![alt text](Pictures/quickdraw_SW_probe.png)
Here's a video of initial homing sequence with the probe docked and not attached to the toolhead :
https://youtu.be/5mihNdWIw-k
For the dock arm, dock and probe you will find here, you'll need :
* 6x 6x3mm magnets
* Omron D2F-5 microswitch (recommended)
* 2x M2x12mm screws (magnetic)
* 2x M3x8mm SHCS
* 2x M5X12mm SHCS
* 2x M5 T-nut for 3030 extrusion
* 2x M3x5x4 threaded heat inserts
You will also need the modified carriage that you can find, among other informations, at Annex Engineering : https://github.com/Annex-Engineering/Quickdraw_Probe
# Quickdraw probe for Voron Switchwire
A Magnetically Coupled, Removable, Z Probe and Dock System inspired by the design from [Annex Engineering](https://github.com/Annex-Engineering/Quickdraw_Probe) and remade from scratch so it works better on the Voron Switchwire. Basically, the probe and dock has been designed so the probe detaches on the X-axis instead of the Z-axis, being easier on the magnets and so better reliability, whilst the dock arm has been improved by shaving 3mm of thickness, allowing for the docking coordinates to be at X250 and a better fit on the right vertical 3030 extrusion. A spacer is available if for some reason you need a bit of play in the dock coordinates and you'd only have to scale it to the right thickness.
By using the dock, you will loose 27mm of X travel.
You might want to look at [my fork](https://github.com/hymness1/VoronUsers/edit/master/printer_mods/hymness1/Quickdraw_probe_Voron_Switchwire/) for more up to date files and code.
![alt text](Pictures/quickdraw_SW_remix.png)
![alt text](Pictures/quickdraw_SW_probe.png)
Here's a video of initial homing sequence with the probe docked and not attached to the toolhead :
https://youtu.be/5mihNdWIw-k
For the Dock Arm, Dock, Probe Drop-in Attachment and Quickdraw Probe you will find here, you'll need :
* 1x Omron D2F-5 microswitch for the probe (recommended)
* 1x Omron D2F-5L microswitch (for the Dock Arm, other microswitches of the same size with a lever should work too)
* 8x 6x3mm magnets
* 2x M2x12mm screws (magnetic)
* 2x M3x8mm SHCS
* 2x M2x10 Self Tapping screws
* 2x M5X12mm SHCS
* 2x M5 T-nut for 3030 extrusion
* 4x M3x5x4 threaded heat inserts
* About 140cm of 24AWG wire
* 2x MicroFit3 male pins
If you want to go with the modded carriage instead of the probe drop-in attachment, you can find it at Annex Engineering : https://github.com/Annex-Engineering/Quickdraw_Probe

View File

@ -1,42 +1,35 @@
The dock is best printed with adaptative layer height or a 0.1mm layer height.
The modified carriage can be found at Annex Engineering here : https://github.com/Annex-Engineering/Quickdraw_Probe/tree/main/XY_Carriages_for_Non-Annex_Printers/VORON_SW/Afterburner%2BMagnetic_Probe_X_Carriage
Do take note that you'll lose 27mm on the X axis for a dock located at X250
The modded KeyBak mount with a D2F-5L (or any other microswitch of this size with a lever) can be use as a Z endstop. Support is integrated in the model and will need to be removed prior to screwing in the microswitch.
# Assembly guide
## Modded carriage
1. Download and print the modded carriage from [Annex Engineering](https://github.com/Annex-Engineering/Quickdraw_Probe/tree/main/XY_Carriages_for_Non-Annex_Printers/VORON_SW/Afterburner%2BMagnetic_Probe_X_Carriage/STLs)
2. Follow the official Voron Switchwire Assembly Guide for the assembly of the carriage. It's basically the same.
3. Crimp 2 20cm 24AWG wires with MicroFit3 Female pins and flatten the end (other pins might work too)
4. Insert the flattened crimped wires in the holes next to the magnets holes. This should be a tight fit.
5. Insert 2 pairs of 6x3mm magnets in the magnet holes against the wire pins. Both pairs should be of opposite polarity. A little dab of superglue opposite to the wire pins goes a long way.
6. If any, trim the excess pins so they sit flush with the magnets (on the underside of the carriage)
7. Proceed with the assembly of the Afterburner as usual. Crimp the other end of the wires and if you reuse the old probe connector (with 3 positions), be sure to insert the wires in the signal and ground positions. You can disconnect the 24V probe wire from the MCU.
## Probe
1. Cut the middle pin from the D2F-5 and remove the lever if your model has one
2. Insert the microswitch in the probe housing
3. Insert the magnets in the probe housing. Magnets should be from opposite polarity. This should be a tight fit. If not, use a dab of superglue to secure the magnets.
4. Trim any excess of the microswitch pins so they sit flush with the magnets
5. Screws in 2 (ferric) M2x12mm
1. Cut the middle pin from the D2F-5 and remove the lever if your model has one.
2. Insert the microswitch in the probe housing.
3. Insert the magnets in the probe housing. Magnets should be from opposite polarity. This should be a tight fit, you might want to use adjustable pliers to help you do so, but beware of the microswitch in order to not damaging it. If it is not a tight fit, use a dab of superglue to secure the magnets.
4. Trim any excess of the microswitch pins so they sit flush with the magnets.
5. Screws in 2 (ferric) M2x12mm in the probe housing through the microswitch.
## Probe Drop-in Attachment
1. Crimp 2 20cm 24AWG wires with MicroFit3 Male pins and flatten the end using pliers (other pins might work too).
2. Insert the flattened crimped wires in the holes next to the magnets holes. This should be a tight fit. Pins should come out the underside quite a bit, with the crimps resting almost against the upperside of the printed piece.
3. Insert the magnets in the magnet holes against the wire pins. Magnets should be of opposite polarity. A little dab of superglue at the bottom, and NOT touching the pins, goes a long way. Again, adjustable pliers might be handy.
4. Fold the back pin so it rests into the groove.
5. Trim any excess pins so they sit flush with the magnets.
6. Mount the Drop-in Attachment in place of the probe on the Afterburner. You'll want to put the drop-in at the highest position, against the carriage, with the longer side towards the rear of the carriage. Crimp the other end of the wires and if you reuse the old probe connector (with 3 positions) on the wire loom, be sure to insert the wires in the signal and ground positions. You can disconnect the 24V probe wire from the MCU.
## Dock Arm
1. Insert 2 M3x5x4 threaded inserts
1. Insert 2 M3x5x4 threaded inserts.
2. Remove the integrated support and clean the surface if need be.
3. Solder 2 50cm of 24AWG wire on the outside pins of the microswitch.
4. Screw in the microswitch with lever towards the rear of the printer.
## Dock
1. Insert 2 pairs of 6x3mm magnets. Polarity doesn't matter.
2. Screw in the dock to the dock arm using 2 M3x8mm
## Modded KeyBak Mount (if you go with it)
1. Remove the integrated support and clean the surface if need be.
2. Insert 2 M3x5x4 threaded inserts as per the official Voron Switchwire Assembly Guide
3. Screw in a microswitch with lever towards the rear of the printer.
2. Screw in the dock to the dock arm using 2 M3x8mm.
## Final assembly
1. Mount the Dock Arm on the right hand side vertical 3030 extrusion, just under the lower end block, using 2 M5x12mm
2. Insert the Probe in the Dock. Adjust the M2 screws so they barely touch the dock magnets
3. If using the modded KeyBak Mount, replace the old one with this one. Connect wires from the microswitch to a signal and ground pins on the MCU (Z-probe connector on the SKR Mini E3 v2 would be a good place)
1. Remove the right vertical rail lower end block and mount the Dock Arm in its place, against the rail, using 2 M5x12mm
2. Insert the Probe in the Dock. Adjust the Probe M2 screws so they barely touch the dock magnets
3. Connect wires from the Dock Arm microswitch to a signal and ground pins on the MCU (Z-probe connector on the SKR Mini E3 v2 would be a good place)