Using the Manual Bed Levelling Assistant
Introduction
To help level the bed the firmware provides the Manual Bed Leveling Assistant (MBLA) and Auto Bed Leveling (ABL).
The Manual Bed Levelling Assistant helps you to level the bed of a Cartesian, CoreXY[UV] or SCARA printer using the manual adjusting screws on the bed itself, when you don't have multiple independently-driven Z axis motors to do it for you, i.e. Auto Bed Leveling (ABL).
MBLA relies on your printer having adjustment screws of some sort that you can turn by hand to level the bed. Like Mesh Bed Compensation (MBC), it probes the bed but the result is information on how much to turn each adjustment screw to level the bed. It normally takes several iterations to get the bed truly level.
Mesh Bed Compensation (MBC) is intended to compensate for irregularities in the surface of the bed. As a result it also compensates for a bed that is not level BUT it is better to level the bed as best as you can and then rely on MBC Just to deal with bed surface irregularities.
ABL relies on your printer having multiple Z axis steppers that the firmware can use to level the bed. Again, like MBC and MBLA, it probes the bed but the result is stepper movement that works to level the bed. Sometimes it can take more than one iteration to get the best result.
MBC and MBLA/ABL work together to improve the performance of your printer.
This guide is specific to Manual Bed Leveling Assistant. Other guides for MBC and ABL can be found here:
Prerequisites
- This feature is implemented in firmware version 1.19 and later.
- You must have a bed or gantry that is levelled by three or four adjusting screws. Three screws is best, although on a very large bed four screws may be needed.
- Your Z probe must be correctly defined and calibrated in the M558 and G31 commands in config.g. If you have no Z probe then use M558 P0 to indicate you will manually adjust the nozzle down to the bed (using the paper feeler test or similar).
- You must use the M671 command to define the X and Y coordinates of the adjusting screws. These coordinates will usually be outside the normal printable area defined by M208. The M671 command must come after any M667 or M669 command in config.g.
- You must set up a bed.g file in the usual way with at least as many probe points as adjusting screws. As a minimum, you should have one probe point close to each adjusting screw. You can have more probe points if you wish. For example, with a square bed you might choose to probe close to each corner even if you have just 3 bed levelling screws.
- The value of the S parameter on the final G30 command in bed.g must equal the number of adjusting screws.
- This facility does not work on delta printers. On a delta printer you can have auto calibration correct for bed tilt instead.
How it works
A valid M671 command enables the bed levelling assistant. When you run G32 to perform bed probing, the final G30 command (the one with the S parameter) in bed.g will cause the assistant to run. It uses a least squares algorithm that minimises the sum of the height errors at the probe points. The amount by which each screw should be adjusted is reported. The adjustment requested for the first screw is always zero.
You can run G32 again to repeat the process.
The process typically causes a small shift in the Z=0 position. To correct this, if you are using the Z probe to do Z homing, you can just re-home Z after making the adjustments. Otherwise, do a single G30 probe at the centre of the bed to set the Z=0 position.
Example
File config.g:
... M671 X-15:100:215 Y190:-10:190 P0.5 ; adjusting screws at rear left (-15,190), front middle (100,-10) and rear right (215,190), thread pitch 0.5mm ...
File bed.g:
G28 ; home M401 ; deploy Z probe G30 P0 X20 Y190 Z-99999 ; probe near an adjusting screw G30 P1 X180 Y190 Z-99999 ; probe near an adjusting screw G30 P2 X100 Y10 Z-99999 S3 ; probe near an adjusting screw and report adjustments needed M402 ; retract probe
5 Comments
do you have a example for a square bed 300 x 300 with screwa at each corner ?
William Odier - Reply
for 4 point 300x300
File config.g:
…
M671 X10:290:290:10 Y290:290:10:10 P0.5 ; point1 (10,290), point2 (290,290), point3 (290,10), point4 (10,10)
…
File bed.g:
G28 ; home
M401 ; deploy Z probe
G30 P0 X10 Y290 Z-99999 ; probe near an adjusting screw
G30 P1 X290 Y290 Z-99999 ; probe near an adjusting screw
G30 P2 X290 Y10 Z-99999 ; probe near an adjusting screw
G30 P3 X10 Y10 Z-99999 S4; probe near an adjusting screw and report adjustments needed
M402 ; retract probe
Massimiliano Conti - Reply
Can I get this to work on a delta printer? I want to have three manual screws in addition to the auto-calibration for the delta. The reason I need this functionality is that I am maxing out the range of motion on all 3 arms. I print big vases for customers (at my printer’s limit), and my printer just so happens to have 3 adjustment screws for the heated bed. I would prefer to not waste anywhere between 2 to 5 millimeters due to a base offset!
Any help is much appreciated.
Raphael Hey - Reply
How do I set this up using no Z probe at all? I’m rebuilding a Replicator 2X and will probably install one on here later, but for now I’d like to just manually level the bed like the unit originally did, have the machine move the extruders to a few spots and I can adjust the bed screws as needed.
Chris Thomas - Reply
I think you just put “M558 P0” in your “config.g” and uncomment “M401 ; deploy Z probe” & “M402 ; retract probe” by putting a “;” in front of it in your “bed.g“. At least that is how manual probing for me works pretty good! Be sure to have your probing points arranged in clockwise order for the system.
Lucas Bahle -