Professional Documents
Culture Documents
Marlin Using Manual and Mesh Bed Leveling
Marlin Using Manual and Mesh Bed Leveling
Background
I happened to buy an unfinished RigidBot BIG which was in not-too-great condition
from the shipping and being mishandled by its previous owner. The structure was
solid though and I have rebuilt most of it using a RAMPS 1.4 board + 128x64 LCD
board. But the bed wasn't flat. I even tried to use a sheet of glass to compensate for
that, but it didn't help.
I've experimented in the past (on a smaller Huxley) with a menu option to do Bed
Leveling without any probes, servos, etc. So I implemented this feature in Marlin and
began experimenting with GRID auto bed leveling.
After a while it began to bug me that the existing Bed Leveling solutions in Marlin are
based on a single plane, so they still assume you have a flat bed – not good enough
for a BIG non-flat bed like mine.
The GRID wasn't using a mesh. So I implemented mesh based bed leveling. One
obstacle I realized was long lines need to be split on mesh boundaries. I wrote most
code in a "simulator" to get the logic right and have tested it all day. The mesh
calculations are basically a bi-linear calculation from the mesh edges, maybe not
perfect.
On your LCD controller you'll find the "Bed Leveling" option at the end of the
"Prepare" menu. As soon as you select this option, the printer will begin to move the
nozzle from point to point collecting measurements. At each point, use the encoder
to adjust the nozzle's Z position until the tip is just at paper-thickness from the bed,
then press the encoder button to move to the next point.
This procedure may take a few minutes, depending on how many points you
measure and how carefully you measure each one. Fortunately, once you've created
the mesh, you can save it to EEPROM. You can do a G28 to see if the mesh is active
or not. If, after homing, the nozzle travels to the first measure point (to sync the
position with the mesh), you know the mesh is active.
This is what I get when measuring my bed (using 5x5 points). Pretty bad bed huh?
Thanks to this feature I've been able to print pretty much all over the bed. And did I
mention, this is a BIG bed? The print area is at least 360mm x 290mm with room to
spare. The width of the "reptiles" print shown here is over 200mm. Without this bed
leveling technique it would have been impossible to get such nice results.
On your LCD controller you'll find the "Bed Leveling" option at the end of the
"Prepare" menu. As soon as you select this option, the printer will begin to move
the nozzle from point to point collecting measurements. At each point, use the
encoder to adjust the nozzle's Z position until the tip is just at paper-thickness
from the bed, then press the encoder button to move to the next point. If G28 does
an extra move (to sync with the mesh position) then you know mesh leveling is
active.
https://github.com/MarlinFirmware/Marlin/pull/1619
Later I also extended to G29 so that Manual Bed Leveling can be performed without
a controller.
I use a paper and do the goto next point when the paper feel loose, which gets the
compensation a little too loose so I compensate that in Slic3r with "Z offset" (in
Printer Settings) set to -0.05.