> I received an application ideas book called "Dream Machine Reference > Book" from Phillips. In it they talk about a method of using > dithering to effectively get 12bit resolution out of an 8bit A/D. It > consist of using PWM configured as a DAC to feed a triangular 100mV > waveformthat is AC coupled, back to the original input. Essentially, what happens is that you gain precision in the voltage domain (i.e. more bits of sampling) while losing information in the time domain (your effective frequency response is reduced). In applications where you don't need much information in the time domain (e.g. reading a potentiometer) you may be able to improve substantially the resolution in the voltage domain (going from 8 to 16 bits, with about 12 bits' accuracy using 256x oversampling is not unreasonable; going from 8 to 24 using 65,536x oversampling may be able to net you 16-18 useable bits (though other factors start coming into play when you shave things that fine). To describe things mathematically, what happens when you digitize signal is that the quantization (assigning to one of 256 values) introduces noise. If the noise is known to consist primarily of high frequency components, running the signal through a low-pass filter will reduce the noise (at the expense of also losing some of the high-frequency parts of the signal). If you've ever turned town the treble on a tape deck to reduce tape hiss, this is in effect precisely what you were doing. Unfortunately, you can't 'just' add filtering to an ADC to reduce the effects of quantization because the effects will be strongly correlated from one sample to the next; if sample #1 of a non-changing signal reads 0.4 lsb low, samples #2, #3... are also going to read about 0.4lsb low and so averaging them will produce a signal that's 0.4lsb low. Adding noise (it matters a little what sort, but not too much) will reduce the effects of this correl- ation. The stronger the noise, the more effectively it will negate the correlation (but the more it will have to be filtered to prevent the noise itself from affecting things). Ideally, the noise should be constructed so as to be perfectly filterable (e.g. if the input sampling rate is 256Khz and you will be averaging 256 samples at a time, a 1KHz triangle wave is probably the ideal noise to add because its direct effect, averaged over 256 samples, is nil.) If this is not practical, ensuring that the noise consists only of frequencies well above those of interest and making it moderately strong relative to the input signal (+/- 3-4 lsb's) should work pretty well.