I'm having a problem where the relative dimensional error of cylinders is rapidly increasing as the absolute size decreases. Printing a calibration stack of cylinders of diameters 8, 7, 6, 5, 4, and 3 mm, they come out undersized by 5%, 5.3%, 7%, 8%, 10%, and 13%, respectively, as measured by a digital caliper. Cubes exhibit a less severe version of the same pattern: 2.5%, 3%, 5%, 4%, 5%, 7%. The cylinders are generated with OpenSCAD using
$fn=180, i.e. they're actually extrusions of 180-gons, so the error should not be caused by poor chord approximation; indeed, measuring projections of the model, or reading the gcode and accounting for nozzle width, everything looks right.
Printer is Ender 3, using PLA at 210. Slicing with CuraEngine.
Could this be caused by underextrusion or print speed issues - or some effect where the material pulls itself together under tight curvature? What techniques might be able to compensate for it, short of fudging the model?
Some additional information: As noted by Trish in the comments, the consistency of the absolute error, which is 0.4 for cylinders and 0.2 for cubes, is likely important. I've also subsequently tested with 110% extrusion rate and the errors for the cylinders dropped to consistently 0.2 mm (still a significant increasing relative error), but the skin layers at the top of the 3 mm cylinder bulged, suggesting the increased extrusion is wrong - an excessive total volume of material.