The first thing to think about when talking about precision is what is actually required. Finally the precision of the whole process is limited by nozzle size and the viscosity of molten plastic. The smallest usable nozzles are 200µm, 1/4 (50µm) of this seemed like good choice of what is required in X and Y. The requirements for Z can be derived from minimum layer height. Objects printed better than 100µm layer height are hardly seen. Again using 1/4 gives 25µm precision in Z.
Neither the printed parts nor off the shelf hotends are manufactured precise enough for these requirements, but Slicers as well as printer firmwares have options to compensate for such errors.
I'm using a low budget USB microscope attached to the build plate to measure the offset of each nozzle. The resolution is in the range of 5µm per pixel, good enough for the requirements.
A mirror at an angle of 45° is used to get an upwards pointing field of view in the left half of the image, this allows calibration of XY. The right half of the image has a field of view that allows for Z calibration.
OpenCV and some python scripting are used to extract XY offset and estimate for Z. Instead of relying on camera perspective and resolution, gantry movements and bed height adjustments are used to move the nozzle onto the respective reference points. The calibration is repeatable to about 10-20µm in all three axis.
Side by side comparison of two hotends after offset calibration (rotated view).
The process of offset calibration is still a bit tedious, but faster, more reliable and accurate than using thickness gauges and printing variations of vernier scale patters.
Areas for improvement are
- A microscope permanently mounted to the printer, to eg. allow inspection before starting a job.
- Software that closes the loop between loading/unloading tools, measuring offsets, gantry and bed motion