X/Y Calibration

I was trying to print the Tippi Tree parts such that they are to spec. Even though I tried the suggested under-extrusion fixes I couldn’t pass one of the tests.

Devin Montes helped me narrow down the issue. My best outcome was parts of 70.78 x 30.35 x 20.14 …

True dimensions are 71mm x 30.30mm x 20mm, so your printer actually does seem to be squashing the length slightly.
You can try printing the model rotated 90 degrees around Z axis to see if that is in fact the case. This would indicate poor belt tension in one direction or you need to calibrate your e-steps:

Now my question: is it normal that the X or Y axis on Snapmaker 2 A350 might need calibration? Has anybody of you other Snapmaker 2 owners done such?


SM had a known problem delivering linear modules with lead screws that were out of tolerance. This isn’t a calibration issue as much as a manufacturing defect issue.

  • 70.78 vs. 71.00. Error -0.22/71.00 = -3.1 ppt (part per thousand)
  • 30.35 vs. 30.30. Error +0.05/30.3 = 1.65 ppt
  • 20.14 vs 20.00. Error +0.14/20.00 = 7.0 ppt

I would say that this is out of tolerance for this class of machine; I’d expect 1 ppt or better. (A proper ball screw system should be 0.1 ppt or better, by comparison.) I don’t know if SM would consider 7 ppt worthy of a replacement or not. It’s worth noting that the work area of A350 is nominally 330 mm, so you could have a lead screw error that’s different in other parts of the machine.

I should also mention that you may have gotten lucky during assembly. When lead screws with pitch differences large enough are driven end to end in synchrony, the carriage can’t stay parallel and the stepper motors start skipping steps. People with this problem have described it as a “bump”.

Are you saying that I have linear modules with a manufacturing defect?

Wouldn’t I be able to counteract that with calibration?

Sure you could change your steps per millimeter. However I would be surprised if you’re off by that much. In my experience the backlash and repeatability of the machine is below 0.02 mm, so if you really cannot get movement precision to that level then yea that kind of sounds like it’s defective, or something has loosened up

Likely, but you may need more measurements to be sure. What you’ve got so far is certainly suggestive.

Well, naturally I first want to try proper motor calibration. Anybody got a guide to do that with Goode commands?

In the post Extruder Calibration a must it is mentioned that Gcode statements would only work via USB… is that still true, or does it work over WiFi now as well?

In my opinion the comands work but you will get no answer back over wifi.

Ok, my experiences with calibration so far. This is the default steps:

M92 X400.00 Y400.00 Z400.00 E212.21

X, Y, Z are the axes and E is the extruder. I found it curious that all axes are 400 out of the box. Does Snapmaker rely so much on the accuracy of the linear modules? What I don’t understand though is how there could be a variance between the axes because I must have selected the pairs of linear modules for the axes at random.

I found that the extruder value was too low, as mentioned in another post, it was about 11 mm short when extruding 100 mm. So I changed the E value to E249.65.

I found with multiple prints that the axes were also off. The best calibration so far for me is:

M92 X402.77 Y401.19 Z398.81

That’s not my final calibration, Y is perfect, but X and Z are still off:

X: 41 target, result 40.98. -> 402.97
Y: 58.50 target, result 58.43 -> 401.67
Z: 88 target, result 87.21 -> 402.42 

BTW: I learned that if you modify the Z value you need to do a new bed levelling because the bottom position would end up a different number of steps from the home position at the top.

So my question to you guys is… aside from the obvious need for calibrating the extruder, did you bother with the XYZ at all, or do you get perfect results with 400/400/400?

Because I am worried now, because @eh9 said “linear modules with lead screws that were out of tolerance”. Because in my case it seems to me that my modules are roughly 0.5% off.

And if the results are now within my own tolerance having modified the e-steps, do I have to worry about something else?

At least for me, I checked it and it was right on with whatever I was using to measure at the time. I have more precise tools now though, maybe I’ll remeasure tonight.

If you were 11mm short the E-value should be 238.44. Did you test your new value? I would expect you’re over-extruding now. (You extrude 100mm, 11mm short is 89mm; conveniently 89%, thus 212.21/0.89=238.44)

I wasn’t able to measure exactly, so I used values from this post. The 238.44 seemed not enough, so I took the next higher mentioned value.

What do you mean with

Did you try to extrude 100mm again and it differed?

I don’t understand. You’re measuring differences of 0.02mm and deviations of less than 0.5% on the axis, but are OK with a deviation of 5% on the e-steps? It’s also the easiest one to measure.

When you were measuring the axis, did you make sure you took the (potential) backlash out of the equation?

It’s an ongoing process for me. Also the extruder is a different order of magnitude when it comes to resulting dimensions. I am continuously trying to improve the values.

I took my differences from actual prints which I can easily measure always the same way with callipers. That excludes potential backlash, doesn’t it?

If you are measuring the prints it could be you are measuring different things than you expect or intend.

Also depending on the print settings, warping/shrinking of the material etc. I assumed you measured the actual travel of the axis. The risk is that you are now compensating/adjusting variables that might be off because of a different reason. (it’s like fixing the speed indicator of your car by changing the diameter of your wheels)

So, please tell me the correct way to do it as precise as possible

Using a dial indicator or caliper on an actual move. There are some mounts for dial indicators already designed (search on the forum or thingiverse). The disadvantage of dial indicators is that they often don’t offer a lot of travel (typically 1-2cm, depending on the model you have). You could always try the same with a caliper. Find a way to mount it in such a way that a movement either opens it or pushes it closed again. But that might not be the easiest thing to do reliably.
You could open it quite far, and then have the axis push it (almost) closed. To take possible backlash out of the equation, move it closed 5mm first (so you now it’s making contact). Set to zero and then do a larger move.

That would be the idea, but doing that reliably would require rather secure mounting. You want to measure the possibly longest distance to minimize the errors due to the limitations of the accuracy of the measuring device.

But to be honest, personally I haven’t bother with that at all, I think that tuning all other more easily tuneable parameters will have more value.

I’ve printed the XYZ cube (20x20x20mm) and found that the Y axis was 0.25mm shorter (-1.25%). The Z was perfect and the X was a little longer (0.2%).
So I measured the Y distance when I moved it 300mm across the bed, and it measured to be 1.5mm short (298.5mm) corresponding to -0.5%. So I’ve corrected this with an M92 Y402.00 command and saved it (M500). I verified the Y travel distance for 300mm and it was perfect.
So I tried again the XYZ cube, and it came exactly like before with nearly the same deviation on the Y axis? What could be the cause of this?

I would try to turn off the machine, turn it on again, connect via USB and check the values. Then do another print. Also I found that if I had a temperature near the lower limit of the filament’s recommended values, then that would have a lot of effect on the extrusion.

Did you calibrate your M92 E value?

Again temperature, you could be seeing uneven shrinkage. Maybe try choosing a smaller or higher slice height to see how that effects the value.

Finally, I find it curious that we both have the Y axis being off by about the same amount. After much fiddling, I returned to X400 and Z400 defaults, but left Y402.

Yes, I’ve calibrated the E value again for this filament. I will try to increase the extrusion temperature and see what that does. Another thing I experienced is that the vertical surfaces in Y direction are much less smooth than those in X direction. I think this might be caused by lag/hysteresis on the Y axis.

Rather annoying that snapmaker do not provide calibration information.

Just printed a 20 mm test cube my x is 19.8 y 19.7 an z 19.9.