Introduction: Step Motor Elevator

This instructable was created in fulfillment of the project requirement of the Makecourse at the University of South Florida (

Make Course video:

The idea of an elevator came to me when I was considering to do something similar to freestanding drop towers (like those in theme parks). The concept was bringing a certain object to a determined height and then drop it. Then I thought of buttons to action this movement, and eventually transitioned to building an elevator that would move between at least two floors.

This elevator is different (in concept) to real life elevators when you consider that the motor is not at the top. It is inside the box and has the help of two pulleys at the ceiling to pull the car. I decided to use a step motor instead of a DC Motor because this is my first project (if you think of Arduino and electronics), and I wanted to work mainly with the components that came with the Make Course Kit. The step motor is very easy to configure for this specific project, considering that a certain number of steps will make you move from a certain height.


Brief explanation of how the elevator works: The elevator moves from one floor to another when the Stepper Motor starts rotating. The motor will rotate either clockwise or counterclockwise based on how you want the elevator to move. There is a pulley attached to the motor, and as it rotates, the pulley either rewinds or releases some of the string that is also attached to the elevator.

To keep track of where the elevator is: There is a photocell on each floor. When the elevator gets to one of the floors, the photocell that is on that floor will receive less light. This way the Arduino knows where the elevator currently is, and uses the display to show the current floor.

Step 1: Planning

First, planning the specifics for your elevator. Here are some considerations you should make before starting. These are just some ideas to keep in mind.

  • Decide the number of floors you will have.
  • Decide how tall these floors will be (this will also be the height of the elevator cart).

I was first working with two floors, hence the yellow column. Here are the specifics of my elevator:

  • Three floors.
  • The "usable" height of each floor is 7cm.
  • The columns that I ended up using are 27cm, the three floors only used 21cm. This is because I reserved the rest of that space for the thickness of each floor/"roof" (where you would stand) and for the pulleys that are attached to the ceiling.

Step 2: Parts


Parts for the "Building"


DC-47P DC Series Heavy Duty Electronics Enclosure -

    They provide the 3D model in case you want to modify it and print it (I also provide the one I modified).

    See STL file box.stl

    Main pulley

    Think of a recoil pulley. This is the one that is attached to the step motor. It rewinds or releases some string. This is a 3D printed part. The spaces next to the hole in the middle are to keep the string inside with a knot. This makes it easy to replace the string, and is just better practice than gluing it (as I did with my first prototypes).

    See Inventor file pulley_for_motor_bigger.ipt

    Low friction steel pulleys -

    You can also print your own. These are more than what you need, but guarantee that it will work. Pulleys printed in ABS work just fine too.

    See Inventor file pulley_bigger.ipt

    Stainless Steel U-bolts -

      These hang the pulleys from the top. You can also print an "arm" like the one posted with the other Inventor files.

      See Inventor file arm.ipt

      Support rods for elevator (Wood/Bamboo)

      These are an option, and are cheap:

      You can also try going to a nearby Michaels store (or any arts and crafts store)


      The ones that I am using are 3D printed because I needed to make them hollow. This allowed me to pass the cables through the inside to hide these. However, you can also use Wood Dowels like with the support rods, but with a bigger diameter or simply a squared one.

      See Inventor files column.ipt and column2.ipt


      Also 3D printed, but my first prototypes were done with foam boards and balsa because these are easy to cut and work with. Attaching the photocell to these alternatives is not hard.

      See Inventor files 1st_floor_roof.ipt and 2nd_floor_roof.ipt


      I am using flat-head #10 screws to secure the parts that I designed. These have worked great:


      Electronic Components


      Arduino UNO (Rev 3) -

      The micro controller, of course.

      5V Step Motor -
      This is the one I used. It came with the Make Course Kit and was also enough to suffice the project. There also is a variety of stepper motors you can choose from.

      Step Motor Controller (ULN2003 Driver Test Module Board)

      This is the controller that comes with the Make Course Kit.

      NOTE: You can use this tutorial for an alternative to this module:

      Momentary Pushbutton/Switch-

      I used these buttons for the final assembly. You can use any.

      NOTE: Just make sure it is Momentary and NOT On/Off.

      Photocell (Photo resistor) -

      Cheaper alternative:

      4 Digit 7 Segment LED Display

      I am using this display to show the current floor. Also, I only need to use the 4th digit considering the number of floors that I am using. Since you will only use one digit, you can get something like this:


      *I have included links to because I believe they offer very useful tutorials for most of the components they sell. However, you can also find cheaper alternatives for these components by just searching the web for them.

      Step 3: Parts - Inventor Files (+ Others)

      These are the Inventor files for all my 3D parts. There is a .STL file for the box that I modified.

      There is also a .STP for the 4 Digit 7 Segment LED Display that I got from

      *These parts were designed in Autodesk Inventor Porfessional 2015 - STUDENT VERSION

      Step 4: Setting Up the Circuit

      Here you can see a Fritzing diagram of my breadboard circuit and a circuit schematic of it. This is for you to have a reference on how to set it up. There is also a picture of the first fully working prototype.

      Some details:

      • Resistors connected to the buttons and to the display have a resistance of 220 Ohms.
      • Resistors connected to the photocells have a resistance of 10 KOhms. These are pull-down resistors.

      Step 5: Putting the "Building" Together


      Holes you need to drill


      For the Columns:

      • You need 4 holes in the base (Inventor file base.ipt) to screw the columns in. See image 1.
      • You need 4 holes in the roof (Inventor file roof_top.ipt) to screw the columns in. See image 5 (the screws in each corner).

      For the U-bolts that support the pulleys:

      • You need 4 holes in the roof (Inventor file roof_top.ipt) to screw the U-bolts in. You can see this in the third image of this step.

      For the wooden rods that support the elevator (This is to keep the rods and the "up and down" motion fixed):

      • You need 2 holes in the middle of the base (Inventor file base.ipt). You can see this in the image 1; there is tape in the middle so that the rods do not go all the way through.
      • You need 2 holes in the middle of the roof (Inventor file roof_top.ipt). You can see this in image 4; two yellow pieces sticking out.

      For the cables that go through one column:

      • You need two holes facing towards the interior of the building (not to the side). One on each floor. See image 3.


      Securing the parts:


      The Columns, the roof, the floors (roofs), and the base:

      This is when those openings on the corners of each floor come into place.

      1. Screw 3 columns to the base.
        • The 4th column is the one through which your cables are passing, and it will stay put with the other "fasteners" (the roof and the floors).
      2. Slide the first floor's roof (Inventor file 1st_floor_roof.ipt) through the columns that are in place.
      3. Now slide the second floor's roof (Inventor file 2nd_floor_roof.ipt) through the columns that are in place.
      4. Slide the fourth column through its respective entry.
      5. Screw all 4 columns to the top roof (Inventor file roof_top.ipt). See image 5; this is how the roof looks now.

      The U-bolts that support the pulleys:

      1. Screw the U-bolts through the holes you drilled on the top roof (Inventor file roof_top.ipt).
      2. Pass the thin metal plate that came with the U-bolts through the U-bolts.
      3. Screw the washers to secure the U-bolts (and the pulleys) at a certain height. See image 4 and 5.

      The rods that support the elevator:

      1. Pass the rods through the two holes you made at the top and align them to reach the two holes at the middle of the base.

      Step 6: The Box

      Now that your circuit is ready, the next step is to put it inside the box and then close it with the base (that now holds the whole building).

      TIP: I used velcro to retain the Arduino, the motor controller and the motor itself to the box. This way it was easier for me to interchange the location of these components if needed. You can also use a glue gun or similar methods.


      The motor


      Here you can see the stepper motor attached to the Main Pulley (Inventor part pulley_for_motor_bigger.ipt). You can also see that there are two yellow parts around it. Since you really need to make sure that both the pulley and the motor are fastened, you need something that keeps these in place. I recycled the yellow parts from one of my prototypes for the elevator (the car) and used these as fasteners.


      The photocells


      If you see image 1, you will notice 4 soldered cables. These cables connect the Arduino to the 2 photocells in the upper floors.


      The breadboard and the display


      I used the smaller breadboard so that my components could fit inside the
      box. If you go back to Step 4, and see image 2, you will notice this breadboard.

      If you see image 2 of this step, you will also notice that the display is already wired and ready to be attached to the box.

      Step 7: The Arduino Sketch

      This sketch is my work but it is for you to use and modify, and build awesome elevators with it!

      Parts of this code are based on sketches written by Dr. Rudy Schlaf. Thank you Dr. Schlaf.


      Things to keep in mind:

      • You set the number of steps based on the height you choose.
      • The thresholds for the readings of the photocells are also hard coded. You can change this depending on how dark the environment is.

      Suggestions/Future improvements:

      • The elevator needs to behave more autonomously. If you work on this, try creating a function that gets the readings from both sensors multiple times and calculates an average of the "light" these are receiving. Something of this nature.
      • A reset function for the elevator (in case power is lost, or something similar)
      • I was going to use a Proximity Sensor to measure how far the elevator was from the first floor for my first prototype and with that determine the current floor. Try it! Sensor should go inside the box and remember that you need a minimum distance for it to work.