I'm looking for a way to take pictures at an interval that is precise up to two decimal places using my Canon 550D. Is that possible, preferably using Magic Lantern or some other software solution?

The reason why I want to do this is the following:

I'm using a 33rpm vinyl turntable as a rotating table on which I placed a plant. Now I want to create a time-lapse of the growth of the plant while it appears to rotate only a little bit every frame. However, in real life it completes one rotation every 1.82 seconds. If I would take a picture every 1.82 seconds the plant would appear to be non-rotating. By adding a phase shift of several hundreds of seconds I hope to capture the plant as if it rotates very little every frame.
Why this elaborate scheme? This is what I have lying around and I thought I would give a try.

As I read the question back I realise it's very specific, but a possible answer could come in handy for scientific applications as well so I hope that the question will be kept open.

  • \$\begingroup\$ Could you not turn the turntable by hand? Would take a while, but easy enough. \$\endgroup\$
    – alex
    Commented Aug 19, 2014 at 0:03
  • \$\begingroup\$ @alex Perhaps he is wanting to document the effect of being on a constantly rotating turntable on the plant's growth? \$\endgroup\$
    – Michael C
    Commented Aug 19, 2014 at 0:04
  • 1
    \$\begingroup\$ Whoops, I skimmed past the part about the thing growing. I just thought you wanted a couple of seconds of spinning plant. Yes, doing that by hand would be a daft idea. \$\endgroup\$
    – alex
    Commented Aug 19, 2014 at 5:45
  • 1
    \$\begingroup\$ Triggertrap can probably do it. You'll need an Android or iOS device and a trigger dongle for the camera, about $40. Use the timelapse function, it can be set in intervals of 1/100th of a second. This is a comment rather than a reply since I don't know whether you'll get 10ms accuracy in practice, or whether the LP player RPM will stay that accurate over 12 hours. For accuracy I'd go with Russell's suggestion. \$\endgroup\$ Commented Sep 30, 2014 at 14:38
  • 1
    \$\begingroup\$ 1.82 seconds in 12 hours is a part in ~ 24000. To resolve that down to say 5 degree steps is ~ 1 in 2 million. That's hard. If - as per my answer - you sync it on the start of the revolution following a trigger event and then count off some indicator of fractions of a turn it becomes close to trivially easy. Even if you have never used an arduino they are easy to use, easy to learn (for most values of easy) and can easily do what you want. Almost any other solution using off-the-shelf solutions is hard to very hard, or worse. \$\endgroup\$ Commented Oct 1, 2014 at 8:19

2 Answers 2


What you want to do should actually be possible.

First of all, you'll want to download the Canon SDK (Software Development Kit) from http://www.usa.canon.com/cusa/consumer/standard_display/sdk_homepage.

Since you appear to be in Europe, your page is http://www.didp.canon-europa.com/ (found from the Canon USA page linked above).

It indicates the SDK is compatible with the 550D, although you'll have to submit a registration to download the SDK (Canon makes you promise not to do some things to their cameras that they feel will be detrimental to their business).

The (possibly) tricky part is the kit has been written in C. This means that you'll need a bit of developer skill to link your code (C, C++, ObjectiveC or other C-linkable language) to the Canon libraries. It's not insanely difficult, but if you've not written code before, you'll probably want to find a developer friend to help you get set up.

I have no idea if your turntable is accurate to 10ms per revolution, but setting your initial loop to 1820ms (1.82s) would allow you to determine how accurate the whole setup is, and allow you to tweak from there.

Once you have a simple initial app which, say clicks the shutter every 1810ms or 1830ms (this will give you the two decimal place control you are looking for), you may find that there is a lag preventing low latency (ie. you cannot precisely time the first shot), but the lag should be very consistent, giving you high accuracy in your relative timing (ie. the shot-to-shot time should be the proper interval).

I hope that is helpful!



What would be easier to do accurately is to have a system that combines a timing function with a system that gives an index signal at the start of a revolution and then series of pulses indicating rotational increments. This is easy to do in a number of ways. Use of an Arduino or similar could see the core part implemented for under $10*.

Once you have the ability to trigger the camera a set number of rotation increments after the index point you use a timer for the gross delay, wait for the next index point, count off rotation steps and fire. The timer could be part of the arduino code if desired.

Index pulse is easy

  • contact on microswitch

  • or reed switch and magnet

  • or hall sensor and magnet

  • or ... .

Rotational increments signal:

  • Rotational increments could be timed if motor speed is accurate enough - which it may well be.

  • Or there may be teeth on an internal gear that could be persuaded to give an optical signal.

  • Or you could run a friction wheel on the turntable rim and run an opto interrupter on that. (Old mechanical mouse has interrupter disk and opto sensor).

  • Or an optical track (alternate white/black checks with opto sensor). Some turntables have such a disk available.

  • Or the AC signal to the motor zero crossing detected and made to make a square waave.

  • Or ...

$2.10 Arduino:

  • I imported 10 x bottom end Arduino's from China for $US21 for 10 with free postage. $US2.10 for a basic processor opens up all sorts of possibilities.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.