Bed Level Visualizer GCODE for Creality Ender 3 V2 Neo with CR-Touch triggers ABL 3 times

Hello,

The bed level visualizer works very well, but the GCODE example for UBL triggers a bed levelling routine 3 times in a row on my Ender 3 V2 Neo with CR-Touch ABL.

I'm thinking some of the G29 commands that merely want to read data instead trigger the bed levelling routine.

Here's the code, taken from the wiki:

G28       ; home all axes
M420 S0   ; Turning off bed leveling while probing, if firmware is set
          ; to restore after G28
M155 S30  ; reduce temperature reporting rate to reduce output pollution
M190 S65  ; (optional) wait for the bed to get up to temperature
G29 P1    ; automatically populate mesh with all reachable points
G29 P3    ; infer the rest of the mesh values
G29 P3    ; infer the rest of the mesh values again
@BEDLEVELVISUALIZER	; tell the plugin to watch for reported mesh
M420 S1 V ; enabled leveling and report the new mesh
G29 S0    ; Save UBL mesh points to slot 0 (EEPROM).
G29 F 10.0 ; Set Fade Height for correction at 10.0 mm.
G29 A     ; Activate the UBL System.
M500      ; save the current setup to EEPROM
M155 S3   ; reset temperature reporting
M140 S0   ; cooling down the bed

I'm thinking the first 3 G29s trigger the ABL - it's not "inferring" the points, it just measures everything again. Checking the Marlin reference for G29 UBL, "G29 P3" tries to fill unpopulated areas, but on the Ender 3 V2 Neo, it tests the same 16 points every time. There does not seem to be a way of telling it to test other points.

I'll experiment with removing the two "G29 P3" commands and see if I get a current bed level graph with the ABL only triggered once.

Any advice?

Thank you.

Have you seen the different parameters of the G29 command?

More on these here:

If the Ender does not behave like expected, it obviously does not support UBL.

1 Like

I guess I didn't understand the difference between bilinear and unified ABL.

I'll try the bilinear GCODE:

M140 S60 ; starting by heating the bed for nominal mesh accuracy
M117 Homing all axes ; send message to printer display
G28      ; home all axes
M420 S0  ; Turning off bed leveling while probing, if firmware is set
         ; to restore after G28
M117 Heating the bed ; send message to printer display
M190 S60 ; waiting until the bed is fully warmed up
M300 S1000 P500 ; chirp to indicate bed mesh levels is initializing
M117 Creating the bed mesh levels ; send message to printer display
M155 S30 ; reduce temperature reporting rate to reduce output pollution
@BEDLEVELVISUALIZER	; tell the plugin to watch for reported mesh
G29 T	   ; run bilinear probing
M155 S3  ; reset temperature reporting
M140 S0 ; cooling down the bed
M500 ; store mesh in EEPROM
M300 S440 P200 ; make calibration completed tones
M300 S660 P250
M300 S880 P300
M117 Bed mesh levels completed ; send message to printer display

Looks like there's only one G29 command there. The "T" parameter is covered in the Marlin linear Bed Levelling reference as "Generate a Bed Topology Report", hopefully it works similarly in bilinear.

Thank you.

1 Like

This GCODE worked perfectly, thanks. The bed levelling routine was triggered only once and I have a very nice bed level.

2 Likes