DIY Arduino-based motorized DSLR camera slider with LCD screen
Motorized slider for video and timelapsesMaker/DIY
Creative Commons Attribution Share Alike
Commercial use is allowed, you must attribute the creator, you may remix this work and the remixed work should be made available under this license.
Here's my design of a motorized camera slider, useful for smaller and medium-sized cameras up to the size of something like a full-frame DSLR. I use it with Panasonic cameras and it's doing an awesome job! Use the touchscreen to set precise runtimes and speeds from seconds to weeks and create video shots or timelapses that would be impossible to do otherwise.
Total cost is under $60 using import electronics or a bit over $100 when using genuine Arduino and Adafruit components.
Arduino Code requires the Adafruit libraries TFTLCD, GFX and TouchScreen. I've provided known-good versions of the libraries for download, but you can most likely find newer versions at Adafruit.
Materials and methods
- Set of printed parts (idler_end requires support material, idler_shim is optional to align the pulley in the idler)
- 1m 20x40mm OpenBuilds rail (20x60 / 20x80 / 40x40 should work, too)
- OpenBuilds gantry set
(- Universal OpenBuilds plate)
(- 4pcs OpenBuilds wheel kits)
(- 2pcs OpenBuilds spacers)
(- 2pcs OpenBuilds eccentric spacers)
(- 4pcs M5x25 screws (+nuts))
- 4pcs M5x20 screws
- 2pcs M6x12 screws (a bit longer or shorter works, too)
- 4pcs M3x25 screws
- 2pcs M3x10 screws
- A few M3 washers
- About 35mm long 8mm rod
- 2pcs 626 bearing
- 2pcs 608 bearing
- GT2-2M 6mm pulley, 20t, 5mm bore
- GT2-2M 6mm pulley, 20t, 8mm bore
- 214cm GT2-2M 6mm belt
- NEMA17 stepper motor
- Pololu-style stepper motor driver Aliexpress
- Arduino Mega Amazon Aliexpress
- Touchscreen shield Adafruit Aliexpress
- Click encoder
- Mini breadboard
- 2pcs 10k resistors
- A few jumper wires
- A few M3 threaded inserts
- Some way to mount the slider to a tripod
Despite its price, here is an example.
I wanted a canon battery as I use their equipment and it would be nice if I wold only carry one type of battery around.
Do you have an example of the charging mounts? The one I use was suggested by Tom, because building from scratch was going to be an issue for me.
Yes, they require a magnetic field.
Thanks for the reply.
Regarding your build video, you used a part which the Sony battery mounted into, to draw power to the camera slider.
Im just wondering what the difference is between components like these which are supposed to charge the battery instead of outputting power from it. Let me know If I haven't been clear enough here.
Also, do the hall effect sensors require a magnetic field to sense incoming objects?
1) You should be ok with A4988, I'm pretty sure the wiring is the same.
2) You don't need to use CAT5 cable, I just have a metric ton of it so that's what I used. :-)
Thank you for speedily replying! Its the first time in a year that I have had some support!
I just have 2 questions. Would you recommend using your driver in the video, or the A4988 stepper driver?
Why do you need to use CAT5 cable wire for the hall effect sensors?
@ Matt Abeley
Have you tried my code? https://github.com/RJ-Make/OpenSlider ? I just soldered on to the bottom of the board. here is a high level look video on my design. https://www.youtube.com/watch?v=3ISblBN-hK4
Hope this helps
Hi, Im just wondering if someone could answer a few of my questions.
I am using a genuine Adafruit TFT shield, therefore to get it to work on the Arduino Mega, I had to change some things inside the code. Though, In all diagrams, both Tom's and @Rj_Make you are wiring to VIN. How can you connect to that port when the shield is directly on top of it?
Also, I just cannot get my code to properly work. I turn on the arduino, It goes to the HALT page, then when I turn the encoder it changes to 0d, 0h, 0m, 0s, but I cannot get it to scroll through the numbers with the encoder. Whenever I scroll the encoder, it goes back to the halt stage.
I would really value some assistance, as I am really enthusiastic in trying to make this work, but I have limited experience in coding or Arduino. Please help!
Try out the driver and the stepper separately with another code and confirm if the driver is able to drive the motor. IF you manage you get them to work, THEN there shouldn't be any issue with the circuit provided by Tom.
Took me a couple of weeks too, to figure out the right drivers for the lcd shield and stepper driver, driver.
If only things were as simple as uploading code and connecting wire to make things work right :-p
Im using the a4988 driver ... the lcd works but the button does this
A sexta, 10/08/2018, 12:02, YouMagine - Supercomputer <
Who's code are you using? Tom's code will only work with the exact touch screen he is using. Also, depending on which driver you are using, you may need to disconnect vcc from sleep/reset.
Here is a diagram of my version..
So i have 100% the same config and items and my screen doesnt come out of the halt .
1 time i dont know how it showed “runing” but my motor didnt turn
Do you have another code ?
"Doesn't work" is not enough information to help. What exactly doesn't work?
hello i have 100% the same thing wired in exacly the same way but my code doesnt work.... help me plz
Is anyone able to identify what code needs to be changed to calibrate the onscreen run-time vs actual run-time?
Need more information.
1) Exactly what is not working. Time Increment or start?
2) Which encoder are you using?
3) Do you have it wired exactly the way it is in Tom's video?
@RJ_Make Hey! I have been reading the forum, and realised you know a thing or two about this strange world of arduino.
Was wondering if you could help me out with an issue I have with the rotary encoder.
In toms vid, when he turns the encoder from the home "halt" state, it refreshes the screen, shows it is ready and you can click to start etc.
I have connected the encoder, and this isn't working, so Im not sure what I might have to change, or do to make it work since I am still learning to code and identify code.
@thomasrussell135 There is a sketch file on this website above which is titled "CombinedSliderControll INO"
hello i'm just wondering how i download the arduino code
I've just change my drivers polulu4988 for trinamic TMC2100 in my project (https://vimeo.com/230946414). The result is fantastic : NO SOUND with the stealthChop mode !
I've bought a 150W DC-DC Boost Converter 10-32V To 12-35V 6A and i wonder if i will improve the speed and the tork of my NEMA's by increasing the DC voltage up to 24V ? (I use 10VDC for the moment).
Any idea ?
@RJ_Make that one is rater expensjce vs the few usd i payed for mine. I can still just turn the slider around so it goes the right way
@Gdif well its a nice feature to have to switch dirrections. Thats why i also went for this design
As far as i'm concerned, i don't really see the advantage of a touch screen for this project. So i've used a nokia 5110 screen
I'm using this one https://www.adafruit.com/product/1651 (because I could not get the display Tom used) and wound up rewriting most of the display code.
@RJ_Make im using the ILI9341 LCD driver
What is the exact model of the LCD are you using?
@RJ_Make i see you know your stuff here
I would need some help. I made the slider but seems something is wrong with my code. As i get it tu run i can control the speed, but nothing on the LCD seems to work. I can get no touch controls and with that the slider only goes in one direction, i can not press the bottom part of the screen to change the direction of travel.
I am curious about how the TFT connects to the Arduino. The sketch and wiring diagram both clearly show the VIN on the Arduino 2560 connected to the battery. Both of the TFTs I have bought from China, however, have pins that connect to the Arduino's VIN. If I remove this pin on the TFT and connect, it appears to work. I can't imagine this is the way the designer intended. Is it? If not, what am I doing wrong? Many thanks!
These connections worked for me with the DRV8825 stepper driver.
EN: disconnected (do not connect it to anything)
@RJ_Make you're right: I should have said "DIM" rather than DIY, although I plan to make the program available in a few weeks when I clean it up. I will change the title of the video
@Rj Make thank your help , i have tried to connect M0,M1,M2,EN to 5V but the motor not run :(
how about my use motor have problem .
i my motor:
Fits for 3D printers, monitor equipment, medical machinery, textile machinery, stage lighting and so on
Rotor Inertia:38 g.cm2
Phase Resistance:2Ω±10%;Rated Voltage:3.0V DC
can you see and help pl thank you
@Dgif You say DIY, but I don't see any design files or such. Just a commercial for the dolly?
@Dgif You say DIY, but I don't see any design files or such. Just a commercial for the dolly?
I finally finished mine. I preferred to do a dolly rather than a slider. You can see it here: https://vimeo.com/230946414
@Ngo Duy You would wire it up the same; the only surface difference is orientation.
Hello , i need your help , your code be running A4988 motor driver now i want to change
a new driver DRV8825 can you help me pl ????
I think I'm lost with the circuits. Anybody could upload some picture clarifying the whole thing?
Could anyone upload their wiring photos?
Thank you !
I would look for one with bigger input and output caps..
Like this one ? http://www.ebay.fr/itm/MT3608-Step-Up-2-28V-DC-DC-Boost-Module-Alimentation-Reglable-Adjustable-Arduino-/252351265915?hash=item3ac14ebc7b:g:q~UAAOSwrddY7mgK
@Gdif I use a boost converter, and set it to ~10vdc. In my testing the battery works fine, but doesn't take long to reach the driver's min. voltage.
Hello everybody. I wonder about the power used by Tom (NP-970 Sony) which delivers 7.2V. Is this enough to power a NEMA ? It seems to me that 12V is recommended for this motor.
On your side, what did you use as a power supply?
I didn't think it was 3D Printed , it looked slick and smooth. I liked the modularity aswell. I would appreciate the files for the case very much.
So far I am waiting for RJ Make youtube video with the slider while I try to think of a case.
The modularity is a nice touch.
The slider looks great.
@DEM GER Great Job!
3D print (designed in Inventor)...printed on PLA.
I have no problem sharing the files.
In order to achieve compact design and modularity its a bit difficult, but not impossible.
$60 video slider from ebay
$17 Nema stepper / ebay
Love the case. How did you make it?
Thanks all for your help
Thanks for the follow up @Rob Goodman.
The culprit was on oversized version of TimerOne.
Now I just have to fiddle with it a bit to get rid of the screen duplication, for some reason I'm seeing double and the colours aren't right
Try a different arduino mega. Mine is a Sunfouder. Works great.
Are you using the provided libraries? If so then I'm out, have no idea. ;-(
@RJ Make. I am using Arduino mega and the exact same screen that Tom used in his project
Hmmmmm. I just noticed that my last post got deleted... Are we censored?
What hardware are you using? Arduino and Screen?
not sure where I am going wrong here but CombinedSliderControl Arduino file with #include touchscreen.h enabled is totalling 50116 bytes. Too big for the Arduino???
So I finally managed to add limit switches but the slider bounces from the ends just like I wanted. Here is the code:
Now I will try to add counter and automatic stop in the code.
I am curious if I can use your models for the casing?
As I see it, the only way to reliably reverse direction is with the use of endstops.
Even if you use a counter based system, you will be bound to always starting the slider at the same starting position every time. or incorporate some type of positioning system feedback to the controller.
It does NOT stop at the end as this might depends on each slider length...
For example I have a 24" slider...
If I remember corrector even in the YouTube clip Thomas specified that the user need to be aware and close by to turn OFF at the end.
Of course probably you can add some tiny switches at the end ...( end up with extra wiring)..or my favorite should be a code based stop.
There is another Arduino base slider where the user added a code based stop function where the motor counts the turns and stops at the end of slider.
I'm not very skilled at arduino but if anyone can "borrow" parts of this sketch and integrate in this slider that would be an great improvement.
Thx, it works now. But does your slider stops after the time ends? Like after you set for 16s, does it stop after 16s?
Like is said I set the timing to 16 seconds and it doesn't stop after that, its just keeps going. I don't have it yet installed in the slider. Testing the functions. And will try to add the limit switches later.
So there is no stop code in the sketch? And the timing only represents the tempo of the slider movement?
What would I have to add to the code to make the slider stop after the timing ends without the switches?
That would be nice.
I don't * think * I saw anything in the code that does that. (I'll take another look over the code). Just thinking out loud here, Unless the current code knows the length of the rail and the starting position of the slider I don't see the count down being very useful.
An endstop system, IMO is far more useful.
I was away for few days ...Did you make it work ?...
Where do you need help ?...
So the Enable thing worked and different pins and the motor spins.
But now it doesn't stop after the time shown. Shouldn't the time be counting down? I tried 16 second and it kept going forever. The 16 second didn't count down.
Could it be that I have the wrong library?
Yes, I would also connect it to GND so it doesn't 'float'.
I'll be releasing the entire 'OpenSlider' project, STL's, Design Files (STEP), and Code once I have completed building everything up and making sure it works. ;-}
Using Tom's great foundation, I wound up completely redesigning all the printed parts. I did this so I could have everything under housings.
Tom's design is better in many ways, and is most certainly easier, but in order to meet my goals I had to make some major changes.
So for 1 and 3 I should disconnect the Enable pin from VCC on the driver? That would make sense for the motor part.
For 2 I do use the Cheap clones. So I will try all the digital pins.
And for 4, that's so cool, I had normal Limit Switches in mind to connect and try to code it with some luck. I assume that you need to add some magnets to the ends of the carriage. Wish you could show me how you coded it.
Thank you Man.
Because I used the Adafruit 2.8 V2 TFT Shield, I wound up having to rework the LCD code to get it to work well, and that required me to dig into Tom's code pretty deep.
What I've found:
1) On every driver that I purchased, the enable pin must be driven low. Setting it high, as in Toms' video disabled the driver.
2) On two separate Mega's (cheap Chinees clones) I have several 'dead' pins. Just keep looking for working pins.
3) I would also use the Enable pin. Leaving the pin low all the time will cost you small amount of wasted battery power. I'm using a boost converter to maximize torque, so that costs me a lot in battery power, but the boost converter also allows me to drain the battery down to ~3.5 volts before function loss.
4) I have successfully coded and wired in hall effect sensors as end stops.
Love the project and I wanted to make my own slider.
I have all the elements needed for the electronics and I managed to test the nema 17 with the driver separately.
Now I am at the stage where I am trying to make it work. The LCD works great with the rotary decoder. But the motor wont move. I changed the pins to 50 and 51 like in the comments here but I still don't get an response. I presume to only update the pins for DIR and STEP in the beginning of the sketch.
@DEM GER can you help me, how did you amek it work?
Did you change that in the sketch, just the wiring, or both?
You should probably update your wiring diagram.
I made it...PIN50-DIRECTION
Changed Tom sketch.
Thanks RJ for help and advise....
Now we get to 3D Print...
ON downside....I fount the system a bit noisy..from STEP motor( all are noisy)
I guess for B-roll Shots....camera MIC is not necessary...
I will upgrade the updated diagram and upload again for everyone.
New Arduino Mega...EEprom clean, Upload successfully.....NO motor movement...
I would try different pins,
Pins are defined on:
define DIR 52
define STEP 53
Tried again my previous setup( tested A4988 and motor) and Tom design...without success.
My previous slider libraries are slightly different as I'm using an Arduino Uno with LCD Keypad Shield.
Works perfect for time lapses.
Please see the library and photos of my previous setup at below link :
I liked Toms design for B-Roll Shots..and time lapses....But can get it to work...
Tomorrow I'm receiving another mega and I will try again...
There is no communication between Arduino (with TFT and Encoder ) and motor driver.
..this is the only way I cant explain....
Arduino Mega (Sketch with TFT and Encoder works as they should) I have the right elements on display with right input from encoder and right response.
Stepper Motor and A4988 works fine on my other setup.
When connected together the motor does NOT move....
I'm thinking maybe pin 52 and 53 ...are the issue...not sure how to troubleshot this....
Maybe change with other pins ???...Dont know...
It would be great if anyone else would build the setup to have at least something to compare..
So if indeed the 2nd half (driver and motor) are good then we now know we have a problem in the first half. Mega, Wires, sketch or libaries.
Not sure why I didn't think of this before, but can you use (modify) the sketch from your other slider to test the base hardware on this new one? Are you using any of the same libaries in each sketch?
If the sketch works, then we know we have a problem in Toms sketch or a supporting library.
I tested my A4988 and my step motor and they are fine.
I have another Arduino LCD Keypad style slider...and swap the drivers and step motor.
100% they are fine.
I can only suspect Arduino mega 2560 or wiring...
But the program, LCD TFT menu and encoder are behaving as they should with proper results on screen based on my input...
Not sure what to look for next
Not yet, I'm still waiting on a few things. The circuit looks fine to me, but as you know that doesn't mean there isn't a code/libaries, hardware or wiring issue.
Thanks..I will check the motor and Polulu 4988 today....as I have a setup from previous slider..
I can't check Arduino...I place an order for another one anyway...
I will keep you updated...
By the way did you build this setup as in Thomas diagram ?
Until you are willing to run the test to determine which half of the system is not working I can't help you.
100% my stepper motor Nema 17 is working as I already used it in another style of slider.
A4988--I have 3 units and tried all of them.
One of them was also used in my previous designed slider and working fine.
Arduino and the encoder with the code the seems to work as I have the correct display elements and response on TFT screen as Thomas in his clip.
Wiring is done as in the below diagram
NO motor movement ...
Anyone any more ideas ?!?!?
So at this point we need to split this down the middle, and test the driver and stepper.
Here is a great thread on how to test your driver and motor from Pololu
If you have voltage on 1A-1B and 2A-2B, or if you try the other test and and the stepper fires, then the problem is either in your wiring (Bad wire(s)), Arduino or code.
Let me know how you make out.
1) Motor is connected correctly
2) tried Sleep and Reset Jumped and disconnected
When Connected I can hear the coils in the motors ...But seems that there is no juice...Even I have a separate 12V / 4A battery with 100Mf CAPACITOR. fully charged
I added a decoupling cap between VMOT and GND -- 100uf
NO spin....even I can hear the motor trying...or at least coils...in it...
SLEEP connected to RESET,
MS1, MS2, MS3, ENABLE... all are already disconected..
Any ideas ?
I'm pretty sure you don't need to pull those high, well at least RESET. but like I said before it shouldn't matter.
Thanks for looking in to this...
Why you tell me jumping RESET & SLEEP ?
...they are already connected together....
SLEEP, RESET, MS1, MS2, MS3, ENABLE... all are already connected to 5V...
Looks good, but you can try:
1) Unplug the motor; using a diode connect to what you think is coil one of the motor, spin the motor shaft. If it lights up, then you know you have the motor wired correctly.
2) Try jumping Reset and Sleep, don't take the pins high (it really should not matter, but..)
You may also want to put a decoupling cap between VMOT and GND -- 100uf should be good
From there we need to go much deeper.
Thank you Tom.
Thanks Tom, yes if you don't mind.
I've added the STEP files for the ends and the belt clamp - need the electronics mount as well?
Can anyone confirm if they got this circuit running?
Appreciate if anyone would let me know and if my uploaded below diagram is correct.
I tried all options….as per Thomas wiring, and external power to (Polulu A4988) Motor Driver…
I don’t get any movement in step motor …
Thomas I know you are busy…can you provide any feedback?
@DEM GER Thanks for the response. The reason I'm requesting the design files (STEP) is so that I can make modifications.
What I have in mind:
1) Provide Pilot Feet for use on a desk (or ground)
2) Removable control console
3) See if I can make that a little more (well a lot more) printer friendly
4) Integrated end stop mounts
Having the design files (STEP) should make it much easier to do some redesigning.
I don't see why we couldn't add some directional change end stops. I took a brief look at the sketch, and while it will be quite a bit of work, I think it's possible.
What help do you need with STEP ?...I might be able to help...
This is my second slider ( my previous version had an numeric LCD)>
Anyway let me know what you need and I 'm glad to help.
Myself I need help with motor wiring or stepping....as I don't get any movement...
As per End stops I saw the other day another slider(Arduino based)...that was able to count/ measure and will automatically stop at the both ends of the rail....
Is that something that we can incorporate ?
End stops for directional changes really need to be incorporated. If no one else does it before I start mine, I'll upload whatever I come up with.
I really could use the design files (STEP) Tom ;-)
Hi Thomas and thanks for uploading encoder.h.
I created another diagram at the below link:
Please advise if you notice something wrong…
In my setup the motor (Nema 17) does NOT spin……
Please let me know if something is wrong in my wiring / diagram..
Is micro stepping correct wired?
I tried many jump settings with no results
I hope this diagram helps others on making this awesome slider…
Please guys upload your results…/issues…
The Arduino sketch also requires encoder.h, which wasn't included in the libraries bundle up until now. If you were having trouble compiling the sketch, just download the .zip again and add the Encoder library!
Tom, would it be possible to get the STEP files for this project. I would like to see if I can make some changes to your design.
This is amazing and have ordered all the bits needed for this weekends build. one problem though, as i have the INO in Arduino when i verify the code it errors on the *.h files i can see some in the included libraries you have uploaded. I have my MEGA 2560 clone board here now and I'm fairly new to Arduino coding and would appreciate some help. Thanks very much
@RJ_Make I'm using DIN912 aka ISO 4762 cap-head screws, but any non-countersunk head should work.
For the touchscreen, the Adafruit 2.8" model should also work with minimal software changes. NP-F batteries have ready-made mounts available for them if you can't/don't want to make your own http://amzn.to/2lgRVHG
And for the belt, you can usually find a 5m loop of GT2-2M belt for very reasonable prices http://amzn.to/2kz6Tvx
Thanks Tom, I'm also having problems sourcing a few things from Amazon (want to use your aff. link)
1) Touch screen
2) 2.6mm plugs
3) 214cm Belt (can I just use 2 belts?)
What kind of screws do you have listed? Flat Heat, Cap?
Thank you for sharing the design and code Thomas!