I have a 40 mm hole which I shoot through with an air rifle. The diameter of the bullet is 4,5 mm and length is 5 mm. It's speed is max 200 m/s. I calculated that 40 000 samples in a second would be enough. (Which is wrong, 100 000 is right.)

I must detect the bullet when it flies through the hole. I have figured two different systems to do that.

  1. Two parallel mirrors. One on both sides of the hole. A laser beam zigzagging between these mirrors and a light detector. Here's a picture of it. The small circle which represents the bullet is in scale with the bigger.
    Zigzagging laser

  2. The "normal" system which is used in chronographs. It has only a light detector and detects the shadow of the bullet.

I think that the first method would be easier to construct because it would cause a very big change in the light detector. The shadow of the bullet is very small and it would require an amplifier to detect it.

Does somebody have other ideas?

  • \$\begingroup\$ No specific advice but I've also seen units with a "rabbit's ear" arrangement that work much the same as a metal detector. The problem I see with option 1 is you're looking at a narrow beam that will only cover one axis well (say up down) so won't help if you're off to the side. \$\endgroup\$ – PeterJ Feb 26 '13 at 10:50
  • \$\begingroup\$ Your laser method works in theory, but aligning the mirrors, and keeping them aligned won't be trivial. \$\endgroup\$ – Olin Lathrop Feb 26 '13 at 14:44
  • \$\begingroup\$ Exactly. As olin says the laser method will be quite difficult and you won't get even coverage. The second method is used as you said and it is better. \$\endgroup\$ – Gustavo Litovsky Feb 26 '13 at 16:05

I haven't done this, but my first thought is to use light, or more specifically detect the shadow of the bullet. However, I wouldn't rely on ambient light. I'd use a deliberate light source, probably a IR LED. A small string of IR detectors would be accross the hole from the LED, spaced so that at least one of them will see the bullet shadow regardless of where it passes thru the hole. All this would be mounted on the back side of the hole to avoide damage from a mis-aimed bullet. The LED can be a little ways sideways from the hole so that it's beams are more parallel accross the back of the hole.

The speed of your bullet is 200 m/s, which means it takes 5 µs per mm. The bullet is 5 mm long, so the duration of the shadow is 25 µs. If you just amplify the detector signals and present them to a processor, you'd have to sample every 10 µs or so, which is 100 kHz. I have no idea where you got 40 kHz from, but that is too slow.

10 µs/sample is fast but doable. Some of the dsPICs can run at 40 MHz instruction rate, so that gives you 400 instructions/sample, which is actually quite a lot. The problem is you need multiple detectors, maybe around 10 of them. 40 instructions/sample might be doable if you write the code carefully and keep the A/D going overlapped with processing the previous sample.

Brute force fast sampling may actually be a good way to do this. It would certainly be the simplest in terms of hardware. However, there are some other possibilities that greatly reduce the firmware burden for a modest increase in hardware complexity and cost.

One possibility is to combine the multiple sensor signals into one in analog. Simply averaging may be good enough, although you lose some signal to noise ratio. If only 1 sensor of 10 sees the shadow, then the signal will be down by 90% or 20 dB. Still that might be doable. There should not be a lot of high frequency ambient noise at the detector wavelength, so the no-bullet signal should be pretty clean. With a 12 bit A/D, it's quite possible that a bullet can be reliably detected by simply looking at the average. Each of the signals would be high pass filtered first, and then amplified so that a bullet shadow is nearly full scale. Averaging 10 of those would result in 1/10 of full scale signal, which is most likely good enough compared to the noise level.

Another possibility is to take the minimum of all the signals in analog after each one is separately high pass filtered. The resulting signal would then be the largest short term dip measured by any sensor. This is a bit more complicated in analog, but should certainly give you a strong and clear signal that the micro only needs to sample every 10 µs, which we already determined was a "long" time.

Brute force hardware would put a separate shadow to digital signal circuit after every detector. These can be ANDed to yield a single digital signal that indicates the bullet shadow. This may be the way to go if you are allergic to microcontrollers. Personally I don't like this approach because I'd rather have the micro interpreting the analog signals or signal so that there is opportunity to do some intelligent filtering.

In any case, attention to getting a good clean signal from each sensor in the first place will be worth it. The LED should shine accross the back of the hole, only a few mm behind it. There should be baffles around the LED and the light sensors so that ambient light can't get directly into the sensors from any angle. I think the signal to noise ratio will be quite good with a fairly easy to build setup.


