# Low Accuracy while perfect travel movement

I own an older Anet A6. Flashed the Marlin Firmware on it (and think I configured it properly). Also updated to the latest 2.0.5.3 some days ago). The nozzle is a 0.4 mm one, direct drive extruder.

When printing calibration cubes I used

#define DEFAULT_AXIS_STEPS_PER_UNIT   { 99.7,  96.4, 400, 91.6 }


settings to correct for what I measured earlier. So the printed cube 20x20x20 mm came out almost "perfect". Yet I faced another problem: scaling. So printing stuff 100 mm wide resulted in 97.2 mm prints. As if an error multiplied with the distance.

So I created a test object consisting of multiple "rectangles" (overlayed) in X and Y direction. Some of the dimensions were less than required and others bigger..

So the holes ("drills") were 0.4 mm too small (so half a nozzle diameter). In "Cura" I could fix that with the newly added inner hole correction or negative horizontal expansion values. Yet this would also "cut" the thin parts (top and right rectangle on the image - with a width of 1.2 mm - so 3 lanes of print material on my 0.4 mm nozzle).

Without and with adjustment the inner width of the rectangles is also off by more than 0.2 mm.

I printed with my normal speeds (80 mm/s for fill and even slower for other stuff) which creates fine output except the accuracy. I also printed at 20 % of this speed (so <10 mm/s for the first layer!) without any change. So it should not be the "acceleration/jerk" creating the issues.

I then restarted calibrating everything:

• calibrated extruder (10 cm filament ... and measuring how much was really moved), was not off by more than 1 mm

• calibrated axis by moving nozzle to a specific point and measuring X/Y/Z movement ... I needed to go back to 99.9 for X, 99.9 for Y and 101 for Z). So almost back to vendor settings.

I moved the hotend over and over - replicated the exact movement in all directions 20 times each. It did not "slide", so stuff started and ended exactly at the same spot each time.

Now I printed my test cross (and other stuff) and while the X-Axis was only a bit off "outside" (inside still a bit more off), the Y-Axis was only 97 % and height as it should.

I printed via:

• RepetierHost 2.1.6
• Cura 4.6.1
• RepetierHost 2.1.6 + Cura exported gcode file and adjusted "speed" (25 % of Cura-settings)

Sum up:

• calibrated extruder (10 cm filament measurement), calibrated axis (measured movement distance)

• printed at very slow speed to avoid "acceleration/jerk"-inaccuracy (did it do that?)

• prints are inaccurate yet precise (multiple prints result in same incorrect output)

• calibrating "steps per unit" via calibration cube results in perfect calibration cubes but still "too small inner holes" and inaccurate prints of bigger dimensions

So: how to properly fix that issue? How to calibrate the dimension accuracy properly - is there something more than "steps per unit" to adjust?

Tried to find an answer here and elsewhere on the internet but seems I lack the right term to search for to find an answer. Hope you could help me.

• My experience is that the steps/mm for X, Y and Z should be set based on the theoretical values (given belt and pulleys). A cube will not be accurate anymore, but it's not an issue of "scaling" (which the steps would correct), it's an issue of "offset" (fixed additional thickness). Basically, your dimensions will always be "expected + fixed amount" (typically half nozzle). – FarO May 8 at 7:58
• To be honest, I don't think 80 mm/s is considered normal printing speed, especially with a low budget direct extruder printer. – 0scar May 8 at 8:35
• The 80mm/s should only affect "surface" or "stability" but not 3-4% dimensional "accuracy" . Yet I wrote that I also printed with 10 mm/s (and slower) without changes in regards to accuracy. – GWRon May 8 at 12:42
• @FarO Yes, this is what you could correct in Cura with a "negative horizontal offset" - but this also reduces thin walls so much, that eg a 0.8mm thin wall becomes a 0.4mm thin wall (so only one line of filament instead of two). And the 0.8mm thin wall would be printed very well. – GWRon May 8 at 12:54
• I personally don't use those options, I just design my parts with a half nozzle or one full nozzle tolerance. Except for holes: I leave them as originally planned, so that the half-one nozzle smaller size provides plastic for directly screwing bolts (which thread the plastic themselves) in them. They are quite strong, unless you screw them too tight and you strip the thread. – FarO May 8 at 14:14

