Calibrating The Printer.

If you’ve ever tried to print something with precision dimensions on a 3D printer, you notice things aren’t exactly the dimensions asked. Sometimes it happens because the printer is miscalibrated, but often, it’s due to the technology.

Take, for example, the Form 2 Printer by FormLabs. This fantastic 3D printer uses stereolithography to print parts, and it works by shining a laser through the bottom of the tank, hardening the material in a thin layer. The part is mechanically separated from the bottom of the tank, positioned micrometers above the glass, and the laser runs again, hardening the next layer.

Now the quality of the prints are absolutely fantastic. The default printing uses layers 0.05mm in thickness, and can print layers with certain materials as thin as 0.025mm in thickness. This creates very detailed models–assuming you designed them correctly.

But here’s the thing about stereolithography printing: it works by shining a laser on a point, which then hardens the material in a blob around the cylindrical laser beam path:


Now what this means is that if you’re printing a part that has a precision sized hole, because (for example) you want it to precisely fit a pre-fabricated shaft rod, you need to print the hole slightly larger in order for it to fit snugly–and even slightly larger than that if you need the part to rotate freely.

And if we want to 3D print components for a clock, an orrery or a robot, we need to understand how much bigger we need to print the holes.

The same thing, by the way, applies to fused filament fabrication, such as used by MakerBot Replicator+: the print material here is a filament, a cylinder, and the process of melting and fusing the layer onto the previous layer causes the material to squish a little. This means your holes will be slightly smaller than on your 3D CAD drawing.

To solve this problem I’ve designed a couple of simple test print objects. The first has holes ranging in size from 0.5 mm to 3 mm in radius, so we can test and verify the size of the holes we need to snugly fit a shaft, and to allow a shaft to freely rotate.

Hole Test Gadget

In the above photo, I’ve shown a 2mm diameter rod. It doesn’t fit into the 1.0mm radius hole, as expected, given the discussion above. I suspect a 1.1mm radius hole would fit snugly but not too snugly. The 1.25mm hole fits very loosely, which indicates to me that perhaps a 1.15mm to a 1.2mm hole would be perfect for a freely rotating gear.

I’ve also created a second test print, with holes ranging from 0.9mm to 1.25mm in diameter, incrementing by 0.05mm.

Hole Test 2

This allows us to better refine the exact amount we want to adjust a hole so it is relatively snug, and so it allows a gear to rotate freely without wobbling.

The answer, by the way, is 0.1mm. A hole with radius 1.05mm fits snugly around a 2mm diameter pin, and a hole with radius 1.1mm rotates freely around a 2mm diameter pin. This means if we use 2mm diameter pins, anything that needs to freely rotate (such as a gear) needs to have a hole through the axis of 1.1mm in radius (2.2mm in diameter) to rotate freely but without wobble, and a hole of 1.05mm in radius (2.1mm in diameter) to fit snugly.

Note that all of my 3D designs are done using OpenSCAD, which allows you to design parts using a text language that specifies the relative position of all the parts and holes. The advantage is that it’s free, though if you’re not a computer programmer (as I am), getting used to designing stuff in this way can be a little daunting at first.

All files referred to in this blog post can be downloaded from here:

Published by

William Woody

I'm a software developer who has been writing code for over 30 years in everything from mobile to embedded to client/server. Now I tinker with stuff and occasionally help out someone with their startup.

Leave a Reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s