Auto bed leveling inaccurate


Hi all,

I’ve built 2 printers now, a Dolly and a custom i3 design using 2020 extrusion for a frame. On both I use an inductive Z probe for bed leveling (and have no experience with any sort of manual bed leveling). On both printers, I’ve found that using a 4x4 bilinear auto leveling setup has always produced inaccurate results. Whenever I print a relatively long part (100mm+) there is a clear difference in the print height when looking at the bottom of the print, and sometimes it is so pronounced that the print won’t stick to the bed at one end at all.

Both of my beds probe at about a 1mm height difference at the extreme corners. I do see the z axis moving while it is traveling along X and Y, so the compensation seems to be working. On the first printer I manually measured the Z probe offset, but on the second I designed the X carriage myself so I was able to use the exact measurement from the design. In my gcode I don’t do the bed leveling until the bed is fully up to print temperature, to account for any warping under heat.

What, if anything, can I do to increase the accuracy? I’ve only tried bilinear and only tried 16 points so far, it didn’t seem like any of the other styles would be of much help and 16 points is already quite a lot for a 200x200mm print area.




does your printbed have a good conductive surface? my printer was off the mark because 1 corner the metal bolt from the heated bed was picked up thus triggering faster than the other points on aluminium. by altering the points in marlin i corrected this.



Yeah, I’ve got all points leveling 20mm in from the edges so they’re far from any hardware, and the second heatbed has no surface hardware at all. I do have a PEI sheet which did significantly reduce the conductivity, I had to replace the first tiny probe that Tom recommended in the Dolly build guide because it would not trigger at all. Now I’m using big fat probes that trigger from a few mm up.

Currently printing a spool holder which runs pretty far across the bed, will try to get a decent pic of the bottom layer with my crappy phone camera later if it helps.



did you set PROBE_OFFSET_FROM_EXTRUDER in marlin correct?

===messy workbench, i love it=== :sunglasses:



Yeah, it’s definitely 100% accurate on the second printer bc I derived it from my own design, the first I measured manually but is certainly accurate within a few mm.

The above print actually came out pretty much perfect, so now I’m dealing with it being inaccurate AND inconsistent :stuck_out_tongue:



Is your extruder heating during the auto bed leveling process?

I had a similar problem.

One of the things Tom determined during his video where he tested a bunch of sensors is that heat definitely affects the probe. On the Prusa MK2 the probe is sitting in front of the exhaust from the hot end heatsink.

When I switched to Prusa Slic3r I was able to see their custom start gcode:

M104 S[first_layer_temperature] ; set extruder temp M140 S[first_layer_bed_temperature] ; set bed temp M190 S[first_layer_bed_temperature] ; wait for bed temp M109 S[first_layer_temperature] ; wait for extruder temp

You can use this code to get the extruder to temperature before doing the G29 auto bed level. This way the probe isn’t getting warmed up during the ABL process.



Oh interesting! Yeah I heat the bed fully, then home and start auto leveling while heating the nozzle, which usually comes to temperature just as the auto leveling is complete. And I do notice this much more on my i3 mk2 clone than I do on my other printer where the sensor is not in-line with the airflow to the heatsink. I’ll adjust my gcode, I think I’ll heat the nozzle after leveling so it doesn’t ooze while probing, which will have the side effect of the probe being room temperature and hopefully at its most accurate .

Thanks for the tip!



I have no issues just doing eyeball adjustments on an ultrabase. and you manually rotate one of the z motors to adjust left/right on the fly :wink: