Need a fast, sensitive vibration sensor circuit that doesn’t jitter

operational-amplifiersensorvibration

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:

http://davidhoulding.blogspot.com/2014/02/high-sensitivity-vibration-sensor-using.html.

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?

EDIT:

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.

Best Answer

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

schematic

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.