I have been working on a project to take high speed photographs of things like balloons popping.

I shoot in a completely dark room and use fairly fast shutterspeeds, but flash is what freezes the action.

I have a 2-sage trigger system using an Arduino. (I need to use a 2-stage system because my SLR takes about 50 MS to open the shutter after sending it a signal to do so - far too long to catch a balloon in mid pop.)

I have a photo gate trigger on the end of a straw and shoot a blow-dart through the straw. When the blowdart breaks the beam of the photo gate I turn off the LED light lighting the balloon, trip the camera's shutter (in "bulb" mode, which holds the camera shutter open as long as the contacts are connected) and then use a vibration detector to wait for the bang of the popping balloon. When I detect the pop I fire the flash, release the camera shutter, and turn the LED subject light back on.

I found this circuit:

enter image description here

...on David Houlding's electronics blog:


It uses both op-amps in an LM358.

It is quite sensitive. However, it's designed to send a logic level signal to an Arduino and have the Arduino trigger the flash.

I found in practice that by the time my Arduino code detects the change in state on the input line and pulls an output line high to fire the flash, the balloon is almost totally collapsed. (Apparently the edges of a popping balloon move at supersonic speeds, and that is the cause of the loud pop, so you need to act really fast to catch the beginning of the pop. I know how to write a very fast loop using Arduino register commands to detect the signal from the vibration detector, and use another register command to fire the flash. I have the code as optimized as I'm gonna get it.)

I therefore wired the output of the circuit directly to an opto-isolator, the phototransistor of which shorts the terminals of my flash and fires it. I also send the signal to the Arduino, which can then close the camera shutter and turn the LED light back on.

However, when I have the vibration circuit trigger the flash directly through an opto-isolator, my setup is sometimes triggering the flash several times while the balloon pops, creating overlapping ghost images.

The opto-isolator isn't really necessary for my flash because I know that it uses very low sync voltage, but some camera flashes put quite high voltages through their sync terminals (sometimes as high as 300 volts!) Using an opto-isolator is a good idea if anybody else uses this design. It also gives me a clean and easy way to short the flash sync terminals and keep the flashes positive and negative terminals isolated from the rest of the system.

I could use an SCR, but if I put a DC voltage through the SCR then it latches in the on position until I remove the voltage. That's OK for triggering the flash directly since it apparently removes the sync voltage after firing, but I need to both trigger my flash AND notify the Arduino that I detected a vibration.

I could try triggering an SCR to fire my flash and split the output of my vibration sensor to also send a logic signal to the Arduino, but I suspect the SCR's gate might sink too much current and prevent the Arduino from seeing the pulse.

There is a sample circuit in the CMOS Cookbook section on op-amps that responds to a "jittery" signal from a photocell by latching on for a full second and then turning back off.

enter image description here

(It's basically a long period monostable). I'd like to adapt my vibration circuit, which already uses a pair of op-amps, to latch the output high for several milliseconds after triggering, then reset and wait for another trigger.

I need the circuit to be as fast as possible. In this application every microsecond matters.

I know how to wire a monostable using a 555 timer, but have a feeling it would introduce too much latency to my circuit.

Can somebody recommend a circuit that is sensitive, fast responding, and latches it's output to the ON state for several milliseconds on each trigger event, ignoring jitter?


Folks, I have a couple of goals here. One is to achieve cool high speed photographs. The other is to learn more about electronics. A couple of people have pointed out that triggering my flash based on vibration may be "too late" to catch the early stages of a high speed event like a balloon popping. That's probably true, and I will probably switch to a pellet gun and use a ballistic sensor to calculate the trigger time. I'm still interested in knowing now to create a sensitive, fast-responding vibration sensor that sends out a single, multi-millisecond pulse for a single real-world event like a balloon popping or a squirrel jumping on a feeding station.

  • \$\begingroup\$ Would you please help me get my head around this, and give me some rough idea of timescales. Approximately what is the duration of a) the blow-dart to trigger the photo beam then moving on and hitting the balloon, and b) the ballon being hit by the blow-dart to being so collapsed that a photo is 'useless'? \$\endgroup\$
    – gbulmer
    Aug 7, 2014 at 0:22
  • 1
    \$\begingroup\$ If you were to use two photodetectors to measure the speed of the blow dart, and you knew the distance from the blow dart to the balloon, you could set a timer to trigger the flash at any time you wanted. \$\endgroup\$
    – EM Fields
    Aug 7, 2014 at 0:26
  • \$\begingroup\$ @EMFields, as WhatRoughBeast points out in his post, you need a projectile with a constant velocity for that. My blow-darts don't have that. \$\endgroup\$
    – Duncan C
    Aug 7, 2014 at 2:54
  • \$\begingroup\$ @gbulmer, the time from blow dart exiting the tube to hitting the balloon depends on the distance and how hard I blow. If I put the blow-dart launcher too close the balloon pops before the approx. 50 MS needed for my camera shutter to open. If I move it further back (say 2, 2.5 meters) then the delay is more like 100-150 MS. As for how long it takes for the balloon to fully pop after being pierced, I'm not sure. Things change quite rapidly though. If you took a picture every microsecond for 100 microseconds you'd see movement between pictures. It's not linear however. \$\endgroup\$
    – Duncan C
    Aug 7, 2014 at 2:58
  • \$\begingroup\$ @DuncanC: I've replied with an answer. \$\endgroup\$
    – EM Fields
    Aug 7, 2014 at 8:24

