This work was mostly done by @voidtrance, He has a GitHub Repo and calls his version settling_probe
. I recommend you check his out his Repo. His GitHub Repo can be found at @voidtrance GitHub Repo
A Klipper Extension for the Probe Obj that allows the first probe sample to be discarded from the following commands:
PROBE
PROBE SETTLING_SAMPLE=0
PROBE SETTLING_SAMPLE=1
PROBE_ACCURACY
PROBE_ACCURACY SETTLING_SAMPLE=0
PROBE_ACCURACY SETTLING_SAMPLE=1
PROBE_CALIBRATE
PROBE_CALIBRATE SETTLING_SAMPLE=0
PROBE_CALIBRATE SETTLING_SAMPLE=1
QUAD_GANTRY_LEVEL
QUAD_GANTRY_LEVEL SETTLING_SAMPLE=0
QUAD_GANTRY_LEVEL SETTLING_SAMPLE=1
BED_MESH_CALIBRATE
BED_MESH_CALIBRATE SETTLING_SAMPLE=0
BED_MESH_CALIBRATE SETTLING_SAMPLE=1
PROBE_Z_ACCURACY
PROBE_Z_ACCURACY SETTLING_SAMPLE=0
PROBE_Z_ACCURACY SETTLING_SAMPLE=1
CALIBRATE_Z
CALIBRATE_Z SETTLING_SAMPLE=0
CALIBRATE_Z SETTLING_SAMPLE=1
I developed my own version of @voidtrance code because I own and Ender 3 and Voron 2.4 printer. I especially did it for my Ender 3 which uses a BLTouch. Furthermore, I see a lot of first samples that are outliers from the rest of the sample set.
Besides, I am looking forward to adding this to my Klipperized Ender 3 printer!
Settling Probe, GadgetAngel's version; This version of the settling probe is called z_v2settling_probe
I quote from @voidtrance GitHub page:
For some currently unknown reason, Voron printers seem to suffer from an issue
where the first probing sample is off by some margin. Subsequent samples are
much closer (or the same) to each other. The current theory is that there is
some toolhead/axis settling on the first sample.
In order to avoid polluting the probe samples, the first sample should be
thrown away.
This extension adds support for performing a single, throw-away, settling
probe sample that is not part of the sample set used for calculating Z
positions.
The extension replaces the default `probe` Klipper object with the modified
one in order to allow all commands/operations that perform Z probing to
benefit from this.
I would add that the Ender 3 and other printers that use a BLTouch also experience this issue with the first probe sample.
Especially when it comes to performing BED_MESH_CALIBRATE!
💡 NOTE: Do not install both my version and @voidtrance version! Use only ONE!
💡 NOTE: Use either my version called
[z_v2settling_probe]
with the filez_v2settling_probe.py
or use @voidtrance version which is called
settling_probe
with the filesettling_probe.py
This extension does not add the ability to attach your Klicky probe/ Euclid probe to your tool head. It also is not responsible for docking your Klicky probe/ Euclid probe. You need to ensure that your probe is working, I mean you can do a BED_MESH_CALIBRATE, your homing procedure G28
and your leveling procedure (QGL or BED_TILT_ADJUST).
This extension adds a sample to the very beginning of the probing sequence. If you need to have the probe attached then you are responsible for writing the Macros that will allow the probe to attach automatically and docked automatically for each of the following commands.
This extension does not do any checking to ensure that when you probe the bed you are over the bed surface. So ensure you place the tool head in the appropriate location.
The PROBE_Z_ACCURACY
and CALIBRATE_Z
will move the tool head to the correct locations because the Auto-Z-calibate
plugin does that as part of its Klipper extension.
To enable the module, add the following to your printer.cfg
file:
[z_v2settling_probe]
#settling_sample:
# Globally enable the throw-away settling sample. Default is 'False'.
# Setting this to 'True' will enable the throw-away sample for all
# commands/operations that perform Z probing (QUAD_GANTRY_LEVEL, Z_TILT_ADJUST,
# BED_MESH_CALIBRATE, PROBE, PROBE_ACCURACY, etc.)
☝️ NOTE: The default for the option
settling_sample
isFalse
. So if you forget to assignTrue
orFalse
for the optionsettling_sample
then the extension will loadFalse
automatically. But this only applies if you have az_v2settling_probe]
section defined in your printer.cfg file.
The module also augments the PROBE
, PROBE_ACCURACY
, and PROBE_CALIBRATE
, QUAD_GANTRY_LEVEL
, BED_MESH_CALIBRATE
,PROBE_Z_ACCURACY
, and CALIBRATE_Z
commands with an extra parameter - SETTLING_SAMPLE
- which can be used to
control whether the commands perform a settling sample independently of thesettling_sample
setting in the configuration section [z_v2settling_probe]
. If your printer does not use QUAD_GANTRY_LEVEL
this extension will still work.
The extension will only augment the commands that apply for your type of printer. If you do not use Auto-Z-Calbration
plugin for your Voron Printer, the extension will not load that part of the extension that deals with the PROBE_Z_ACCURACY
command and the CALIBRATE_Z
command.
All you will see is a message in your klippy.log file saying that the PROBE_Z_ACCURACY
command and the CALIBRATE_Z
commands will not be available for your printer.
You have two ways you can install this z_v2settling_probe
extension (manually or via an installation script)
-
Here is the manual install instruction:
-
Write down the location of the following directories:
- Klipper Extras: Usually located at
/home/USER/klipper/klippy/extras
.
- Klipper Extras: Usually located at
-
Download
z_v2settling_probe.py
file. -
Download the
Z_V2SETTLING_PROBE.cfg
and include it into your printer.cfg file. -
Move
z_v2settling_probe.py
to your Klipper Extras folder (home/pi/klipper/klippy/extras). -
Restart Klipper service and do a
FIRMWARE RESTART
command if needed
💡 INFO: Please restart the Klipper service by using the Mainsail/Fluidd UI (upper right-hand corner Power button Symbol) or perform the following command at your Raspberry Pi command prompt (on the Pi that runs Klipper for your 3D printer):
cd ~
sudo systemctl restart klipper
👇 Run the following command:
cd ~
sudo systemctl restart klipper
- Here is the script method:
💡 NOTE: If you install the extension before you create the
[z_v2settling_probe]
section with the optionsettling_sample: True
Klipper will NOT load the extension when you restart Klipper.
Install the z_v2settling_probe
extension to Klipper, please run the following commands:
cd /home/pi
git clone https://github.com/GadgetAngel/voron2_settling_probe.git
./voron2_settling_probe/install-v2settling_probe.sh
First you must create the [z_v2settling_probe]
section in your printer.cfg file so Klipper knows to load the z_v2settling_probe.py
file and include it into the Klipper code running on your Raspberry Pi.
Here are the contents of Z_V2SETTLING_PROBE.cfg
file:
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# Z_V2SETTLING_PROBE Setup
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#Z_V2SETTLING_PROBE
[z_v2settling_probe]
# z_v2settling_probe has code and the code can be found in the file 'z_v2settling_probe.py'
# z_v2settling_probe also has one additional option parameter called 'settling_sample'
settling_sample = True
Now restart the Klipper service by going to the upper right-hand side corner of Mainsail UI and click on the Power Button symbol. Take your mouse and click on the curved arrow next to the word Klipper
to restart the Klipper service.
In this GitHub Repo I have added two additional files, so you can see what my setting where for my Euclid Probe (PROBE_EUCLID(GM).cfg) and my Auto-Z-Calibration
plugin (Z_CALIBRATION.cfg).
☝️ NOTE: These are for reference only. DO NOT load them onto your 3D printer!
It's possible to keep this extension up to date with the Moonraker's update manager by adding this configuration block to the "moonraker.conf" of your printer:
[update_manager z_v2settling_probe]
type: git_repo
path: ~/voron2_settling_probe
origin: https://github.com/GadgetAngel/voron2_settling_probe.git
install_script: install-v2settling_probe.sh
is_system_service: False
managed_services: klipper
After you update moonraker.conf
file, I reboot my Raspberry Pi to get it to install.
This requires this repository to be cloned into your home directory (e.g. /home/pi):
git clone https://github.com/GadgetAngel/voron2_settling_probe.git
The URL for Moonraker [update_manager]
section can be found here
Now, you are free to try out the following commands:
PROBE
PROBE SETTLING_SAMPLE=0
PROBE SETTLING_SAMPLE=1
PROBE_ACCURACY
PROBE_ACCURACY SETTLING_SAMPLE=0
PROBE_ACCURACY SETTLING_SAMPLE=1
PROBE_CALIBRATE
PROBE_CALIBRATE SETTLING_SAMPLE=0
PROBE_CALIBRATE SETTLING_SAMPLE=1
QUAD_GANTRY_LEVEL
QUAD_GANTRY_LEVEL SETTLING_SAMPLE=0
QUAD_GANTRY_LEVEL SETTLING_SAMPLE=1
BED_MESH_CALIBRATE
BED_MESH_CALIBRATE SETTLING_SAMPLE=0
BED_MESH_CALIBRATE SETTLING_SAMPLE=1
PROBE_Z_ACCURACY
PROBE_Z_ACCURACY SETTLING_SAMPLE=0
PROBE_Z_ACCURACY SETTLING_SAMPLE=1
CALIBRATE_Z
CALIBRATE_Z SETTLING_SAMPLE=0
CALIBRATE_Z SETTLING_SAMPLE=1
Happy 3D printing!!