Klipper module for automatic z-offset configuration on Voron TAP
This project is being deprecated due to me switching from TAP to Klicky. Feel free to continue post and/or message me for assistance, or help with the code. This repo will be archived March 1st, 2024.
NOTICE: It may not be possible for this to work on versions of tap besides ChaoticLab's CNC Tap. If you decide to try this anyway, please share your results in Issue 5 so we can try to fix this problem.
This module is under development: Please ensure the calculated offset seems reasonable for your printer! See Validate Results for how to validate the offset.
This module calculates the distance your toolhead lifts to actuate TAP.
Doing this enables automatic z-offset calculation. i.e. make G0 Z0.2
put the nozzle at 0.2mm above the bed.
This is a fairly slow process since the toolhead needs to move by step (0.005), check if the endstop is still triggered, and repeat.
Check how it works for more information.
On textured PEI, the offset may need to be slightly lowered to get proper first-layer squish. YMMV.
This is only known to work on QGL based printers, namely the Voron 2. If you use a different printer and want to help add support, please create an issue, and/or send a message on discord. Please include Auto TAP's console output so I can try to fix the issue.
- Issue 2: TILT_ADJUST printers calculate wrong offset
- If you run a trident, or other printer that uses something other than QGL for leveling, the results won't be accurate.
- Issue 5: TAP implementation changes expected offset
- Different implementations of TAP (CL CNC, Mellow CNC, stock) have different expected offsets, the results may not be accurate depending on what version of tap you are using. Please validate results.
- License: MIT
- Home your printer
- When your printer homes Z, your toolhead is lifted until the endstop is triggered, making that lifted point your z0
- Move to park position
- For each sample, tap!
- Probe the bed, and keep it at the position where endstop triggers
- Slowly lift the toolhead by step until the endstop isn't triggered
- Calculate travel distance travel =
abs(probe z - measure distance)
- Save the resulting probe, measure distance, and travel
- Calculate Z-Offset based on
TAP_VERSION
To install this module, you need to clone the repository and run the install.sh
script
cd ~
git clone https://github.com/Anonoei/klipper_auto_tap.git
cd klipper_auto_tap
./install.sh
- Clone the repository
cd ~
git clone https://github.com/Anonoei/klipper_auto_tap.git
cd klipper_auto_tap
- Link auto_tap to klipper
ln -sf ~/klipper_auto_tap/auto_tap.py ~/klipper/klippy/extras/auto_tap.py
- Restart klipper
sudo systemctl restart klipper
[update_manager klipper_auto_tap]
type: git_repo
path: ~/klipper_auto_tap
origin: https://github.com/anonoei/klipper_auto_tap.git
primary_branch: main
install_script: install.sh
managed_services: klipper
To configure auto tap you need to specify which version of TAP you are running
Name | tap_version | Validated | Modification |
---|---|---|---|
ChaoticLab CNC Tap | CL_CNC | True | * 2 |
Voron Tap R8 | R8 | False | * 10 + 1 |
Voron Tap R6 | R6 | False | * 23 |
VITALII MetalTap | VITALII_CNC | True | * 21.5 |
If your version of tap is not validated, please make sure you validate results before using the calculated offset, and let me know if it worked for you!
Then, place this in your printer.cfg
[auto_tap]
tap_version: <your tap_version>
The values listed below are the defaults Auto TAP uses. You can include them if you wish to change their values, or run into issues.
[auto_tap]
tap_version: <your version> ; Set during the first part of configuration
x: Unset ; X position to probe, Defaults to the middle of the x axis `(max - min)/2`
y: Unset ; Y position to probe, Defaults to the middle of the y axis `(max - min)/2`
z: 10 ; Z position to park
probe_to: -2 ; Lower probe until it triggers, or reaches this value
set: True ; Set probe offset after calculation
settling_probe: True ; Perform a dummy probe before starting
stop: 2.0 ; Lift Z up to this amount for TAP to de-actuate
step: 0.005 ; Lift Z by this amount each check
samples: Unset ; Number of samples to take, Defaults to your config's probe sample count
retract: Unset ; Lift up by this amount at end, Defaults to your config's probe retract distance
probe_speed: Unset ; Probe at this speed, Defaults to your config's probe travel speed
lift_speed: Unset ; Retract at this speed, Defaults to your config's probe lift speed
travel_speed: 1000 ; Speed for travel to park position
Run the klipper command AUTO_TAP
. You can also use the arguments below
Argument | Default | Description |
---|---|---|
TAP_VERSION | Unset | Defaults to the configuration value. You can use this to try other offsets. |
X | Unset | X position to probe, Defaults to the middle of the x axis (max - min)/2 |
Y | Unset | Y position to probe, Defaults to the middle of the y axis (max - min)/2 |
Z | 10 | Z position to park |
PROBE_TO | -2 | Lower probe until it triggers, or reaches this value |
SET | 1 | Set probe offset after calculation |
SETTLING_PROBE | 1 | Perform a dummy probe before starting |
STOP | 2.0 | Lift Z up to this amount for TAP to de-actuate |
STEP | 0.005 | Lift Z by this amount each check |
SAMPLES | Unset | Number of samples to take, Defaults to your config's probe sample count |
RETRACT | Unset | Lift up by this amount at end, Defaults to your config's probe retract distance |
PROBE_SPEED | 1.0 | Probe at this speed |
LIFT_SPEED | Unset | Retract at this speed, Defaults to your config's probe lift speed |
TRAVEL_SPEED | 1000 | Speed for travel to park position |
FORCE | 0 | Force AUTO_TAP to run, even if it was calculated previously |
If you set values under Configuration, those will become the defaults.
If you run AUTO_TAP
again, it will set the z-offset to the last calculated value unless you run AUTO_TAP FORCE=1
.
After AUTO_TAP
is run, by default it will apply the calculated offset.
- Run
G0 Z
(first layer height)- I use a first layer height of 0.25, so it's
G0 Z0.25
- I use a first layer height of 0.25, so it's
- Verify there is a gap between the tip of the nozzle and the build surface, and it looks close to the Z distance you moved the toolhead to
- If your nozzle is touching the bed DO NOT USE THIS OFFSET
- Try running
AUTO_TAP FORCE=1
, and re-validate - Create an issue, and/or post in Discord. Please include Auto TAP's console output, your printer model, and the version of tap you're using.
- Try running
One and done:
- Run
AUTO_TAP
, and validate the offset - Run
Z_OFFSET_APPLY_PROBE
to save the offset. - Restart your printer
- Adjust as needed based on build surface material
Before starting print:
- Open your printers configuration
- In your
PRINT_START
macro, addAUTO_TAP
after homing and leveling have been complete - Adjust as needed based on build surface material
Thanks for your interest in testing Auto TAP! There are a few macro arguments that aren't included in the above documentation. If you're having issues with Auto TAP and want to see if different values work better for you, here they are!
- Run
AUTO_TAP FORCE=1 TAP_VERSION=DEV
with any of the following argumentsDEV_MULTIPLE
- Value to multiply the travel distance by to calculate offset. The defaults are listed above next to tap_version (after *)DEV_ADDER
- Value to add to the calculated offset. The defaults are listed above next to tap_version (after +, 0 if not listed)DEV_FUNC
- Method to 'tap'simple
- Previous default, simply probes, and lifts the toolhead until the endstop is openrev hop
- Before each step, hop down to probe position then move up
If you want to check Auto TAP's variables, run AUTO_TAP FORCE=1 PRINT_CONFIG=1