3 Answers 3


Duncan, rather than try to answer the question, I'm going to go on a tangent, inspired by my overwhelming belief that you are going about this the hard way. I speak as one who, many years ago, took a course in just this sort of thing under "Doc" Edgerton.

The first thing you need to do is replace the straw/dart combination with something with a consistent muzzle velocity. A pellet gun or BB gun is ideal. Trigger the electronics by shooting through two pieces of aluminum foil about a millimeter apart, and look for the two being shorted.

If you insist on using a battery rather than a power supply, start experimenting with the CD4000 series logic family. Otherwise, switch to a 5 volt supply and go with 74HC logic.

For logic, you can do something very simple, for instance


simulate this circuit – Schematic created using CircuitLab

With a consistent muzzle velocity, you don't need a vibration sensor. You just need a variable delay from detecting the short. And you don't need to automatically trigger the camera, either. What you do is first, arm the circuit, then turn out the lights, then trigger the camera (on bulb, as you are doing), then pull the trigger, then release the camera shutter, and finally turn on the lights. You adjust the amount of balloon deflation by adjusting the delay from short detection to flash trigger. You can put the foil assembly close to the balloon, but just outside the field of view of the camera. This way you need a short delay, and this will have less jitter than a long one.

Trust me, this works fine.

EDITED TO ADD CIRCUIT DESCRIPTION - The first two gates form a set-reset flip-flop. Grounding either input for more than about 20 nsec will cause the output of that gate to go high, and force the other side to go low. When the ground is removed, the state persists. Just for fun, I added an "armed" LED to show that the circuit is ready to go. It will turn on when the circuit is armed, and will turn off after the projectile triggers the flash. A one-shot is just another name for a monostable (or monostable multivibrator, to use full terminology). Assuming you do the sensible thing and go to a 5-volt supply, the one-shot of choice is the 74HC4538, http://www.nxp.com/documents/data_sheet/74HC_HCT4538.pdf What my block shows can be produced by one half of a 4538 configured to trigger on a rising edge. Upon receipt of a rising edge the output will go high (or low, depending on which output you use) after no more than 50 nsec, and will remain high (or low) for a duration which is selected an RC pair. Depending on choice of components the delay can range from about 150 nsec to 10s of milliseconds. What I did not show on the block diagram, but which I suspect you'd use, is a second one-shot of fixed pulse width, triggered by the end of the first pulse, which would actually go to strobe. Maybe not, since I don't know how your strobe is triggered. If the strobe is edge-triggered the second one-shot would not be necessary.

