Skip to content

Check bed level in firmware software

3d-gussner edited this page Sep 28, 2018 · 4 revisions

Check bed level in firmware/software

After having everything done hardware wise, let's get into the firmware/software part.

Tools/Software you gonna need

g-codes

g-code parameters function
G45 XYZ-Calibration no output
G45 V XYZ-Calibration verbose mode low
G45 V20 XYZ-Calibration verbose mode high most detailed output
G80 Mesh bed leveling no output
G80 V Mesh bed leveling verbose mode low output of z-probe values
G80 V10 Mesh bed leveling verbose mode medium output of z-probe values with x/y coordinates
G80 V20 Mesh bed leveling verbose mode high output of z-probe values with x/y coordinates and MESH_HOME_Z_SEARCH
G81 Print mesh bed leveling status and bed profile

G45 verbose mode

When your bed is heavily skewed the detailed information during xyz-calibration may help to calculate the adjustments you need to do to get it better.

G80 verbose mode

It is sometime hard to read the values right, by using the G80 V10 or V20 g-code you get the coordinates of the values during mesh bed leveling. Comparing these to the G81 results makes it for me way easier to see where adjustments are needed.

How do i check that my printer is perpendicular and my bed is leveled or 'flat'?

After trying to get the printer and bed hardware wise as perpendicular and the bed leveled we are ready to see what the firmware and sensor show.

XYZ-calibration

After every hardware modification a xyz-calibation is useful to ensure your printer performs as expected and is aligned. Even moving the printer may misalign the x-motor side and x-idler side and as a result the mesh bed leveling fails, in worst case the nozzle crash it the bed. This crash can damage the PEI sheet or even worse destroy a ruby nozzle.

If your printer is severe skewed and you don't know how much you have to move one side or another the M45 verbose values may be handy. At the same time these can be very difficult to read and confusing.

Bed level and flatness

Please try to do this with bed heated up to your usual temperature. To see how your bed 'looks like' to the printer/ is 'flat' you can use the g-codes

  1. G80 V, V10 or V20 to run the mesh bed leveling and getting results of the PINDA (z-probe) measurements
  2. G81 to print/display the calculated bed profile

and visualize these via Online bed level visualizer.

If you have Octoprint the Bed Level Visualizer-Plugin will do it for you.

Example manual:

  • G80 V10 output

>>>G80 V10

SENDING:G80 V10

echo:Enqueing to the front: "G28 W0"

echo:busy: processing

No clamping for first calibration point.

Z jitter data from Z cal. not valid.

0: no xy clamping

X: 12.00000

Y: -2.00000

mesh bed leveling: 0.15167

1: no xy clamping

echo:busy: processing

X: 114.00000

Y: -2.00000

mesh bed leveling: 0.16750

2: no xy clamping

echo:busy: processing

X: 215.00000

Y: -2.00000

mesh bed leveling: 0.43000

3: no xy clamping

echo:busy: processing

X: 215.00000

Y: 96.00000

mesh bed leveling: 0.34250

4: no xy clamping

echo:busy: processing

X: 114.00000

Y: 96.00000

mesh bed leveling: 0.12750

echo:busy: processing

5: no xy clamping

X: 12.00000

Y: 96.00000

mesh bed leveling: 0.13667

echo:busy: processing

6: no xy clamping

X: 12.00000

Y: 194.00000

mesh bed leveling: 0.13500

echo:busy: processing

7: no xy clamping

X: 114.00000

Y: 194.00000

mesh bed leveling: -0.04000

echo:busy: processing

8: no xy clamping

echo:busy: processing

X: 215.00000

Y: 194.00000

mesh bed leveling: -0.06583

clean up finished

babystep applied

Bed correction data valid

Bed leveling correction finished

Upsample finished

Mesh bed leveling activated

echo:busy: processing

echo:busy: processing

echo:busy: processing

Go home finished

  • G81 output

>>>G81

SENDING:G81

Num X,Y: 7,7

Z search height: 5

Measured points:

0.13500 0.06009 0.00176 -0.04000 -0.06519 -0.07380 -0.06583

0.13407 0.07938 0.04469 0.03000 0.03531 0.06062 0.10593

0.13463 0.09559 0.07932 0.08583 0.11512 0.16719 0.24204

0.13667 0.10870 0.10565 0.12750 0.17426 0.24593 0.34250

0.14019 0.11873 0.12367 0.15500 0.21272 0.29682 0.40731

0.14519 0.12568 0.13340 0.16833 0.23049 0.31988 0.43648

0.15167 0.12954 0.13481 0.16750 0.22759 0.31509 0.43000

Getting the G81 values and visualize these you may wonder which corner is too high or too low. Using the verbose mode of G80 V10 we can compare the measured values vs. the bed profile values of G81.

I created a spreadsheet to make it bit easier for me to see where i have to adjust things and it looks bit like that:

G80

x/y 12 114 215
197 0.13500 ________ ________ -0.04000 ________ ________ -0.06583
96 0.13667 0.12750 0.34250
-2 0.15167 0.1675 0.43000

G81

0.13500 0.06009 0.00176 -0.04000 -0.06519 -0.07380 -0.06583
0.13407 0.07938 0.04469 0.03000 0.03531 0.06062 0.10593
0.13463 0.09559 0.07932 0.08583 0.11512 0.16719 0.24204
0.13667 0.10870 0.10565 0.12750 0.17426 0.24593 0.34250
0.14019 0.11873 0.12367 0.15500 0.21272 0.29682 0.40731
0.14519 0.12568 0.13340 0.16833 0.23049 0.31988 0.43648
0.15167 0.12954 0.13481 0.16750 0.22759 0.31509 0.43000

But copying the G81 values into the online bed visualizer you get this kind of result:

G81-results_1st_view

**but **if you hover over the points you see that something is off if you compare it to the spreadsheet.

Eventually you have to flip the picture, which looks like this and shows your mesh bed level results like you look at your bed from the front.

G81-results_real_view

but it still doesn't look right as the positive values are facing down.

So what to do to visualize it properly?

As the G81 results showing the values like you would on the bed BUT the online bed level visualizer expects that data starts 0,0 coordinates you need to flip the values bottom to top. Which would look in that example like that:

0.15167 0.12954 0.13481 0.16750 0.22759 0.31509 0.43000

0.14519 0.12568 0.13340 0.16833 0.23049 0.31988 0.43648

0.14019 0.11873 0.12367 0.15500 0.21272 0.29682 0.40731

0.13667 0.10870 0.10565 0.12750 0.17426 0.24593 0.34250

0.13463 0.09559 0.07932 0.08583 0.11512 0.16719 0.24204

0.13407 0.07938 0.04469 0.03000 0.03531 0.06062 0.10593

0.13500 0.06009 0.00176 -0.04000 -0.06519 -0.07380 -0.06583

This visualization represents now you bed level profile that the firmware measured and calculated:

G81-results_flipped_view

Example OctoPrint plugin:

Using the OctoPrint plugin Bed Visualizer makes it much easier.

Under OctoPrint Settings -> PLUGINS ->Bed Visalizer set GCODE commands to

G80

G81

activate 'Save Mesh' and 'Flip Y Axis' for using Prusa firmware.

OctoPrint_Plugin_BedVisualizer_results