Pulse Height Analysis with a Flash ADC and a Propeller???
ElectricAye
Posts: 4,561
Hi y'all,
I've been working on a pulse height analyzer that basically uses a ladder of comparators, each of which feeds into a pin on a Propeller that registers on a cog's counter module. At the end of every data frame, my software reads all the counters and thus gives something of a crude "spectrum" for the heights of the pulses. Problem is, lots of comparators equates to lots of soldering, etc. and with this design I would be very limited in how many pulse heights I can resolve to, so I started pondering the possibility of using a Flash ADC to eliminate the ladder of comparators and to maybe give more resolution. I'm hoping to count (and register the heights of) roughly 1 million to 10 million pulses per second... But I know less than nothing about ADCs. In fact, my idea to use a Flash ADC is quite accidental and I might be completely out of my mind to even suggest such a thing.
Anybody out there have any suggestions or comments about taking this approach? Suggestions for particular chips to look at? or to avoid?
many thanks,
Mark
I've been working on a pulse height analyzer that basically uses a ladder of comparators, each of which feeds into a pin on a Propeller that registers on a cog's counter module. At the end of every data frame, my software reads all the counters and thus gives something of a crude "spectrum" for the heights of the pulses. Problem is, lots of comparators equates to lots of soldering, etc. and with this design I would be very limited in how many pulse heights I can resolve to, so I started pondering the possibility of using a Flash ADC to eliminate the ladder of comparators and to maybe give more resolution. I'm hoping to count (and register the heights of) roughly 1 million to 10 million pulses per second... But I know less than nothing about ADCs. In fact, my idea to use a Flash ADC is quite accidental and I might be completely out of my mind to even suggest such a thing.
Anybody out there have any suggestions or comments about taking this approach? Suggestions for particular chips to look at? or to avoid?
many thanks,
Mark
Comments
'Interesting project! Is this for some kind of gamma-ray spectroscopy? Are you looking for peak values? Are the pulses distinct, or can they overlap? (Actually, you are not out of your mind to use a flash ADC. It's probably the optimum solution for what you're trying to do.)
-Phil
Hi Phil,
thanks for your interest. To answer: I first started working on this photon pulse height analyzer to help study bioluminescence. But as I've trudged along, I keep learning new things, so it's morphing into a unit that I hope can be easily customized for a variety of purposes, including gamma ray spectroscopy, cosmic ray doo-hickeys, etc. The reason I originally chose the Propeller is because its parallel processors seemed like a crude but easy way to monitor various pulse heights via a ladder of comparators, but I've learned a lot from the people on this forum, so I'm looking at other ways to use the Propeller for this.
Knowing the peak value of each pulse is the main idea so that an energy spectrum of emissions can be generated over time. These pulses come from a photomultiplier, so sometimes they overlap, create pile ups, etc. especially when the count rate gets high. My original design was to use coincidence counting (two photomultiplier tubes etc. AND gated- to reduce false counts caused by internal scintillations, etc.) I haven't got that far, though. And I'm not sure if coincidence counting could be used with a Flash ADC. It's the prospect of having to solder all those comparators together that got my brain off its butt and looking at other options.
cheers,
Mark
1. Typical and maximum heights (volts)?
2. Shape (Gaussian)?
3. Width (FWHM in usec or nsec)?
I do like your comparator approach, BTW. It eliminates the need for a hardware peak detector.
-Phil
Leon
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Amateur radio callsign: G1HSM
Suzuki SV1000S motorcycle
Post Edited (Ale) : 1/8/2009 10:45:42 AM GMT
Lets assume your maximum pulse rate is 10 MHz. The individual pulses will be somewhat shorter I suspect but a filter can spread the length of each pulse out to ensure you are getting a good average reading of each one. I'll take a bit of a stab here and say a 40 MHz cutoff will do the job. Then, all you need to do is sample at 400 MHz.
Flash ADC
From Wikipedia, the free encyclopedia
Jump to: navigation, search
A Flash ADC (also known as a Direct conversion ADC) is a type of analog-to-digital converter that uses a linear voltage ladder with a comparator at each "rung" of the ladder to compare the input voltage to successive reference voltages. Often these reference ladders are constructed of many resistors; however modern implementations show that also capacitive voltage division is possible. The output of these comparators is generally fed into a digital encoder which converts the inputs into a binary value (the collected outputs from the comparators can be thought of as a unary value).
Wiki Ref:
en.wikipedia.org/wiki/Flash_ADC
And another one:Understanding Flash ADCs
www.maxim-ic.com/appnotes.cfm/appnote_number/810/CMP/WP-17
I haven't have my morning coffee yet and have already learned something new. It's going to be a great day
Good luck with it Mark
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Aka: CosmicBob
Post Edited (Bob Lawrence (VE1RLL)) : 1/8/2009 11:47:39 AM GMT
The biologists I'm helping with this aren't sure what kind of pulses to expect, which is why I'm helping them - they know I'm as clueless as they are, and they know I'll tolerate all sorts of ambiguity and "WTF caused THAT?" daily mushroomcloud events, not to mention "Money? You want money? WTF for?" etc. So, to get the ball rolling, I decided to begin with a "photon counter" approach and work from there.
When I allow a few photons to hit the photomultiplier tubes (whose negative output pulses are inverted and amplified x10), I get pulses on the Oscope that are roughly 25 mV up to an occasional 300mV or so. Some of these pulses are results of cosmic rays, etc. hitting the tubes and the surrounding materials. Eyeballing the Oscope, I'd say the larger pulses have a FWHM of roughly 100 ns. But that's just a guess. As for shape, um, I suppose a Gaussian is about right but they tend to have a "tail" that lingers after the initial peak drops down to about 30% of the peak height. Some of what shapes the pulses has to to with my bad wiring/capacitance issues, etc., I think. But these are just background events and not the actual thing I'll be measuring. The actual experiment will be gazing into a total unknown, so.... I'm clueless as usual.
Originally I guessed that I could ANDgate some comparators and get coincidence counting by a "brute force" approach and get a crude spectrum via the Propeller's cog counter modules. But my first step has been to use only one photomultiplier and a digital pot that periodically changes the threshold levels of a comparator, thus scanning along the "spectrum" of the output pulses. This approach will provide a first look at things but it relies on a lot of measurements/time to get the statistics. And time, as you know, is that dimension in which something somewhere always goes wrong.
So I'm wondering about these Flash ADCs, of which I know nothing except the name. I'm not even sure what to shop for - i.e. what to look for if I want coincidence counting. I'm quite possibly way over my head on this one.
Also, my thanks to everyone giving their suggestions and comments on this. [noparse][[/noparse]He weeps with sincerity] I don't know what I'd do without you!
cheers,
Mark
http://rsi.aip.org/rsi/top.jsp
It is technical enough to get you started. Look for something similar, there are (sure) dozens of already-working-designs.
If you have access to the Isi web of knowledge (www.isiknowledge.com), I'd recommend you use it to find some design (maybe in the above mentioned journal or in another one). May be other portals exist, I just do not know them.
Edit: Here are some links from the avobe mentioned journal:
http://scitation.aip.org/vsearch/servlet/VerityServlet?KEY=RSINAK&ONLINE=YES&smode=strresults&sort=chron&maxdisp=25&threshold=0&possible1=coincidence+counting&possible1zone=article&OUTLOG=NO&viewabs=RSINAK&key=DISPLAY&docID=9&page=1&chapter=0
http://scitation.aip.org/vsearch/servlet/VerityServlet?KEY=RSINAK&ONLINE=YES&smode=strresults&sort=chron&maxdisp=25&threshold=0&possible1=coincidence+counting&possible1zone=article&OUTLOG=NO&viewabs=RSINAK&key=DISPLAY&docID=14&page=1&chapter=0
http://scitation.aip.org/vsearch/servlet/VerityServlet?KEY=RSINAK&ONLINE=YES&smode=strresults&sort=chron&maxdisp=25&threshold=0&possible1=coincidence+counting&possible1zone=article&OUTLOG=NO&viewabs=RSINAK&key=DISPLAY&docID=17&page=1&chapter=0
http://scitation.aip.org/vsearch/servlet/VerityServlet?KEY=RSINAK&ONLINE=YES&smode=strresults&sort=chron&maxdisp=25&threshold=0&possible1=coincidence+counting&possible1zone=article&OUTLOG=NO&viewabs=RSINAK&key=DISPLAY&docID=24&page=1&chapter=0
I did a serach for "coincidence counting".
I hope it helps!
Post Edited (Ale) : 1/8/2009 4:30:43 PM GMT
www.linear.com/pc/productDetail.jsp?navId=H0,C1,C1155,C1001,C1150,P19597
They aren't expensive at about $50 and you can get free samples. You will need to take a lot of care over the PCB design. You could try asking LT technical support about your application.
Leon
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Amateur radio callsign: G1HSM
Suzuki SV1000S motorcycle
thanks for the links. They look very useful. I'll have to get to a library to read the articles, though. I don't have a journal account through home.
Leon,
Thanks for your suggestion. The chip you suggest looks awesome, no doubt the ultimate solution. I'll probably want to look for something in a DIP, though, to get started with this idea. And cheaper, too, so I can barbeque them without guilt. I'm just learning my way around the electronics world, so I'll have to take this one step at a time.
Thanks you guys,
Mark
To integrate the pulse:
Use a capacitor/op amp as an integrator, a constant current source to discharge the capacitor, a comparator to tell you when the capacitor is discharged, and a counter to measure how long the dischaging takes.
Using all of the above circuitry except the counter you could use an ADC to measure the voltage on the capacitor at the end of the pulse.
To detect and measure the peak voltage:
Using a very fast flash ADC the prop could read and store each conversion during a pulse and then select the highest one (Digital peak detection).
Use an analog peak detector (and possibly a sample and hold circuit) to take an ADC reading at the peak voltage.
At one time or another I have worked with equipment that has used all of the above methods, and they all work well. The deciding factor of what to use depends on how fast you want to go and how much you want to spend.
PS - "coincidence counting" is a technique used mainly for liquid scintillation counting where the signal is so small that it is buried in the thermionic noise of the PMT. It is used to detect Beta particles (electrons) by mixing the radioactive material with a liquid that emits light when hit by an electron. The vial containing the mixture is placed between two photomultiplier tubes and only pulses that come from both tubes at the same moment (coincident) are analyzed.
Kurt
Well.... I just pulled 1 MHz to 10 MHz out of thin hair, since nobody is sure what to expect. Once upon a time, I calculated that the star Sirius rains upon us approximately 10 Million photons per square cm. per second, so I just took that as a range. My circuitry seems to have no problem handling that rate when I inject pulses using a pulse generator but I'm guessing the real test will be to see what the PMTs will do when they start getting torpedoed by all those photons. If any, that is.
Yeah, ouch, there's that money thing again. Who wants to stick out their neck for science? Ever try explaining bioluminescence to a banker? Long story short, it's a shoestring thing.
I confess that my main interest in using coincidence counting is sparked by the technical sweetness of the concept. I love the idea of a noisy environment racked by cosmic rays, radon decay, gamma rays hitting me from granite boulders beneath my feet, my son upstairs microwaving one of his Lego creations.... and yet out of the vast chaos comes the clear, soft song of..... ahhhhh [noparse][[/noparse]he sighs] data.
Well, at least I hope there's data.
Poking around, looking for Flash ADCs, I keep seeing this TLC0820A (Data sheet attached). At first glance, it looks like something I could eventually learn to use, though it doesn't look as fast as my ultimate fantasies. I suppose it could be interfaced with a Propeller. Anybody have any strong emotions about it, one way or another?
cheers,
Mark
Leon
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Amateur radio callsign: G1HSM
Suzuki SV1000S motorcycle
Yes, alas, I noticed the data sheet was pretty old. But do you know of anything better in a DIP through-hole package that a newbie non-EE might be able to handle?
I would recommend not hobbling yourself with DIPs. You'll be shutting yourself out of a lot of newer technology if you do. For prototyping, you can always use SMD-to-DIP adapters. (I'm sure Leon would say to prototype with your own homemade PCBs but you don't need to go that far.)
Also, you can save money on ADCs by using an analog peak detector. That way don't have to do an A/D conversion more than once per pulse, which would require a much faster ADC. The system can be clocked by the falling edge of the pulse, which will trigger the conversion and a subsequent discharge of the peak-detector cap.
-Phil
Phil,
after doing some homework on this, I now understand what you are saying here and it makes a lot of sense. Problem is, with pulses arriving every 1 microsecond (or maybe faster), I think that would still require a fairly fast ADC to process each pulse - I don't think I could use the Propeller built-in system, for example, as shown in AN0001 (or whatever it's called). But I might try it anyway just to learn how the implement the concept in case I really need to get faster down the road.
ErNa,
the pulses coming from a photomultiplier tube when it is struck by a single photon tend to ramp up within ~10 ns, but then what happens after that is very dependent of the details of how the load is wired up, so I can sometimes sharpen the pulse by simply doing a better job with the soldering, using shorter leads, etc. Using a ground plane, for example, really helped a lot. At high pulse rates, the pulses "pile up" and their superposition makes traces with higher peaks and/or wider bodies. The pulse height also depends on the color of the photon. Blue photons have more energy than red, so jump higher on the Oscope screen. So gazing into an Oscope does indeed give some feeling for the chaotic rain of photons that takes place each microsecond. Photons can even travel along the hookup wires, much like fiber optics, and mess up the readings. Their sensitivity is astounding.
thanks, you guys, for your suggestions on this,
Mark
I didn't mean to imply that the ADC can be eliminated. You will still need one. But with an analog peak detector, the ADC doesn't have to be as fast and expensive as one that can take ten readings over a 100ns pulse.
-Phil
and which are used as a solid state LED voltage indicator instead of an analog meter movement.
Multiple chips can work together for more precision according to the datasheet,
and it's outputs then can be decoded to binary with diodes.
I was just going to comment in another thread that I think that it works very fast compared to what you might expect.
I think it is probably fast enough to sample video into the Propeller, perhaps as well as the Propeller can display video.