Skip to content

Comments

MBL stops after homing all axes#13655

Closed
robbycandra wants to merge 1 commit intoMarlinFirmware:bugfix-2.0.xfrom
robbycandra:bugfix-2.0.x-Mesh_Bed_Leveling
Closed

MBL stops after homing all axes#13655
robbycandra wants to merge 1 commit intoMarlinFirmware:bugfix-2.0.xfrom
robbycandra:bugfix-2.0.x-Mesh_Bed_Leveling

Conversation

@robbycandra
Copy link
Contributor

Description

MBL Stop After Homing. There is No G29 after G28.

Related Issues

[BUG] 2.0.x LCD-Bedleveling doesn't work #13591
Manual bed levelling stops after homing all axes #13181

@robbycandra robbycandra changed the title Bugfix: Bed levelling stops after homing all axes #13181 MBL stops after homing all axes Apr 11, 2019
set_all_unhomed();
ui.goto_screen(_lcd_level_bed_homing);
enqueue_and_echo_commands_P(PSTR("G28"));
enqueue_and_echo_commands_P(PSTR("G28\nG29"));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The extra G29 here is interesting, because for MBL it just prints the current state. So I suspect that almost any G-code would kick things off here. Since this is a hack and will definitely cause problems with ABL+PROBE_MANUALLY, I would prefer to find the actual cause why the procedure gets "stuck" for some people and do a proper fix of that instead.

Note that so far I have not been able to reproduce the problem this is intended to fix. I am able to do a full 36-point leveling without issue using ABL_BILINEAR+PROBE_MANUALLY. I have tested MBL in the past and I will give it another test shortly. I'm using a graphical display in most of my testing. I've tested several bed leveling procedures in a row and they seem to work ok in my setup.

A possible cause of the "stuck procedure" issue is that the screen handler within _lcd_level_bed_homing may not be getting repeated calls, so that _lcd_level_bed_homing_done is never subsequently called (until a click or wheel even transpires). Or, the screen that says "Click to Continue" is not being drawn correctly, so it is not evident that a click is needed to go forward. Whatever the actual problem is, I will try to track it down.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah... I make mistake this time... I am not carefull enough. Yes you are correct.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Try using MESH_BED_LEVELING instead of ABL_BILINEAR+PROBE_MANUALLY.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, and it doesn't seem like it's a screen drawing issue, at least not with the Step 4 screen.
In fact, the first screen, the one that's supposed to display the homing message, does not get drawn at all, or, rather, you get dumped straight back to the status screen, as soon as you select the menu item.

I thought it might be an issue with defer_status_screen() and messed around with it, but no luck.

@thinkyhead thinkyhead closed this Apr 11, 2019
@robbycandra robbycandra deleted the bugfix-2.0.x-Mesh_Bed_Leveling branch April 14, 2019 19:57
@BitRacer
Copy link

BitRacer commented Feb 26, 2020

I think I'm having the same problem. I am using the latest tag to compile on an SKR mini e3 and ender 3 with mesh bed leveling. Even though mesh bed leveling is enabled, the debug output says it is not.

Changing monitoring state from "Opening serial port" to "Connecting"

