When is a 10-bit A/D an 8-bit A/D?

Marketing guys love bigger numbers. Bigger is better, right? After all, Subway called it a “footlong” not an 11-incher. So when it comes to analog to digital (A/D) conversion, more bits are better, right? Well, that depends. It is easy to understand that an A/D will have a low and high measurement and the low will be zero counts and the high will result in the maximum count for the number of bits. That is, an 8-bit device will top out at 255, a 10-bit at 1023, and so on.

The question is: are those bits meaningful? The answer depends on a few factors. Like most components we deal with, our ideal model isn’t reality, but maybe it is close enough.

Continue reading “When is a 10-bit A/D an 8-bit A/D?”

Hackaday Prize Entry: Dynamometer for Post Stroke Rehabilitation

For those who have suffered a stroke, recovery is a long and slow process that requires rehabilitation to start as early as possible. Quite often, secondary stroke attacks complicate matters. Spasticity — muscle contraction and paresis — muscular weakness, are two of the many common after-effects of stroke. Recovery involves doing repeated exercises to strengthen the muscles and bring back muscle memory. Benchmarking progress becomes difficult when caregivers are only able to use qualitative means such as squeezing tennis balls to monitor improvement. To help provide quantitative measurements in such cases, [Sergei V. Bogdanov] is building a Dynamometer for Post-Stroke Rehabilitation. It is an Open Source, 4-channel differential force gauge for measuring and logging the progress of the patient. The device measures, graphs, and logs the force exerted by the four fingers when they push down on the four force gauges.

The device consists of four strain gauges obtained from cheap kitchen scales. The analog outputs from these are fed to HX-711 24-bit ADC boards. An Arduino Nano processes the data and displays it on two banks of eight-digit LED modules. [Sergei] also experimented with a 20×4 character LCD in place of the LED display. In the standalone mode, the device can only indicate the measured forces on the LED (or LCD) display which is calibrated to display either numerical values or a logarithmic scale. When connected to a serial port and using the (Windows only) program, it is possible to not only view the same information but also save it at regular, set intervals. The data can also be viewed in graphical form.

The project page provides links to their Arduino code, Windows monitor program as well as build instructions. Check out the related assistive technology project that [Sergei] is working on — A Post Stroke Spasticity Rehab Helper.

Continue reading “Hackaday Prize Entry: Dynamometer for Post Stroke Rehabilitation”

8-Channel ADC For the Raspberry Pi

The Raspberry Pi is a powerful embedded computing platform. However, for all its Linux-based muscle, it lacks one thing that even the simplest 8-bit microcontrollers usually have – analog-to-digital conversion. There are a great many ways to rectify this shortcoming, and [Chris Burgess] has brought us another – with an 8-channel ADC for the Raspberry Pi.

For the ADC, [Chris] chose the MCP3008, for its low cost and availability. In this configuration it offers 10-bit resolution and a maximum sampling rate of 200 kilosamples per second. Adafruit has a great guide on working with the MCP3008, too. With such a useful resource to hand, [Chris] was able to spin up a PCB to interface the chip to the Raspberry Pi using SPI. [Chris] took care to try to make the board to the official HAT specifications. As far as the physical aspects go, the board is to spec, however [Chris] omitted the EEPROM required for auto-configuration purposes. That said, the pads are on the board if someone wants to take the initiative to install one.

It’s a tidy build that provides something sorely missing from the Raspberry Pi, for a reasonable cost. [Chris]’s goal was to build something that would enable the measurement of analog sensors for a robot project; we’d love to hear your ideas for potential uses in the comments!

STM32 Analog Converter Phase Noise

[Avian] has been using STM32 ARM processors to sample RF for a variety of applications. At first, he was receiving relatively wide TV signals. Recently, though, he’s started dealing with very narrow signals and he found that his samples had a lot of spread in the frequency domain that he didn’t expect.

What followed was some detective work that resulted in a determination that phase noise was the culprit. But why? [Avian] took some measurements and noticed that the phase noise almost exactly matched the phase noise specification for the STM32’s phase locked loop (PLL).

Unfortunately, there didn’t seem to be a good way to avoid using the PLL without major changes to the rest of the circuit. However, it was quite the learning experience and something to be aware of when counting on built-in converters for high-accuracy measurements.

One of the best things about this post is the references to more information. There’s a great explanation of phase noise, as well as a specific application note about clock jitter and analog converters.

We’ve talked about phase noise in direct digital synthesis a few times. But usually, it is pretty obvious like when you are asking a CPU to double as an RF transmitter. [Avian’s] post was a bit more of a detective story.

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.

Tearing into Delta Sigma ADCs Part 2

In part one, I compared the different Analog to Digital Converters (ADC) and the roles and properties of Delta Sigma ADC’s. I covered a lot of the theory behind these devices, so in this installment, I set out to find a design or two that would help me demonstrate the important points like oversampling, noise shaping and the relationship between the signal-to-noise ratio and resolution.

Modulator Implementation

modulatorCheck out part one to see the block diagrams of what what got us to here. The schematics shown below are of a couple of implementations that I played with depicting a single-order and a dual-order Delta Sigma modulators.

schematicBasically I used a clock enabled, high speed comparator, with two polarities in case I got it the logic backwards in my current state of burn out to grey matter ratio. The video includes the actual schematic used.

Since I wasn’t designing for production I accepted the need for three voltages since my bench supply was capable of providing them and this widget is destined for the drawer with the other widgets made for just a few minutes of video time anyway. Continue reading “Tearing into Delta Sigma ADCs Part 2”

Blindingly Fast ADC for Your BeagleBone

[Jason Holt] wrote in to tell about of the release of his PRUDAQ project. It’s a dual-channel 10-bit ADC cape that ties into the BeagleBone’s Programmable Realtime Units (PRUs) to shuttle through up to as much as 20 megasamples per second for each channel. That’s a lot of bandwidth!

The trick is reading the ADC out with the PRUs, which are essentially a little bit of programmable logic that’s built on to the board. With a bit of PRU code, the data can be shuttled out of the ADC and into the BeagleBone’s memory about as fast as you could wish. Indeed, it’s too fast for the demo code that [Jason] wrote, which can’t even access the RAM that fast. Instead, you’ll want to use custom kernel drivers from the BeagleLogic project (that we’ve covered here before).

But even then, if you don’t want to process the data onboard, you’ve got to get it out somehow. 100 mbit Ethernet gets you 11.2 megabytes per second, and a cherry-picked flash drive can save something like 14-18 megabytes per second. But the two 10-bit ADCs, running full-bore at 20 megasamples per second each, produces something like 50-80 megabytes per second. Point is, PRUDAQ is producing a ton of data.

So what is this cape useful for? It’s limited to the two-volt input range of the ADCs — you’ll need to precondition signals for use as a general-purpose oscilloscope. You can also multiplex the ADCs, allowing for eight inputs, but of course not at exactly the same time. But two channels at high bandwidth would make a great backend for a custom SDR setup, for instance. Getting this much ADC bandwidth into a single-board computer is an awesome trick that used to cost thousands of dollars.

We asked [Jason] why he built it, and he said he can’t tell us. It’s a Google Research project, so let the wild conjecture-fest begin!