We have developed our idea from using mobile apps to create 3D scans of objects and how difficult it is to achieve a good result. Using the apps we have to move around the object in a slow and steady rotation, have good lighting and a clear background. After trying to capture an object we found there was often still some areas such as the top part and shadowing in certain areas that were not captured correctly. Therefore we think that a good 3D scanning machine that addresses these issues is necessary for capturing higher quality scans.

The basic structure  of our 3D scanner that we are aiming to make is a rotating platform where the object is placed and telescopic arm with the phone attached that pivots from the center to allow angles to be taken at different angles.

We aim to use stepper motors controlled by an arduino to allow controlled motion at specific intervals and we would also like to create a function that takes photos on the phone automatically.

Using mobile and the use of app

The reason for using the mobile is because of the popularity and convenience. With the app ‘Trnio’, people can have easy access. Trnio is the only app that is free and is available for iphone download. The object being scanned is in good quality.

However, there are certain issues when using the apps. Firstly, it takes a long time for processing the images taken and turn into a 3D object. For example, it takes around at least 23 minutes for scanning a 5cm x 5cm x 8cm motors. Secondly, when we tried to trim the extra area around the object, it does not really trim after a few attempts.


2.1 Motorized rotating platform

When we reached to the mission of making a rotating platform, i checked how a record player engine works as we needed to make the same thing just in a smaller scale. 

After evaluating some options, we decided to make a direct connection between the motor and the surface. We used the Rhino and started to design the connection of the turning surface to the stepper motor. 

After that, we designed the motor base to fix  the motor to the platform  and sent it to print on the on the ultimaker.

2.2 Gears

One of the doubts that emerged during the design process was the possibility that the stepper motors were not powerful enough to raise the arms with the guide, the mobile holder and the mobile. To anticipate a possible problem we decided to use gears to make the task of the stepper motors easier.

A gear may be considered as a sprocket which when coupled with a smaller sprocket (the sprocket) will transmit rotation from one axis to another. The main function of a gear is to transfer power from one axis to another, maintaining a defined ratio between the rotational speeds of the axes. The teeth of a drive gear push the teeth of the driven gear, exerting a force component perpendicular to the radius of the gear. In this way a torque is transmitted and as the gear rotates, power is transmitted.

For the design of the gears we used a web page http://geargenerator.com/ that enabled the configuration of the different variables as well as the export of the gears in svg format.

We later found http://hessmer.org/gears/InvoluteSpurGearBuilder.html Involute Gear builder whose advantage was that it produced .dxf files which are more widely accepted by the programs we are using to model.

Once we decide which configuration to use we export the result, ensure the scale has been maintained and then cut them with the laser cutter machine. We decided to use acrylic as a material for its mechanical properties as well as for the final finish, it was necessary that they had a smooth surface so they would not get stuck between each other.

Gear (the largest), Pinion (the smallest)

To fix the pinion to the motor we drew a semicircle with a flat side in the center to match the shape of the rotor. We only something to prevent the pinion from leaving the motor shaft and to avoid the gears sliding off each other.

For this we 3D printed a piece that covered the small gear creating a nest for the gear ‘connection’ and allowed space for a screw that could be tightened to the flat edge of the rotor.

2.3 Extended motorized arms

In a first design, it was proposed to use arms made of ply wood and we thought that we could have a problem of material flexing. To avoid this, we proposed to use square aluminum tubes. We made the design thinking about using this material for the arms.

Besides the arm, we had to foresee the possibility that the arm had telescopic function and for that we used another tube with smaller dimensions.

These arms must be attached to the gear so we designed a plastic arm holder . This piece will be fastened with screws so the holes of the gear and the arm holder should match.

We needed to bend the aluminium box section to allow a higher view from the mobile. Our experiments doing this were very difficult. We found it was hard to achieve an accurate and consistent bend with the equipment we had. Also if others were to reproduce this, specific metal bending equipment would be required.

We decided in the end to make the arms out of wood. The full 360 degrees of the large arm were not being used so we removed these parts. This provided us with several advantages:

We gained a certain amount of flexibility using this material so we added a ‘fin’ along the side of the arm creating a plane in a perpendicular direction with gave us a more rigid arm.

Including slots along the length of the arm provided us with a simple but effective method to achieve the telescopic function we wanted.

2.4 Structure for motors and arms

The stepper motors must be attached to a structure and the same for the gears. We designed an individual structure for each side in such a way that we could move them as we needed them.

We did an initial design in wood to do a quick test with the different components and then a redesign to be printed with a 3d printer after seeing the existing faults, like the lack of space for the cables of the motors and the possibility that the Head of the screws obstruct the movement of the gears. In addition to the final design of the base we designed some accessories to solve the problem of screws. These could be part of the base printed in 3d but we thought that it would be easier to print the base without these forms to being able to modify them later.