Send: N0 M110 N0*125
Recv: ok
Send: N0 M110 N0*125
Changing monitoring state from "Connecting" to "Operational"
Send: N0 M110 N0*125
Recv: ok
Send: N1 M115*39
Recv: ok
Send: N2 M21*18
Recv: FIRMWARE_NAME:Marlin 2.0.4.2 (GitHub) SOURCE_CODE_URL:https://github.com/MarlinFirmware/Marlin PROTOCOL_VERSION:1.0 MACHINE_TYPE:Ender-3 EXTRUDER_COUNT:1 UUID:cede2a2f-41a2-4748-9b12-c55c62f367ff
Recv: Cap:SERIAL_XON_XOFF:0
Recv: Cap:BINARY_FILE_TRANSFER:0
Recv: Cap:EEPROM:1
Recv: Cap:VOLUMETRIC:1
Recv: Cap:AUTOREPORT_TEMP:1
Recv: Cap:PROGRESS:0
Recv: Cap:PRINT_JOB:1
Recv: Cap:AUTOLEVEL:0
Recv: Cap:Z_PROBE:1
Recv: Cap:LEVELING_DATA:1
Recv: Cap:BUILD_PERCENT:1
Recv: Cap:SOFTWARE_POWER:0
Recv: Cap:TOGGLE_LIGHTS:0
Recv: Cap:CASE_LIGHT_BRIGHTNESS:0
Recv: Cap:EMERGENCY_PARSER:0
Recv: Cap:PROMPT_SUPPORT:0
Recv: Cap:AUTOREPORT_SD_STATUS:0
Recv: Cap:THERMAL_PROTECTION:1
Recv: Cap:MOTION_MODES:0
Recv: Cap:CHAMBER_TEMPERATURE:0
Recv: ok
Recv: echo:SD card ok
Send: M155 S2
Recv: ok
Recv: ok
Send: M20
Recv: Begin file list
Recv: End file list
Recv: ok
[...]
Send: G28
Send: G29 T
[...]
Recv: echo:busy: processing
Printer seems to support the busy protocol, will adjust timeouts and set busy interval accordingly
[...]
Recv: echo:busy: processing
[...]
Recv: echo:busy: processing
[...]
Recv: echo:busy: processing
[...]
Recv: echo:busy: processing
[...]
Recv: echo:busy: processing
[...]
Recv: echo:busy: processing
[...]
Recv: echo:busy: processing
[...]
Recv: echo:busy: processing
[...]
Recv: echo:busy: processing
[...]
Recv: echo:busy: processing
[...]
Recv: echo:busy: processing
[...]
Recv: echo:busy: processing
[...]
Recv: echo:busy: processing
[...]
Recv: echo:busy: processing
Recv: X:157.00 Y:107.00 Z:11.65 E:0.00 Count X:12560 Y:8560 Z:4660
Recv: ok
Recv: Mesh Bed Leveling has no data.
Recv: X:157.00 Y:107.00 Z:11.65 E:0.00 Count X:12560 Y:8560 Z:4660
Send: M113 S2
Recv: ok
Recv: ok
[...]

@vivian-ng
Copy link
Contributor

@BitRacer

Recv: Mesh Bed Leveling has no data.

is not the same at mesh bed leveling is not enabled.
If you do a M503, do you see your mesh data printed (it will appear as lines of G29)? If not, you need to trigger a bed leveling procedure to build up the mesh first.

You can also build up a mesh with past data by using

G29 S3 I0 J0 Z0.10000

and such (just replace the I0 and J0 with each matrix location and the corresponding Z adjustment).

Usually, when you flash a new version of Marlin, if the EEPROM format has changed due to new features, the existing settings saved in EEPROM cannot be read properly. The firmware will then revert to "factory" settings, which means the mesh is empty.

@BitRacer
Copy link

BitRacer commented Feb 27, 2020

Ok manually built up a mesh via the console... but it still wont level. I believe the problem is

----
Recv: Mesh Bed Leveling OFF
---

This is my debug info... I appreciate the assist.

