Make Your Own Motorized Camera Slider
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:
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:
29 Comments
MOLLY7673 6 years ago
thank you, this is a super project
geotron 6 years ago
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!
arduinomaster 6 years ago
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 6 years ago
This may be my problem and I have to add more to replicate the keys rotary switch. Too tired now. More another day.
arduinomaster 6 years ago
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)
MircoM2 6 years ago
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 7 years ago
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 7 years ago
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 7 years ago
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 7 years ago
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 7 years ago
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 7 years ago
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 7 years ago
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 7 years ago
did you fix it?
mikolajs1 7 years ago
How to fix it?
JohannesM12 7 years ago
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 7 years ago
Steve Booth 7 years ago
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 7 years ago
http://www.daycounter.com/Calculators/Stepper-Motor-Calculator.phtml
arduinomaster 7 years ago