I’ve been wanting to build a motorised camera slider for a while now, so when some popped into my Amazon suggestions a week or two ago, it re-ignited the urge to build one.
So, in this guide, I’m going to be showing you how to build your own motorised camera slider which can pan, rotate and track objects for some really cool shots. It’s driven by an Arduino Pro Mini and some TMC2208 stepper motor drivers and can lift a mirrorless camera like the M50 vertically or in any other angle or orientation, even upside down.

Here’s a video of the build and the slider in operation, read on for the step by step instructions:
What You Need To Build Your Own Camera Slider
There are quite a few parts to this build, but it isn’t actually that difficult to make. So don’t let the parts list intimidate you!
Parts From Amazon (Affiliate)
- 2040 Aluminium Extrusion 700mm – Buy Here
- 2040 V-Slot Gantry – Buy Here
- GT2 Tensioner – Buy Here
- GT2 5mm Pulley – Buy Here
- GT2 Belt – Buy Here
- 2 x Nema 17 2.5” Stepper Motors – Buy Here
- Camera Ball Joint Mount – Buy Here
- M5 T Slot Nuts – Buy Here
- M5 Machine Screws – Buy Here
- Arduino Pro Mini 5V – Buy Here
- 2 x TMC2208 Stepper Motor Drivers – Buy Here
- 2 x 100uF Capacitors – Buy Here
- 128×64 I2C OLED Display – Buy Here
- Rotary Pushbutton – Buy Here
- Header Pins – Buy Here
- Slider Switch – Buy Here
There are also a number of 3D Printed parts in this guide. I’ve used a Creality Ender 3 Pro to print my parts. If you don’t have a 3D printer, there are a number of online 3D printing services available to print and deliver your parts as well.
Parts from Banggood (Affiliate)
- 2040 Aluminium Extrusion 700mm – Buy Here
- 2040 Gantry – Buy Here
- GT2 Tensioner – Buy Here
- GT2 5mm Pulley – Buy Here
- GT2 Belt – Buy Here
- Nema 17 Motor Mounting Plate – Buy Here
- 2 x Nema 17 2.5” Stepper Motors – Buy Here
- Camera Ball Joint Mount – Buy Here
- M4 T Slot Nuts – Buy Here
- M4 Machine Screws – Buy Here
- Arduino Pro Mini 5V – Buy Here
- 2 x TMC2208 Stepper Motor Drivers – Buy Here
- 2 x 100uF Capacitors – Buy Here
- 128×64 I2C OLED Display – Buy Here
- Rotary Pushbutton – Not Available
- Header Pins – Buy Here
- Slider Switch – Buy Here
How To Make The Motorised Camera Slider
We’re going to build the camera slider in three stages. We’ll first assemble the extrusion mounted mechanical slider components and motors, then assemble the PCB and electronics case, and finally program the slider to perform our movements.
Assembling The Mechanical Slider
One of the cheapest and easiest ways to make sliding rigs is to use aluminium t-slot extrustions. These are widely used on 3D printers, laser cutters and other hobbiest CNC machines, so they’re pretty inexpensive and come in a range of sizes and lengths. They’re really useful for mounting components, you can buy special t-slot nuts which fit into the groves to clamp brackets and mounting plates onto.

I picked out a 2040 extrusion and then a basic mount for the stepper motor, a sliding gantry, a belt tensioner and then the belt and pulley. I also picked up a ball joint camera mount so that I could position the camera at different angles.

If you don’t want to build a motorised slider and you’re happy to move your camera along the slider yourself, then you don’t even need the motor mount or the tensioner, just the extrusion and the gantry. An un-powered slider is just as useful to get some great footage, you just need a bit more effort and patience to get the shots.
I installed the components onto the extrusion, along with two stepper motors which I salvaged from an old 3D printer. These are just standard Nema 17 stepper motors with around 1-2A coils. I designed and 3D printed a basic housing for the motor as well as an adaptor for the camera mount and some belt clamps.

