From A/D Converters to DVMs |
From A/D Converters to DVMs
Every DVM starts with an
A/D. However, consider this situation.
Clearly there is a problem
here. However, by putting a scaling circuit before the A/D you can rectify the
problem. That way you can adjust the voltage applied to the A/D so that it
always runs from 0-10v. Then, you would have to remember that the measured
voltage is calculated differently, depending upon how you scaled. Here is a
block diagram that shows that.
It isn't a difficult problem to
scale a signal that ranges from 0-3v to one that ranges from 0-10v. You need to
multiply the input voltage by a factor of 3.3333333. That would take a fairly
simple operational amplifier circuit.
Now, consider a somewhat
more complex questions (and answers).
It should be apparent that you can
build a scaling circuit so that you can always adjust the voltage applied to the
A/D so that it "fits" the input range for the A/D.
Next, you have to consider
some other details of the DVM. For purposes of discussion, we will assume that
you have a 10 bit A/D, and that you using that for a 0-30v DC meter. Since a 10
bit A/D has 1024 possibilities it is tempting to think that the interval between
measured voltages will be 30/1024. That works out to be .0293 volts/division.
(Actually, it is .029296875 volts/division.) That's pretty close to .03
volts/division, and most meter manufacturers will make it work out that way.
Now, if we set things up for .03 volts/division, a count of 1024 will be take to
represetn 30.72 volts, and we don't really have a 0-30v meter, and you would
need to take that into account in the design of the scaling circuit. However,
the advantage of doing it that way is that using that meter with a computer
connection will give exact values for the voltage when that information is
transmitted to the computer. The problem starts when trying to represent
voltages to a number of decimal places that is larger than can be accomodated in
a float. If you use .03volts/division the voltages you comute for each count
will fit into a floating point variable (4 bytes), whereas trying to accomodate
the data for .029296875 volts/division will take a double, and slow down the
arithmetic computations.
|