Welcome! Log In Create A New Profile

Advanced

Head does not move in x and y when trying to build UBL mesh (probes in same place repeatedly)

Posted by Mark Benson 
Hi all,

Does anyone know why the head doesn't move in x or y when attempting to build a UBL cold mesh?

FWIW I'm doing this from the LCD menu.

This is on a Bigtreetech skr1.3 and the Marlin 2.0 bugfix branch but I've seen the same behaviour on a RAMPS and Marlin 1.x. I guess it must be something in my configuration given that I've seen it in both, but the 2.0 config was done from scratch and I can't see anything obvious.

Configuration.h

Edited 1 time(s). Last edit at 08/12/2019 01:54PM by Mark Benson.
I should have added that it homes x, y & z without issue when I select 'build cold mesh' from the UBL menu. It then shows 'Doing G29 1/9' probes (moves up and down in z exactly where it homed, doesn't move in x or y) and then does that 8 more times in the same spot.

Edited 1 time(s). Last edit at 08/12/2019 03:27PM by Mark Benson.
I think you need to un comment these lines .

#if EITHER(AUTO_BED_LEVELING_3POINT, AUTO_BED_LEVELING_UBL)
//#define PROBE_PT_1_X 15
//#define PROBE_PT_1_Y 180
//#define PROBE_PT_2_X 15
//#define PROBE_PT_2_Y 20
//#define PROBE_PT_3_X 170
//#define PROBE_PT_3_Y 20
#endif
/**
 * Points to probe for all 3-point Leveling procedures.
 * Override if the automatically selected points are inadequate.
 */
#if EITHER(AUTO_BED_LEVELING_3POINT, AUTO_BED_LEVELING_UBL)
  #define PROBE_PT_1_X 35
  #define PROBE_PT_1_Y 180
  #define PROBE_PT_2_X 35
  #define PROBE_PT_2_Y 35
  #define PROBE_PT_3_X 170
  #define PROBE_PT_3_Y 35
#endif



Thanks for the suggestion but it hasn't made any difference. It still probing in one spot.

I hadn't touched those settings as the comment says it overrides automatically selected points. I was expecting UBL to defined the points to probe automatically based on the number of points in the grid (mine is set to 3 x 3 currently).
My first thought is that this is due to MIN_PROBE_EDGE, but since you also have MESH_INSET set to the same value as MIN_PROBE_EDGE I'm not so sure.

I'd try two experiments to see if the behavior changes:

a) Change MESH_INSET to 11 to eliminate a possible bug when MIN_PROBE_EDGE and MESH_INSET are the same.
b) Try a larger mesh size (like 10x10) and see if any points other than the center are probed.
No change with MESH_INSET set to 11.
With grid size set to 10, it did the homing then moved really quickly in +X about 10mm then probed that spot 100 times.
Tried a bunch of different MESH_INSET and grid sizes. Moves once then probes the same spot repeatedly.

Fetched new from github and re-created the config from the new files and its still probing in one spot...

Tried 3 point leveling - homed then moved to the front left of the bed probed once (said 1/3) then stopped, saying printer ready?!?

Linear & bilinear does the same.

Mesh levelling appears to work but expects me to click between probes.

I must be missing something fundamental here...
Back to UBL and selecting 'Edit mesh' from the LCD allows me to select the probe points and moves the head to each point but its using the hotend location rather than the probe so the points on the right of the bed put the probe over the edge. If I add to the mesh inset the points on the left and front are too far from the edge... doesn't appear to factor in the probe offset... but I guess that's a different issue.
It should be sufficient to set X_MIN_POS, Y_MIN_POS, X_BED_SIZE, Y_BED_SIZE, X_PROBE_OFFSET_FROM_EXTRUDER, Y_PROBE_OFFSET_FROM_EXTRUDER, MIN_PROBE_EDGE and _MESH_INSET and Marlin should calculate everything else automatically. Optionally if the nozzle can physically go past the right and/or back of the bed you might want to set X_MAX_POS and Y_MAX_POS - this might allow probing more points.