The motor mount is just screwed onto one end of the aluminium extrusion using some M5 button head screws and t-slot nuts and the pan motor is then mounted onto this mount with the motor shaft facing towards the extrusion and positioned in line with the top pair of side slots.
I then secured the pulley onto the motor shaft with the teeth lined up with the centre of the top slot.

Put the second motor into the 3D printed housing, securing it to the top cover plate with M3x8mm button head screws and close it up with some more M3x8mm button head screws.

Screw the ball joint camera mount onto the 3D printed adaptor using some M4 button head screws and then secure this on the shaft with an M3x15mm cap screw.

You can then slide the rotation motor and gantry onto the aluminium extrusion and finish off the end by adding the belt tensioner, again using M5 button head screws and some t-slot nuts.
The “tightness” of the gantry can be adjusted using the nuts on the underside of one pair of wheels. These nuts move the wheel supports closer or further away from the slot, which tightens the grip on the slot. The gantry should be firm, without and rattling when moving, but shouldn’t be difficult to move along the guides.

Next I needed some legs to stand the slider onto, I also designed these along with a shoe for my tripod and then 3D printed them in black PLA to match the colour of the aluminium extrusion and the motor mount.

I 3D printed all of my components using Black PLA with a 15% infill.
Once the legs were printed, I installed them on each end of the slider using two M5 button head screws and t-slot nuts on each.

Remember to put your tripod mount onto your extrusion (if necessary) before the second leg as this closes up the entry to the slot, so you won’t be able to get the nuts into place.

Then add the second set of legs.

Once your legs have been added, you just need to add the belt from the motor to the gantry. Start on one side of the gantry, folding the belt over itself and securing it with a 3D printed clamp, then feed the belt around the motor, through the middle of the extrusion, around the tensioner and back to the opposite side of the gantry. The belt should be trimmed to length so that there is about 3-4cm of overlap near the gantry.

The belt needs to be pulled finger tight (with the tensioner completely loose) and you can then tension the belt by tightening the tensioning screw.

We’ve now got the basic slider together with our two stepper motors, so we need a way to get them moving.

Designing And Assembling The Electronics
To control the camera slider I’m going to use an Arduino pro mini. The Arduino will drive the motors using two silent TMC2208 stepper motor drivers. We also need a way to input the parameters for each movement, so I added an OLED display and a rotatary pushbutton.
Testing The Electronic Components
I set up a basic layout of my components on a breadboard first.

This was done to test that I had made the right connections and that the components all worked properly with the Arduino. I didn’t bother with both stepper motor drivers, if the one worked properly then the other one would too.


Designing The Circuit And PCB
Once I was happy with the connections to the electronic components, I drew up the circuit and a PCB to mount the components onto.

You don’t have to use a PCB, you can mount your components onto a breadboard, but a PCB makes a stronger and more reliable build, especially for something that you’ll be moving around a lot.

I got my PCBs made by PCB Way. They literally had them made and shipped out to me in 24 hours, which was quite impressive.

They did send me these PCBs for this project for free, but you can order your own PCBs from them from just $5 for 10 basic two layer boards. They’re really good quality and they also have a couple of different colour options, so you can really customize your projects.

Assembling The PCB
I then soldered the components and header pin connectors onto the PCB. I used a header pin connector for the display as well as I was planning on mounting it directly onto the case and having a short ribbon cable to the pins.

I put the heat sinks onto both TMC2208 motor drivers, soldered the pins onto the display and Arduino and then pushed them into the sockets on the board.
You’ll also notice that there is a small jumper on the top right of the board, just above the motor drivers. This jumper selected between having the motors always energised (can be moved by hand) and energised on command by the Arduino i.e. the Arduino can enable or disable the motors. My code makes use of the drive enable function using the Arduino to control them.

Making The Electronics Case
I then sketched the PCB into my CAD model and designed a case to house it and mount onto my slider.

I 3D printed the case components again using Black PLA and a 15% infill.


