Introduction: Ooznest / Ustepper Motion Time Lapse / Video Rail
some specs: the rail is 1100mm** long it has 880mm of free travel and can lift 2.3kg vertically (with the 114oz motor). it has an adjustable step increment of 0.5mm to 10mm in 0.5mm increments and a intervalometer capable of 1 second to 30 seconds in 250ms increments (i could allow a longer interval with a quick change if required) **rails sold in lengths 500mm,1000mm and 1500mm. specs quoted are for 1000mm option
Ever wanted to produce your own time lapse videos like these below?
This one is a Christmas compilation from around hope valley in Derbyshire
And this one is from Fleetwood near Blackpool, i liked the statue and the way the wind appeared to be blowing the subjects almost away.
So looking back at my last time lapse rail instructable I understand that unless you have some experience with electronics the guide could be hard to follow, so having gotten my hands on the Ustepper I realised I could make the instructable much easier to follow with a simpler parts list albeit at a slightly higher cost.
The main change that has made the project much easier to create is changing the Arduino pro mini and supporting parts for the Ustepper. You can read more about this powerful little package here
The Ustepper is a self contained stepper motor controller based around an Arduino micro controller and the significance of this is it has three of the printed circuit boards required for my last build already assembled and ready to go. Included on the Ustepper board is the stepper motor driver, voltage regulator and Arduino this removes many of the steps required for my last project. continuing with this simpler theme I chose to go for an i2c Arduino 1602 lcd shield, this shield uses the same i2c communication system as my last instructable but this display also includes a button or joystick interface (depending on the brand you choose) that communicates with the Arduino using this same i2c interface. this basically reduces the connections between the lcd, button interface and the Arduino to 4 wires gnd, vcc(5v), SDA and SCL, for the purpose of this guide you do not need to know why these connections are called what they are just that you know where they are and to connect them together and the best part about this is im going to show you where they are with pictures.
Lets discuss choosing a motor and how you intend to use the rail, my first purchase i chose a 44oz motor (see the options list when placing your order) this motor maybe good for a small point and shoot camera such as the Canon A series however i found this motor was not able to lift my Canon 100D (700g) at an angle steeper than 45 deg. with this information i chose to use the biggest available motor i could run with the Ustepper however..... if you intend to use the rail with a small camera such as a point and shoot or a GoPro type camera then the smaller motor would be more than adequate. another thing to consider is how you intend to attach the camera to the rail as the weight of this will have to be moved by the motor as well, the ball head i use that you can see in the 3rd image weighs in at 300g so the total bare lifting capacity of the rail is in excess of 1.6kg, a lighter ball head would allow for a larger camera.
When building the rail for use with something like a GoPro, Samsung Galaxy S7 (example below) or camera with built in time lapse feature there would be no need for a camera trigger and you could skip the parts of this guide relating to optoisolators and triggering circuits this reduces the complexity of the task even further!
example Mobile phone time lapse taken with a Samsung Galaxy S7 edge on my first rail (motion effect would be more pronounced with this rail)
Im going to assume you have purchased and assembled your Ooznest rail and attached the Ustepper to the end of your chosen motor, if you haven't you can find details on that in my last instructable and Ustepper have a really simple assembly guide on their page the only thing to add to their guide is to fit the three micro stepping jumpers (supplied) over pins MS1 MS2 and MS3 to give us the fine control we need for our rail.
So lets start with a shopping list.
- slider kit from Ooznest (i recommend the 114oz motor for use with a DSLR this will lift my 70D and 17 40 f4L lens vertically 1.3kg further testing still did not find the max load but after testing with 2.3kg load i decided that has to be enough for most people https://www.youtube.com/watch?v=1GKvcZTVROs )
- Ustepper board when adding this to your basket choose "mounted DC jack" for easy connection to the battery pack below
- Arduino i2c 1602 lcd shield with buttons or you could use the Adafruit lcd that this is a clone of
- 12v lipo battery and charger or choose your own 12v dc power source
- camera trigger lead to suit your camera (ensure the lead you choose matches the length of your rail)
That should be all you need to purchase although there are a couple of other salvage parts you are going to need.
- an old ADSL or Cable router / modem mainly for wires and connectors
- opto isolator you will find these in most modern electronics you may find one in the modem router above.
Step 1: An Introduction to Optoisolators
What is an Optoisolator and why do we need one in this project?
Ok so the purpose of an optoisolator (also sometimes referred to as an optocoupler) is to connect two electrical devices without letting them share potentially different or dangerous voltages. In this application the desire is to ensure that stray voltages from the ustepper do not enter the camera and cause damage to your expensive DSLR and therefore keeping them electrically isolated. ok so now you may ask how does it work? and that is fairly simple, inside the optoisolator is a lamp or light. It is actually an LED very much like indicators on a computer to say it is on or its hard drive indicator. This light shines on a light sensor inside the package that links the other two connections in this case causing the camera to fire its shutter and take an image.
So this is the only tricky part of this build, you could use a separate intervalometer and still use the rail but it would defeat the object of the shoot move shoot function of the rail and may give blurred images especially with longer shutter times.
You could purchase or salvage this device, i chose to salvage mine from an old boiler part but i have seen them in switch mode power supplies and other modern electronic devices i would go for one of the 4 pin packages as these are most compatible with this application.
Here you will find images of the device you are looking for but check part numbers for your specific pin outs if you need assistance here just ask and ill take a look at it for you.
Step 2: Scavenging Parts
Now we need to find the parts we don't need to buy. Most people will have an old modem / router like the one above and all we are interested in is the wire that goes between the wall and the router and the mating sockets at either end, this will be our tether between the lcd remote control and the ustepper controller. you may find the optoisolator / opto coupler in the power supply that came with your router and as we are going to be breaking it for parts this maybe a good place to look for this part as well.
Step 3: Connecting It All Up
All we need to do is connect the 5v, gnd, SDA and SCL between the lcd and the Ustepper
Now as there is no actual pin out for the lcd display specifically and as the lcd and arduino uno are mating products, I have used the schematic for the arduino uno as the diagram for the lcd. If you look at this diagram you will find the 5v and the gnd on the left hand side of the diagram (this would be the bottom edge of the display as you look at it). Just below this are the SCL and SDA pins near the bottom of the diagram they are also repeated near the top right, you can use either of these pins. you can hard wire, or if you have some proto board you can do as i have and mount the phone socket to the back of the lcd as in the image above.
Next we need to do the same at the other end making sure to check that we match the connections as per the ustepper diagram. Here on the left again you will find the 5v and gnd connections. Do not! use the Vin connection as this will have 12v on it and will permanently damage your lcd, trust me i know! Now on the right at pins 6 and 7 are the SCL and SDA connections respectively, again in my case i made a little board to hold the connector and the optoisolator to make it as secure as possible. Ok so now for the optoisolator connections, in the diagram above find the anode of your opto and connect this to 5v. Next, connect the cathode to pin 5 of the ustepper, technically this should be done through a 200ohm resistor as you can see in my images, but as we are pulsing the opto for 200ms once per second or less it should be fine if you cant find a resistor. Next connect the two wires required to trigger your specific camera to the other two connections of the opto. The last diagram i have included is specifically for Canon camera's but we would use the shutter and common or gnd wires. Very important do not connect the gnd of the ustepper to the camera shutter gnd these must remain separate to fully protect the camera.
Step 4: Programming...not So Fast... We Need the Arduino Ide and Librairies
If you are new to arduino press on. if you already have an arduino ide installed i recommend a clean install of the arduino ide as i did have some problems with conflicting libraries that prevented me from programming the ustepper successfully.
So first of all head over to www.arduino.org and grab the ide platform.
Next head over to ustepper and follow the guide to setup the ustepper to work with your newly installed arduino ide.
Ok so the last thing we need is a custom library for the lcd shield as the regular one will not work with the ustepper (it causes the ustepper to lock up when communicating with the display) you can grab this from the ustepper github below.
just uzip this file to the libraries folder.
download the code attached to this page open it in the ide and program the ustepper
version now attached to this page is version 2.0 and now makes it easy to see how far the slide will travel in time lapse mode as the display has been updated to display steps in "mm"
version 2.1 now fixes bug where camera operation/shutter icon was not loaded correctly on first boot.
See the last page of my guide for the version of the arduino code that supports limit switches on pin 3 and 4 of the Ustepper
Step 5: Operation Guide
Hopefully you now have an awesome time lapse and video slider for 10% of the retail price of off the shelf models so lets give you the run through of the controls.
In the image above i have created a custom icon to display on the lcd when the camera is being commanded to take an image by the ustepper as a trouble shooting aid.
A note of caution with time lapse mode the interval in seconds should be set high enough to allow the move to complete and the shutter to open and close before the next move is initiated.
To improve the design the program has been written to allow for limit switches to stop the time lapse on completion this would be accomplished by shorting pin 4 to gnd using a micro switch at either end of the rail. I'm going to consider this an advanced feature and as the idea of this guide was to keep the wiring as simple as possible i have not included this information in the assembly instructions. Again, any questions on this or any other subject feel free to ask.
Another note: if direction of travel is not as desired, eg; right goes left or the time lapse does not run in the right direction, then simply reverse the motor connector on the ustepper or toggle the CCW CW settings in the code as you prefer.
and one more video of the Ooznest Ustepper time lapse rail out in the real world up a windy mountain
the time lapse from this shoot is also on my YouTube channel.
Still to do:
I need to find or create a custom case for the ustepper and the arduino lcd, i will get a 3D printer one day. also i'm wondering if the lcd remote would be easier to operate with tactile switches instead of the little joystick and i may add the switches required to my lcd as i have checked and they are electrically connected.
Step 6: Advanced Stuff!
so for anyone following this to the very end, i did some further testing of the time lapse rail to try and see what its maximum lifting capacity was, I still didnt find it even lifting two cameras vertically. the combined weight of both cameras and the ball head mount was 2.3Kg and it was still happy.
i have also continued to develop my own version (remember my goal here was to create an instrucatable that was easy to follow), however i like features and i like to walk away from my time lapse camera and take stills while it does its thing. So i got round to adding a limit switch to shut the time lapse rail down once it had completed it run. there will be a code update to fully exploit this feature which will be posted to this page soon.
the arduino code below is only required if you add a limit switch to your rail and it causes the time lapse mode to stop and reset to the top menu ready to run again, it includes all previous fixes.
This will be my last update unless i find any bugs this now adds a jog feature to the top menu to check and reset position of the slider manually by using the up and down axis on the joystick. i also added a second limit switch to pin 3 of the arduino to stop the slide in video mode and in jog/inch mode to avoid damage to the motor and drive mechanism, so to some up pin 4 is right limit switch and pin 3 is left limit switch.
still improving this project and now i have a 3D printer i have managed to create a custom case for the lcd controller for a more finished look you can download the files above