counting very short but infrequent pulses with comparator

Hello all,

I have a radiation detector that gives me roughly 10^5 negative signal pulses per second, each roughly 20 ns in width (Gaussian shape), and amplitudes ranging from 0 to 1 V (I can change this range, though). A few of these (<100/s) have an amplitude above a given threshold (for example, 100 mV). I would like to count how many times the signal amplitude goes above this threshold - for example in one minute or one hour.

Is it possible to discriminate and count such short pulses? Could someone kindly point me in the direction of how this should be done?

I apologize if this is a stupid question, I am not very experienced with electronics.

Thanks very much for any advice/suggestions!

This is not a trivial thing to do. 20-nsec pulses are "very" fast, you're talking about frequencies
in the 50 Mhz range. You will need to build a high-speed digital front-end that can deal
properly with whatever connection issues there are to the detector [ie, a 6" long wire is really
a transmission line here]. After that, maybe you could get an Arduino to count the pulses, as
100,000 pps is near the upper range for what an Arduino can do.

I would start with doing some background work on google, search on "nanosecond pulse detector".

Thank you for your response. I understand the difficulty, that's why I'm asking for advice. :confused:

I am able to accomplish the task with a so-called "timing filter amplifier", which comes in a NIM (nuclear physics instrumentation standard) module, but the cost (couple thousand) is prohibitive because I want to do it for about 100 channels.

I am trying at the moment to make a board with an "ultra fast comparator" connected to a monostable multivibrator circuit. I have been having some problems with it, though. I learned about Arduino very recently, and in my first hour of use, with help from a friend, I was able to make a device which counts TTL signals of lengths down to 20 ns or shorter (again not a high amount of signals per second, maybe 1000 maximum)... so now I'm looking for other ways to use this amazing machine, but the limits to me are not very clear because I'm a new user, so I'm hoping someone can give me a "yes or no" on whether or not what I describe is possible, before I waste hours and hours researching.

And about the transmission lines... yes, the signal comes via a 50 ohm BNC, I forgot to mention that.

And about the transmission lines... yes, the signal comes via a 50 ohm BNC, I forgot to mention that.

So, what you likely need on the receiving end is a very high-speed amplifier with a 50 ohm
termination, in order to prevent ringing. Then a very high-speed comparator with threshold
setting. Then, someone who's worked with such high-speed signals a lot more than me, :-).

I suggest you count every other pulse instead of every pulse. Connect the output of your ultra fast comparator to the clock of a 74AC74 D-type flip flip, wired in the divide-by-two configuration. Minimum clock pulse width for the 74AC74 is 5ns @ 5V, so your 20ns is long enough. At the output of the 74AC74, the minimum pulse width will be equal to the minimum interval between input pulses, which from what you say is around 10us. That is amply long enough to feed into the T1 pin of the atmega328 (aka digital pin 5), which can be used to clock 16-bit timer/counter 1 to count the pulses.

In the case that you count a low numbers of pulses and you need the pulse count to be exact, just look at the pin input state when you start counting and when you stop counting, and adjust the doubled count read from timer 1 by +/-1 as appropriate if the start and end states are different.

I wonder if a schmidt trigger used as a pulse stretcher wouldn't work better. When I needed to 'widen' a pulse I used (for non critical timing) a half monostable and a capacitor to store a little of the pulse and thus keep the gate open a little longer. When I needed repeatable timing I used a schmidt trigger.
I am assuming that you are simply totaling events that have no statistical references to anything and that you aren't measuring the energy levels of the pulses vs time or any other event.
My thinking is to buffer the pulse and spread out the pulse energy over time by storing it's value in a capacitor and allowing the capacitor a couple of time constants (20nS) to discharge. This would store a different voltage every time thus revealing the energy but destroying any time correlation.
There are a new class of Op-Amps that are directly capable of dealing with a pulse of that length in terms of storage and buffering. Ti - National Semi has a web based "Webench" tool for internet based amplifier design, sample and hold design too, all centered on high speed analog to digital data conversion. There should be a handful of 'reference' designs available and certainly one can be 'bent' into the shape you need.
For some reason Saelig comes to mind for sampling devices that are RS232 or PC based.


Why not cascade 3 counters and read them with the arduino, then reset them after read. 3 counters should divide by 1000+ and the resulting 12 bits can be interfaced directly. Or you can let them roll over and count the roll overs. Then you only need a schmitt trigger on the input.