This intervalometer / remote timer has been built and based on code kindly provided by “the roaming drone” and then modified
. The main function of this intervalometer system is to allow automated exposure control of the camera using the bulb mode by varying the length of the control pulse that keeps the shutter open using an external light sensor to calculate the correct camera settings. When used for time lapse photography it should minimise the dreaded flicker that occurs when Av or TV modes are used to adjust the exposure over a long time lapse sequence.
The Box
As the system is based on the Arduino mega microprocessor I decided to expand the options available to me by including the Toas TSL230R IC for exposure control using bulb and iso ramping and the DS1307 RTC for pre-programming a shooting sequence. The automated bulb ramping and iso ramping functions are being developed to cater for the lighting changes that occur during dawn and dusk without manual intervention so that the shutter speed and iso settings can be adjusted together without changing the exposure.
The in’s and out’s
Reprogramming the Arduino allows me to do pretty much anything I want with my cameras so I’ve no doubt it will be used for a lot of projects. A simple ramping intervalometer programme can be found here
The code is written to avoid any delay() type functions so it is non-blocking and the keybuttons remain fully functional even when the camera is being controlled.
Currently the box is programmed to control the Camera shutter and focus functions, it has a feedback circuit triggered by the flash socket on the camera which confirms the camera fired. It can manually or automatically vary the shutter speed in bulb mode from as little as 60 milliseconds to days.
I won’t even begin to describe how the dynamic exposure metering works but would highly recommend Chris’s website for a wealth of information.
Inside the aluminium project box:
- An Aduino Mega microprocessor.
- A 2200 mAH rechargable lithium battery for standalone use.
- A DS1307 RTC (real time clock).
- A Taos TSL230R frequency to light convertor IC
that handles the exposure control. - A 20 x 4 backlit LCD display.
- 5 momentary push buttons
- A green ‘shutter open’ led
- A lot of wire and stuff.
The Taos TSL230R IC
The basic interface to the camera shutter and focus using 4N35 opto isolators to remove any possibility of unwelcome voltages getting into the camera.
Typical interface using the 4N35 opto isolator
Things to do:
- Improve the user interface and the GUI.
- Develop the bulb ramping and iso ramping process to allow the system to adjust the exposures during sunsets and sunrises.
- Interface the Arduino to a netbook so the DSLR Remote Pro library can be used to adjust camera parameters, again without touching the camera.
- Add HDR functionality for bracketing photographs across the boundary of 30 seconds. i.e avoiding the need to touch the camera to switch from manual to bulb modes.
- Add the schedule programmming for non-attended shooting.
- Sort out a method to retain the last user settings in the EEPROM memory
This is the first post on the project and a lot more will follow
23/05/10 – First test with the new system
Time lapse – Arduino ramping Test from Kevin Lewis on Vimeo.
A time lapse test with the Arduino control system taken from 30 minutes before sunset at 2130 until 2.5 hours after it finishing at midnight. The session was used to tune up an automated control system aimed at minimising flicker. If the clouds hadn’t come along then I would of carried on shooting.
The initial exposure was 1/80 second @ f5.6 iso 100 and at the end it was 22 seconds @ f5.6 iso 1000
The Canon 7D and 10-22mm lens were connected to an arduino which was running a program to control the bulb exposure length based on the readings from an external light meter. The arduino also controlled the iso ramping during the sequence
Until the exposure was longer than about 1/20second it was necessary to use manual adjustment of the shutter speed and iso using DSLR Remote Pro running on a netbook. From about 45 seconds the system did everything, I do need to work on controlling the progression of the exposure sequence to stop the slight bouncing that is visible and I’ve also found some hot pixels
BUT I think I’ve resolved that after doing a quick test here
No attempt has been made to remove birds, flicker or process the images before compiling the video.
Early days but getting there
Simple arduino code can be copied from here to run the project as a normal camera intervalometer.
quite intriguing post
Hi Kev,
two thumbs up for your work on that project, absolutely stunning!
If you manage to get this system running smooth, the Guys at TimeLapse.org and a lot of other Astro-TimeLapsers like me (fighting with Day-Night-Transition and back), sitting hours and hours in front of our Machines doing NEF/RAW-Post supersecret/whizz workflows, will be more than thankful. I guess you could sell a Zillion of that little box!!! Pls let me know if you plan to do a small series. If I do not have to sell my home for it, I’d take one, that is for sure.
Cheers,
Chris
Pingback: My first Arduino project and a brief introduction to time lapse photography with DSLRs | Along the way
Hi Kev,
Thanks for all the help. Have my second prototype working now. I’ve written a post with some sample footage here:
http://www.johncarolin.com/?p=2027
Next step will be to get a handle of ISO and aperture ramping directly over USB. Need to find the time somewhere.
Thanks for the prompt reply Kev! I’ve definitely learnt a bit from your write up and response.
Have you taken a look at the library that is being developed to control Canon’s over USB? This seems like it might be a very simply way to trigger a camera, with the required iso settings without having to use DSLR Remote pro:
http://www.circuitsathome.com/canon-eos-cameras-principles-of-interfacing-and-library-description
http://github.com/felis/Arduino_Camera_Control
I would be interested to hear your thoughts!
@photosbykev
Thanks for the link, I’ll take a look
Kev
Very interesting write up and great looking finish too! I’ve taken a look at this and the roaming drone arduino intervalometer and I really like the ISO ramping that you have introduced here. I am really interested to understand how you have been able to communicate ISO to the camera, if you are in fact doing this, which it looks like you are. Or are you adjusting the aperture and ISO with DSLR Remote Pro based on the LCD output calculated by your code? I had previously only thought it possible to adjust the exposure by using the bulb setting, unless you are using a servo on the aperture ring of a manual lens? (Which leaves the ISO question unanswered). I would very much appreciate the answers to this question and look forward to hearing about any of your updates.
Thanks,
John
I’ve started playing with a hotkey script that communicates via the DSLR Remote pro library to vary the iso on the camera. The script waits for a serial communication from the arduino to make this iso change and at the same time adjust the bulb duration to maintain the exposure value. This serial communication simulates a keypress which the hotkey script responses to. It’s relatively simple to do but I haven’t played with it seriously other than to prove it works. Remote control of the aperture can be done using a servo drive and there is a chap on the Timescapes forum that is active with that system.
The main reason why I’ve looked at this is to avoid any contact with the camera during the timelapse sequence and to allow me to expand the time over which I can remotely control the camera suring the changing light conditions during dawn and dust.
regards
Kev
Thx for the fast respond.
I will tray it, and if I have a problem I will ask you if isn´t a problem.
Thanks
Deyan
Hi,
this is interestin thing thing that I have to make. Culd you post some sircuit diagram to try it. I sow the drone page, but as I am new to this I don´t undersend it very good.
Thanks
Deyan
The important circuit I’ve posted i.e the opto-isolator to protect the camera against any voltage spikes. This is my pin assignments for the project which will help, the datasheets for the TSL230Rand DS1307 ICs will provide the pin outs from them
Pin Assignments
Camera functions
Shutter trigger – digital pin 22
Focus tap – digital pin 23
Pc Sync – digital pin 24
Cam Triggered LED – digital pin 25
20 x 4 Blue LCD using LiquidCrystal library
LCD Vss to Gnd
LCD Vdd to +5v
LCD RS pin to digital pin 31
LCD Enable pin to digital pin 33
LCD R/W pin to Gnd
LCD D4 pin to digital pin 35
LCD D5 pin to digital pin 37
LCD D6 pin to digital pin 39
LCD D7 pin to digital pin 41
10K trim pot for contrast:
Pot track ends to +5V and Gnd
LCD VO pin to Pot wiper
LED +ve to digital pin 29
LED -ve to 0v
DS1307 RTC module using Wire.h library
RTC SCL to Arduino SCL
RTC SDA to Arduino SDA
RTC +5v to +5v
RTC Gnd to Gnd
TSL230R Light to Frequency convertor
TSL S0 to digital pin 42
TSL S1 to digital pin 43
TSL S2 to digital pin 44
TSL S3 to digital pin 45
TSL OE to Gnd
TSL Vcc to +5v
TSL Gnd to Gnd
TSL OUT to digital pin 2 (interrupt)
0.1microF capacitor (stamped 104) between +5v and Gnd
maybe Interrupt on digital pin 8 from TSL OUT using Lightrail
(leave pin empty)
Push buttons (HIGH = pressed)
Btn 0 to digital pin 49 – Left
Btn 1 to digital pin 50 – Right
Btn 2 to digital pin 51 – Up
Btn 3 to digital pin 52 – Down
Btn 4 to digital pin 53 – Centre
Li Battery Voltage Sensing hardwired to analogue pin 0
(do not use Analogue pin 0 for anything else)
Pingback: Arduino Intervalometer Source Code for Digital Cameras | PhotosbyKev