Send: M503
Recv: echo:  G21    ; Units in mm (mm)
Recv: echo:  M149 C ; Units in Celsius
Recv: 
Recv: echo:; Filament settings: Disabled
Recv: echo:  M200 D1.75
Recv: echo:  M200 D0
Recv: echo:; Steps per unit:
Recv: echo: M92 X80.00 Y80.00 Z400.00 E93.00
Recv: echo:; Maximum feedrates (units/s):
Recv: echo:  M203 X500.00 Y500.00 Z5.00 E25.00
Recv: echo:; Maximum Acceleration (units/s2):
Recv: echo:  M201 X500.00 Y500.00 Z100.00 E5000.00
Recv: echo:; Acceleration (units/s2): P<print_accel> R<retract_accel> T<travel_accel>
Recv: echo:  M204 P500.00 R500.00 T500.00
Recv: echo:; Advanced: B<min_segment_time_us> S<min_feedrate> T<min_travel_feedrate> J<junc_dev>
Recv: echo:  M205 B20000.00 S0.00 T0.00 J0.08
Recv: echo:; Home offset:
Recv: echo:  M206 X0.00 Y0.00 Z0.00
Recv: echo:; Mesh Bed Leveling:
Recv: echo:  M420 S0 Z0.00
Recv: echo:  G29 S3 I0 J0 Z0.10000
Recv: echo:  G29 S3 I1 J0 Z0.10000
Recv: echo:  G29 S3 I2 J0 Z0.10000
Recv: echo:  G29 S3 I0 J1 Z0.10000
Recv: echo:  G29 S3 I1 J1 Z0.10000
Recv: echo:  G29 S3 I2 J1 Z0.10000
Recv: echo:  G29 S3 I0 J2 Z0.10000
Recv: echo:  G29 S3 I1 J2 Z0.10000
Recv: echo:  G29 S3 I2 J2 Z0.10000
Recv: echo:  G29 S4 Z0.00000
Recv: echo:; Material heatup parameters:
Recv: echo:  M145 S0 H185 B45 F255
Recv: echo:  M145 S1 H240 B110 F255
Recv: echo:; PID settings:
Recv: echo:  M301 P21.73 I1.54 D76.55
Recv: echo:; Z-Probe Offset (mm):
Recv: echo:  M851 X-40.00 Y10.00 Z-1.51
Recv: echo:; Stepper driver current:
Recv: echo:  M906 X580 Y580 Z580
Recv: echo:  M906 T0 E650
Recv: 
Recv: echo:; Driver stepping mode:
Recv: echo:  M569 S1 X Y Z
Recv: echo:  M569 S1 T0 E
Recv: echo:; Linear Advance:
Recv: echo:  M900 K0.00
Recv: ok
[...]
Send: G28
Send: G29 T
Recv: echo:busy: processing
Recv: echo:busy: processing
Recv: echo:busy: processing
Recv: echo:busy: processing
Recv: echo:busy: processing
Recv: echo:busy: processing
Recv: echo:busy: processing
Recv: echo:busy: processing
Recv: echo:busy: processing
Recv: echo:busy: processing
Recv: echo:busy: processing
Recv: echo:busy: processing
Recv: echo:busy: processing
Recv: X:157.00 Y:107.00 Z:11.51 E:0.00 Count X:12560 Y:8560 Z:4604
Recv: ok
Recv: Mesh Bed Leveling OFF
Recv: 3x3 mesh. Z offset: 0.00000
Recv: Measured points:
Recv:         0        1        2
Recv:  0 +0.10000 +0.10000 +0.10000
Recv:  1 +0.10000 +0.10000 +0.10000
Recv:  2 +0.10000 +0.10000 +0.10000
Recv: 
Recv: X:157.00 Y:107.00 Z:11.51 E:0.00 Count X:12560 Y:8560 Z:4604
Recv: ok

@vivian-ng
Copy link
Contributor

Bed leveling is not turned on by default.

Recv: echo: M420 S0 Z0.00

Use gcode

M420 S1

to turn on the use of the mesh stored in location 1.

For more information, please read the Marlin documentation. It provided me with all the information to get started on using bed leveling.

@BitRacer
Copy link

BitRacer commented Feb 27, 2020

I've been going over the docs and I'm still stumped. It seems I created a grid, enabled leveling... and still no leveling routine gets run. It just read the fake mesh I created and then spit the report out.

Send: G28
Send: G29 T
[...]
Recv: echo:busy: processing
Recv: X:157.00 Y:107.00 Z:11.51 E:0.00 Count X:12560 Y:8560 Z:4604
Recv: ok
Recv: Mesh Bed Leveling ON
Recv: 3x3 mesh. Z offset: 0.00000
Recv: Measured points:
Recv:         0        1        2
Recv:  0 -0.00000 -0.00000 -0.00000
Recv:  1 -0.00000 -0.00000 -0.00000
Recv:  2 -0.00000 -0.00000 -0.00000
Recv: 
Recv: X:157.00 Y:107.00 Z:11.51 E:0.00 Count X:12560 Y:8560 Z:4604
Recv: ok

@vivian-ng
Copy link
Contributor

@BitRacer
If you want the printer to probe the bed to build a mesh, use G29 or some other equivalent G29 commands depending on your Configuration.h.
Automatic
Unified
Manual
Since you are asking this question on a MBL-related PR, I think the last link is probably most relevant to you.

Also, some people may soon step in and tell you that PRs are not meant for troubleshooting and seeking help to get your printer running... you may get more help from a more helpful audience on support channels such as Facebook groups.

@thinkyhead
Copy link
Member

Mesh Bed Leveling is a manual process. You have to send G29 repeatedly to gather points. Read the docs at https://marlinfw.org/docs/gcode/G029-mbl.html

@thinkyhead
Copy link
Member

Ok manually built up a mesh via the console... but it still wont level. I believe the problem is

That console output seems okay. Please note that there is no T parameter to the MBL G29 procedure. It only takes S. What you are expecting T to do?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants