This instructable was created in fulfillment of the project requirement of the Makecourse at the University of South Florida (www.makecourse.com)

Hi, I'd like to give you a little information about what's exactly going on in the attached picture. This is a fully 3-D printed Kinetic Sculpture with 1 Degree of Freedom that I sketched on Solid Works for the MAKE COURSE , a class I attended this past semester [ Fall 2015 ] as a Technical Elective which aims to showcase the versatility of Open-Source Hardware Projects like that of the Arduino micro-controller.I utilized an Arguino-Mega 2560 micro-controller to make this an interactive sculpture that grabs the attention of those around it by sparking their curiosity with its movement. A Ultrasonic Proximity Sensor is placed along the front side of this piece. Through the use of running data averages and conditional statements in the programming of the control system, the Arduino Micro-controller actives a Stepper Motor whenever a viewer gets within a specified distance [cm] from the sensor with great precision and accurary. The resulting motion is that of two concentric, rotating rings within the outer stationary ring. A total of ten spur gears are used to transmit the force required to rotate these rings.

The movement of this piece is similar to that of a Gyroscope or an Armillary Sphere, but please note that both of those objects serve a different purpose and work on different principles.

Step 1: Required Materials

---------> Parts <-------

A zipped file is attached with the appropriate STL files. These are the files used to 3D-Print the parts you need.

You will find the part files distributed within appropriate assembly folders.

---------> Control System Components <-------