I noticed that in your configuration file you have X_MIN_POS and Y_MIN_POS set to 0 with comments for different values (-35 and -2). Is the nozzle actually at (0, 0) on the bed when X and Y are at the end stops? If not, you might need those negative X_MIN_POS and Y_MIN_POS values for everything to be correct. That's the case on an Anet A8, for example.
The X_MIN_POS & Y_MIN_POS in the comments were as measured when homed. That is, the nozzle is off the bed when homed. I set them to zero to see if that was causing the issue with the head not moving.

If I set the X_/Y_MAX_POS to keep the nozzle on the bed the probe is off the bed. If I constrain it so the probe in on the bed, I lose printable area.

The second issue I was seeing was raised on github but closed with no resolution [github.com]
Enabled debug as per this comment [github.com]

And there are lots of 'Error: Probing Failed' messages...

Probing mesh point 16/16.

>>> probe_pt(133.33, 133.33, raise, 0, probe_relative)
  current_position=(103.33, 128.33, 8.70) : 
>>> do_blocking_move_to(103.33, 128.33, 8.70)
<<< do_blocking_move_to
  current_position=(103.33, 128.33, 8.70) : set_probe_deployed
deploy: 1
do_probe_raise(10.00)
>>> do_blocking_move_to(103.33, 128.33, 15.70)
<<< do_blocking_move_to
echo:busy: processing
>>> do_blocking_move_to(103.33, 128.33, 15.70)
<<< do_blocking_move_to
  current_position=(103.33, 128.33, 15.70) : >>> run_z_probe
  current_position=(103.33, 128.33, 15.70) : >>> do_probe_move
>>> do_blocking_move_to(103.33, 128.33, 3.70)
<<< do_blocking_move_to
echo:busy: processing
echo:busy: processing
echo:busy: processing
  current_position=(103.33, 128.33, 3.70) : sync_plan_position
  current_position=(103.33, 128.33, 3.70) : <<< do_probe_move
SLOW Probe fail!
  current_position=(103.33, 128.33, 3.70) : <<< run_z_probe
>>> do_blocking_move_to(103.33, 128.33, 8.70)
<<< do_blocking_move_to
echo:busy: processing
  current_position=(103.33, 128.33, 8.70) : set_probe_deployed
deploy: 0
>>> do_blocking_move_to(103.33, 128.33, 8.70)
<<< do_blocking_move_to
Errortongue sticking out smileyrobing Failed
Which led me to this comment [github.com]

Ran M502 to save the new config values into EEPROM and then M500 to load them and its now moving.

Now have to reset a few values and go from there...
Quote
Mark Benson
If I set the X_/Y_MAX_POS to keep the nozzle on the bed the probe is off the bed. If I constrain it so the probe in on the bed, I lose printable area.

With UBL you lose "probe-able" area, but not printable area. You just need to fill in the unprobed spots manually. On my printer I can't probe any of the edges of the bed (due to MIN_PROBE_EDGE) but I use G29 P3 to fill them in with reasonable values and I can print all the way to the edge of the bed. I.e. the mesh can be bigger than the area the probe can reach.
That makes sense.

Have increased the number of probe points and am back to probing in one spot again even when executing M502 ;factory reset, M500; save.

I've tried G28 before G29 P1 just in case (even though G29 P1 homes before probing).

Have reduced the number of points down to 3 again with mesh_inset @ 5 but no change.

Will raise a bug.
I raised a bug and it turns out it was a config setting conflict.

Z_PROBE_LOW_POINT
wasn't low enough to allow probing to work.

See issue on github for more details: [github.com]

Edited 1 time(s). Last edit at 08/18/2019 02:25PM by Mark Benson.
Sorry, only registered users may post in this forum.

Click here to login