Building a Low-Resolution, High-Accuracy 3D Scanner

Enginoor wanted to build a 3D scanner that prioritized accuracy above all else, so he chose a laser displacement sensor.

They still leave a lot to be desired, but 3D scanners are becoming more useful as their resolution, precision, and accuracy increase. We now have consumer 3D scanners that can, under ideal conditions, produce fairly good models. There have also been many attempts by makers to develop DIY 3D scanners, with varying degrees of success. The challenge is in choosing a scanning method that is both accurate and practical for a wide range of surface types. To prioritize accuracy, Enginoor built a 3D scanner using a laser displacement sensor.

Laser displacement sensors are uncommon in the maker community, but are often used for industrial applications. They are capable of very good accuracy, but only under certain conditions. The orientation of the sensor, the surface material and texture, and the part geometry can all cause errors in the readings. A laser displacement sensor works by emitting a laser beam, then timing the reflection delay and the reflection location (either on a 1D or 2D plane). Because it takes the reflection location into account, it can get a more accurate result through triangulation. But it is easy to throw off that result if the laser doesn't reflect in a predictable manner.

In this case, Enginoor chose the laser displacement sensor because it returns very accurate readings. He chose to simply discard any erroneous results in software. The other downside to using a laser displacement sensor is resolution, as the relatively large spot size limits the detail it can pick up.

Enginoor built the scanner using a Cartesian motion system similar to what you'd see on a 3D printer, while linear rails and aluminum extrusion. A Teensy 4.1 development board controls the stepper motors and reads the results from the laser displacement sensor, which is a used Baumer OADM SA35. The Teensy communicates with a PC via serial. The PC tells the Teensy when and where to move the sensor, and the Teensy sends readings in return.

Those readings are a series of distances that correspond to the Z axis. The PC knows the X and Y coordinates, because those are the current location of the sensor. Enginoor created simple software to turn those measured points into a mesh, with each triangle's color dependent on its height. Blue is the lowest (the bed) and red is the highest.

The results should, in theory, be very accurate. But this design has limited utility because the resolution is low, and because it can only scan from one angle. It would be possible to reorient the part between scans and then join the results to get a complete 3D scan, but that requires a lot of additional work. Even so, this is an interesting build and innovative use of a laser displacement sensor.

cameroncoward

Writer for Hackster News. Proud husband and dog dad. Maker and serial hobbyist. Check out my YouTube channel: Serial Hobbyism

Latest Articles