This is a project for a small low power device to act as a shutter controller for Canon EOS cameras. One of the objectives of this project is for me to learn how to use the internal timers and interrupts of the Attiny45.
Congratulations on the purc.. err construction of the SHTTTRRR, the first intervalometer with no vowels in its name. It's use is simple, with single button interface.
Usage
1- Place camera on tripod or loosely piled rocks.
2- Connect camera to SHTTTRRR with cable (not provided)
3- Place on-off switch to the on position.
4- Power camera on.
5- Press momentary switch to signal start of interval
6- Wait for as long as you want
7- Press momentary switch again to signal the end of the interval
8- Let it work. LED will flash after each take.
Maintenance
Keep away from rain.
Clean with a not too damp cloth.
Limitations
No femptosecond mode.
Use of patience to set interval.
Warranty
No warranty is hereby granted. User is encouraged to modify product as it suites.
It was the time to test with the camera. I connected the camera to the SHTTTRRR, programmed it and waited.... and the LED flashed but the camera didn't shot. I tried to make adjusts to the code, but the camera continued in silence. Time to look to the board. I noticed that the camera stayed with the screen dark, like it was taking a photo. This made me think if the transistor was well wired. I checked and all was OK. Then I thought, that maybe I had an undefined state on the transistor pin. To debug I soldered a 1K resistor between the base of the transistor and the ground. Back to test and.... still nothing. I desoldered it, and whit the help of a multimeter measured the voltage on the output pin of the MC to to transistor, and I read a value between 0 and 120 mV. This made me suspect of the resistor between the transistor and the MC. I removed it and... presto! It works.
As stated before, i didn't want to use long delays to separate between photos. What I wanted was for the MC to wake up, check if it timed out and if so take a pic. To do so I altered the ISR code relative to the watchdog timer, to this:
As a first approach i wanted to find out how to count the time between two button presses. Based on this project I would use a one second watchdog timer in interrupt mode to increment a counter:
ISR(WDT_vect)
{
seconds++;
}
Instead of the buttons being pooled, I also implemented a hardware pin interrupt. When the interrupt occours, the ISR function is called with the PCINT0 vector, as this:
The unset_interrupt() function stops the hardware interrupt, eliminating interference, and after running the code, we use set_interrupt() to re-enable the hardware interrupt.
The function get_second() gets the current second, using atomic operation, from the seconds variable.
I love photography! In particular I love the way photography enables one to play with time, space and light. One of the things I love in photography is time lapse photo. I have a capable reflex machine (Canon 1000D) but it lacks time lapse capability. Fortunately it has an external trigger port (1,6 mm stereo jack also called LANC) for use with an electric shutter trigger. This port is very simple, as you can see the pinout here. I macgyvered a simple shutter with an Arduino Mega. a resistor and a transistor. You can see that early attempt here.
Obviously this was overkill. What I needed was a small box with a simple control for variable shutter times.
Hi and well done !
It does the job and that's the best kind of project. You may be intersted in a very similar (not mine) and taken further project :
http://cms.diodenring.de/electronic/microcontroller/82-intervalltimerv2