Calibrate Probe Z Offset
This section explains how to calibrate the probe z_offset which is critical to obtaining high quality prints. The z_offset is the distance between the nozzle and bed when the probe triggers. The Klipper PROBE_CALIBRATE tool can be used to obtain this value - it will run an automatic probe to measure the probe's Z trigger position and then start a manual probe to obtain the nozzle Z height. The probe z_offset will then be calculated from these measurements.
Prior to starting this calibration, remove any filament completely from your printer and ensure your nozzle does not have any extruded filament hardened on the nozzle. This will ensure a proper probe z_offset calibration.
This calibration will be performed with the Heater Bed at room temperature, please allow some time for the Heater Bed to cool down from the PID calibration.
From the MainsailOS web interface;
Click the
Home Allbutton in theControlssection;This should move the print head to the
safe_z_homeposition;
The safe_z_home position, is pre-defined in the printer.cfg file to these coordinates: x-3, y-17, z10

Move the print head to a position near the centre of the bed;
Send a
G1 X125 Y125 F3000command in theConsole;

Send a
PROBE_CALIBRATEcommand in theConsole;This will return a Z position to start
the paper testfrom;

Using a standard weight copy paper, place the piece of paper on the
Heater Bedunder theExtruder;

The TESTZ command will be used to move the nozzle a relative distance from the nozzle's current position. A TESTZ Z=-.1 command will request the nozzle to move closer to the Heater Bed by .1mm.
On one of my Anycubic Printers as an example, I had to lower the Z position from 2.915 to 1.835 (your printer will vary). If I did all TESTZ Z=-.1 commands it would have taken a lot of time. If you are careful, you could start with a Z=-1 or Z=-0.5 to shorten the number of commands to send to the printer, just make sure that after every TESTZ command sent, you visually check the position of the nozzle.
You want to avoid having the nozzle crash into the bed and risk breaking the strain gauge on the printer. It is best to take your time, just use common sense, and be cautious when entering the distance a Z=-1 and Z=-.1 is a big difference!
Send a
TESTZ Z=-.1command in theConsole;After the nozzle stops moving, push the paper back and forth to check if the nozzle is in contact with the paper;
Continue sending
TESTZcommands until you feel a small amount of friction when moving the paper back and forth;You only need a small amount of friction, you should still be able to move the paper back and forth feeling a slight contact with the nozzle without making the paper buckle;
If too much friction is found then send a
TESTZ Z=.1command in theConsoleto raise the nozzle and test the paper friction again;If you raised the nozzle too high, adjust the negative
TESTZcommand by splitting the last distance in half;For this example you just went up Z=.1, try Z=-.05 or even Z=-.025 until you find the the sweet spot.
Once you have the little bit of friction between the paper and the nozzle;
Send an
ACCEPTcommand in theConsole;Record the
probe: z_offset: ###setting as displayed in theConsole, we will verify this setting matches what is saved in theprinter.cfgfile in one of the steps below;
Send a
SAVE_CONFIGcommand in theConsole;This will update the
printer.cfgfile with the newprobe: z_offsetsettings and restart Klipper;
Remove the paper from the print bed.

Checking the
printer.cfgfile to ensure the newprobe: z_offsetsettings are updated:From the MainsailOS web interface, click
Machine, then click onprinter.cfg;

The
printer.cfgfile should load into an editor window;Scroll down until you see the
[probe]section, the default z_offset setting should be commented out and will not be used;

Continue scrolling down to the very bottom of the
printer.cfgfile until you reach the;#*# <---------------------- SAVE_CONFIG ---------------------->section;A new
[probe]section should be present, along with the new z_offset setting;This should match what you recorded from the
Consolein a previous step;

Once you have confirmed these settings;
Close the
printer.cfgfile by clicking theXnear the top right of editor;
Repeatability Check:
After calibrating the probe Z offset it is a good idea to verify that the probe provides repeatable results. You will use the
PROBE_ACCURACYcommand for this test;From the MainsailOS web interface;
Click the
Home Allbutton in theControlssection;

Move the print head to a position near the centre of the bed (same position you used to calibrate the probe z offset);
Send a
G1 X125 Y125 F3000command in theConsole;

Send a
PROBE_ACCURACYcommand in theConsole;The command will run the probe ten times and produce output similar to the following;

Ideally the tool will report an identical maximum and minimum value (if the probe obtains an identical result on all ten probes). However, it's normal for the minimum and maximum values to differ by one Z 'step distance' or up to 5 microns (.005mm).
A 'step distance' is rotation_distance/(full_steps_per_rotation*microsteps). The distance between the minimum and the maximum value is called the range. A range of 0.012500 would be considered normal.
If your 'standard deviation' is much greater than 0.012500 you may want to run through this calibration setting from the beginning and try again.
Once you have confirmed these settings;
Close the
printer.cfgfile by clicking theXnear the top right of editor;
The official Klipper documentation has a section that explains Thermal Expansion, bottom of Bed Levelling. Although it relates to the Probe Z Offset, I felt it has more relevance once you make your first couple of prints. Therefore I've included it as a sub-section of Making Prints as you will need to print an object to see if you have to make any Z Offset adjustments.
Last updated