Introduction: Make Your Own Motorized Camera Slider

Picture of Make Your Own Motorized Camera Slider

In this project I will show you how I repurposed two old camera tripods in order to create a motorized camera slider. The mechanical system consist mostly of aluminium and stainless steel which makes the slider sturdy and pretty decent looking. The electrical system consists of an Arduino Nano with LCD, rotary encoder, limit switches and stepper motor. Let's get started!

Step 1: Watch the Videos!

Both video parts will give you a good overview on how to create such a camera slider. But the following steps will still contain some extra useful information.

Step 2: Order Your Parts!

Picture of Order Your Parts!

Here you can find a parts list with example seller for the mechanical and electrical parts of the project:

Mechanical:

Amazon.com:
4x Ball Bearing Slide Bushing: http://amzn.to/2bPalMg

2x Flanged Ball Bearing: http://amzn.to/2bPalMg

Timing Belt: http://amzn.to/2bPalMg

1x Pulley: http://amzn.to/2bPalMg

2x 1/4" to 3/8" Convert Screw Adapter: http://amzn.to/2bPalMg

1x Tripod Ball Head: http://amzn.to/2bPalMg

Ebay:

4x Ball Bearing Slide Bushing: http://amzn.to/2bPalMg

2x Flanged Ball Bearing: http://amzn.to/2bPalMg

Timing Belt: http://amzn.to/2bPalMg

1x Pulley: http://amzn.to/2bPalMg

2x 1/4" to 3/8" Convert Screw Adapter: http://amzn.to/2bPalMg

1x Tripod Ball Head: http://amzn.to/2bPalMg

Amazon.de:

4x Ball Bearing Slide Bushing: http://amzn.to/2bPalMg

2x Flanged Ball Bearing: http://amzn.to/2bPalMg

Timing Belt: http://amzn.to/2bPalMg

1x Pulley: http://amzn.to/2bPalMg

2x 1/4" to 3/8" Convert Screw Adapter: http://amzn.to/2bPalMg

1x Tripod Ball Head: http://amzn.to/2bPalMg + http://amzn.to/2bPalMg

Crossbar Holder: http://amzn.to/2bPalMg

Home Improvement Store:

6mm Aluminium, 4mm Aluminium, 8mm 2m stainless steel pipe, 8mm 2m stainless steel rod, bolt+nuts+washers

Electronics:

Amazon.com:
1x Arduino Nano: http://amzn.to/2cHpj7Q

1x A4988 Stepper Motor IC: http://amzn.to/2cHpj7Q

1x 74HC14N Schmitt trigger IC: http://amzn.to/2cHpj7Q

1x 16x2 I2C LCD: http://amzn.to/2cHpj7Q

1x Stepper Motor: http://amzn.to/2cHpj7Q

1x Rotary Encoder: http://amzn.to/2cHpj7Q

2x Limit Switches: http://amzn.to/2cHpj7Q

Ebay:

1x Arduino Nano: http://amzn.to/2cHpj7Q

1x A4988 Stepper Motor IC: http://amzn.to/2cHpj7Q

1x 74HC14N Schmitt trigger IC: http://amzn.to/2cHpj7Q

1x 16x2 I2C LCD: http://amzn.to/2cHpj7Q

1x Stepper Motor: http://amzn.to/2cHpj7Q

1x Rotary Encoder: http://amzn.to/2cHpj7Q

2x Limit Switches: http://amzn.to/2cHpj7Q

Amazon.de:

1x Arduino Nano: http://amzn.to/2cHpj7Q

1x A4988 Stepper Motor IC: http://amzn.to/2cHpj7Q

1x 74HC14N Schmitt trigger IC: http://amzn.to/2cHpj7Q

1x 16x2 I2C LCD: http://amzn.to/2cHpj7Q

1x Stepper Motor: http://amzn.to/2cHpj7Q

1x Rotary Encoder: http://amzn.to/2cHpj7Q

