Arduino Based Camera Controller | RF Circuits

Thursday, January 17, 2013

Arduino Based Camera Controller

The motivation
After seeing Matt Richardson's video about his high-speed photography controller, I thought to myself "Wow, I want one of those!" And I had all the necessary bits, so I set about building one.

This post isn't going to be a how-to (I'll write one if enough people offer to buy me beer), but just general boasting about what it does.

What can it do?


Ok, so I now have a device which can trigger my camera's shutter, fire off a flashgun or turn a bunch of sockets on and off at my command. Just think of the possibilities!! It's basically up to me and what program I write.

Taking Matt's lead, I first created a program to take photos of popping balloons. Here's a rough outline of the process:
  1. Start the process (by pressing a button)
  2. Arduino turns room lights off (via a relay attached to an extension lead)
  3. Camera shutter opens
  4. Arduino waits for sound of balloon popping
  5. I stick a pointy thing in a balloon
  6. Arduino hears the sound, and fires off the external flash unit
  7. Camera shutter closes
  8. Room lights turn on
  9. Paddy has a beer to celebrate a successful day's work
For an explaination of the above, see my next post (LINK COMING SOON). For some results, see my Flickr Arduino tag

I've also created a timelapse Arduino program, which allows me to repeatedly take photos a certain number of seconds apart - I created a simple video of a candle burning away, seen below



The parts


What I've used (essential stuff)
  • 1x Arduino Pro (though most Arduinos are suitable)
  • 1x Quad opto-isolator
  • 1x 7d remote trigger (sabbotaged for its connector and cable) - A cheap knock-off one was ideal because it cost about £5 ($8)
  • Various pieces of stripboard
  • Various colours of wire - For wiring up the circuit, but I also used a lot to make the tails to go off to the external stuff like the flash and camera
Non-essential stuff (added for the cool factor)
  • Real time clock module - allowing for more accurate timelapses
  • Lots of male and female PCB pin headers - these make up the plugs for wires, or the slots to plug the Arduino in so it can be removed easily
  • 4x LEDs (various colours) to show the status
  • 2x PCB-mount buttons to set the functions
  • Transistors - Arduino can't source enough current to power LEDs itself (though I'm told it can sink it - can any confirm?)
  • Piezo transducer - to pick up loud sounds
  • Photodiode - to pick up the light from a laser pointer (laser tripwire!)
  • Various resistors - they're boring, but ya need 'em
Stuff I didn't add (but would love to)
  • LCD status screen
  • Ion cannon - not really essential for this project, but how cool would it be if you could take photos and then blow stuff up?

Some requirements I aimed for
Functionality:
  • Control the camera focus and shutter (obviously) - the "how" is discussed below
  • Control an external flash gun - also discussed below
  • Two buttons to program the device - so I don't have to download a new program every time I want to change between "take picture when lights are bright" and "take picture when lights are dark" modes, for example
  • 4 LEDs to display the status - in the end only 3 of mine worked, but it's still plenty
Expandability:
  • Inputs and outputs should be as generic as possible
    This wasn't always possible (i.e. for the camera connector) but where I could, I tried to make the inputs and outputs generic. For example, the relay to switch the sockets on and off is on a separate piece of stripboard, and just plugs into a simple digital out. This means I can design as many little plugins as I can think of and still use the same main board
  • Input buttons have ports to plug external buttons in (so I can carry a button around with me, instead of having to be right beside the controller)

Camera Control
The camera (in this case a Canon EOS 7d) is controlled via the cable from a remote shutter release (about £5 on Amazon). These shutter releases (at least for Canon) are just simple switches. There are three wires in the cable - ground, focus and shutter. Connect focus to ground, the camera enters "focus" mode (like half-pressing your shutter button). Connect shutter to ground... well you get the idea.


In order to isolate my very expensive and love-of-my-life camera from my shoddy soldering, I used an opto-isolator. These little devices look like a standard IC chip, and basically consist of an LED on one side, and a photo-diode on the other. Apply a voltage to the input side, LED lights up, photo-diode allows a current through on the other side. You'll notice that there is no direct electrical connection between the input and output side - there's no need to worry about frying your camera if you short something out on the other side of the isolator, it provides about 7,500V of electrical isolation (or so the datasheet says).


Flash Control
I needed to be able to control an external flash to really get that "motion-stopping" effect. I have two external flashguns - a YN-460 and YN-468. The trigger for both of these is a hotshoe, which means the flashgun provides a 6V voltage on the center pin, and when this is brough to ground (via another contact around the edge of the shoe), the flash will fire. This sounds like another job for an opto-isolator!

To make things easier for me (and because I don't have any hotshoe adapters) I added a small homemade sync port, which you can read about here


External lighting control
This was such a good idea from Matt's video that I couldn't not do it!

Matt had a fancy extension lead with a digital input for turning it off and on. I don't have such crazy technology, so I had to make one myself.


What you see above is a small piece of stripboard, with relay which opens or closes based on a digital signal it receives from the Arduino. I've cut the live wire in a 4-way extension lead, and inserted the relay in the gap.

There's a little bit of circuitry so that the low current 5v output signal from the Arduino can power a 12v relay coil, but other than that it's very simple.

Because this board needs 12v, I usually power it directly, and I've added a socket so I can take power from this board and take it to my main board (which has the Arduino). The main board has an onboard regulator to give me 5v.

Inputs
In this iteration there are 4 (3?) inputs - two buttons and a socket for a photodiode. I know I'd said I was trying to keep everything generic, but I didn't have the awesome idea of having additional bits of stripboard with extra circuitry at that stage.

One of the buttons also has a socket, so that I can plug an external button with a long wire on it. This gives me freedom to move around the scene, makeing life so much easier!

There's room for other inputs too, and another socket for an opto-isolator, but I haven't got round to doing the wiring yet.

Arduino Code
This is coming in my next blog post. [INSERT LINK HERE]

The results
For the results, see my Flickr Arduino tag

More info
Find me at flickr.com/pskillen

Some more parts
Remote control button

Piezo transducer

Real time clock module

Connecting wires

No comments:

Post a Comment