Intervalometer For Canon's EOS Rebel Cameras

A simple way to repeatedly activate the camera's shutter

Similar projects worth following
By using parts you probably have sitting next to your keyboard, you can construct a simple logic inverter to invert an arduino's positive logic output to pull the EOS Rebel's shutter pin low, thus taking a picture.

After looking for accessories for my new EOS Rebel T5i DSLR, I happen to stumble across Canon's TC-80N3 remote control. "Quite useful this will be!" I said to myself, until I saw the price. Google it. It has many fancy features on it including an intervalometer. An inta- what!? I said to myself then quickly then googled it. All an intervalometer is a device that counts intervals of time. "This shouldn't be too hard to recreate" is said once more, and here we are.

After googling pinouts for the remote control plug, I quickly found that the pinouts are quite simple, Ground, Focus, and Shutter.  Next, I took out my multimeter and started measuring voltages. I found that on either the focus or shutter pin, there is about 3.3v floating on it at all times. I drew the conclusion  that in order to activate the shutter, the shutter pin has to be pulled low to ground, easy. Then I got thinking what might be in Canon's TC-80N3 remote. A micro controller, a source of power, a bunch of buttons, and an LCD screen. In theory, I could just hook up the camera directly to the Arduino, but when the IO pin is low, it would sink itself to ground, thus taking a picture. I could keep that pin high but that would mean i'm supplying 5v onto a 3.3v rail. Not too smart if you ask me. So I set out to build a simple, yet somewhat elegant device to take the Arduino's 5V logic and use that to sink the shutter pin to ground. After fiddling around a bit, I came up with a circuit. Put a 10k pull-up resistor between an NPN transistor's base and a free Arduino IO pin, the collector to the shutter pin of the camera, and the emitter to the Arduino and camera's ground rail. Done! When the transistor receives 5v from the Arduino, it allows current to flow from the the common ground rail, through the emitter and to the collector and then directly to the camera, effectively sinking the camera's shutter pin to ground. So instead of spending three figures on a remote that has more features than I really want, I was able to piece together exactly what I wanted from stuff both you and I have probably have lying around in under 15 minutes.

  • 1 × Arduino Uno Microcontroller
  • 1 × 2N2222 General purpose NPN Transistor
  • 1 × 10K Resistor Pull Up For The Arduino
  • 1 × Prototype Board For Mounting Componentes
  • 1 × 2.5mm Stereo Cable To Connect To The Camera's Remote Jack

View all 6 components

  • 1
    Step 1

    Find Yourself a micro controller of choice or even a 555 timer. Any 5v logic will do. Gather all other components listed above

  • 2
    Step 2

    Solder the 10K pull-up resistor to any free header pin. Lay the resistor  horizontally, to save space.

  • 3
    Step 3

    Mount the NPN transistor close to the resistor. Try to get the base lead of the transistor as close as possible to the unconnected side of the resistor. Bend the transistor on its side, to again save space. Solder them together.

    Note: The resistor has to connect to a IO Pin, the emitter of the transistor has to connect to ground. I suggest making the connections correspond to ground and an IO pin on the Adruino that are next to each other. Example, GND and P 13

View all 6 instructions

Enjoy this project?



Myron wrote 07/10/2015 at 20:42 point

Good setup.  For other cannon users there is a Cannon Hack Development Kit. (CHDK). 

How it works is that you boot format an SD card wit a new, open source, OS that your camera can boot to, temporally. And with this OS your camera can run hundreds of programs and games. 

Then you can still go back by using a different card, or sliding the read only tab.

  Are you sure? yes | no

davedarko wrote 11/18/2014 at 21:25 point
I'm gonna try to port this onto an attiny45, thank you for sharing!

  Are you sure? yes | no

krh3o wrote 07/02/2014 at 07:53 point
Hey ShiftSwift, sorry if I wasn't clear, I was talking about my setup, not the circuit you provided. I hoped to save you some time and effort. Let me explain in more detail...

No additional circuit is required to interface with your camera. Just use the pin as a high impedance input when you don't want to activate the shutter. Check out:

In the atmega328p datasheet, look up section 14.2.3, Table 14-1, Port Pin Configurations. It shows the different options for the AVR pins.

Here's an example of how to go between hi-z and output low. First go to hi-z state for the pins:
+ // PD6 input
+ DDRD &= ~(1<<DDD6);
+ // PD6 set low (hi-z when pin is input and set low)
+ PORTD &= ~(1<<PORTD6);

And then output to pull pin 6 low to take a picture:
+ DDRD |= (1<<DDD6);

And bring it back to input so it's hi-z again:
+ DDRD &= ~(1<<DDD6);

This way the Arduino never puts 5V on the camera and no extra circuit is required. When in the hi-z state, it's like a very very big resistor is between the shutter wire and ground. So no dangerous voltage is applied to the camera. When the pin is pulled low, the shutter wire is shorted to ground, which is exactly how the Canon simple push button shutter releases work. Make sense?

  Are you sure? yes | no

ShiftSwift wrote 07/02/2014 at 13:27 point
Yeah, That makes a lot of sense now... I didn't know the atmega328p could do that. I'll keep that in mind next time I do another project like this one. Thanks!

  Are you sure? yes | no

krh3o wrote 07/02/2014 at 00:26 point
I use Arduino's to control my Canon DSLRs. You don't need to toggle the pin between high and low. You can use high-z input and low output. High-z input will allow the pin floating at the 3.3V driven by the camera, without the Arduino sourcing or sinking current. Then pull the pin low to take a picture or focus. There's no need for external circuitry.

I just finished taking a few hundred photos for a time lapse with this setup. It works great and 5V is never applied to the camera... if you code it up correctly.

Have fun!

  Are you sure? yes | no

ShiftSwift wrote 07/02/2014 at 00:40 point
Hmm.... Cool! I'm glad my setup worked for you.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates