Make Your Own Motorized Camera Slider

44K32139

Intro: 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!

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

Mechanical:

Aliexpress:
4x Ball Bearing Slide Bushing: https://s.click.aliexpress.com/e/_dUoIL4W

2x Flanged Ball Bearing: https://s.click.aliexpress.com/e/_dUwmC54

Timing Belt: https://s.click.aliexpress.com/e/_dW2mvFy

1x Pulley: https://s.click.aliexpress.com/e/_d6Q0Urs

2x 1/4" to 3/8" Convert Screw Adapter: https://s.click.aliexpress.com/e/_dZYJ4wW

1x Tripod Ball Head: https://s.click.aliexpress.com/e/_dVVVdsA

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:

Aliexpress:
1x Arduino Nano: https://s.click.aliexpress.com/e/_dULoNXh

1x A4988 Stepper Motor IC: https://s.click.aliexpress.com/e/_dURxDoA

1x 74HC14N Schmitt trigger IC: https://s.click.aliexpress.com/e/_dUJyMdG

1x 16x2 I2C LCD: https://s.click.aliexpress.com/e/_dZ46LLU

1x Stepper Motor: https://s.click.aliexpress.com/e/_d8p6Tr8

1x Rotary Encoder: https://s.click.aliexpress.com/e/_dZs9jUb

2x Limit Switches: https://s.click.aliexpress.com/e/_dWwpZzY

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!

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!

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

29 Comments

thank you, this is a super project

Thanks a lot for the video GreatScott! i followed your instructions and its working!

i want the camera to move way slower than yours. anyone knows what changes should i make to the code in order to enable microstepping? i thought its easiest to place a dip switch to MS1, MS2 & MS3 of the A4988 with no changes to the code but its not working. i'm totally newbie to arduino and to electronics in general! thanks in advance!

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

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)

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

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.

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.

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

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

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);

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"

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

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.

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

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.

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

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?
More Comments