If you do decide to go this route, be aware that, although you can use a panel-mounted pot (variable resistor) to vary the delay, the connections from the pot to the one-shot should be as short as possible.

  • \$\begingroup\$ May be changing Variable delay and one can got photo of time series of bursting by shoot multiple ballons, inflated to same manner and each is relatively 'same' as the other from same purchased batch. May worth a try? Even 'seeing' camera at front, size and 45 degree angle will be nice photo and good science museum exhibit. \$\endgroup\$
    – EEd
    Aug 7, 2014 at 3:41
  • \$\begingroup\$ I agree. Leave the shutter open and use your trigger mechanism for the firing to start the variable timer to fire the flash. Even a microphone could start the timer. or a shroud on the photo transistor could see reflected light off off of the dart from an led placed right next to the transistor it could trigger the timer. The shroud on the transistor would block the led light and only "see" the light when reflected from the passing dart. \$\endgroup\$ Aug 7, 2014 at 5:50
  • \$\begingroup\$ What, I envy you the chance to work with Doc Edgerton. He was a genius and a pioneer. I'm trying to "stand on the shoulders of Giants." I may indeed have to give up on my blow darts and go with something like a pellet gun. These days computers are fast enough that you can use a "ballistic sensor" to calculate the projectile speed mid-flight, and trigger the flash at the ideal moment. (Toy air rifles probably have enough variability in muzzle velocity that assuming constant velocity would be a problem.) \$\endgroup\$
    – Duncan C
    Aug 7, 2014 at 13:35
  • \$\begingroup\$ Can you explain that circuit to me? Is the "one-shot" a monostable? What kind of latency can I expect from a monostable? Would a CMOS 555 based monostable give me microsecond-or-less latency between input and the triggering of the output pulse? \$\endgroup\$
    – Duncan C
    Aug 7, 2014 at 13:37
  • \$\begingroup\$ @DuncanC - No, a good pellet gun should have quite consistent muzzle velocity. See, for instance home2.fvcc.edu/~dhicketh/DiffEqns/spring07projects/… where the claim is made that a spring-action air gun can have better trajectory consistency than a conventional rifle. \$\endgroup\$ Aug 7, 2014 at 17:14

If the only issue with firing the flash directly is that you get multiple exposures, I'd put a discrete logic latch in the path to the SCR, and reset it with a pulse from the arduino. That way you get only the one flash, and the discrete logic shouldn't add anything significant to the response time.

  • \$\begingroup\$ Sounds like a good idea. The propagation delay for components like that is usually measured in nanoseconds, correct? \$\endgroup\$
    – Duncan C
    Aug 7, 2014 at 15:10
  • \$\begingroup\$ Yes, ~11ns delay \$\endgroup\$ Aug 7, 2014 at 17:40
  • \$\begingroup\$ What kind of latch? I need a latch that latches on the low to high transition and stays latched until reset. \$\endgroup\$
    – Duncan C
    Aug 13, 2014 at 15:44
  • \$\begingroup\$ A CMOS 4043, for example, passes the input through to the output until the store pin is pulled high. If I have to trigger the store command by software, it's already too late. (I'm getting multiple triggers before the Arduino can even react.) \$\endgroup\$
    – Duncan C
    Aug 13, 2014 at 15:51
  • \$\begingroup\$ Seems like a 4043 flip-flop would be better. I'd tie the vibration circuit to the set pin of one of the flip-flops, and attach the trigger on the flash to the output. When the output goes high it would latch high, and then I could reset it through software by pulling the reset pin high. Best, that chip is tristate, so I could pull the ENABLE pin low to switch off the flash. I think this is what I need. \$\endgroup\$
    – Duncan C
    Aug 13, 2014 at 15:54

1) Since D = Vt, If you know the distance, D, between two photosensors and you know how long, (t), it takes a blowgun launched dart to traverse them, the velocity of the dart will be V = D/t, regardless of how hard you blow.

Then, knowing the velocity of the dart and the distance to the target, the time to the target can be calculated from t = D/V and the flash triggered accordingly.

That's assuming, of course, negligible air resistance on the dart between the launch point and the surface of the balloon.

2) If the distance to the target is 1 meter and the dart is traveling at 10 meters per second, then the trip time will be 100 milliseconds of which, say, the sum of the time required to do the calculations, the time between the issuance of the flash TRIGGER command and the occurrence of the flash, and any other inherent system delays equals a millisecond.

That leaves a 99 millisecond delay to implement between launch and contact, and that delay can be had by loading its value into a digital down-counter and then counting to zero - the flash trigger point - with an appropriate clock; 'appropriate' being defined as that point in time during the balloon's burst cycle when the flash is desired to occur.

  • \$\begingroup\$ EM, I suspect that the flight characteristics of my home-made blow darts are inconsistent enough that a predictive approach wouldn't work very well (They're Q-tips, are irregular, the cotton "feathers" get out of shape easily, they fly slowly enough that air drag is going to be significant, etc, etc.) There is a commercial device known as a "Camera Axe" that has a ballistic sensor that does exactly what you describe, and it is able to take pictures of .22 rifle rounds in flight. I guess I need to switch to a pellet gun or other ballistic launcher and set up a ballistic sensor of my own. \$\endgroup\$
    – Duncan C
    Aug 7, 2014 at 13:31

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.