2x Limit Switches: http://amzn.to/2cHpj7Q

Step 3: Create the Mechanical Parts!

Here you can download the .svg files and the 123D Design file that I created for my design. Feel free to use them or modify them.

Step 4: Create the Circuit!

Picture of Create the Circuit!

Here you can find the schematic that I created for this project. You can also find it on the EasyEDA website:

https://easyeda.com/GreatScott/MotorizedCameraSlid...

Step 5: Upload the Code!

Here you can download the Arduino sketch that I created for this project. But make sure to download and include this stepper motor library: https://github.com/laurb9/StepperDriver

Step 6: Success!

Picture of Success!

Awesome! You did it! You just created your own motorized camera slider!


Feel free to check out my YouTube channel for more awesome projects:

http://www.youtube.com/user/greatscottlab

You can also follow me on Facebook, Twitter and Google+ for news about upcoming projects and behind the scenes information:

https://twitter.com/GreatScottLab

https://www.facebook.com/greatscottlab

Comments

arduinomaster (author)2017-09-17

The rotary encoder was my problem, as I do not have the Keys rotary encoder.

But his design worked for me.

https://easyeda.com/editor#id=02b987d202a741c7bcbe...

arduinomaster (author)2017-08-20

This may be my problem and I have to add more to replicate the keys rotary switch. Too tired now. More another day.

arduinomaster (author)2017-08-20

I also fixed the INIT error by updating all Liquid Crystal Libraries. The display needs adjusting to show the letters correctly. My LCD at first did not work till I attend the 10K pull-up resistor. Now the rotary encoder does not work. The one in the description is different from the Keys one in the Video that has resistors in it. When I had seen that all was connected to a 12-volt battery but the circuit diagram displays all 5-volt inputs. The Schmidt trigger 74C14N has a Voltage Range of 2 V to 6 V. But no 7805 or dc-dc converter is in the circuit diagram.

All up I spent two days on this and like it as I am confident to get it going.

Good design. DANKE Great Scott. GUT GEMACHT. (Well done)

Miner_457. made it! (author)2017-07-21

Hi. So i have build the slider according to the schematic. However the lcd shows nothing (only the backround light is on). Also the rotary encoder doesn't seems to do anything. It would be very nice if anyone coud help me.

MircoM2 (author)Miner_457.2017-07-24

First try to show somthing on the LED Display.
Try different LCD Libarys with the Test Script (Hello World)

Look my post below and try this.

-------

My Aliexpress.com Display doesn´t work with you Code.
After i change the serial port to: " LiquidCrystal_I2C lcd(0x3f, 20, 4) " it works!

--------

Than went to the next step.. Rotary Encoder

MircoM2 (author)2017-06-23

First, thanks for the Idea and the greate Tutorial.
After a lot of hours my Slider works!

---------------------------------------

#1
My Aliexpress.com Display doesn´t work with you Code.

After i change the serial port to: " LiquidCrystal_I2C lcd(0x3f, 20, 4) " it works!

#2
The Steppermotor only Vibrates.

in RPM Mode the motor only vibrates, in Time-Mode the Screen jump to HomeScreen.

