3D Scanner

Fall 2017
2 Weeks 

Christina Brown 

Garth Zeglin

For my physical computing class, I built a low-resolution 3D scanner with an Infared proximity sensor, a couple of High -Torque servo motors, and an Arduino Uno. For this project, I programmed the Arduino and Processing scripts and I made the wiring. My partner primarily focused on custom-designing the parts.


There are two independent parts of this mechanism: the panning head and the moving bed. The idea of this project is that for every point on the bed, the head will scan the distance between it and the bed. If there is something on the bed, the distance will be less than on the bed itself. The aggregate grid of points in space would ideally resemble the object scanned.

The full system. There are two servos with gears that move two sliding surfaces.

One servo is used to constantly move the IR sensor back and forth, while it is reading and recording the distance.

Every time the sensor does one loop and returns to its original position, the bed shifts forward one notch. This is done with a simple nested for loop.

The problem was that the IR sensor is not meant to measure distances of specific points. Because of this, all the point clouds turned out much more blob-like and not very precise. Though the mechanism worked perfectly, the sensor was not as accurate as we had anticipated.

These are examples of the interactive point-clouds generated with this machine.


Though not easily recognizable, I was astounded by how these low-resolutions scans started to look like mountatin ranges—how scale seemed to flip from small to massive.

There were two major skills that I developed throughout this project: multi-platform programming and physical modelling.

I was lucky to have an architecture student as a partner who could teach me how to anticipate moving parts so that I don’t waste laser cuts. I learned how to make better gears, have less friction in my parts, and prototype much faster than before.

The biggest technical hurdle for this project was getting the Arduino to communicate with my Processing script in real time, so that I could see the point-cloud building live. I learned about the Serial Port, and how it could be used for this purpose.

email     linkedin     instagram      vimeo     resume      inspirations     things