Fundamental Calibration Issue...?

lol,

scyto: “doctor it hurts when i press here”
doctor: “well then don’t press there”

can you imagine the issues a noob could get themselves into with this bug - yet another example of why snapmaker should be using gcode to control positions NOT doing control directly over the CAN bus from the touchscreen.

on a happier note the auto 11x11 calibration made a positive and large difference, still some issues with the first layer i am trying to run down (like why is it now translucent rather than matt dark black) and (why does 0.2mm layer height result in layer than is actually between 0.35 and 0.45 high)

tl;dr i know y’all think i am mad, i still believe calibration still to be fundamentally broken in some way (in either creation or usage of mesh data)

tomorrow i will print out the dial mount attachment finally and measure calibration points (does anyone have full set of XY coords for 5x5 ?)

… Are they not? I thought the touchscreen issues gcode over the serial link to the controller. I don’t think it even has a CAN connection.

Additionally, the movement is not controlled via CAN, but stepper pulses driven in the controller.

If the bed is over 100°C then the difference might be greater, though probably not by much. When I get a chance, I plan on running the same tests, but more extensively across the entire build plate. The next time someone tells you that a heated bed makes a difference, you can give them the link to that video. Any absolute variance <= 0.10m (+/-0.05mm) is within the normal range of error for these printers.

1 Like

You can use G1029 W I[index] J[index] (e.g. G1029 W I1 J1) to move to the various points after setting the grid size with G1029 P.

Source: https://github.com/Snapmaker/Snapmaker2-Controller/blob/84c0f541b36b3fee771aef2b25b672e597b6fc80/Marlin/src/gcode/bedlevel/abl/G1029.cpp#L68

Of course, you should never trust code comments and always assume any TODO comment will never be implemented. This is a great example, since apparently using G1029 W will also move the head to Z 50 and there’s no way to control that: https://github.com/Snapmaker/Snapmaker2-Controller/blob/84c0f541b36b3fee771aef2b25b672e597b6fc80/Marlin/src/gcode/bedlevel/abl/G1029.cpp#L156

But! You can iterate through, and record the x/y coordinates of each mesh point, then go back and set your z, and manually jump to each position.

1 Like

if that’s true it is never echoed on the serial controller i am monitoring…

also all i will say is the issue i logged on github i couldn’t repro using gcode movement - only touchscreen movement… for example if i issued G90 \ G1 Z 334 - no issues. but maybe that’s my bad assumption?

There are 2 serial interfaces into the controller. One for the screen, one for the computer. They are not mirrored.

I think you’ve definitely found a bug, but it’s not clear to me what. Could be a freertos bug where the gcode is transferred from the hmi task over to Marlin?

1 Like

thanks, i was also repeating things i had heard, cough @nivekmai cough :slight_smile:

1 Like

perfect, thanks

I note that I0 J0 is X23 / Y18
I note that I10 J10 is X293 / 318

In real G29 one can set the bed offsets so it measures closer to the edge, any way to do that without modifying code (i couldn’t see anyway looking through the code)?

I would like

I0 J0 to be X-7/ Y-10 (actually i would like it to be Y-15 as that would still place sensor over the bed

I10 J10 to be X308 / Y323

(my perhaps faulty assumption is this would improve measurement around the edge where my issues really appear to be))

@brent113 Does the hmi send gcode? I see:

Which looks like it’s used for the hmi to send movements directly to the machine, and only applies limits if there’s software limits:

I haven’t dug in from the gcode side (digging through c code on mobile isn’t exactly efficient), but I think it could be doing something different.

1 Like

edit

Misread the question here, no, I don’t think there’s anything to tell the bed level to move to the actual corners, without the sensor mod, the side of the toolhead can never go off the side of the bed, so the points are probably laid out to ensure that doesn’t happen on the right side (and hence mirrored to the left), but that’s totally a guess for the “why”, so take it with a grain of salt.

Looks like there’s something there.

For all non-motion commands I assume it goes through here then

makes sense when we are talking about the tool head, but not for the sensor which is up to ~15mm from the edge on some edge measurements, i assume they did ‘safety margins’ for the sensor (the back Y tolerance is better, VERY close to the edge back there). given how much better an 11x11 mesh was than the 5x5 i am starting to think this machine needs a mesh with lots of points and that maps closer to the edge to be accurate. I was looking at either the UBL or ABL native marlin code - i note they have options to calculate the mesh beyond the edge points - i see nothing like that in the snapmaker versions as far as i can see.

and this doesn’t do what the comment says it does… unless +10 is being added somewhere else?

Same for line 123 too - does that matter?

^ see above, the comments are likely wrong

1 Like

I would love to live in a world where code comments can be trusted lmao

The last person that touched it changed it from 60 to 40 lmao. Comment has been wrong for awhile

  1. well they seem to have accepted my PR on heated G1029
  2. i am in middle of some testing snapmaker asked me to do (various mesh sizes and report out)
  3. thought i would throw some heated into the mix…

This is test using touchscreen and stock build surface.
5x5 ambient (about room temp)
5x5 70c


next up repeat with energetic PEI to see if this is platform or build plate differences in heat (along with the other tests they asked me to do).

(I did, FWIW, validate that touchscreen 5x5 cold and G1029 5x5 cold produce the same results)

3 Likes

Is this with the new rails or FW14? For me, the mesh is always at ~z6, but yours is at 0.

It’s also really interesting to see that heating changed not only the shape, but also increased the floor by ~.25mm (that’s a whole layer!)

tl;dr its likely because i ‘use relative z offsets’ in the plugin config (which is the default IIRC)

Well i adjusted the scale in octoprint - but it always shows Z=0 as once the point is set via G1029 or touchscreen calibration z=0, thats the way the octoprint plugin works and snapmaker works - z always = 0 on the touchscreen too… unless you have done something ‘interesting’

The M420V data on mine is no different to yours.

Recv:   M420 S1 Z0.00
Recv:   G29 W I0 J0 Z6.23000
Recv:   G29 W I1 J0 Z6.18000
Recv:   G29 W I2 J0 Z6.16250
Recv:   G29 W I3 J0 Z6.14000
Recv:   G29 W I4 J0 Z6.14000

and on the collection tab

image

I do it this way as it helps me understand where the head might crash better…

1 Like

I have exactly the same problem that Skyto showed in his youtube.

Are we hoping there is a solution to this?

Would another print bed be a solution, I’m thinking of a Ziflex PEI Upper Surface…

the issue is the video is not the same as the issue in the two heat maps above

i have reproduced the issue on multiple build surfaces including glass

snapmaker have all my detailed testing and continue to investigate (and confirmed the issue on one of their own machines)

1 Like