Hackaday Prize Entry: High Speed Sampling For The Raspberry Pi

The Raspberry Pi has become a firm favorite in our community for its array of GPIOs and other interfaces, as well as its affordable computing power. Unfortunately though despite those many pins, there is a glaring omission in its interfacing capabilities. It lacks an analogue-to-digital converter, so analog inputs have to rely on an expansion card either on those GPIOs or through the USB port.

Most people remain content with simple ADCs such as Microchip’s MCP3008, or perhaps a USB sound card for low frequency moving targets. But not [Kelu124], he’s set his sights on something much faster. The original Pi is reputed to be capable of handling a 10Msamples/s ADC, so he thinks its faster successors should be able to work much faster. To that end, he’s created an ADC pHAT which he thinks should be good for twice that figure.

The choice of silicon is a CA3306E, a 6-bit device that’s rated at 15Msamples/S. It’s something of a dated device as is shown by its DIP package, and a quick look through major suppliers shows it to be no longer available. Happily though, when you look at his GitHub repo it emerges that he’s also producing a board based on the ADC08200, so his software is targetable at other chips.

Whether or not you need your Pi to serve as video digitizer or high-speed instrument, it’s useful and interesting to take a look at a board like this one in action. We often don’t use the raw power of our single board computers, and this project proves that should we ever need to, we can.

If ADCs interest you, take a look at [Bil Herd]’s series on delta-sigma ADCs.

Thanks [Fustini] for the tip.

8 thoughts on “Hackaday Prize Entry: High Speed Sampling For The Raspberry Pi

    1. Just gotta be that some one had it hanging around. These days some AD part would of been faster, Cheaper and at least 8 bits !

      The Driver code is more interesting to be fair !

  1. 10 Msps on an RPi seems a bit on the high side imho, at least for realistic usage scenarios. Looking at the driver code it takes 10,000 samples over 1 ms in the kernel module and then exits. Extending to 1 second would probably freeze the entire system? Here the Beaglebone seems to be a better choice with 2×200 MHz microcontrollers on-chip with access to system memory. No need for the main CPU to take care of bit-banging… But the nice kernel module writeup is great for doing these kind of small tests on the RPi!

    1. Hey pmb, thanks for your comment =) Indeed, extending would freeze the system longer (at least, no interrupts). I’ve been playing with the PRUDAQ which is a Beaglebone cape, handling 40Msps acquisition through the PRUs and saving to an available ~300Mo of RAM. Impressive stats =) However, having this 10Msps on a Pi Zero isn’t that bad when you need bursts of acquisition =)

  2. 10MSPS doesn’t have any relation of “High Speed” now days. There’s a lot of better choices just on the TI or ADI wed sites, but you made a really bad choice (I think it’s schs comes from an old school book)

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.