Time-delay camera flash controller

I'm building a module to control my off-camera flashes based on a combination of input sensors (sound, vibration, motion, or a pushbutton) and a time-delay. Basically I want precise control for high-speed applications, such as waterdrops, bullets, and such. I've got a handle on configuring various inputs, and for now I'm just prototyping this with a simple pushbutton. The problem I'm having is getting the right output voltage. I've scoped my hotshoe and I know my camera puts out 3mA, so that's no problem since the Arduino does 40mA (or so I've read). However, no matter how I scope things, I can't get a reading for hotshoe voltage. I've got a pretty beefy multimeter, but it's not giving any results. I've heard that the sync voltage is 250V, so in my hardware implementation, would I just use V=IR with those values and choose an 83k resistor?

Here's my code in case any other photographers want to play with it. It works fine, I just need to get the hardware correct:

int flashPin = 9; // sends signal to off-camera flash
int buttonPin = 5; // wired to a pushbutton, in future will be modified to multiple types of inputs (sound, vibration, etc)
int confirmPin = 2; // illuminates over flashDelay duration
int recyclePin = 11; // allows time for flash to recycle
int readyPin = 12; // blinks when system is ready to go

int flashDelay = 500; // time between trigger and flash

void setup()
{
  pinMode(flashPin, OUTPUT);
  pinMode(recyclePin, OUTPUT);
  pinMode(readyPin, OUTPUT);
  pinMode(confirmPin, OUTPUT);
  pinMode(buttonPin, INPUT);
}

void loop()
{
  if(digitalRead(buttonPin))
  {
    digitalWrite(confirmPin, HIGH);
    delay(flashDelay);
    digitalWrite(confirmPin, LOW);
    digitalWrite(flashPin, HIGH);
    digitalWrite(flashPin, LOW);
    recycleFlash();
  }
  else
  {
    readyFlash();
  }
}

void recycleFlash() // blink 3 times
{
  int outputdelay = 500 // use higher values for longer recycling times (i.e., higher flash outputs)
  for(int i = 0; i < 3; i++)
  {
    digitalWrite(recyclePin, HIGH);
    delay(ouputdelay);
    digitalWrite(recyclePin, LOW);
    delay(outputdelay);
  }
  return;
}

void readyFlash() // blink while ready
{
  digitalWrite(readyPin, HIGH);
  delay(200);
  digitalWrite(readyPin, LOW);
  delay(200);
}

Another question is the lines:

    digitalWrite(flashPin, HIGH);
    digitalWrite(flashPin, LOW);

Would that brief on/off be enough to trigger the flash, or should I have some sort of delaymicroseconds(xxx); in between them?

Future modifications include being able to directly input the delay time via serial monitor (or even 10-key / basic LCD screen) and the ability to select between multiple types of inputs.

I fire a range of guns with varying trigger voltages from about 10V to around 180V using single microsecond pulses to a MOC3020 opto triac.
Don't try connecting a flashgun directly to your Arduino.

What flashes are you using?

I'm using SB-900s and just having my Arduino enable & disable a 4N25 optoisolator through a 330ohm resistor, and then out to the flash's PC sync socket. Works fine, even with RF-602 radio triggers.

Vivitar 283s, Nissin (various), Pentax (various) plus some homebrew.

Kaouthia:
What flashes are you using?

I'm using SB-900s and just having my Arduino enable & disable a 4N25 optoisolator through a 330ohm resistor, and then out to the flash's PC sync socket. Works fine, even with RF-602 radio triggers.

LumoPro LP160.

Verdris:
LumoPro LP160.

As far as I can tell, they're not high voltage flashes (which makes them kinda expensive for a manual flash - Yongnuo YN-560 is half the price and looks to have all the same features but with a faster recycle time, repeat flash mode and - most importantly for your high speed photography needs - a seemingly much shorter flash duration at minimum power).

Anyways, they should be fine through a 4N25.

AWOL:
Vivitar 283s, Nissin (various), Pentax (various) plus some homebrew.

Oops, meant Verdris. :slight_smile:

Kaouthia:
What flashes are you using?

I'm using SB-900s and just having my Arduino enable & disable a 4N25 optoisolator through a 330ohm resistor, and then out to the flash's PC sync socket. Works fine, even with RF-602 radio triggers.

Would you mind sending me your circuit layout in a private message? My primary projects have me swamped and I'm basically "over it" and just want to get this set up and running.

This is basically how I have it hooked up.

http://openmoco.org/node/88

But my calculations gave me a different resistor value (330ohm), so work out what you need for what optoisolators you get.

I have 2 of these on my setup going to a 2.5mm stereo socket. Then I can either hook it up to the camera and use it as a camera trigger, or hook it up to the flash and use it as a flash trigger.