Is there a module/shield/pre-made peak detector that I can implement to handle fast pulse acquisition into a slower arduino or simultaneously sampling ADC?
The project involves 4 optical detectors that will detect different wavelengths from a cell as it crosses a laser. I want to output the values from each detector. The pulses are ~1us long, and very frequent 100s per second. I do not care to capture all events, i.e. can lose some but the ones I do capture data for I need to capture short pulse strength. If I went to a fast ADC, I’d need >100MBPS with a fast FPGA.
Is there a premade solution somebody could recommend to get me started - in my mind a peak detector with reset circuit that can detect and reset 1us pulses would be PERFECT!
I don’t know off hand of any premade peak detectors but I daresay such devices exist.
But it is not a very difficult thing to do.
Here is a link to an informative site to explain how easy it is.
In this example to reset you simply discharge the capacitor with a Mosfet or switch.
PS: These circuits output a DC voltage equal to the peak value of the pulses. Therefore a fast ADC is not required. The “normal” Arduino ADC would suffice if you can accommodate the 1023 steps. If you want better resolution you would need a better ADC.
I Googled “peak detector” and all but a couple just describe how it is done. There are a couple which I did not look at as the instruments seem to be A$1k plus which I thought would not be of interest.
If you decide to make the OP Amps would probably need to be high frequency types to respond to the 1µsec pulses. Although that is only 1MHz the response needs to be at least 10 or 15 times that to reproduce a decent pulse shape.
As I said I do not know of any ready made devices and to be honest apart from a quick Google I have not looked. You might try finding a comprehensive list of all the Arduino or RPi add ons and there might be something there.
Hi Liam, yes I am looking to measure the peak amplitude of all 4 optical detectors. I will have a think about the interrupt, but do you think if I went down this path it would be okay for different pulse lengths (some are 1us, some are 1.3us, some will slightly shorter, longer), because if I did it with an interrupt wouldn’t I need to set a delay between triggering of the interrupt and the peak of the pulse?
If you try the interrupt idea I don’t know if the Arduino ADC would be fast enough to measure a 1µsec pulse before it disappeared. Might work.
For a very basic peak detector you need 1 OP Amp, 1 capacitor, 1 diode. Then measure the result. How much simpler can you get.
Bob has made some good points regarding op-amps, the only points I have are:
Could you just use an osilloscope? I assume you’re working for a university that would have access to these. Their main job in life is capturing 2-4 channels of ridiculously fast (Gs/s) signals.
Most older arduinos are pretty much the slowest things around, I’d see if anyone on the PJRC (Teensy) forums has done anything this fast. I don’t have experience with anything this fast, but they are an arduino-compatible setup with the bleeding edge of microcontroller speed.
You are right on. This is for an annual course I run, and I’ve used an oscilloscope for 4 years to show the data for these. I had got an ADLINK USB1210 to work albeit with some workarounds to problems encountered. Its a build your own workshop so the ADLINK solution was out of the budget for researcher students (the main attendees). I had a think about the interrupt solution on the uno proposed by Bob but think the parallel acquisition is limited by the time to process code on the arduino. and the projects requirements. I’ll look into the Teensy boards, and feedback. The look awesome.