Skip to content

A Klipper Extension for the Probe Obj that allows the first probe sample to be discarded from the following command: PROBE,PROBE_ACCURACY,PROBE_CALIBRATE,QUAD_GANTRY_LEVEL,BED_MESH_CALIBRATE,SCREWS_TILT_CALCULATE,Z_TILT_ADJUST,PROBE_Z_ACCURACY, and CALIBRATE_Z

License

GadgetAngel/voron2_settling_probe

Repository files navigation

Voron 2 Settling Probe which I plan to use on my Ender 3 printer and Voron 2.4 printers

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!


BEFORE you install z_v2settling_probe on your Klipper 3D printer, do the following:

💡 NOTE: Do not install both my version and @voidtrance version! Use only ONE!

💡 NOTE: Use either my version called [z_v2settling_probe] with the file z_v2settling_probe.py

or use @voidtrance version which is called settling_probe with the file settling_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.


How to enable z_v2settling_probe on your Klipper 3D printer:

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 is False. So if you forget to assign True or False for the option settling_sample then the extension will load False automatically. But this only applies if you have a z_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_ACCURACYcommand and the CALIBRATE_Z command.

All you will see is a message in your klippy.log file saying that the PROBE_Z_ACCURACYcommand and the CALIBRATE_Z commands will not be available for your printer.


Installation:

You have two ways you can install this z_v2settling_probe extension (manually or via an installation script)

  1. Here is the manual install instruction:

  2. Write down the location of the following directories:

    • Klipper Extras: Usually located at /home/USER/klipper/klippy/extras.
  3. Download z_v2settling_probe.py file.

  4. Download the Z_V2SETTLING_PROBE.cfg and include it into your printer.cfg file.

  5. Move z_v2settling_probe.py to your Klipper Extras folder (home/pi/klipper/klippy/extras).

  6. 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 installation script method:

  1. Here is the script method:

💡 NOTE: If you install the extension before you create the[z_v2settling_probe] section with the option settling_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

Example Usage: An Example of using [z_v2settling_probe] section

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.


Additional Files:

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!


Moonraker Update Manager:

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!!

About

A Klipper Extension for the Probe Obj that allows the first probe sample to be discarded from the following command: PROBE,PROBE_ACCURACY,PROBE_CALIBRATE,QUAD_GANTRY_LEVEL,BED_MESH_CALIBRATE,SCREWS_TILT_CALCULATE,Z_TILT_ADJUST,PROBE_Z_ACCURACY, and CALIBRATE_Z

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published