146 lines
4.2 KiB
Markdown
146 lines
4.2 KiB
Markdown
---
|
||
tag: g029m1
|
||
title: Bed Leveling (Manual)
|
||
brief: Measure Z heights in a grid, enable leveling compensation
|
||
author: thinkyhead
|
||
|
||
requires: MESH_BED_LEVELING
|
||
group: calibration
|
||
|
||
related: [ M420, M421 ]
|
||
codes: [ G29 ]
|
||
|
||
notes:
|
||
- Requires the `MESH_BED_LEVELING` option in `Configuration.h`.
|
||
- Similar to `AUTO_BED_LEVELING_BILINEAR` with `PROBE_MANUALLY` but uses less SRAM.
|
||
- For automatic probe-based leveling enable one of the [`AUTO_BED_LEVELING_*`](/docs/configuration/configuration.html#bed-leveling) options instead.
|
||
- "[`G28`](/docs/gcode/G028.html) disables bed leveling. Follow with `M420 S` to turn leveling on, or use `RESTORE_LEVELING_AFTER_G28` to automatically keep leveling on after [`G28`](/docs/gcode/G028.html)."
|
||
|
||
parameters:
|
||
-
|
||
tag: S
|
||
optional: false
|
||
values:
|
||
-
|
||
tag: 0
|
||
description: Produce a mesh report (see examples below).
|
||
-
|
||
tag: 1
|
||
description: Start probing mesh points.
|
||
-
|
||
tag: 2
|
||
description: Probe the next mesh point.
|
||
-
|
||
tag: 3
|
||
description: Manually modify a single point with `X` `Y` `Z` parameters. (See also [`M421`](/docs/gcode/M421.html).)
|
||
-
|
||
tag: 4
|
||
description: Set a global Z offset. Positive values are away from the bed; negative values are closer.
|
||
-
|
||
tag: 5
|
||
description: Reset and disable mesh.
|
||
-
|
||
tag: I
|
||
optional: true
|
||
description: '**(Marlin 2.x)** With `S3`, the (0...n-1) X index of the mesh value to modify.'
|
||
values:
|
||
-
|
||
tag: index
|
||
type: int
|
||
-
|
||
tag: J
|
||
optional: true
|
||
description: '**(Marlin 2.x)** With `S3`, the (0...n-1) Y index of the mesh value to modify.'
|
||
values:
|
||
-
|
||
tag: index
|
||
type: int
|
||
-
|
||
tag: X
|
||
optional: true
|
||
description: '**(Marlin 1.x)** With `S3`, the (1...n) X count of the mesh value to modify.'
|
||
values:
|
||
-
|
||
tag: count
|
||
type: int
|
||
-
|
||
tag: Y
|
||
optional: true
|
||
description: '**(Marlin 1.x)** With `S3`, the (1...n) Y count of the mesh value to modify.'
|
||
values:
|
||
-
|
||
tag: count
|
||
type: int
|
||
-
|
||
tag: Z
|
||
optional: true
|
||
description: With `S3`, the new mesh Z value.
|
||
values:
|
||
-
|
||
tag: linear
|
||
type: float
|
||
|
||
examples:
|
||
-
|
||
pre: 'S0 mesh report:'
|
||
code:
|
||
- |
|
||
> G29 S0
|
||
Num X,Y: 3,3
|
||
Z offset: 0
|
||
Measured points:
|
||
0 1 2
|
||
0 +0.011 -0.020 -0.026
|
||
1 +0.017 +0.002 -0.019
|
||
2 +0.022 -0.030 -0.013
|
||
|
||
-
|
||
pre: '**(Marlin 1.x)** Modify some mesh points and view the new mesh:'
|
||
code:
|
||
- |
|
||
> G29 S3 X3 Y3 Z0.042
|
||
> G29 S3 X2 Y2 Z-0.666
|
||
> G29 S0
|
||
Num X,Y: 3,3
|
||
Z offset: 0
|
||
Measured points:
|
||
0 1 2
|
||
0 +0.011 -0.020 -0.026
|
||
1 +0.017 -0.666 -0.019
|
||
2 +0.022 -0.030 +0.042
|
||
-
|
||
pre: '**(Marlin 2.x)** Modify some mesh points and view the new mesh:'
|
||
code:
|
||
- |
|
||
> G29 S3 I2 J2 Z0.042
|
||
> G29 S3 I1 J1 Z-0.666
|
||
> G29 S0
|
||
3x3 mesh. Z offset: 0
|
||
Measured points:
|
||
0 1 2
|
||
0 +0.011 -0.020 -0.026
|
||
1 +0.017 -0.666 -0.019
|
||
2 +0.022 -0.030 +0.042
|
||
---
|
||
|
||
Mesh Bed Leveling (MBL) allows interactively measuring a Z height mesh without a bed probe. The only tool required is a piece of paper or a feeler gauge. MBL uses the mesh to compensate for variations in height across the bed.
|
||
|
||
**Mesh Bed Leveling from the host:**
|
||
|
||
1. Use `G29 S0` to get the current status and mesh. If there’s an existing mesh, you can send M420 S1 to use it.
|
||
2. Use `G29 S1` to move to the first point for Z adjustment.
|
||
3. Adjust Z so a piece of paper can just pass under the nozzle.
|
||
4. Use `G29 S2` to save the Z value and move to the next point.
|
||
5. Repeat steps 3-4 until completed.
|
||
6. Use [`M500`](/docs/gcode/M500.html) to save the mesh to EEPROM, if desired.
|
||
|
||
**Mesh Bed Leveling using an LCD controller:** (Requires `LCD_BED_LEVELING`)
|
||
|
||
1. Select `Level Bed` then choose `Level Bed` (not `Cancel`) in the sub-menu.
|
||
2. Wait for `Homing XYZ` to complete.
|
||
3. When `Click to Begin` appears, press the controller button to move to the first point.
|
||
4. Use the controller wheel to adjust Z so that a piece of paper can just pass under the nozzle.
|
||
5. Press the controller button to save the Z value and move to the next point.
|
||
6. Repeat steps 4-5 until completed.
|
||
7. Use `Control` > `Store memory` to save the mesh to EEPROM, if desired.
|