For months now, I’ve been inspired by works from people like Tom Lowe and the crew of the ISS who’ve created unbelievable timelapses out of nothing but spare time and neat gadgetry. It’s a cool blend of optical kung-fu and careful shot-planning to create something pretty incredible and changes your perception of the world. For most terrestrial-based timelapses photographers commonly employ motion-controlled rigs, motorized sliders and gimbals that follow a preset path. This added motion gives the timelapse a completely different feel, an extra dimension in the most literal sense, and can help draw your eyes to the foreground or the background since depth of field is generally not a tool of astrophotographers. It’s also something that’s prohibitively expensive for an amateur like me. You can easily spend $500 getting set up with the most basic of camera rigs, and blow through thousands of dollars on the professional stuff. And this is where MoCo photography meets my blog. I plan on making one of these camera rigs for about $80, optimistically $50; one twentieth the cost of a Kessler Motorized Pan-Tilt System.
My goal is to build a system out of purchased hardware and scraps around the house that can do pan, tilt, rack-focus, and optionally linear motion along a track. Since I don’t have a CNC, the material of choice will likely be wood, with smaller metal elements (bushings, right angle pieces, etc). The motion system will be Arduino-controlled, I plan on buying whatever the successor of the Uno is, unless it’s delayed beyond May 2012. It will be tethered to my laptop, which will run most of the trajectory computations and pass instructions to the Arduino in real-time. The camera path will be stored as either a linear function, timed waypoints, or just basic states like speed and duration. The Arduino will have control over the camera shutter, acting as an intervalometer, but will receive the instructions for determining interval only once at the beginning of the timelapse. This is because in the past I have had issues with latency over serial communication (though Wireless may have contributed). If it turns out that USB can handle allowing my laptop to control the camera shutter, I’ll just run a purely “listening” Firmata program on the Arduino.
Fig. 1 – Prior project using an Arduino to trigger camera shutter.
The key to any motion-controlled system is precision. You must be able to move to where you expected to move. There are two ways to achieving this in a system, the first is feedback. You can put a counter or a sensor on a motor that tells you what RPM you’re at, or how many revolutions you have done. This adds complexity to a system, because then you need a PID (or other) controller to manage the speed of your motor to maintain whatever RPM you desired to achieve whatever pan or tilt you desired. The alternative is simple, always know where you are. This is what makes stepper motors so wonderful, they move in discrete steps (anywhere between 1.8 and 7.5 degrees per step generally). If you want to move or rotate X number of degrees, just count off the appropriate number of steps and you’re done.
The downside to using stepper motors is that you need a special driving circuit to make the motor operate. You can’t just slap a 9V battery to the terminals and off it goes, you need to energize the terminals of the motor in the correct sequence to make it rotate through each step. To that end, I’ve scoured the internet, looking for the right collection of IC’s that will enable me to power stepper motors cheaply. I’ve settled on a the following items:
3 x 74HCT08 7408 IC Quad 2 Input Positive AND Gate
2 x 74LS04 Hex Inverter IC
12 x 1 OHM 1W 1% Metal Film Resistor
6 x 0.1uF 50V 105C Radial Electrolytic Capacitor 5x11mm
3 x L298N L298 DUAL FULL BRIDGE DRIVER IC
12 x 1N4937 FAST RECOVERY DIODE 1A 600V
The meat and potatoes of that list is the L298 driver. It takes the weak logic signals from the Arduino and translates that into a signal with enough current to drive a stepper motor. At first, I wasn’t sure whether or not it would work. On the Arduino site, one of the examples posted references a SN745510 NE chip, which turned out to be a simple H-bridge. I had intended to just follow that design, but upon further digging and Googling it seems that the L298 is equally, if not more capable, and is also used in Arduino’s own Motor Shield which gives me some confidence in buying it. The diodes are necessary to prevent back-EMF from the stepper motor. The resistors are to measure voltage across if you want to measure current going into the motors. The capacitors are there… just because it says so in the spec. And the AND-gates and inverters are there because the Arduino doesn’t have enough outputs to directly control 3 x 4-wire stepper motors with enough free pins leftover to do much else. Since you only need to output 4 discrete patterns of “High-Low” to sequentially turn a stepper motor, you can map each pattern to a 2-bit binary number. I’m going to make my own 2-bit/4-output decoders.
For those of you that are curious about where I scrounged my info (aka: if someone is crazy enough to want to try something similar), here are a couple of references:
• L298 Datasheet
I will continue refining my shopping list over the course of the semester, as well as drawing up some wiring diagrams and CAD models. I need to spec out the pan-tilt gimbal itself, the focus mechanism, and interfaces with the camera, my Nikon D5100. I will likely have to buy a cheap remote trigger and splice the cable to the Arduino, since Nikon uses a proprietary connector instead of a 2.5mm TRS jack (*sad face*). I’ll also need a couple of gears and mechanisms for rotation, either from McMaster or a super cheap Asian web outlet with free, but 3 week shipping. The final product is likely to be pretty ugly, but so long as the photographic results are satisfactory, that’s all that matters to me. Construction will begin when I finish this semester.
UPDATE: I guess I didn’t remember enough from my digital circuits. What I really wanted instead of a multiplexer is a decoder. The appropriate changes to the article have been made.