A DIY Strobe Controller

This project addresses the need to trigger one or more strobes or speed lights (small flashes) multiple times during an exposure. For example, a stroboscopic effect can be achieved.

 
 
 

Situations

Why would one trigger a strobe multiple times during an exposure? I have met two situations (so far):

  • product photography with a large format camera. The bellows are extended, requiring exposure compensation, i.e. more light is required. In the case of flash photography, more power should come out of the strobe. The subject being close to the camera, a small aperture is required (f/32 or even f/45), which requires more light too. Once the strobe is set to its maximum power setting, triggering the flash(es) multiple times is necessary to achieve proper exposure. Yes, there are very powerful strobes on the market, but overcoming the limitations of what I have is more interesting.

  • interpretation of movement (dance, gymnastics, etc) can be explored with stroboscopic effects, often requiring multiple strobes.

It can be difficult to focus both on the composition, the action and counting the number of “pops” that the exposure requires.

So, let’s move to the drawing table to design a helper device…

Concept

What should that strobe triggering device do?

  • trigger strobes for a number of time that can be set by the photographer

  • strobes need time to “recycle”, that time increases with the strobe power setting. The higher the power, the longer the recycle time. The photographer will have to tell the device how long to wait before triggering the strobe(s) again.

These are the two variables of our system.

How can the sequence be started?

  • by the camera itself, via the PC connector, either on the camera’s body or on the lens (such as large format lenses). The sequence will be started when the camera’s trigger is released

  • by a ‘start’ button on the triggering controller itself. This helps verify enough time has been allocated for recycling the strobe(s) for example. No need to engage the camera, etc.

The system fits in a lighting system as follows:

The camera tells the controller when to start the sequence of ‘pops’

 

User Interface

The LCD is divided into left and right, the left hand side is used for the number of flash triggers we want, the right hand side being for the time between each ‘pop’ (number in millisecond). The user interacts with the system via 6 buttons:

  • < and > allow the use to select either the number of flash pops or the recycle time. The selected variable is shown with ‘>’ on the display (here, the number of pops)

  • + and - allow to respectively increase and decrease the selected variable. It makes sense to increase or decrease the number of flash pops by 1. Such a small change for the recycle time not only does not make sense, it’s also very annoying from a user experience standpoint. Changes to the recycle time are made in 250 millisecond steps.

  • the S button (on the right of the display) is used to start a sequence

  • the R button (on the left of the display) resets the variable to their default values (‘1’ and ‘250’ ms)

 

Schematics

Using off the shelf and open source electronics is always a good idea, it makes the design effort simpler, opens access to communities, etc.

The controller is designed around an Arduino Uno board, a couple of cheap electric components (resistors, capacitors, etc) and of course a little bit of software. The schematics below are simplified, they don’t show the LCD device

Schematics

Overall fairly simple:

  • each push button is connected to a debounce circuit, providing the Arduino with stable electric signals. Debouncing is possible in software of course, it makes the overall code more complex. This hardware version is made of readily available and very cheap components.

  • the 2-line LCD device is connected to the Arduino via its I2C bus. I chose an LCD device that was “on my shelf”.

  • the output stage to the flash/strobe connector is made of an optocoupler. Some strobes internal circuit work under high voltage. The optocoupler, a TS817, provides electrical isolation.

This circuit does not require the design of a PCB. Wire wrapping or soldering the components on an experimentation board works (no high frequencies involved). Care must be given not to make wire loops, which act like antennas and will be happy to inject glitches.

 

Software

The open source application, licensed under the BSD-3 license, is written in C and C++.

  • The setup() function configures the Arduino’s GPIO’s.

  • The loop() function reads the buttons (PINB), determines the action to take, updates the user interface and starts the sequence of flash pops.

A couple of C++ classes are the main components of the application

  • the class ‘display’ provides an. abstraction for the user interface, updates the variables as needed

  • the class ‘Newhaven_I2C’ implement a controller for the 2-line LCD model,

  • the class ‘var8b’ provides a simple abstraction for an 8-bit variable (increment ‘++’, decrement ‘- -’)

Nothing too fancy.

The source code is available here. Instructions are provided in the read-me file.

 

Achieving proper exposure for a large format camera

Here’s how to determine the number of flash ‘pops’ needed for a specific aperture. First, we start by establishing the exposure compensation due to the bellows extension. In stops: 2 * log (Bellow extension/focal length)/log 2.

Example: if we set a 210 mm lens to f/32, with the bellows extended to 300 mm, the increase in stops is : 2 * log (300/210)/log 2 ~ 1 stop.

So the total amount of flash power is f/32 + 1 stop = f/45.

Assuming a strobe can deliver f/8 for the ISO of the film the camera is loaded with, we need to trigger the flash multiple times to achieve f/45:

  • In stops: f/8 -> f/11 -> f/16 -> f/22 -> f/32 -> f45, that is 6 stops. A one stop increase means doubling the light, i.e. the flash must be triggered twice for each stop

  • In number of flash ‘pops’, the flash must be triggered 6 * 2 = 12 times.

That’s it…

 

Tests

A test was conducted, with the device set to 12 pops, 2 seconds recycle time. The subject, a TLR camera, was illuminated by a strip soft box, f/8 per flash pop. The lens 210 mm was on bulb. the ambient light was off (the room was pitch dark)

 

Enclosure

This section will be added soon.

 

List of Components

12 10k Ohm resistors

2 1k Ohm resistors

6 1uF capacitors

1 74HC14

1 Arduino UNO

1 2-line LCD display (model used was Newhaven NHD-0216K3Z-NSW-BBW-V3)

6 push buttons (SPST)

2 3.5 mm female jack (one as input from the lens, the other for the strobe)

2 PC817 optocouplers

small gauge electric wire