Arduino+Stepper Motor Camera Slider




About: I am a qualified Industrial Designer based in Johannesburg, South Africa, and UK Citizen. I currently am working as a researcher, Industrial Design Lecturer, and direct a registered Industrial Design Company.

This is a trial and error / design and development process which I followed in developing a camera slider for creating time-lapse video clips on my DSLR camera.

The idea came from using standard Aluminium extrusions I have available at hardware stores, and create a slider chassis / dolly which is able to slide along this extrusion. The Aluminium extrusion is what builders use for creating a smooth screed on a floor, or plastering a wall. It is a perfect hollow rectangular extrude, of approx 70mm by 20mm, and is available in various lengths between 1m, and 4m. The wheels which I found which are suitable are standard Hillaldam shower rollers, which ended up working perfectly.

The process of development saw the following needing to be designed, tested, and then prototyped:

1. Slider Rail (standard Section)

2. Camera Dolly / Slider (rollers attached to a bent metal chassis)

3. Motion Control: this was the most tricky and takes up most of this instructable. It illustrates how I developed and tested a standard geared motor, with a gearbox... which didn't work well enough. After this, I attempted utilising a stepper motor which is controlled by an Arduino Uno board which worked much more effectively. I am unable to provide set plans which you can follow, as my design depended heavily on the resourses which I had available to me (South Africa). The availability of components to me is not as diverse as in the US and Europoe, and please keep this in mind when commenting.

For the planning and design work, I used Corel Draw. This is also what I used for designing the cogs and gear layouts which were lasercut.

The designing of the gears was done with the assistance of one of the most useful online generators, being, This allowed me to save the files as HPGL, and import directly into Corel Draw.

With regards to the the actual time-lapse clips, this is all done with Magic Lantern, which is installed on my Canon 500D DSLR camera. It allows me to utilise the incorporated Intervalometer for taking timelapse images. Furthermore (my favorite) is to film video and override the initial 30 frames per second and make it film at one frame per second. When it plays back, it is 30 times normal speed which is extremely effective. This needs to be compensated with a Neutral Density filter, and Exposure compensation (with Magic Lantern).

Step 1: Geared Motor and Necessary Hardware for Gearbox Mark I

The first idea I had was to use a geared motor (30 RPM if I am not mistaken) to drive a set of gears, which reels a spool of fishing gut. This is to slowly drag the slider along the rail.

Required: Geared Motor (12V) & 12 V battery.

Perspex: For cutting the gears.

Bearings: Friction fit into holes cut within the gears.

Fishing Gut

Bobbin: to wind up the fishing gut onto the output drive.

And fasteners for assembling.

I wont go into too much detail here, as the outcome was unsatisfactory, ineffective, jolty, frustrating, and still far too fast. There was no area for adjustment, and I went back to the drawing board (CorelDraw).

Step 2: Geared Motor and Gearbox Mark II

I used the same basic hardware as Mark I, however wanted to further gear down the motion. I am unsure exactly the gearing ratio (but I know this can be calculated).

I developed a bobbin holder which would allow for the easy removal and re-winding of the spool of fishing gut.

You can see that the careful planning in CorelDraw translated effectively into the assembled gearbox unit. The final outcome is extremely fragile, cumbersome and difficult to use.

Although I was very happy with the feel of the fabricated prototype: functionally it did not allow me the versatility needed in experimenting with the timelapse. this unit is still limited to one single speed. I could however fabricate bobbins of different diameters to manipulate the spool gearing, however this is where I realised that Arduino is the next door to knock on.

Step 3: Arduino Uno + Stepper Motor

The inability to easily manipulate gearing, together with the hassle of the fishing gut, let me to begin my Arduino learning. What I wanted, was to have a small driving gear and control the rotation of this with the Arduino. I want to be able to save different settings as different sketches, and upload whichever I would like. Through more experimentation I would be able to create a collection of settings for different applications. I know some of the capabilities of the Arduino, however my almost non-existent electronics understanding has prevented me from learning sooner.

I bought a small stepper motor and shield off of ebay, and luckily it reached South Africa without much hassle (i.e. luckily it didnt get pinched in the postal system).

I learnt the basics from the Arduino forum, and used sample stepper motor code as a starting point. You can see a paper clip on the stepper motor shaft, which I was able to step back and forth. The final code which I ended up using looked a bit like this...

