...ARDUINO clock / speed ?

I intend to build a timed remote shutter release for a camera. For that I’d like to know if ARDUINO will open and close a relay within a fraction of a second (or to do what it takes to open and close a shutter in a camera). I know there is a parameter named millis(). For my purpose I would need to use as a fastest time of 0.125 millisecond (=1/8000th of a second).
Is that possible with an ARDUINO?
If not, what is be the fastest fraction of a second ARDUINO can provide to open and close a relay?
I would think this also depends on the relay itself (right?).
Feedback is highly appreciated.

I have no idea if this is right… but i will try to be as right as possible.
As the Arduino has 16Mhz it can do a single command in 1/16 000 000 of a second. So basically it should be very possible that you can to a code that is done in 1/8000th of a second…
Also i think youre right about the relay - this seems to be for me at least the crucial point…

It’s probably going to be the mechanics in the relay that will be the limiting factor.

Arduino even have a delayMircosecond() function.

Thanks for the kind feedback.

So an ARDUINO with 16MHz would be able to execute ‘0.125’ milliseconds defined in the code.
0.125 = millis();

I assumed a limiting factor would be the relay.
Actually in my design I have planned that one relay (a) closes the circuit and another relay (b) re-opens that circuit after 0.125 millis… This in the assumption to gain speed or at least to get closer to the 0.125 millis.

Any suggestions for ‘really fast’ relays other than a transistor?
…or another alternative?

0.125 millis

First on the software side you can’t use floating point numbers (ones that use fractions like .125) with functions that only work with whole integer numbers. For such fast timing functions your going to have to use the microsecond functions not the millisecond functions. .125 millisecs is equal to 125 microseconds.

Second on the electro-mechanical relay topic. There is no way you are going to get two normal relays to coordinate actions 125 microseconds apart. Relay contacts also ‘bounce’ on activation/deactivation and that can give false triggering unless dealt with. Relays normally work in the low millisecond range. You will have to utilize transistor switching if you have external circuits that require activation and/or deactivation in the microsecond ranges.


If your camera is not a mechanical one, you should be able to trigger it directly from a digital output, see this article:
No need for relays.
And this is another interesting one:

To ‘florinc’:
Thanks for the URLs I have consulted both of them.
Here is another really interesting link about the same topic:

I agree, the easiest would be as you suggest. But the thing is that I want to keep the devices electronically separated. This to to ensure that existing warranty agreements are not violated in any form. The cameras involved cost a few k$s.

to ‘retrolefty’:
ok, got it - not floating point numbers, I will use microseconds and assume the command would be micros().
Too bad Relays don’t work. That’s almost clear now.

Relay contacts also ‘bounce’ on activation/deactivation and that can give false triggering unless dealt with…

Would there be a reasonable way to deal with?

How could I accomplish the task with transistor switching and still keep the devices electrically separated?

To keep the devices electrically separated you can use an optocouple, where both sides belong to separate circuits, similar to relays.

Out of curiosity, how are you going to trigger the camera (if not electronically), with relays or otherwise? Are you going to build some mechanical device that clicks the button, driven by the relay?

Aha, an Optocoupler - great. This seems to be the solution.

Triggering the release is equally done like in a manual shutter release. Provided the camera is in ‘Bulb’-mode (meaning: while the trigger is pushed the shutter is open) the manual shutter release simply closes a circuit which in turn keeps the shutter open. Most of the Digital Camera that provide a manual release control the shutter speed that way. Many like a NIKON D300 or SIGMA SD14 allow to move the mirror-up upon tipping the release (to minimize vibrations) and then upon a second tipping of the release open the shutter.
But many photographers are not very happy with the camera makers as we are mostly limited to a max. of 30sec exposures.
So for a bracketing-job that breaks the 30sec. limit we are out of luck to obtain exposures in a fully controlled manner.
That’s why I’d like ARDUINO take care of bracketed exposures while the camera is in ‘Bulb’-mode. As described at the URL in the previous post. Actually J.Geerds is using an Optocoupler as you suggest (guess I’ve got to do my homework more serious).
Last open question is where to put the optocoupler onto the ARDUINO?

So you might wonder why I kind of try to re-invent what’s been done already. Actually I’d rahter not, but the shield as propsed in J.Geerds solution is no longer available (at least I haven’t gotten an answer from the providers at ‘nuelectronics.com’ for the past 2+ weeks by now). Therefore I started to get involved trying to find a way to obtain the same with another LCD Keypad module (16*2 HD44780) for ARDUINO. During that process I became really exited about ARDUINO and try to understand it all. I will certainly do more projects with it once I’ve got my photo-shooting under control.

Now you know the whole story.
Thanks for your attention, I know to appreciate it.