I just had a thought about how to possibly combine the signals in analog very easily. Assuming each sensor is a reverse-biased photodiode, the current thru each will be proportional to the light hitting it. In effect, the light makes the diode leak when reverse biased. The leakage current is rather insensitive to voltage accross the diode, once it gets to a volt or so.

The idea therefore is to put all the photodiodes in series. When sufficient voltage is applied to the string, the current will be limited by the diode seeing the least light. When a bullet comes along, the one diode in the shadow will limit the current, even if the others are dead shorts. In this special case, you get a min function just by stringing the sensors in series. This also means you only need a single filter and amplifier circuit.

  • \$\begingroup\$ I calculated again, and now I dont know either, how I got 40kHz. I'm going to use AVR to do this. Some AVRs have max 32 MHz of clock rate. Would it be enough? \$\endgroup\$ – Kestis Feb 26 '13 at 14:50
  • \$\begingroup\$ @Kestis: I don't know about AVRs, as I've never used one. In know some of the dsPICs could do this job well. \$\endgroup\$ – Olin Lathrop Feb 26 '13 at 14:52
  • \$\begingroup\$ The idea of putting photodiodes in series is great. That's how I'll do it unless something much better comes up. \$\endgroup\$ – Kestis Feb 26 '13 at 15:48

Could you not just use a microphone to detect the sudden increase in air pressue (AKA "the bang") and trigger from that?

  • \$\begingroup\$ This won't work because sound is too slow. I must get as accurate measure as possible. \$\endgroup\$ – Kestis Feb 26 '13 at 11:04
  • \$\begingroup\$ @Kestis, remember you're measuring speed between two points, as long as the delay is constant for both the entry and exit points it shouldn't matter. Although as an air rifle is typically subsonic I'm not sure how well this would work in practice. \$\endgroup\$ – PeterJ Feb 26 '13 at 11:08
  • \$\begingroup\$ No. You may think that I'm also building a chronograph but I'm not. I just have to know the exact time of bullet passing by. \$\endgroup\$ – Kestis Feb 26 '13 at 11:10
  • 1
    \$\begingroup\$ Sound is only slow if the mic is a long way away, if it's right next to the muzzle there is very little delay. It would be nice if you did some maths before telling me it won't work. \$\endgroup\$ – John U Feb 26 '13 at 11:17
  • \$\begingroup\$ Timing in my device must be very accurate. It's about microseconds. So it takes about 120 microseconds for the sound to go 40 mm \$\endgroup\$ – Kestis Feb 26 '13 at 12:10

If the bullet is magnetic you could use a coil to detect it. With some modification you could use a simple metal detection circuit:

enter image description here

But that's probably not the best solution because it would need an amplifier and a edge detection.


I would forgo all the shadow based concepts and work on a reflective unit, simply because with a few optic components you can save your money and spend it on faster, brighter and more sensitive emitters and receivers and you need only buy one of each.

The key here is that you'll want to use some filter material such that the only the emitted light's wavelengths make it back into the receiver. On top of that it's entirely possibly to get emitters and receivers that run in the 10's of MHz (or even 100's or more but that's not necessary) so modulation/demodulation will also force further rejection of stray light. and the third aspect is that you should also geometrically restrict light direction that is received (and also probably emitted if using a laser).

You can get laser line emitters that are easily modulated, but barring (the cost of) that even some super bright NIR LED's with simple rod lenses and masks (to get a nice stripe of light projected) I'd say you could even get some bright visible LED's today. Like wise you can use a rod lens or simple lens (aberrations are not important here, you're just collecting light) on the collection side feeding into a PiN detector, run it with a trans-impedance amplifier (to make you you get the speed needed), demodulate it for background suppression and you should get timing easily at the 10's of ns with a little care.

You can get large detectors that run fast and you should use bright (low f/#) optics. I'd match the f/# so that the numerical aperture of the lens matches the zone angle of view that you want to watch.

To further improve performance, line your "box" or "ring" with a black matte material so that the detectors have a black background that they normally see (which must also absorb the light emitted) I'd use black satellite paint. You can angle that surface to further prevent specular reflections.

You will have to have some sort of level thresholding to adjust the detector trigger output, in the simplest system. But you can get extremely fancy in this too.

enter image description here


Not the answer you're looking for? Browse other questions tagged or ask your own question.