6
\$\begingroup\$

I managed to increase the effective resolution of a 10 bit ADC by several bits by repeatedly sampling a noisy input and taking an average over many samples.

I'm wondering what some techniques are for creating this sort of "noise" purposely to achieve the same effect. Obviously the simpler the circuit the better. There's probably a name for this technique that I'm not aware of?

I have some spare digital output pins on the microprocessor that I could some how use to generate the "noise". In case it matters, I'm using a 10 bit ADC with full scale 0-5v to measure the voltage across a thermistor (50k) in series with a 10k resistor, where the thermistor resistance will vary from about 7k to 160k.

Thanks!

\$\endgroup\$
5
\$\begingroup\$

Dithering is one way, as in "rawb"'s answer. In audio, the usual accepted standard for plain dithering was a triangular PDF dither with a peak-peak amplitude of 1 LSB, added to the high res (e.g. analog) signal before quantisation (e.g. the ADC). The same applied not just to ADCs but to any other truncation process, such as going from studio equipment down to 16 bit for CD mastering.

This triangular PDF signal was easily generated as the sum of two uniform PDF dither signals, each 0.5 LSB pk-pk amplitude, from indepenent (or at least uncorrelated) random or pseudorandom generators.

A lot of work was done on this in the 1980s, among others by Decca in London who built their own studio equipment, and they showed that with TPDF dither, signals (pure tones) could be detected about 20dB below the (broad band) noise floor, with no observable harmonic distortion (i.e. nothing distinguishable from noise)


Another way is applicable if the bandwidth of interest is less than the Nyquist bandwidth, as is usually the case in oversampling converters.

Then you can improve massively on the plain dithered results. This approach, noise shaping, generally involves embedding the dithered quantiser in a closed loop with a filter in the feedback path. With a simple filter you can get one extra bit of resolution per halving in frequency as Jon Watte says in a comment, but with a third order filter you can do considerably better than this.

Consider that a 256x oversampling converter ought to give 8 bits additional resolution according to the above equation, however 1-bit converters operating this way routinely give 16 to 20 bit resolution.

You end up with very low noise in the bandwidth of interest (thanks to high loop gain at those frequencies), and very high out-of-band noise somewhere else, easy to filter out in a later stage (e.g. in a decimation filter). The exact result depends on the loop gain as a function of frequency.

Third and higher order filters make it increasingly difficult to stabilise the loop, especially if it starts generating incorrect results during overload (clipping or overflow) conditions. If you're careless or unlucky you can get rail-to-rail noise...

Lots of papers from circa 1990 and onwards by Bob Adams of dBX, Malcolm Hawksford of Essex University and many others about noise shaping converters, in the JAES (Journal of the Audio Engineering Society) and elsewhere.


Interesting historical note : when CD was first being standardised, the Philips 14 bit CD proposal went head to head with Sony's 16-bit LP-sized disk. They compromised on the slightly larger CD we still have today with 16 bits and allegedly at Morita-san's insistence, enough recording time for Beethoven's Ninth Symphony.

Which left Philips with a pile of very nice but now useless 14-bit DACs...

So Philips first CD players drove these DACs at 4x the sampling rate, with a simple noise shaping filter (may have been 2nd order but probably first order) and achieved performance closer to 16 bits than contemporary 16-bit DACs could. For 1983, ... Genius.

\$\endgroup\$
5
\$\begingroup\$

It's dithering and was possibly discovered in WWII - the story is about range calculation machines used in bomber planes. They were full of cogs and pulleys and all manner of mechanical things and it hardly ever worked accurately on the ground but, in a bomber plane the vibrations were big enough to free the stiction off the bits and keep the couplings free to move and fluid. Anyway that's the story I heard!!

If you are sampling significantly higher than what you need to and the noise is predominantly above your desired bandwidth but below nyquist then you stand a good chance of making improvements. The averaging process gives more resolution to the signal and cancels the effects of the noise. You can also inject noise and importantly you can inject a signal providing it doesn't have a harmonic relationship with your signal and the sampling rate. It only needs to be a couple of LSBs in magnitude.

EDIT - dithering is also used when burning CDs with audio. The 16-bit resolution isn't apparently good enough for very tiny signals (you know, the real quiet bits in some classical pieces) and they use it to give the listener less "grainyness". Music is usually in 24 bit format before being down-graded to CDs so the resolution is there to begin with and a little out of band noise round about the 20kHz mark does the job apparently.

I don't know by how many bits you can increase the resolution mathematically but i would be interested to see the math. From experience, I once got 15 or 16 bits from a 12-bit ADC over DC to 10Hz. The sampling was about 60kHz and the noise was just the noise picked-up on the two wires of a strain gauge located several metres away. We made no special attempt to improve this other than a fairly snug 10Hz low-pass filter which I think was 4th order. I suspect most of the noise was AC power frequencies which is not ideal for this technique.

\$\endgroup\$
  • \$\begingroup\$ Thank you, +1 for the point on harmonics (and the WWII story! Classic) \$\endgroup\$ – CL22 May 18 '13 at 21:28
  • \$\begingroup\$ You understand it wasn't a personal story LOL \$\endgroup\$ – Andy aka May 18 '13 at 21:29
  • \$\begingroup\$ If you say so ;-p \$\endgroup\$ – CL22 May 18 '13 at 21:33
  • \$\begingroup\$ And, if you inject a known signal as in para #2, you can subtract it from the averaged result! \$\endgroup\$ – Bobbi Bennett May 18 '13 at 23:43
  • \$\begingroup\$ The math is simple. You get one extra bit of resolution per halving in frequency from Nyquist, at the expense of possibly getting some correlated noise in the highs (which sounds harsh and terrible.) Class D ADCs and DACs are the logical end point of this function - a single bit at insanely high sample rate! \$\endgroup\$ – Jon Watte May 19 '13 at 5:54
3
\$\begingroup\$

If the noise content of your signal has certain characteristics (stationary, independent i.e. gaussian or poisson distributed) then averaging will get you a net reduction of noise that is \$ \dfrac{1}{\sqrt N}\$.

You would have to be clear as to what was the predominate noise source that you think that you reduced.

If you are attempting to increase the resolution then the process is called dithering but the magnitude and nature of the noise would have to shaped carefully. This would be used to reduce the digitization residue that is an artifact of the process.

\$\endgroup\$
  • \$\begingroup\$ +1 Thanks. I agree creating the variations is tricky - it needs to be linearly symmetrical for the averaging to work. \$\endgroup\$ – CL22 May 18 '13 at 20:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.