/* Example Software Sketch
Small Stepper Motor and Driver V1.4 11/30/2013 Steps one revolution of output shaft, then back *
*-----( Import needed libraries )-----*/ #include
/*-----( Declare Constants, Pin Numbers )-----*/ //---( Number of steps per revolution of INTERNAL motor in 4-step mode )--- #define STEPS_PER_MOTOR_REVOLUTION 32
//---( Steps per OUTPUT SHAFT of gear reduction )--- #define STEPS_PER_OUTPUT_REVOLUTION 32 * 1 //2048
/*-----( Declare objects )-----*/ // create an instance of the stepper class, specifying // the number of steps of the motor and the pins it's // attached to
//The pin connections need to be 4 pins connected // to Motor Driver In1, In2, In3, In4 and then the pins entered // here in the sequence 1-3-2-4 for proper sequencing Stepper small_stepper(STEPS_PER_MOTOR_REVOLUTION, 8, 10, 9, 11);
/*-----( Declare Variables )-----*/ int Steps2Take;
void setup() /*----( SETUP: RUNS ONCE )----*/ { // Nothing (Stepper Library sets pins as outputs) }/*--(end setup )---*/
void loop() /*----( LOOP: RUNS CONSTANTLY )----*/ { Steps2Take = STEPS_PER_OUTPUT_REVOLUTION ; // Rotate CW 1 turn small_stepper.setSpeed(100); small_stepper.step(Steps2Take); delay(2000); }/* --(end main loop )-- *
* ( THE END ) */

I manipulated the different values to reach different outcomes. I do not understand the code very well, but it works. I was able to rotate the drive shave a fraction of a turn; and control the time between these small steps. This coupled with the intervalometer within the camera, I would be able to achive what I initially wanted. I know you are able to trigger the camera with an Arduino Intervalometer, however tackling the motion control is a suitable first step for me on my Arduino adventures.

If you have any comments about my code... PLEASE feel free to let me know what you think, how I can simplify it or attempt alternatives.

Once I got the circuit working, it was then time to attempt to adapt it onto the camera slider & rail.

Step 4: Adapting the Slider Chassis to Accommodate the Hardware Components.

I was lucky that the amount of room below the slider was able to accommodate the Arduino Board.

I decided to mount the stepper mounter on the slider chassis, and this needed a small gear which would meet teeth on the slider. This would allow me to use the one chassis on different lengths of rail.

I tinkered with all the components and tried different arrangements until I found something which I was happy with. this allowed me to mount the following, all on the slider chassis: Arduino Uno Board, 9V battery, 5v Stepper Motor, 5v Stepper Motor Shield, On/Off toggle switch between the battery and the Uno. The images communicate a lot more than what I explain here, but you can see how using the Aluminium sheet allowed me to easily mark, drill and tap holes. With careful planning and dry assembling, I was able to create a neat, lightweight and effective control unit. I just needed to make sure it would assemble effectively onto the slider rail before I could assess whether or not it will work.

Step 5: Adding Rail of Teeth to the Extrusion.

I worked from the standard gearing I decided on for the previous geared components, and adapted it in CorelDraw, to suit a linear rail. I had to make the rail narrow enough not to collide with the rollers.

Using a glue called Joiners Mate, I glued sections of the rail to the edge of the slider rail. You can see that I first tested a section and once I knew the exact position I glued the rest to the entire length of the rail.

Step 6: Outcome & Conclusion

I drilled two holes in the underside of the slider rail, and tapped the holes with the same thread as the bolt on all tripods. This means that I can screw 2 standard tripods in for versatility and stability.

As you can see, I attempted various solutions before ending up with the Arduino. The slider operates effectively and the video clips 'speak' for themselves. I have learn a lot and look forward to developing a Mark II camera project which I foresee being a pan & zoom rig for Magic Lantern time-lapse clips.

I hope you enjoyed my process, and please feel free comment and suggest further developments.

Arduino Contest

Participated in the
Arduino Contest



    • DIY Summer Camp Contest

      DIY Summer Camp Contest
    • Games Contest

      Games Contest
    • Beauty Tips Contest

      Beauty Tips Contest

    25 Discussions


    2 years ago


    You are amazing. Thanks for sharing your project. I will try to copy your project soon but i have a question. How did you do the wiring? I mean which pins did you use?


    3 years ago

    Amazing work mate.. I am too working on something like this for my Sony Nex and Nikon D7000.. Will share the results soon..


    4 years ago on Introduction

    This looks very cool. How much did all the components cost excluding Arduino?


    4 years ago on Introduction

    Where did you find the teeth rail you used? That is the part I am stuck on is finding those and the pinion gear. Any advice on where to find those cheaply? Thanks!


    Reply 5 years ago on Introduction

    I got them at Builders Warehouse ( but they are standard shower rollers which have a M4 thread.


    5 years ago on Introduction

    nice project. was thinking of doing a similar build. been looking at some acrobatics parts to help facilitate the build.


    Reply 5 years ago on Introduction

    I have, but not with the rail. I've tried it with just a tripod (and the magic lantern software), but there is a lot of light pollution where I stay in town. I need to do more, especially when away from the city-lights.


    You say you have little resources, yet you have a laser cutter? I wish I had these little resources. ;)

    Anyway, I've been considering such a project for a looong time, and here are my suggestions:

    - As you've already seen, programming is a very very useful skill. Learn how to code. This would enable you to instantly change variables (such as speed) using buttons on the arduino, without a computer to update the sketch. You could also program it to vary the speed at a constant rate.

    - With more steppers you could make more complex movement. You could pan and tilt in x, y and z axis, maybe even control zoom or focus using a servo to drive the lens ring. (tip: use a servo with position feedback and include some calibration routine on the arduino)

    - Synchronizing the camera shutter with the delay on the arduino can be tricky. Make the arduino take the shots for you. IIRC, you can make some sort of remote controller to take shots with your camera by just shorting the two data pins on the usb connector (do some googling). The arduino could control a transistor which shorts the pins. If that's not possible, maybe a servo to press the shutter on the camera? This would also allow for shutter timing to be variable, so you could speed up or slow down your framerate.

    - Adding a counterweight and putting more wheels to hold the bent metal under the track would allow you to use the thing at any angle, even vertical or upside down. Or maybe ditch the extruder rectangular rail and use pipes to slide your jib over, such as those in inkjet printers.

    - If you wanna go super fancy, add a bluetooth serial module to the arduino and write a program for your smartphone to change the variables via bluetooth. The smartphone would allow a more complex GUI, so you could add features endlessly without dealing with the frustration of navigating long menus using a few buttons and a tiny lcd display on the Arduino.

    1 reply

    5 years ago on Introduction

    This is a really well presented and documented project, and the final effect is a really smooth and professional effect. Thanks Martin.

    I've started similar projects before but you have gone the extra mile and produced with a genuinely useful and re-usable tool


    Reply 5 years ago on Introduction

    I've bought from Mantech before ( I bought the geared motors and other electronics bits from them, but the Arduino and experimentation kit I bought online from Botshop ( who delivered.


    Reply 5 years ago on Introduction

    Hi, try RS Components, they're a trusted global brand. They have a walk-in store next to Kyalami or you can order via their website and they'll courier it to you same day (order before 12h00) if they have stock in their warehouse or they'll source it from another distribution centre worldwide within a week.

    Arduino Uno SMD


    5 years ago on Introduction

    Very nice build!

    Where did you get your gears, etc. made?

    I'm also from South Africa and the perception that stuff get lost in the post is far from my experience. I order a lot of things from China, Singapore, Europe and the USA and yet have to NOT receive my package. This is with standard postage with and without tracking. It may take long but it eventually gets here.

    2 replies

    Reply 5 years ago on Introduction

    I've lost a couple items through eBay UK, ending up getting lost along the way. I rather get batches sent to my connection in the UK and have it couriered over to SA. Maybe I should give it another chance direct, of the sellers willing to ship direct.

    A friend and I invested in a laser cutter a while back, so I cut the gears at his place. The gears aren't as perfect as I'd hope, but they operate alright.


    Reply 5 years ago on Introduction

    Hi Isvdw!
    Here in Brazil we have similar problems of missing packages. Almost every untracked package get lost. The tracked ones arrive almost all the time. Did you tried dx dot com? Any purchase of more than 15 bucks are automatically issued with a tracking number. I never missed a package from them.