How do you select the "tolerance" for quad_gantry_leveling

Basic Information:

Printer Model: Custom CoreXY with 4x 8mm leadscrews for gantry leveling
MCU / Printerboard: Octopus V1.1/STMF466
klippy.zip (843.3 KB)

Making good progress on my custom printer but I have a question on setting the tolerance for quad_gantry_leveling - how do you come up with the value? I started with the same one as the Voron 2.4 (0.0075mm) but, while the printer was able to achieve this value, it took quite a number of retries (usually five or six) and it often wouldn’t hold in between operations.

Digging into the value, the 2.4 has 400 steps/mm (or each step is 0.0025mm) in the Z Axis while my printer, which uses 8mm leadscrews, has 25 steps/mm (or each step is 0.0400mm).

Now, if I use the Voron setting of a tolerance of 3 steps for the quad_gantry_leveling, my tolerance would be 0.12mm which feels high. I’m currently using 0.05mm which is quite stable and is generally held between Mesh Operations. Even if the value changes, I can get back to the tolerance value with one retry, which is what I expect - it seems reasonable (and it is more than one step) but I wanted to see if there was a standard approach for specifying the tolerance value.

The mesh measurement of the heated bed looks good (0.148mm varience across the bed):

You are completely right: Tolerances can not be set my basic technical data. Some set a tolerance of 0,005 (=5 microns!!! Noone can measure that with a 3D printer in real! You may have some numbers, saying “retry tolerance is 0,00Xmm” but it blows in pieces, if you start to measure it under real measuring conditions, look only at the temperature enlargement of ABS for 10K, sic!). If the measurement of the gantry should be taken serious, it should start only, if
a) Doors of the printer are closed (you do not have doors on your printer? So you are lost anyway)
b) Temperature inside your printing hardware is “stable” or constant (within what range?? You don’t know? So your are lost again!

That turns out, that you need some simplification to do something sensfull with this measurement.

My approach is, to heat the printer for 10 minutes before measuring and to use 0,02-0,05 mm as the exit criterion. Why? What overall tolerance of your workpiece do you want? Is this finally of any relevance? I print parts for technical applications, and the overall tolerance in my case (technically spoken: Allgemeintoleranzen [eat this, Google translate!!]) is 0,1mm (!!)

So if you stay slightly away from this (0,02-0,05mm) you should be save anyway. My voron takes 2 runs if it is “cold/new” (=I played around with the printhead by changing filament or so), and one go restarting a print.

You can doubleckeck if you increase the speed of the printer during measurement. The faster you are, the “more accurate” it seems to be tripple smile :wink: If you slow down the speed during measuring, you will never come to a solution … because temperature enlargement is much much larger than the 5 microns… Think of dX/dT, the temperature enlargement by tempearture change and ask yourself, if the change of temperature during print (or even during measurement, if you just press “start” at a cold printer) is 0 at some point in time (=never).

To answer your question:

  1. No, there is no standard approch, but the worst approch is, to use values given by datasheets of manufacturers for some cheap microswitches, hold by a magnet, covered by plastics.
  2. Using 0,05mm seems to be a reasonable value. If your first layer is off ±0,05mm it will work anyway.
  3. Try to translate the german saying: “Wer viel misst, misst Mist” :wink:
1 Like

Honestly, I would not spend too much theoretical thoughts on it.

What are we doing with quad_gantry_leveling?

  • It is a tool to make sure that your print bed is a normal plane towards your hot-end / gantry
  • Any error will cause the plane to tilt around a certain angle
  • Acceptable deviation on the probed points depends on the size of the bed

What effect will it have?

  • Effects first layer quality
  • Potentially effects Z-Height of your print. Full effect only when the printed object is about the size of your bed. For everything below the respective trigonometric fraction
  • Max effect = max deviation

What is a tolerable deviation?

  • Golden rule of metrology: Use a measuring device that is a factor 10 more capable than the required tolerance zone
  • How precise can you measure? BLtouch typically around +/-0.005mm
  • Using above rule we would end up at +/-0.05mm acceptable deviation

Would 0.05mm be tolerable?

  • This is the maximum deviation at he border of your bed, where it is supported
  • Could have a effect on the first layer in the worst case
  • Potential effect on the z-height of the printed part should be negligible

Just my 2 cents


Are you sure about these numbers for your printer (rotation_distance = 8)? I could be wrong but:

<steps_per_mm> = <full_steps_per_rotation> * <microsteps> / <rotation_distance>
<steps_per_mm> = 200 * 16 / 8 = 400

You’re right, with microstepping it’s 400 steps/mm. Thanx for catching that.

I didn’t want to overthink it - I just felt that 0.0075mm tolerance was over the top (I think it’s extreme for my Voron) but I wondered if there was a fairly good rule of thumb here.

Grrrrrr :wink: I really like to make a lot of theoretical thoughts on anything blink blink

1 Like