SM2 Bed Leveling

No. The gcode is most likely just fine, it’s the leveling. One user talked about using a dial indicator to check the bed level with and he would “shim” the different heating bed attachment points and try to level it that way. Then the leveling doesn’t really need to do much other than set the z offset. I’ve just made a dial indicator holder that I’m going to do some experimenting with. I plan to have it on the side of the print head and basically “check” what it is doing in the leveling routine.

When typing M503 you see the 9 point Z level
G29 W I0 J0 Z3.75
G29 W I0 J1 Z4.00
G29 W I0 J2 Z4.35
G29 W I1 J0 Z3.55
G29 W I1 J1 Z3.90
G29 W I1 J2 Z4.05
G29 W I2 J0 Z3.60
G29 W I2 J1 Z3.80
G29 W I2 J2 Z3.95

I tried to manually change this settings with other Z value but it doesn’t work :rage:

What commands did you use to try changing them?

I tried both commands

G29 S3 I0 J2 Zx.xx

G29 W I0 J2 ZX.XX

No effect

I believe you have to use a M421 command.

I checked how level the bed is (when probed with the sensor). For this I used the “Printer Bed Inspector” from Nicholas Piegdon (WARNING! There are some parts in the software you have to adapt to make it work with the Snapmaker, or you will gauge your print bed!)


The red area in the bottom left corner is due to the print surface not sticking down completely to the heat bed.

I turned the print surface to the other side and rerun the test

6 Likes

Current implement do not reset all z offset. (I don’t remember if we can skip some of the points and finish the manual calibration.)

We still use Marlin’s code to probe the bed and calculate the compensations. What I mentioned as customized is that SM2’s communication is quite different that when G29 was proposed: We have a Touchscreen to interact with, and we customized our cable entirely now the probe data is transferred in CAN bus.

We both know that there are lacks in the design of G-code. Not only limited as a plain text, G-code’s reply format is not unified, different implementations diff a lot. Another thing is that when you receive an “ok” or something from Marlin, it doesn’t means that the command is executed, it means the command is accepted to be executed. This will lead the problem of user interaction, say when TS receive an “ok” from Marlin, it doesn’t know if the command is actually executed, thus it doesn’t know if it can move to the next step.

In SM2, we are trying to workaround the problem, that’s why we don’t use G-code to communicate. If we find a way to use G-code to do the calibration or a simpler version of it, we will try to add it back to G-code.

1 Like

Ok but what is the specific command to manually change one of the 9 bed leveling point with G-code commands ?
M421 still doesn’t work for me

@parachvte told me M421 should work. What is the exact command you are sending?

This command I did sent
M421 I0 J2 Z5.00

M420 V
M421 Ix Jx Zx

Hint: Use serial cable to connect SM2.0 via Luban.

2 Likes

@parachvte,
Does the SM2 flavor of Marlin code have a place where G & M codes are enabled or disabled or parsed to determine if they should be run? Or is that something in the TS code? I’m just wondering where in the code that decision is made.

So I’ve manually leveled my bed a number of times.
I’ve recorded the values. They don’t change much at all from time to time.
I’ve got a dial indicator hooked up so I can see what’s going on.
I run my level checking program. It goes to each level point and down to Z.1 (the thickness of the test card) I consistently have it going to a Z position which is off from what it should be ranging in values from .03 to to .46mm. It consistently goes to the same off value at every point. So my only conclusion is that the Marlin leveling routine isn’t working as it should.

I could go and tweak the grid points by the off values but if the Marlin leveling routine isn’t working right it won’t fix the problem. I’m going to try it and see.

I’am maybe dumb but it doesn’t change any value at all @Tone @parachvte
Please help me !

you used M420. you have to use M421

Oh !! I’m dumb lmao
I did copy the previous command from @parachvte
Will try now thanks !!
Can anyone tell me if this calibration point IX JX are good match from my testing ?

Yes, that’s fine, although I would just order them like:
789
456
123

Corresponding to the row numbers.
Where did you get those row numbers?

NO! Wait, I think you have I & J switched. I is the X row, J is the Y column.

“M420 V” is the command used to DISPLAY the leveling data.

2 Likes

I think no, I will have to check Firmware code to see if a command is supported.
We think about composing a reference manual in our website.

Did you turn off the bed leveling compensation? M420 V also shows if “BED LEVELING” is on or off as you can see from the image I posted above.

M420 S1 to turn on it. Or G28 (Home) will turn it on our dev told me.

Hum okay…
One more question If i’m too low and my curent value is for example Z4.000 are we agree that my next value will be Z4.250 ? Look like for me is the oposite effect

1 Like