# Expanded Scale ADC

Suppose I am interested in accurately measuring voltage in a narrow range, say 10V to 12.5V with an accuracy of 0.01V. If my math is correct this corresponds to 251 possible values.

An 8 bit ADC should be able to resolve 256 possible values, but in a standard configuration an output of 0 would correspond to an input of 0 volts.

What would the appropriate circuit be to implement an expanded scale voltmeter? An input of 10 volts or less should produce an output of 0 from the ADC and an output of 12.55 or more (up to some reasonable limit, say 20V) should produce an out of 255.

If the goal is low cost and simplicity and I am willing to settle for a lower range, say 10 to 12 volts, while retaining a 0.01 volt accuracy, would it simplify things if I were willing to let the ADC produce some non-zero output at 10V and correct for the offset in software after conversion by the ADC?

POSTSCRIPT: Since the question was raised as to required frequency range: The application is to measure DC voltage only.

## 4 Answers

What frequency response do you need?

An instrumentation amplifier does this as it's bread and butter job. This can be as little as one op amp, as Chris suggests, or the higher performance 3 or 2 opamp versions. Th e3 amp version is probably best - a quad of good enough amplifiers is cheap, the 2 amp circuit is less than ideal and the single resistor gain adjustment makes it very attractive. The diagram below is the superstandard 3 amplifier circuit, this version from
Wikipedia's differential amplifier page. Gain is given by: Or, possibly more usefully Gain = (Rgain + 2R1)/Rgain x R3/R2.

Rearranging:

Rgain = 2 x R1/((Gain x R2/R3) -1)

• In this application, Connect floating input to V1, V2.
• Adjust gain to suit.

eg if ADC range is 5V and your input range is 10V to 12.5V = 2/5V then overall gain = 5/2.5 = 2.

If you set R2=R3 then output stage gain = 1. To set iput stage gain to 2 you need Rgain = 2R1, then.

Rgain = 2R1, R2=R3.
Gain = (Rgain+2R1)/Rgain x R3/R2 = 2 x 1 = 2
QED

Adjusting Rgain trims overall result.

Common mode input range of the input amplifiers has to be at least equal to the highest input voltage encountered. It is " a bit naughty" but you can use a simple resistive divider to lower the input common mode voltage by a factor of "K" and then increase gain by a factor of K to compensate. With only 8 bit accuracy required relatively cheap opamps will allow you to do this with essentially no added error. Doing it at say 16 bits would be more challenging.

Example only - Say Vmax = 12.5V and say input op amps are rail-rail, run of 5V and have 5V as their upper common mode voltage. Dividing input by a factor of 12.5/5 = 2.5 will reduce Vin max to 5V. Gain has to be increased from 2 to 2 x 2.5 = 5.

A single opamp will work, but is harder to trim and inputs are not buffered.
Gain for each input left as an exercise for the student :-).

Note that the commin mode voltage seen by this circuit can be reduced by replacing R1 & R2 with a 2 resistor divider - in this case say a 2.5:1 divider.

[[Ignore this :-) : Back of brain says you can do this even more easily but care needed when powered down etc. Use an op amp to subtract the offset voltage and perhaps also to provide gain if you have reduced the input range to less than the range of the ADC. Depending on the ADC noise characteristics, averaging a large number of samples may also give you some improvement in resolution.

A zener diode could be another possibility - I've seen NiCd battery testers that used a zener diode to subtract an offset and thus expand the scale of an analog voltmeter to cover the interesting part of the NiCd discharge curve.

• The op amp could subtract the offset voltage but what about handling the over voltage? – JonnyBoats Nov 20 '11 at 5:38
• Arrange the op amp rail to match the ADC input capability or use a diode clamp after an existing or added series resistor. – Chris Stratton Nov 20 '11 at 6:01

The "normal" way to do this is to use a level shifter as others have already described. But, the availability of cheap high resolution delta-sigma A/Ds provides another option. In that case, simply use a resistor divider to get the maximum voltage down to the A/D range, and the rest is firmware. These A/Ds are available in 20 bits and more, so still have plenty of resolution over the limited part of the range you will actually use. The firmware then does the level shifting, which is subtracting off the value for 10V input.

The one drawback of delta-sigma A/Ds is that they are slow, like 60 Hz and less. If this is for presentation to a human, like a voltmeter application, then that's no problem. Or, if the input signal is slow, like a battery voltage, that's still fine.

Some adc's have inputs for the high and low reference voltage. This can be useful. If you still have an op amp as the input conditioning circuit, you may not want to use this as it requires 2 precision voltage references.