2.5 Mobile holder

we knew the mobile holder was likely to be 3D printed so we took to Thingyverse to view some models that had already been designed

1.     http://www.thingiverse.com/thing:1216962

2.     http://www.thingiverse.com/thing:836161

3.     http://www.thingiverse.com/thing:11435

4.   http://www.thingiverse.com/thing:2194278

There were a few design considerations

1. The mount had to fit as many phones as possible. Fortunately most phones these days with a decent camera have a similar shape with the camera in the same place.

2. The screen had to be kept free to work any apps or see/check the photos being taken.

3. The mount had to attach to the cross beam, but in a way that allowed adjustment along the beam.


After looking at the models on Thingyverse we decided to create a design based on #4.

We couldn’t find the correct size bolt after an initial search, decided to attempt to print the nut and bolt for curiosities sake.

The prototype immediately had some critical errors in, mainly that it could not move. The bolt achieved a surprising amount of detail, but there were clearly some retraction issues which affected the structure further up. Needless to say, the correct size bolt will be sourced. The size of the design was good and the parts fitted together, but needed some editing before it was functioning.

After some time in the workshop the prototype was working. After some functional and aesthetic tweaking of the original file the final model will be ready to print.

The basic design we replicated as this was successful, some aesthetic curvature was added to make the piece more ergonomic as out of the whole machine this is the main bit that will be handled.

2.6 Guide to centering mobile holder

For the slider, there are two options at the beginning. One is to make a belt with holes, so that the position of the mobile holder can change by screwing the right holes. While the other options is to make a horizontal hole, so that the screw can simply slide horizontally and  fixed in the position by tightening the screw.

At the end, the second option is chosen, as it enables more flexibility for the position adjustments.

For the corner, there are also two options at first. One is to make a triangle-like structure and put screw on two ends in order to connect with the slider and the arm. While the second option is not by using any screw for the joint. 

At the end, the second option is chosen, as screw is not required and more convenient for assembly.


3.1 Using curve arm or straight arm

The purpose of having an arm is to have a full vertical view of the object, so that we can better capture the head or the shadowing part of the object. We feel that the straight arm would give more support when holding the mobile, while the curve arm may bend easily. Therefore, a straight arm is chosen.

3.2 Not using the telescopic arm

At the end, we abandoned the idea of using a telescopic arm as a straight arm of 350mm is already long enough and we do not need to extend the arm further. Also, a straight arm is much lighter than a telescopic arm.

3.3 Using two arms or one arm?

Originally, we are thinking of using one arm as less material is being used. However, two arms are better as it can distribute the weight of the mobile and its mobile holder equally. This can provide a better lifting of the mobile.

3.4 Testing the arms, motors and gears

We got the motors working using the CNC 3.5 arduino motor shield and some pololu drivers. This easily fit on the Arduino and it was an easy way to get the motors moving to ensure our gears could lift the weight of the arms and phone. To control this shield we needed to download the GRBL library:


This library allows us to enter simple G-code commands into the serial monitor of the Arduino IDE. we used the code G1 so we could alter the speed our steppers moved as well as the distance. E.g. G1 Y5 F5 (G1 - so we can alter speed, Y which motor to move and by how much, F - the ‘feed’ or speed of the movement)

In our initial tests we used a 3:1 gear ratio. This proved too small and we could not move the arms. Our issue was the moments involved, basically the equation:

Force = perpendicular distance from the center of rotation * weight 

Aka if we double the distance the phone is from the stepper, we would need approximately double the power to lift it. You can investigate more here: https://en.wikipedia.org/wiki/Moment_(physics)

We next tried with 10:1 which worked fine, but our largest gear was very large. We were limited in how small we could make the gears as we needed a decent amount of material around the small pinion for the gear to be strong enough. Next we moved onto 6:1 which worked fine and the gears were of an acceptable size.


3.4 Materials

To have a strong arm, we are thinking of using aluminium, while a smaller aluminium tube put inside a bigger one. This enables the arm to be telescopic when the small one slide along the bigger one. However, even though the arm is strong, we encountered the problem of the heavy weight. Since it is quite heavy to lift the aluminium, the arm cannot be lifted when the motor and the gears are already rotating. At the end, we use acrylic or wood for producing the arm instead as the arm will still be strong with a lighter weight.

3.5 Number of Stepper motors

At the beginning, we are thinking of using one stepper motor only for driving the arm movements. After some trials, we feel that one motor does not provide enough force to drive two arms. Therefore, one motor for each arm is needed and that’s make a total of two motors for the arms. Also, one separate motor for the platform rotation.