I installed the PCB into the case, holding it in place with some M3x3mm button head screws. My display is still shown plugged into the header pins here, it was removed for the next steps.

I then made up a short power lead to a 5.5mm barrel plug socket (the same one used on the Arduino UNO) to mount onto the side.
I mounted to case onto the slider using some M5 button head screws and t-slot nuts.

I put a switch onto the PCB to use if you’d like to, but I prefer just having it on when its plugged in and off when its not. A switch is useful if you’re powering it from a battery pack or your’ve got it set up somewhere permanently. If you want to use the switch then you’ll need to modify the case so that it’s accessible through the side.
I connected my motors to the PCB ports alongside each driver and put the wires into some braided sleeving to keep it neat.
Programming The Camera Slider
With that all done, it was time to tackle the programming, which was a bit more of a project than I had anticipated.
Making menus with these rotary pushbuttons is a really neat way to input information with a single device, but you land up having to do quite a lot of coding to make up for it.

I got the pan and rotate functions working quite quickly and then came the object tracking. I simplistically, or rather stupidly, initially thought this was easy. The camera moves from A to B and rotates through a bit less than 120 degrees, so just divide up the movement and rotation and it’ll work perfectly.
Except that thats not how it works at all.
In order for the camera to stay fixed on an object, it needs to move slowly in the begining, quite quickly in the middle and then slow down at the end again. There’s a bit of trigonometry involved in getting the camera to follow the object properly.

At least I had now realised what I had done wrong and could fix it, so after another few hours of coding, it was finally working.
Here’s my final version of the code. I usually go through the code in some detail for each project, but this project’s code is quite lengthy. I have added quite a few comments in the code to help you follow through it.
I have started a GitHub repository for the code if you’d like to share your adaptations and improvements. Some adaptations have been shared below as well.
Code Variations
Our community has also helped out with some useful additions to the code. Here are some of the modified versions. Note that I haven’t tested these versions of the code.
Limit Switch Inclusions by Paul Bartlett
Paul has added micro-switches to the two ends of the rail to act as limit switches to stop the motor. He has also added a short routine to move the motor back a little at the ends of travel to release the switches and added a routine to automatically home the gantry after running a movement.
Use A 1.3″ Display by Tony Tren
Tony has modified the code to work with the 1.3″ OLED display.
Closing Up The Case
Once I had programmed the Arduino, I closed up the case using four M3x8mm screws and then pushed the knob onto the rotary encoder.

The motorised camera slider was now ready to be used.

Using The Camera Slider
When you first put power onto the Arduino, a splash screen is briefly displayed.

You’re then presented with the main menu, which allows you to choose from four options – pan, rotate, pan and rotate and object tracking mode.

The options are selected by rotating the encoder and are selected by pressing the encoder. Once a mode is selected, a parameter input screen allows you to input the distance, angles, timing and directions for each movement.

Once all of the parameters have been input, you push the encoder button to start the movement and it then enables the motors and runs. The drivers then remain enabled at the end of the movement until you push the button again to release them. This is to ensure that the camera isn’t suddenly dropped once the movement is complete.

The camera slider works pretty well, staying fixed on the object from one side to the other. There is one limitation in that you need to know the pan distance and the distance to the object quite accurately, otherwise you land up slightly over or under rotating the camera. This isn’t a big issue but it does mean that its difficult to keep the object exactly in the centre of the frame without getting a ruler out each time. I’ll probably look at designing an interface to a Raspberry Pi in future so that I can run TensorFlow to do real-time object tracking. This should give more reliable results without any measurements.

The TMC motor drivers were a great choice for this build as they are really smooth and quiet, so you bearly notice them running.

As always, let me know what you think of this motorised camera slider in the comments section and let me know what you would do differently. But most importantly, enjoy building your own!
Community Builds
Andrew Campbell has shared his camera slider build with some neat modifications, including adding the limit switches by Paul. Have a look in the comments section for his feedback and thoughts on the project.







































































































































































































































































