-
Notifications
You must be signed in to change notification settings - Fork 11
Check bed level in firmware software
After having everything done hardware wise, let's get into the firmware/software part.
- Computer/Single board computer connected
- via USB to controller board on MK2 / MK2.5 / MK3
- via RPi connector on the EINSY board
- via any other serial communication
- Terminal to communicate with the printer
- Pronterface which is included in the Prusa Drivers
- Octoprint great videos by Chris Riley and Joe Mike Terranella
- ESP3D great video by Chris Riley
- any other software you may use where you can send g-code commands
- Spreadsheet software
- Excel (Microsoft/LibreOffice)
- Google spreadsheets
- Bed level visualizer
- Online bed level visualizer
- or if you have Octoprint the Bed Level Visualizer-Plugin
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 |
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.
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.
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.
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.
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
- G80 V, V10 or V20 to run the mesh bed leveling and getting results of the PINDA (z-probe) measurements
- 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.
- 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:
**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.
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:
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.