build a cheap 3d scanner to scan small objects, such as coins, at a very high resolution.
the scanner projects light onto the surface of an object such that it is partially illuminated. the transition from bright to dark is analyzed and a 3d section of the object is reconstructed via triangulation (light section principle). a stepper motor then moves the object by a defined distance. this process is repeated until the entire object is scanned. the result is a very dense point cloud that can be meshed.
a section view of the scanner design is shown below. the object, i.e. the coin has to be placed on the carriage via the opening on the right (covered by a lid). a stepper motor then winds up a thread that is attached to the carriage. to eliminate play a rubber band is pulling the carriage in the opposite direction of travel. during this process the coin under the camera is illuminated by an led. the light from the led is partially absorbed by a shield that casts a shadow onto the object.
the scanner is made of the following off-the-shelf components:
- usb camera (logitech c920)
- arduino uno (see here)
- stepper motor driver (ULN2003)
- geared stepper motor (28YBJ-48)
- leds (just some bright led will a wide viewing angle)
- linear rails and bearings
the total cost of the components without the camera amounts to less than $10 at a far east online store and a little more when you buy original components, such as the arduino uno. the camera is the most expensive piece of hardware. i got if for around $70 online.
the simplified 3d scanning workflow is shown in the following images.
the scanning app is important to set camera and other scanning parameters to appropriate values. poorly chosen parameters lead to low resolution and image noise.
sample scans can be seen in the following image gallery.
you can download some of these scans from thingiverse.
to build a cheap, simple 3d coin scanner is surprisingly easy. the use of python and opencv helps in making a simple application for scanning.
the quality of the results heavily depends on the camera parameters. this requires a bit of trial and error. the linear carriage also influences the scanning results. a guiding system with very little play is desirable.
while this scanner worked quite well there is still room for improvement. some of these improvements are implemented into my second coin scanner which is based on a raspberry pi. you can have a look at this system here.