How to increase ADC precision knowing input signal characteristic?

Hi everyone, I'm using a 4 bit ADC to convert a voltage that can potentially be between 0 and 3.3V. I end up with approx. 3.3/16 = 0.2V step size for each code which is not good enough. However I am only interested in the

0.6V to 1.4V range (0.4V swing centered around 1V). Is there a way to get the ADC converting only those values? Clipping is acceptable if the voltage is below 0.6 or above 1.4V.

I could potentially get 0.8V/16 = 0.05V precision if the ADC was not wasting all those codes on don't care input values.

I guess this is a standard problem but I can't really find an easy solution.

Thanks,

David

Reply to
gretzteam
Loading thread data ...

Yes it's called windowing. Some 'front end' processing of your input signal will do the job.

Do you have a negative supply available ?

Graham

Reply to
Pooh Bear

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

It has something to do with math. You have 16 (and only 16) steps of measurement. What you define as full input scale will be presented to you in 1/16 increments and that IS your precission. So make your measuring range (with external circuitry) the full scale input.

Good luck

Stanislaw Slack user from Ulladulla.

Reply to
Stanislaw Flatto

Mathematically its pretty easy. You want to map [0.6, 1.4] to [0, 3.3].

i.e., (x - 0.6) maps [0.6, 1.4] to [0, 0.8] and

3.3/0.8*(x - 0.6) maps [0.6, 1.4] to [0, 3.3]

f(x) = 4.125*(x - 0.6)

If your resolution of the ADC is 0.2 then

y - (y + 0.2) = 4.125*(x - 0.6) - 4.125*(x + t - 0.6)

0.2/4.125 = t = 0.049

i.e., a step of 0.049 in your signal results in a step of 0.2 to the ADC... you have effectively increase your resolution by a factor of 4.

(since the function is linear one could just see that its 0.2/4.125...)

Obviously this translates into electronics by having to subtract 0.6 volts from your signal then multiplying it by 4.125. This circuitry may or may not help as it could cause other problems and actually make things worse.

But hey, the math is easy ;)

Jon

Reply to
Abstract Dissonance

Yawn...say the ADC input range is 0V to 16V, so offset the input by

0.6V to an op-amp with gain of 20 giving the full drive (0.6V-0.6V) * 20 = 0V on one extreme and (1.4V-0.6V) * 20 = 16V on the other extreme. Use common 0.1% resistors for better than 1/512 accuracy (9+ bits). Wake me up when you have something easy.
Reply to
Robert Baer

What is your sampling rate, and why would you want not to use an 8- or

10-bit ADC? This would be probably cheaper than adding front-end circuitry.

Best,

Reply to
Mochuelo

David, it is a standard problem. And it doesn't seem to be homework either, since you have this programmer language. You want something very small and with little current consumption and also cheap. Here we go:

.---+------------o | | 10n 3.3V .-. | || | | +-||-------. 200k| | | || | '-' | === ___ | | ___ GND +-|___|-+---)-|___|-+ | 15k | | 47k | === | |\\| | GND +-|-\\ | ___ ___ | >------+-|___|-o o-|___|-+-|+/ KM7101 100R OUT IN 13k | |/| .-. | | | === 47k| | GND '-' | === GND (created by AACircuit v1.28 beta 10/06/04

formatting link
Maybe you can look for better resistor matches or a different opamp. Also Microchip has some R-to-R ones, this one is FCH. The 100R is needed if your converter has capacitive input impedance. The cap should be close to the supply pin and gnd.

--
ciao Ban
Apricale, Italy
Reply to
Ban

Look at the instrumentation amplifiers as in AD627

formatting link
. The conversion is a simple Vout=G*(V(+)-V(-))+Vref, so that if FS is the full scale A/D input then making G=FS/(0.8), Vref=FS/2, and V(-)=1V gets you Vout= FS/2 +/-FS/2 as the input swings +/-0.4 about 1V. The measurement resolution becomes 0.8/16 =0.05 Volts. There are limitations and I'm not going to waste time speculating about what they may be because you lack the common sense and industry to fully describe all the parameters.

Reply to
Fred Bloggs

If you add noise to the signal, and then software lowpass filter (or average) the adc data, you can extend the effective resolution to well under one LSB.

Here's one of many ways....

in---------r1--------+--------------adc | | r2 or maybe c2 | | ttl port----r3-------+ | | c1 | | | gnd

where the ttl input can be a square wave that's not synchronously related to the adc sample rate (giving a triangle across c1) or a software-generated pseuo-random level that may be synchronous or not.

John

Reply to
John Larkin

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.