Shop OBEX P1 Docs P2 Docs Learn Events
Pulse Height Analysis with a Flash ADC and a Propeller??? — Parallax Forums

Pulse Height Analysis with a Flash ADC and a Propeller???

ElectricAyeElectricAye Posts: 4,561
edited 2009-01-12 02:24 in Propeller 1
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


eyes.gif

Comments

  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2009-01-08 04:35
    Mark,

    '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
  • ElectricAyeElectricAye Posts: 4,561
    edited 2009-01-08 05:05
    Phil Pilgrim (PhiPi) said...
    Mark,

    Is this for some kind of gamma-ray spectroscopy? Are you looking for peak values? Are the pulses distinct, or can they overlap?

    -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. smile.gif

    cheers,
    Mark
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2009-01-08 05:52
    Can you say more about the pulses:

    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
  • LeonLeon Posts: 7,620
    edited 2009-01-08 10:07
    A flash ADC should work very well. They aren't all that expensive. LT makes some nice ones and will give you a couple of samples.

    Leon

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Amateur radio callsign: G1HSM
    Suzuki SV1000S motorcycle
  • AleAle Posts: 2,363
    edited 2009-01-08 10:34
    I'd definitely go for coincidence counting, if anything I was told in the whatever it was named that lecture I took about radioactivity (Radiochemistry?) and so on was true [noparse]:)[/noparse]. You only have to duplicate your circuit. To get some speed you have to use a pair of synchronized COGS. With one COG you get some 3 instructions per loop and sort of 400 samples. For ~240 samples you can get 1 instruction per sample (using just 1 mov) and using the COG's memory as buffer in both cases. 2 8 bit FLASH adcs can be then read simultaneously. And the data then transferred to HUB.

    Post Edited (Ale) : 1/8/2009 10:45:42 AM GMT
  • evanhevanh Posts: 15,873
    edited 2009-01-08 11:28
    Be aware that to actually get a reasonable accuracy on the amplitude of an unsynchronised capture circuit it is accepted practice to sample at 10 times the cutoff frequency of the analogue front-end circuit.

    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.
  • Bob Lawrence (VE1RLL)Bob Lawrence (VE1RLL) Posts: 1,720
    edited 2009-01-08 11:32
    Here's a reference for those of us that have never heard of a Flash ADC(including me) turn.gif

    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 yeah.gif

    Good luck with it Mark

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Aka: CosmicBob

    Post Edited (Bob Lawrence (VE1RLL)) : 1/8/2009 11:47:39 AM GMT
  • evanhevanh Posts: 15,873
    edited 2009-01-08 11:48
    Flash is a newish term but the structure is as old as A/D and D/A converters themselves.
  • ElectricAyeElectricAye Posts: 4,561
    edited 2009-01-08 15:51
    To Phil Pilgrim:
    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

    smile.gif
  • AleAle Posts: 2,363
    edited 2009-01-08 16:22
    Electric Eye, If you have access to journals, I'd recommend you have a look at the "Review of Scientific Instruments" Journal

    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
  • LeonLeon Posts: 7,620
    edited 2009-01-08 16:24
    This might do what you want:

    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
  • ElectricAyeElectricAye Posts: 4,561
    edited 2009-01-08 17:43
    Ale,
    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
  • kwinnkwinn Posts: 8,697
    edited 2009-01-09 01:56
    Mark, I worked in nuclear instrumentation and imaging(gamma counters/cameras, liquid scintillation counters, gas flow counters, and geiger counters) for several years and a flash ADC is a good way to go for pulse height analysis. I am a bit surprised at the count rate you are looking at since most of the equipment I worked on rarely went higher than about 250K pulses per second. In most cases of random events such as radioactive decay and bio luminescence, pulse "pileup" becomes a problem at high rates. You will need to either detect and measure the pulse peak, or integrate the pulse and measure the total energy of the pulse.

    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
  • ElectricAyeElectricAye Posts: 4,561
    edited 2009-01-09 04:58
    kwinn said...
    I am a bit surprised at the count rate you are looking at since most of the equipment I worked on rarely went higher than about 250K pulses per second.

    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.
    kwinn said...
    The deciding factor of what to use depends on how fast you want to go and how much you want to spend.
    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.


    smile.gif
  • ElectricAyeElectricAye Posts: 4,561
    edited 2009-01-09 16:17
    Hi all,

    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
  • LeonLeon Posts: 7,620
    edited 2009-01-09 16:32
    It's a very old device, and isn't very fast. Much better ones are available.

    Leon

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Amateur radio callsign: G1HSM
    Suzuki SV1000S motorcycle
  • ElectricAyeElectricAye Posts: 4,561
    edited 2009-01-09 19:05
    Leon said...
    It's a very old device, and isn't very fast. Much better ones are available.

    Leon

    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?
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2009-01-09 19:17
    ElectricAye,

    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 smile.gif 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
  • ErNaErNa Posts: 1,752
    edited 2009-01-09 19:56
    Whenever you don't know what comes, anticipate the best. Makes live easy. So, did you test the signal with an oscilloscope? That could give a hint on the signal rate, amplitude etc. If you don't have information about the shape, what do you expect? If the shapes are similar, it is not necessary to measure peak height, in this case it is better to measure the area. If the peaks come one by one, it could work to measure them with the "normal" ad-converter of the propeller. You can read the counter of the sigma-delta converter very fast in a fixed time slot and plot the signal. As a first guess, it could work and is very easy to implement and test.
  • ElectricAyeElectricAye Posts: 4,561
    edited 2009-01-10 17:02
    Phil Pilgrim (PhiPi) said...

    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.

    -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 said...

    So, did you test the signal with an oscilloscope? That could give a hint on the signal rate, amplitude etc. If you don't have information about the shape, what do you expect?

    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

    smile.gif
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2009-01-10 17:26
    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
  • VIRANDVIRAND Posts: 656
    edited 2009-01-12 02:24
    About 10 years before I ever heard of flash ADC's I used LM3914s which have 10 comparators
    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.
Sign In or Register to comment.