------
if (!(digitalRead(limit1))) {
lcd.clear();
mode = 0;
minutes = 1; // Test, change to 10min,
stepper.disable();

-------

After Homescreen Jump the time was: 10min.

The problem: Limit-Switches!

If you use the Circuit above, you have to change the Lines:

pinMode(limit1, INPUT);
pinMode(limit2, INPUT);

to:

pinMode(limit1, INPUT_PULLUP);

pinMode(limit2, INPUT_PULLUP);

The other option is to wire a 10k resistor from D6-GND / D7-GND

and the switch 5V-D6 / 5V-D7

PhilipN5 (author)2017-04-03

Hi, my LCD doesn't shows anything, the motor (6 wires) hold torso and can't move. Rotary encoder doesn't seem to do anything.

DenisC42 (author)2016-10-14

HELP PLEASE

Arduino:1.6.10 (Windows 10), Plošča:"Arduino Nano, ATmega328"

In file included from C:\Program Files (x86)\Arduino\libraries\CameraSlider\CameraSlider.ino:4:0:

C:\Program Files (x86)\Arduino\libraries\LiquidCrystal/LiquidCrystal_I2C.h: In function 'void setup()':

LiquidCrystal_I2C.h:154: error: 'int LiquidCrystal_I2C::init()' is private

int init();

^

CameraSlider:54: error: within this context

lcd.init();

^

Multiple libraries were found for "LiquidCrystal_I2C.h"

Used: C:\Program Files (x86)\Arduino\libraries\LiquidCrystal

Not used: C:\Program Files (x86)\Arduino\libraries\CameraSlider

Not used: C:\Program Files (x86)\Arduino\libraries\CameraSlider

Not used: C:\Program Files (x86)\Arduino\libraries\CameraSlider

Not used: C:\Program Files (x86)\Arduino\libraries\CameraSlider

Multiple libraries were found for "A4988.h"

Used: C:\Program Files (x86)\Arduino\libraries\StepperDriver-master

Not used: C:\Program Files (x86)\Arduino\libraries\CameraSlider

Not used: C:\Program Files (x86)\Arduino\libraries\CameraSlider

Not used: C:\Program Files (x86)\Arduino\libraries\CameraSlider

Not used: C:\Program Files (x86)\Arduino\libraries\CameraSlider

exit status 1

'int LiquidCrystal_I2C::init()' is private

Neveljavna knjižnica najdena v C:\Program Files (x86)\Arduino\libraries\blynk_esp8266_dht22_instructable: C:\Program Files (x86)\Arduino\libraries\blynk_esp8266_dht22_instructable

Neveljavna knjižnica najdena v C:\Program Files (x86)\Arduino\libraries\LiquidCrystal_v1.1.7.1: C:\Program Files (x86)\Arduino\libraries\LiquidCrystal_v1.1.7.1

Neveljavna knjižnica najdena v C:\Program Files (x86)\Arduino\libraries\LiquidCrystal_v1.2.0: C:\Program Files (x86)\Arduino\libraries\LiquidCrystal_v1.2.0

Neveljavna knjižnica najdena v C:\Program Files (x86)\Arduino\libraries\LiquidCrystal_V1.2.1: C:\Program Files (x86)\Arduino\libraries\LiquidCrystal_V1.2.1

Neveljavna knjižnica najdena v C:\Program Files (x86)\Arduino\libraries\NewliquidCrystal_1.3.1: C:\Program Files (x86)\Arduino\libraries\NewliquidCrystal_1.3.1

Neveljavna knjižnica najdena v C:\Program Files (x86)\Arduino\libraries\NewliquidCrystal_1.3.2: C:\Program Files (x86)\Arduino\libraries\NewliquidCrystal_1.3.2

Neveljavna knjižnica najdena v C:\Program Files (x86)\Arduino\libraries\NewliquidCrystal_1.3.3: C:\Program Files (x86)\Arduino\libraries\NewliquidCrystal_1.3.3

Neveljavna knjižnica najdena v C:\Program Files (x86)\Arduino\libraries\NewliquidCrystal_1.3.4: C:\Program Files (x86)\Arduino\libraries\NewliquidCrystal_1.3.4

Neveljavna knjižnica najdena v C:\Users\denis\OneDrive\Dokumenti\Arduino\libraries\blynk_esp8266_dht22_instructable: C:\Users\denis\OneDrive\Dokumenti\Arduino\libraries\blynk_esp8266_dht22_instructable

This report would have more information with

"Show verbose output during compilation"

option enabled in File -> Preferences.

JohannesM12 (author)DenisC422016-11-15

Hey I had an similiar problem with the Liquid crystal I2C Libary.

The error occured @ the loop section in line:

lcd.write((uint8_t)0);

I solved it by deleting the old libary files - reinstalled the Liquid Crystal I2C Libary of Frank de Brabander (found in "Bibiliotheksverwalter") and tata it worked...

Probably it helps ...

@Great Scott: I really want to thank you for this great work you did! I play now since 4 month with arduino and tryed to programm a code for a slider with your options... For a newbie too much. Your code is great! I am not finished yet, but soon ;)

