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&nbsp;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&nbsp;mm came out almost "perfect".
Yet I faced another problem: scaling. So printing stuff 100&nbsp;mm wide resulted in 97.2&nbsp;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&nbsp;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&nbsp;mm - so 3 lanes of print material on my 0.4&nbsp;mm nozzle).

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

I printed with my normal speeds (80&nbsp;mm/s for fill and even slower for other stuff) which creates fine output except the accuracy. I also printed at 20&nbsp;% of this speed (so &lt;10&nbsp;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&nbsp;cm filament ... and measuring how much was really moved), was not off by more than 1&nbsp;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&nbsp;% 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&nbsp;% of Cura-settings)


Sum up:


calibrated extruder (10&nbsp;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.
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&nbsp;mm, i.e. every measurement reads 0.1&nbsp;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&nbsp;mm (which your calipers would read as 20&nbsp;mm). If you then were to print a 100&nbsp;mm part, it would come out as 99.5&nbsp;mm which your calipers would read as 99.6&nbsp;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.