3.6 The size and shape of the gears

After some experiments of the gears, there is a need of changing both the size and the shape of gears. It is because even though the motor is moving, it does not provide enough force for driving the arm upwards. We make the bigger gear to become smaller and the smaller gear to become bigger. We also add more teeths for both of the gears in search of an optimal force for arm lifting.

3.7 Jack connection

To take photos with the mobile we searched how it works the selfie stick. We saw that we needed a jack with 4 ’pins’ and to take the photos it is necessary to have the same voltage in the MIC pin and the GROUND pin. This page (http://www.instructables.com/id/Trigger-Smartphone-Camera-With-Arduino/) is very useful to understand how it works. We took an audio jack, removed the headphones and microphone, and with a tester we identify the pins. In our case, the jack is OMPT Standard (but also exist CTIA Standard, the pinout of this replaces the ground with the microphone), which has this pinout:

First, we connected the wire with a limit switch. We tried with my mobile, but it didn’t work. After searching a little more we found that in some mobiles it is necessary to have an app. We download the app SelfieShop Camera. To take photos with this app you first need to change some settings. In the top-right there is the ‘Configuration’ (three bars), click on it. Here, you has to go to ‘Monopod connection wizard’, there are three pages, in the first one, click ‘next’, in the second one it has to detect the button, press the ‘limit switch’, on the third one click ‘next’ if it has detected the button to shoot the photos.

It is possible it does not work with some mobiles, we tried with a SAMSUNG and BQ it works with the first one but not for the second one.

For the program with Arduino, we took out the limit switch and we put a relay, which use three wires, the VCC (5 V), GND and IN, the last one to connect with the pin number 3 of the Arduino.

3.8 Drivers connections

We had three steppers, which needs a driver. While we did the test, we used two differents drivers; A4988 and DRV 8825. The connections of these drivers are:

We used the pins between 8 to 13 of the Arduino to control the steps and directions of the three motors.

3.9 Arduino programming

Here we have all the connections for the program:

Something about programming to understand the program: 

The ‘while’ loops will loop continuously until the expression inside the parenthesis becomes false.

The ‘if’ tests whether a certain condition, and depending on it, it do an action or other.

The % is used to obtain the remainder of a division.

The Arduino’s program are structure with three parts. The first one is to declare the constants and variables. The second one, to initialize the digital pins, for example as INPUTS, OUTPUTS, etc. The last one, where there is the different steps of the main program.

As we said before, first we declared all the constants and variables of the program, which are the number of the direction and step pins for the three motors and the pin to take the photo. Also, there is the steps, which is the number of steps to do a revolution and the stepDelay, with this variable it is possible to modify the speed. The second one, we configured the different pins of the Arduino as a OUTPUTS. Finally, we did the program. This program, turns the platform and stops every 36 degrees to take a photo, when the first revolution is finished it stops and the arms go up 36 degrees and stops to do another revolution of the platform taking the photos, when it finishes, the arms go up another 36 degrees and the revolution of the platform is again repeated. With this program we obtain 30 photos of the object, and we can create a 3D representation.

First, we activate the direction of the motor, you can put LOW or HIGH, depend in which direction you want that the motor turns. As I said before, the stepDelay is to modify the speed. The y variable is the number of steps of the arms motors, we initialized as a 0, and we did the first loop, which loops continuously when the y is between 0 and 40 (as we known, 200 steps are 360 degrees, so between 0 and 72 degrees). Now there is the first if, which has two conditions, first when (y % 20) == 0, this will be true when the y is a multiple of 20, so in 0, 20 and 40 ( 0, 36, and 72 degrees) and the second condition is when it does not achieve this one. In the first case, there is another while loop, which it loop continuously between 0 and 200, that is a revolution of the platform motor. In this loop it will move this motor except when the x variable (which is the number of steps of the platform motor) is a multiple of 20 (in 0, 36, 72, 108, 144, 180, 216, 252, 288 and 324 degrees), in that case it will shoot the photos. In the second case, it will move the two arms motors.


4.1 Stepper motor power - Gear relation

When we did the first tests we realized the lack of power of the motor stepper so we decided to use gears. These gears did not solve the problem, we used a ratio of 3 to 1, to add more power we changed the ratio to 6 to 1. The result of this change was positive


Wood cutting : base

Laser cutting : Gears, Arms, Platform

3D printing : Motor holder, Mobile holder, Corner


Mobile Holder and Gears and Arduino: Paul

General base, rotating platform and digital fabrication: Jonathan

Motor base, arms and Gears: Javier