Table of Contents
How to run a Bed Mesh
Defining the Bed Mesh
We have to have the bed mesh parameter's defined before running a bed mesh. They are stored in printer.cfg
Example for Neptune 4 and Neptune 4 Pro:
[bed_mesh] mesh_min:10,21 mesh_max:210,211 probe_count: 9,9 algorithm:bicubic bicubic_tension:0.2 mesh_pps: 4, 4 split_delta_z: 0.020 fade_start: 4 fade_end: 12
See the Klipper docs for more detailed explanations of the parameters.
| probe_count | The number of points in the probed mesh |
| mesh_pps: 4, 4 | Sets the interpolated mesh points between the probed mesh points |
Fade
In the above example observe we have enabled bed mesh fade. This trims the amount of compensation the bed mesh is applying over a height range. Here the fade starts at Z=4mm and has been completely tapered off and eliminated by Z=12mm.
Full Bed Meshes
Full bed meshes aren't useful for production printing because they are stale almost immediately, yet they are useful to evaluate the shape of the bed. Having a large probe matrix, such as the Elegoo “Professional” size bed mesh, isn't going to tell us significantly more about the overall bed shape than a 6×6 or 9×9 mesh in less time. We'll want to be using Adaptive Bed Meshes run at print time for production prints and they'll have a denser mesh for just the object size.
G29
Note: the G29 gocode is a marlin gcode and not an actual gcode in Klipper, and in Elegoo's distribution of printer.cfg it may, or may not otherwise, be implemented as a macros. Klipper instead natively implements the BED_MESH_CALIBRATE command which features a richer set of parameters and can accomodate adaptive_bed_mesh. As such consider that using G29 instead of the Klipper command is unreliable and unpredictable as its behavior may change. There's no reason not to use the Klipper correct BED_MESH_CALIBRATE.
Full Bed Mesh
Run the following in the console to generate a full bed mesh that you can use to evaluate how flat the bed is compared to the bed level.
G28; Home (optional) BED_MESH_CLEAR BED_MESH_CALIBRATE
BED_MESH_CLEAR is realistically optional as the BED_MESH_CALIBRATE will overwrite the default or named mesh.
Adaptive Bed Meshes
Use the following in Orca's Printer Machine Start gcode:
BED_MESH_CLEAR
BED_MESH_CALIBRATE mesh_min={adaptive_bed_mesh_min[0]},{adaptive_bed_mesh_min[1]} mesh_max={adaptive_bed_mesh_max[0]},{adaptive_bed_mesh_max[1]} ALGORITHM=[bed_mesh_algo] PROBE_COUNT={bed_mesh_probe_count[0]},{bed_mesh_probe_count[1]} ADAPTIVE=0 ADAPTIVE_MARGIN=0
Read the Orca docs on Direct Adaptive Bed Mesh Compensation