You shouldn't calibrate the steps/mm for the X, Y, and Z axes. Just use the default settings which are based on the theoretical values for the given belts/leadscrews/threaded rods.

The mistake is in assuming that the error in the dimensions of the 20x20x20 calibration cube are purely due to the steps/mm setting. Due to a variety of reasons (inconsistent extrusion, measurement error, slop in the printer, backlash) no printed part will have its dimensions be perfectly accurate (no FDM 3D printer is capable of better than a few tenths of a millimeter accuracy in part dimensions). When you calibrate the steps/mm so that a 20x20x20 cube comes out "perfect", you are hiding all of these non-linear inaccuracies in a linear compensation of the steps/mm. When you then print a larger part, these inaccuracies (which are incorrectly compensated for in the steps/mm) get blown up.

Suppose your calipers had a constant error of +0.1 mm, i.e. every measurement reads 0.1 mm higher than it should. If you calibrate your steps/mm so that a 20x20x20 calibration cube comes out "perfect"; the actual size of the calibration cube would be 19.9 mm (which your calipers would read as 20 mm). If you then were to print a 100 mm part, it would come out as 99.5 mm which your calipers would read as 99.6 mm.

If you insist on calibrating the steps/mm you should do so by printing a part as large as possible. This ensures that the constant error is divided over a large part size, giving a better estimation of the actual steps/mm. However, usually the theoretical value is more accurate than what you can measure yourself, even with a part taking up the entire print bed.

10 cm filament ... and measuring how much was really moved

10 cm is a very short length; you would get a much more accurate calibration with a 100 cm length. However, calibrating the e-steps very precisely is kind of pointless. It is hard to do so precisely because extruding into free air (and at possibly a different speed than when actually printing) will result in a different amount of resistance and thus a different length of extrusion than during an actual print. You will need to calibrate for the diameter and flow characteristics of the actual filament anyways, during which calibration you can much more effectively compensate for small inaccuracies of the extruder steps/mm.

Perhaps it would be a good idea to look into the rigidity of the entire printer and how securely the parts are mounted. If there is a lot of play in the bed or hotend this could also explain why parts are turning out oversized.

• 10 cm is not so short: calipers can get at least 0.5 mm accuracy, meaning the final error would be 0.5% at most, which is ok. The other issues still stay, but 10 cm is not too short. Maybe I was lucky, but when I calibrate the E steps that way I always get spot-on extrusion. – FarO May 8 at 9:52
• How do you adjust extrusion multiplier? measuring wall thickness is even less reliable. Do you use the visual appearance of solid infill? – FarO May 8 at 9:54
• Thanks for your elaborative reply (@Oscar). The Frame is pretty rigid (tried fixed on a plate or just standing on some damping ground to avoid vibrations). If the "play" an axis has would affect it, then shouldn't the "precision" (not accuracy) vary? But as written the prints come out almost equal - with differing print speeds and differing materials. – GWRon May 8 at 12:46
• Nonetheless... assume my extruder settings are off by a bit. Might explain the 0.4mm inner hole problem (which is half the nozzle diameter - multiplied by 2 as we have "left and right" borders - so more likely something slicers could handle, like Cura and others now offer optionally)). Ok, so I print 96.5 instead of 100.00 millimeters.Assuming a double as wide extrusion as wanted: Shouldn't this lead to a "oversize" in X and Y direction?. 3.5mm is more than a simple "overextrusion" could explain. I had the idea of "X * (small movements + error)" vs "1* (long travel command + error)". Hm. – GWRon May 8 at 12:51
• @GWRon I'm not sure I follow the story any more. The Y axis dimension is coming out as 96.5mm with the Y steps set to 100? That is very extreme. Is perhaps the setscrew on the pulley loose? – Tom van der Zanden May 8 at 19:41