Cheers from SW-Germany

Steve Booth (author)JohannesM122016-11-16

you are right this library is good because the examples work correct (Hello World!) but for some reason we still have the 'init' error, while with this one

http://www.archiduino.com/liquidcrystal_i2c-h-library-arduino-ide-1-6-x/ we don't get the error but it doesn't display right , so in the first one something has to be changed , Thanks

DennisJ48 (author)Steve Booth2016-12-11

I've successfully fix the init error by changing the code:

void setup() {

lcd.begin();

lcd.backlight();

lcd.createChar(0, customChar1);

lcd.createChar(1, customChar2);

pinMode(clk, INPUT_PULLUP);

pinMode(dt, INPUT_PULLUP);

pinMode(sw, INPUT_PULLUP);

pinMode(limit1, INPUT_PULLUP);

pinMode(limit2, INPUT_PULLUP);

attachInterrupt (0, isr0, RISING);

mikolajs1 (author)JohannesM122016-11-15

I've done as you have written and pops mistake

Arduino:1.6.12 (Windows 8.1), Płytka:"Arduino/Genuino Uno"

C:\Users\User\Desktop\CameraSlider\CameraSlider.ino: In function 'void setup()':

CameraSlider:54: error: 'class LiquidCrystal_I2C' has no member named 'init'

lcd.init();

^

CameraSlider:56: error: no matching function for call to 'LiquidCrystal_I2C::begin(int, int)'

lcd.begin(16, 2);

^

C:\Users\User\Desktop\CameraSlider\CameraSlider.ino:56:18: note: candidate is:

In file included from C:\Users\User\Desktop\CameraSlider\CameraSlider.ino:4:0:

C:\Users\User\Documents\Arduino\libraries\Arduino-LiquidCrystal-I2C-library-master/LiquidCrystal_I2C.h:76:7: note: void LiquidCrystal_I2C::begin()

void begin();

^

C:\Users\User\Documents\Arduino\libraries\Arduino-LiquidCrystal-I2C-library-master/LiquidCrystal_I2C.h:76:7: note: candidate expects 0 arguments, 2 provided

exit status 1
'class LiquidCrystal_I2C' has no member named 'init'

Ten raport powinien zawierać więcej informacji jeśli w
File -> Preferencje zostanie włączona opcja "Pokaż
szczegółowe informacje podczas kompilacji"

JohannesM12 (author)mikolajs12016-11-15

I see. As I am also just a newbie, I only can guess what is the problem.

Did you install the wire.h right? This is responsible for the wiring of the I2C! If you answer yes, only the LiquidCrystal_I2C.h could be the problem. And I can imagine your path is still the same of the old library because of \Arduino-LiquidCrystal-I2C-library-master

???

Try this if nothing else works:

http://forum.arduino.cc/index.php?topic=128635.0

Hope you can solve your little problem, good luck!

Cheers

ChrisS660 (author)DenisC422016-10-24

did you fix it?

mikolajs1 (author)ChrisS6602016-11-12

How to fix it?

JohannesM12 (author)2016-11-19

crazy... everything works, BUT the motor (Nema17, 1.3 A, 2.4V) vibrates as hell and doesn't move. When I disconnect the wires for the microsteps... S1, S2, S3 the motor turns, but with a lot of interruptions. Only at 40 rpm a fluent rotation is given. I operate the motor with 12 V 1.7A Adapter.

Does anybody know or have a hint how to fix this problem? I am stucked, after hours of trying.

mikolajs1 (author)2016-11-16
Is it possible to achieve 1200 rpm on the A4988 stepper driver and the stepping motor nema 17 on that software/ program ?

Wyślij mu to
Steve Booth (author)mikolajs12016-11-17

Stepper Motor Speed

===================
By comparison with regular DC motors stepper motors are very slow devices.

Typical speeds might be 1000 to 4000 steps per second and for a 200 step motor that would represent 5 to 20 rps (300 to 1200 rpm).

Generally speaking the motors with low coil resistance and high currents (and low nominal voltages) will be most suitable for higher speeds. A high voltage will also be needed for high speed.


Acceleration
============
If the stepper motor is required to move a heavy load it will normally be necessary to start the movement slowly (as with any motor) and accelerate to the desired speed and, equally, to decelerate when it is necessary to stop.

This is quite different from a DC motor which will accelerate and decelerate automatically.

If you try to start or stop a stepper motor too quickly it will simply skip steps with no damage to motor. However The Arduino has no means to know whether or how many steps have been missed and all of the position control will be lost.

For this reason, in particular, it is essential to choose a motor with sufficient torque for the job and to use acceleration and deceleration when necessary.

Steve Booth (author)mikolajs12016-11-16

http://www.daycounter.com/Calculators/Stepper-Motor-Calculator.phtml

arduinomaster (author)2016-10-12

Could you make a slider that keeps the camera to a fixed point. A dual axis one. Where you meassure the distance to the object and it turns the camera while sliding towards an object?

alexcheve (author)2016-09-24

I downloaded Cameraslider.ino and opened in Arduino IDE from my download folder and at compiling it shows error. Do I need to download other libraries besides stepper motor one? Like for LCD?

Joseanascimento (author)2016-09-22

LiquidCrystal_I2C has been updated, the program was compiled, as yet possess the encoder, it does not answer on lcd. Once you arrive, I will install and put the result.

Joseanascimento (author)2016-09-22

Very good design, I'm going for parties tried to compile on my Arduino Nano and has already made a error: 'class LiquidCrystal_I2C' has no member named 'init'

I'm waiting for my sheld to proceed.

What is happening? I made a separate test with my arduino and my display with I2C and worked well. Looking forward to see comment. tks

KipA2 (author)2016-09-20

Nice build!

Tip: Rough edges are easily cleaned up further with a sanding block after fine filing.

hpb (author)2016-09-20

Well done. I noticed the sag in the middle and resulting 'bobbing' effect on the recorded film is unavoidable due to the rods that simply cannot withstand the camera weight without sagging. A DSLR is just way too heavy for these. What you could do is use either a T-slot or a V-slot extrusions as the rails on which the camera mount can slide using bearings or delrin wheels. The camera mount can move back and forth using a lead screw attached to one motor which would do away with the other motor and the belts. This I think would be far more steady and balanced since all the weight is distributed over two strong aluminium extrusions that do not bend.

pepecuis (author)2016-09-19

Well done and well documented, congratulations!!

arduinomaster (author)2016-09-19

Just what I am looking for. Comes at the right time as my interest is changing from electronics to film making and pod-casting just as you do, but teaching different skills. I start at the software and work back. The library for the LCD is missing in my new PC, but I find it. Good quality Instructable in clear detail and professional videos. You must do this full time as I know how long it takes. It is a complete easy to follow project for the semi experienced. Thank you for your GREAT EFFORT.

MakerB (author)2016-09-18

awesome project, love the two control modes, speaking as someone who writes c++ a lot I can appreciate how tedious it would have been to write it.

GreatScottLab (author)MakerB2016-09-18

Thanks. It really wasn't simple ;-)

About This Instructable

24,821views

274favorites

License:

Bio: Awesome Electronics Tutorials, Projects and How To´s
More by GreatScottLab:DIY WiFi RGB LED LampHow to Add WiFi Control to Any Project || ESP32 Beginner's GuideAdding a Current Limit Feature to a Buck/Boost Converter
Add instructable to: