Detecting analog events on many channels

Hi there,

It seems like this'd be a FAQ, but I didn't see a similar post:

I'm working on a drum pad detector that can catch events on many piezo sensors at once, like 32 or 64, and am trying to figure out the most cost-effective way of doing this. I want to be able to get velocity (amplitude) readings from the events as well. Since scanning the inputs with an analog multiplexer would miss the events (which could be less than 1ms in length), another approach would be needed.

I had thought of piecing together a multi-channel peak detector using sample and hold circuits and a voltage comparators, which would sample only when the sensor voltage was increasing. Then after the Arduino got a chance to do a scan, it could reset all the sample-and-holds.

To take it to the next level, I'd really like to only record an event after the sensor's maximum has passed (so I don't misread it early while it's still on the up-slope).

But this seems to take quite a few components, and I was wondering if there's some magic chip that does most of this already. I've found multi-channel sample-and-hold chips, but they all seem to be aimed at going the other direction: they have one input and many outputs, for multiplexing D-to-A rather than the other way 'round.

Alternately, maybe there a whole better way to do this that's simpler.

Any thoughts here?



Peak detector circuit and a big chain of MCP3208's with another chain of 74HC595's for resetting seems the most straightforward. The only completely different approach I can think of involves a bunch of cheap microcontrollers that do nothing but sample their ADCs as fast as possible, detect downslopes, and send the maximum value back to the Arduino.

FWIW, after looking through the pricing of things, it's cheapest (and easier) to just have another microcontroller manage it. I'll give that a go.

Thanks for the thoughts!