G29 bed mesh leaving a large area unprobed



  • Hello,
    I'm trying to fine tune the bed mesh. I'm using a heavily modified Ender 3 with a Chimera head and a BLTouch sensor. The sensor is 34.6mm left of the nozzle (negative X). Because of this offset, I understand that the entire right side (high values of X) cannot be probed. I do not understand why the opposite side of the bed is not being probed: while the sensor is easily able to touch the leftmost side of the bed (x=0), the G29 mesh is staying very far from the left edge, resulting in a big portion of the bed not being probed. My settings:

    ; Axis Limits
    M208 X0 Y0 Z0 S1 ; set axis minima
    M208 X197 Y231 Z350 S0 ; set axis maxima

    ; Endstops
    M574 X1 Y1 S1 ; X home to min. Y home to min. NC microswitches.
    M574 Z1 S2 ; Define Z to use Probe. Home to Min
    ; Z-Probe
    M307 H7 A-1 C-1 D-1 ; disable heater on PWM channel for BLTouch
    M558 P9 H2 F500 T10000 A5 ; Set Z probe type/mode 9. H=Dive Height.
    G31 P25 X-34.6 Y5.85 Z2.60 ; set Z probe trigger value
    M557 X1:185 Y10:220 P5:4 ; define mesh grid



  • Screen Shot 2020-04-22 at 1.41.53 PM.png
    Screen Shot 2020-04-22 at 1.41.46 PM.png



  • Please note this is not about the X going negative like in other similar posts, simply about why we have a non-probed area on both sides of the bed (as opposed to only on the side that the probe cannot reach).



  • I am on firmware 2.05.1 (2020-02-09b1)


  • Moderator

    @agrapa said in G29 bed mesh leaving a large area unprobed:

    M557 X1:185 Y10:220 P5:4 ; define mesh grid

    Can you try your M557 command with just P5? I know it's supposed to support different values for X and Y in P, but you're not getting the 5th value in the X axis. Unless it's generating an error?

    Ian



  • I did get an error. Sorry for not sharing it from the beginning. The error:
    Warning: Skipping grid point (185.0, 150.0) because Z probe cannot reach it
    Warning: Skipping grid point (185.0, 220.0) because Z probe cannot reach it
    Warning: Skipping grid point (185.0, 10.0) because Z probe cannot reach it
    Warning: Skipping grid point (185.0, 80.0) because Z probe cannot reach it


  • Moderator

    @agrapa said in G29 bed mesh leaving a large area unprobed:

    M208 X197 Y231 Z350 S0 ; set axis maxima

    Is that really the extent of your bed in X?

    Based on your M208, your G31 offset, and you M557 grid it's telling you the truth about what it can and can't reach.


  • Moderator

    @agrapa The probe thinks it is probing the left side of the bed; your image shows it has probed at X1 Y10, which would be the first point. The errors show it's not probing at X185, because your bed width is set to X197. With the probe offset of -34.6, it can only probe to X162.4. So change your M557 command to:
    M557 X1:162 Y10:220 P5:4 ; define mesh grid
    If the nozzle can actually travel off the edge of the bed, you can increase X maxima in M208, and increase X maximum probing point in M557 correspondingly, to probe closer to the right hand side of the bed.

    Ian



  • Ian,
    Thanks for your answer. I think there is a misunderstanding (maybe on my side) about what is being shown in the graph.

    Everything on the printer is calibrated relative to the left nozzle, so (0,0) is when the left nozzle is at one corner, and (197,231) is when the left nozzle has reached the other end and the extent of its ability to move over the X,Y axis.

    For the sake of this explanation, let's call the bottom left point shown in the graph as a white transparent circle "P0". I'm also assuming that the point represents the position where the nozzle is at (35.6,4.15) but the probe is at (1,10). Please tell me if this assumption is wrong.

    Why does the graph show the coordinates of the probe in the label, but drawn at the position of the nozzle? I mean that it is drawn at (35.6,4.15) but labeled as (1,10)

    I think there are 2 ways of showing this graph: at P0, if the nozzle is at (35.6,4.15) and the probe is at (1,10), we could record and show the position of the nozzle or we could record and show the position of the probe. It feels to me that using the position of the nozzle is more correct, but I defer to you as you have vastly more experience.

    However, if we are recording the position of the probe, I would expect to see an empty stripe on the right (the part that the probe cannot reach). And if we are recording the position of the nozzle, then I would expect to see an empty strip on the left (the part the nozzle, while reaching, would leave the probe outside of the bed). I do not understand why the empty strip on both sides.



  • I forgot to mention: the nozzle's minimum X is 0, but the probe can go to -34.6



  • Phaedrux: the nozzle can go from (0,0) to (197,231). The probe can travel the same distance but offset by -34.6,5.85, so from (-35.6,5.85) to (161.4,236.85)


  • Moderator

    @agrapa said in G29 bed mesh leaving a large area unprobed:

    Why does the graph show the coordinates of the probe in the label, but drawn at the position of the nozzle?

    Why do you say drawn at the position of the nozzle. It identifies the point at X1 in absolute space. When you run G29, is it probing at X1 as expected?

    The best way to maximize the mesh grid is to take your M208 as the bed surface, then add/subtract your probe offsets. That will give you the area for M577 that the probe can reach. Adjust it slightly so that you can get a whole number of points within it. Tip, if you send an M577 with a unreasonably high number of probing points it will suggest the actual maximum to you.



  • Thanks for your help Phaedrux.
    I tried M557 X-33.6:161.4 Y6:220 P5:4 but that caused the first probe position to be at a point where the nozzle is over the bed, but the probe is not (pic below):

    IMG_4584.jpeg

    What I meant by drawing at the position of the nozzle is what we see in the graph above. If we were drawing the positions actually probed (the position of the probe), it would look like this:

    Screen Shot 2.png



  • This is the first probe point with M557 X1:185 Y10:220 P5:4
    IMG_4581.jpeg
    Not easy to see, but if you look closely, the BLTouch arm is deployed and touching close to the 0,0 corner, while the left nozzle is further to the right. The right nozzle is actually not screwed into its heat block in the pic.


  • Moderator

    1587610749472-screen-shot-2.png

    @agrapa said in G29 bed mesh leaving a large area unprobed:

    I tried M557 X-33.6:161.4 Y6:220 P5:4 but that caused the first probe position to be at a point where the nozzle is over the bed, but the probe is not (pic below)

    Well yes, obviously. If 0,0 is where the reference nozzle is at the corner of the bed, of course -37 is going to be off the side of the bed.

    @agrapa said in G29 bed mesh leaving a large area unprobed:

    Not easy to see, but if you look closely, the BLTouch arm is deployed and touching close to the 0,0 corner, while the left nozzle is further to the right. The right nozzle is actually not screwed into its heat block in the pic.

    Yes, that looks correct. The probe is probing the first defined point at X1 Y10.

    I'm not sure what you're expecting it to do, but from what you show, it looks to be working correctly. It's probing as close as it can to the left edge, which is good. It will also probe as close as it can reach to the right side based on how far you let it travel. If you want to reach more area on the right side, you need to extend the M208 X maxima even though the left nozzle can't reach it, the probe still may be able to if you have enough physical travel.



  • Thanks for your help so far. What I expect it to do:

    I think it is normal that there is a 34.6mm empty strip on the right because the probe cannot physically reach there.

    The graph circle positions could represent the position of the nozzle or the position of the probe. My expectation in each case would be:

    1-If the circles represent the probe, then there should not be a strip on the left, as the probe can reach that side.

    2-If the circles represent the nozzle, then there should not be a strip on the right, as the nozzle can reach it fine, and while it is there, it can probe. A second expectation in this case is that the z-correction should apply when the nozzle visits the probed point, which is not where the nozzle was when it was probed. For instance, if at probe time, the probe is at (1,10) and the nozzle is at (35.6,4.15) and it finds the z to be 0.5mm, then at print time, when the nozzle visits (1,10), the z-correction should be applied. Note this is not when the probe revisits the same point that was probed, but when the nozzle visits the point that was probed.


  • Moderator

    @agrapa said in G29 bed mesh leaving a large area unprobed:

    The graph circle positions could represent the position of the nozzle or the position of the probe.

    It represents neither. It shows the Z height adjustment at a point in absolute X Y space. The point was obtained by the probe, so the probe has to be able to reach it. Whether the nozzle can also reach it depends entirely on how big the offset is, and how far the axis can travel. As you found, the probe can reach -37, and if there were bed there to probe, it could create a point, but the nozzle could never reach it. On the right side, it's the opposite situation. The nozzle can reach where the probe cannot.

    @agrapa said in G29 bed mesh leaving a large area unprobed:

    then there should not be a strip on the left

    I think you're imagining a strip on the left that doesn't actually exist. The heightmap is showing you the green area which is the area probed. And the point at the bottom left is (1,10) which is the corner of the bed. I'm not sure why you think there is more bed to the left of that point. There isn't.



  • Also, why would it have a warning that says "Skipping grid point (185.0, 80.0) because Z probe cannot reach it" if I can use the "machine control" button labelled "X+100" to make the nozzle reach X=197 ?



  • Oh, I see. I thought the graph represented the bed and the empty strip on the left of the graph made me thing something was wrong. Thanks for the explanation.


  • Moderator

    The nozzle can reach it, but the probe cannot. You've set M557 to use a grid which contains points that the probe cannot reach.

    M208 X197 means that the reference nozzle can go as far as that point and no further.

    G31 X-34.6 means the probe is to the left of the reference nozzle by 34.6

    197-34.6 = 162.4 So the rightmost point you can reach with the probe is X162

    Your M557 is asking to probe at X185, which it cannot reach, so it skips it.


  • Moderator

    @agrapa said in G29 bed mesh leaving a large area unprobed:

    Thanks for the explanation.

    No problem. I hope it all makes some sense now.



  • @Phaedrux said in G29 bed mesh leaving a large area unprobed:

    Your M557 is asking to probe at X185, which it cannot reach, so it skips it

    perfect explanation, thanks a lot!


  • Moderator

    @Phaedrux said in G29 bed mesh leaving a large area unprobed:

    The best way to maximize the mesh grid is to take your M208 as the bed surface, then add/subtract your probe offsets. That will give you the area for M577 that the probe can reach. Adjust it slightly so that you can get a whole number of points within it. Tip, if you send an M577 with a unreasonably high number of probing points it will suggest the actual maximum to you.

    Now that you understand what it's doing, this part should make better sense on how to maximize your M557 grid



  • Indeed, now it is perfect, thanks a lot!


  • administrators

    @Phaedrux said in G29 bed mesh leaving a large area unprobed:

    The best way to maximize the mesh grid is to take your M208 as the bed surface, then add/subtract your probe offsets. That will give you the area for M577 that the probe can reach.

    I would add to that: then constrain this resulting area to the parts that are over the bed. Otherwise you could be probing off the edge of the bed.


Log in to reply