Timelapse photography (photos taken at regular intervals combined into a time-compressed animated sequence) can be very interesting. My previous camera, the Sony DSC-F717 lacked the feature, and could not be remote controlled from a computer. My current camera, the Canon EOS 10D, seems much more hacker friendly.
The 10D can be controlled from a computer via USB. Canon even supplies software for this purpose, but running Linux, Canon's software doesn't do me much good. The main open-source program for remote camera control, gPhoto2, has some support for the 10D, including basic remote capture. As other people have noticed, it doesn't work that well. In fact, not only the program but my camera frequently froze up and refused to take more photos using this technique.
Time to rethink.
Another, perhaps more flexible, option is to trigger the shutter using the camera's remote control port. In fact, Canon even sells the fancy TC-80N3 Timer Remote Control, which does exactly this. Unfortunately, it is about $150.
The remote control connector on Canon EOS cameras is very simple. It's has three poles: Shutter, focus and a common ground. Grounding the shutter or focus pins (e.g. with a switch, relay or transistor) triggers that function on the camera.
On the Digital Rebels (300D/350D/400D), the remote connector is a simple 2.5 mm stereo plug, making it trivial to create a wired remote control for the camera. On the higher end models (10D/20D/30D/40D), Canon chose to use the proprietary N3 connector - probably so that they can charge owners of these cameras more.
Since an N3 connector can't be bought or (easily) made, I cut the cable for my existing remote (a cheap Canon knockoff) and added a 3.5 mm stereo plug and jack. A 2.5 mm stereo plug would have been ideal (so that it could be connected directly to my EOS-300 body or to a digital Rebel) but RadioShack were out of them. I used the same pinout though.
There are schematics for Canon EOS timer circuits on the net, usually based on a 555 timer. The few I tried all had issues, so this is my improved design:
These are the component values I used:
| C1 | 220 μF (electrolyte) |
| C2 | 10 nF |
| R1 | 680 Ω |
| R2 | 10 kΩ + 200 kΩ variable |
| R3 | 470 Ω |
| R4 | 470 Ω |
| R5 | 10 kΩ |
| D1 | Silicon diode such as 1N4148 |
| Q1 | NPN transistor such as BC548B |
The circuit uses the 555 as a pulse generator, with C1, R1 and R2 determining the duty cycle. With a 220 μF C1, the length of the high pulse TH (that triggers the shutter) is approximately 0.7*R1*C1. R1=680 Ω gives a TH of about 0.1 s. The delay time, TL, is approximately 0.7*R2*C1. A fixed 10 kΩ resistor in series with 200 kΩ potentiometer results in an adjustable delay between about 1.5 s and 33 s. A smaller fixed resistor and a larger potentiometer would give you an even greater span. My choice was mainly determined by the components I had on hand.
I built the circuit on breadboard and probed the output with a multimeter in diode test mode, connecting the tip and sleeve of the stereo plug. Once verified to work, I hooked it up to my camera through my stereo-plug-to-N3 adapter, and let it snap a couple of pictures.
To save time, I soldered the circuit onto prototype board, rather than designing and etching a real PCB for it:
I made a small "shell" from plexiglass that fits the circuit board, the potentiometer and a 9V battery:
Here is the finished result. Not pretty, but it works well and seems robust.