---------> Assembly <------------

  • Machine Screws with matching threads
    • Suggestion: # 6 - 32 from Home Depot , Lowes or even Ace Hardware
  • Soldering Iron ( For the Brass Tap Inserts )
    • Tap Drill of maching thread ( suggestion #6-32)
  • Typical Flathead Screwdriver

Step 2: Placing the Brass Tap Inserts

Brass Tap Inserts are a tremendous help when it comes to joining two or more separate pieces of plastic together. By using a Soldering Iron, and the Brass Insert can be heated and then slowly pushed up against a clearance hole on the 3-D printed pin. Plastic has a lower melting temperature than Brass and as a result, the plastic will begin to soften, allowing for the insert of the Brass Tap. Make sure than the Tap is placed concentric to the clearance hole, and is facing flat onto the surface of the pin. Remove the Soldering iron as soon as the Brass Tap is inserted, once the plastic cools down it will harden and form a very strong union with the exterior threads of the Brass Tap.

Note: In the event that deformed plastic enters the internal threads of the Brass Tap while its being inserted, it will obstruct the threading. A Tap Drill of the same thread classification (#6-32), can be used to remove this excess material.

Each of the components printed out have clearance holes that allow for the placement of these Brass Taps to be Inserted. Refer back to the photo of all the laid out parts to see how many inserts go into each part and where they are placed.

Step 3: Gear Assemblies

There will be 6 Pin-To-Gear Assemblies.

The attached video shows where the Brass Tap inserts should be placed. It also depicts the order in which the spacers and gears should be placed onto the pins.

There will be 2 Output Shafts and Gears with Hubs Assemblies.

The attached video shows where the Brass Tap inserts should be placed. It also depicts the order in which the spacers and gears should be placed onto the shafts.

Note: The spacer, which is the last component that is added to the Shaft assembly should be placed BETWEEN rings.

Step 4: Stationary Ring, Gear and Base Assembly

The attached videos demonstrate how to assemble the base and the outer stationary ring together. Please watch them as you need to assist with the following instructions:

The "base" is regarded as the lid for the box. This piece has a total of 5 holes that align to holes on the outer ring, this is the largest of the three rings. This ring is designed to be part of the frame, it will be joined by 5 machine screws in order to maintain the sculpture.

Begin by aligning the holes of the base with that of the outer ring. Once aligned, two 1.125'' #6-32 Machine Screws can be placed through the horizontal holes where the brass tap inserts are installed in the base and out the Outer Stationary Ring. From this point, three additional 0.5'' #6-32 Machine Screws can be placed directly downward into the ring and through the base.

The stationary gear is distinguished by a custom hub that has two additional sockets and small inner diameter. There is a shaft that can be placed at the top of the Base and through the Outer ring and into the Stationary Gear. By simply running the Stationary gear through this shaft and aligning the sockets to match both 1.125'' #6-32 Machine Screws, the gear will be set in place and only a small spacer is needed to be inserted behind the gear.

Step 5: Assembly of Sculpture

Please refer to the above photos to help you with the following instructions:

Recommendation: The use of lubricant like WD-40 is crucial to the success in removing friction between parts.

Beginning with the outer stationary ring, two pin-gear assemblies can be installed as depicted by the second picture.This is simply done by placing the pin into the sockets of the outer ring and then running a 0.375" or 0.5" #6-32 Machine Screw through the clearance hole and into the threads of the brass tap insert. Make sure to adjust the hold, if you screw too tightly, it will limit how freely the gear can rotate about the pin. Leave the installation of the third pin-gear assembly that is closest to the base for last. It will simplify the process later on.

The same process can be utilized for the smaller gear-pin-assemblies found on the Secondary Ring.

Please note that there is a spacer used for the first output shaft that is placed onto the Secondary Ring. In order to successfully install this, the Ring must be placed inside of the Stationary Ring, supported by the shaft of the Stationary Gear and THEN the spacer can be aligned with the hole from which the Output Shaft runs from the Stationary Ring into that of the Secondary Ring. This spacer ensures that the Secondary Ring is concentric to that Stationary Ring and that the Output Shaft of the Stationary Ring doesn't slide out of alignment.

The same process can be utilized for the smaller output-shaft-gear assembly found on the Secondary Ring.

---------------> Motor Installation<------------

The Geared Shaft Coupler should come with a small screw that can be installed utilizing a small hex key. Place the Coupler on the top of the motor shaft and tighten it until the couple is fixed and supported to the motor shaft. Now, in order to install the motor to the base, you'll have to run the shaft through the allocated cutout on the bottom of the base. At this point, the majority of the sculpture is assembled so handling may be difficult; however, once the motor is through, you can slide the 3-D printed gear with the couple cut-out into alignment and press-fit it into the shaft's coupler. Hold the motor pressed against the bottom side of the Base and then install 4 M3 screws through and into the Motor's threaded holes to secure the motor into place while it runs.

Step 6: Arduino Code

#define echoPin 6 // This is the echo pin

#define triggerPin 7 // This is the trigger pin


int RPM=120; // Establishes the Revolutions - Per - Minute of Motor

int Detection=15; // Defines the distance at which the motor will activate

int stride=50; // Sets the number of steps the Stepper Motor will take

const int stepsPerRevolution = 200; // The number of steps required for the motor's shaft to make a full revolution.

int i=0; //index to populate the Data Array

int j=1; //index for shifting of data values and calculating running average

int dataset=10; // Length of running data array

int limit =(dataset-1); //offset for indexing

int Full=0; // Used to establish processing modes.

// for your motor
// initialize the stepper library on pins 8 through 11:

Stepper myStepper(stepsPerRevolution, 8, 11, 12, 13); // Instance of Stepper Class

int DataCollection[10]={0,0,0,0,0,0,0,0,0,0}; // Empty Data Array where values will be collected

void setup() {





Serial.begin(115200);//start serial communication

pinMode(echoPin, INPUT);

pinMode(triggerPin, OUTPUT);


void loop() {


digitalWrite(triggerPin, HIGH); // make a 10usec pulse

delayMicroseconds(10); // DO NOT CHANGE THIS, key to maintain rate at which data is collected

digitalWrite(triggerPin, LOW);

int distance = pulseIn(echoPin,HIGH); // Data collection

distance= abs(distance/58); // Frequency converted to units of distance [cm]

if (Full==1){ // Data Processing once Data Array is filled with Data points

DataCollection[0]=distance; // New Data Value is placed on the first cell of array

int Save=DataCollection[0]; // Variable Place-Holder of new Data Value

for (j=1;j

int Hold = DataCollection[j];

DataCollection[j]=Save; // Variable Place-Holder of previous Data Value

Save=Hold; // Transfer of Value between Place-Holder Variables


int Sum=0; // Variable for Computing Data Array Average

for (j=0;j<=limit;j++){ // For Loop for Creating Sum of Data Values


int Average=Sum/dataset; // Calculates Average of current Data Array

Serial.print("The average distance is : "); //Displays readings

Serial.print((Average),DEC);// send the measurement to the serial monitor //Displays readings

Serial.println(" cm");

if ( Average <= Detection){





} else if(Average > Detection){




if (Full==0){







Step 7: Painting ( Optional )

If you have successfully followed this instructable this far, your control system should be functional and all parts should be assembled with adequate clearances. All that I have left to present is that which I chose to do with my original model. The concept behind this sculpture which really caught my attention was that of duality (think Ying and Yang). As mentioned earlier, this is a 1 Degree of Freedom Mechanism. This means that there is one input force and one output motion. A great deal of time and consideration was allocated to designing geometries that would allow for the transmission of torque throughout the sculpture, clearances to facilitate movement where needed and the placement of mechanical joints to maintain stability despite the rotation of the internal rings. Where the duality is made is with the use of "Action Painting", a technique made popular by Jackson Pollock in the 1930's. This technique highlights is the use of a canvas, or object as a means of inciting the imagination of the viewer. What I mean by this is that although you may not be able to look at an Action Painting and derive any figures or structure from it, you can imagine the movement required to make each one of those lines, curves and splotches . That's what the art is,the motion. The paint itself serves as a fossil or a ticket stub that you keep from when you go see one of your favorite musicians or films.

All that you need is a variety of different paint colors (acrylic works just fine). You can lay down a large sheet of paper onto the floor. A Bottle of water if you want to dilute the paint a little, some sticks or dry brushes and even a couple of helping hands from your friend or family. I had my sister, my cousin and a friend come help splatter paint on mine and it was a fun experience to be able to share.

Note: Any paint that gets on the floor (if its tile), you can easily remove with water and a towel.

Thank you for your time and let me know if you have any questions!

<p>You should make the speed of the movement dependent on the distance of the approaching object.</p>
<p>Thanks! That's a really good idea. I'll play around with it and upload an alternative code for that :D</p>
This arduino code is for a step/dir Driver or H bridge 4 wires driver ?
<p>Originally I was using an H bridge with 4 wires for the Bipolar Stepper Motor but the wiring was a lot more complicated and I still lacked an external power supply to give the motor the 1.5 Amps it required. I believe the Seeedstudio Motor Shield V 2.0 utilizes a Step/Dir. Driver. </p><p>Below I have attached the Wiki for the Motor Shield.</p><p>http://www.seeedstudio.com/wiki/Motor_Shield_V2.0</p>
<p>This is so cool! It's a lot faster than I anticipated. </p>
<p>Thanks man, I very much enjoyed putting this project together. Yeah, the external power supply really gives the motor a kick;however, the speed can be adjusted by changing the value of the RPM variable on the arduino code. </p>

About This Instructable




Bio: Hi, my name is Luis and I'm a senior Mechanical Engineering undergraduate student at the University of South Florida. I've always considered myself ... More »
More by LuisDeLaMancha:Proximity Activated Kinetic Sculpture 
Add instructable to: