Delta Sigma ADC Bridge Measurement Techniques

Application Note 96
January 2005
Delta Sigma ADC Bridge Measurement Techniques
Mark Thoren
Introduction
In a typical 12-bit measurement system, the signal conditioning amplifier requires a very high gain in order to make
use of the full ADC input range. A sensor with a 10mV fullscale output requires a gain of 500 to use the full input
range of a typical 5V input ADC. A filter may be required to
reduce noise at the expense of settling time. Additional
difficulties arise when dealing with the large common
mode voltage typical of a bridge sensor. Most instrumentation amplifiers have a large discrepancy between the
typical CMRR and guaranteed minimum, which may require an additional trim.
Sensors for pressure, load, temperature, acceleration and
many other physical quantities often take the form of a
Wheatstone bridge. These sensors can be extremely linear
and stable over time and temperature. However, most
things in nature are only linear if you don’t bend them too
much. In the case of a load cell, Hooke’s law states that the
strain in a material is proportional to the applied stress—
as long as the stress is nowhere near the material’s yield
point (the “point of no return” where the material is
permanently deformed). The consequence is that a load
cell based on a resistance strain gauge will have a very
small electrical output—often only a few millivolts. In
spite of this, instruments with 100,000 counts of resolution and more are possible. This Application Note presents
some new approaches to high resolution measurement
made possible by Linear Technology’s family of 20- and
24-bit delta-sigma analog-to-digital converters.
Linear Technology’s differential input delta sigma ADCs
address these concerns and make it possible to extract
maximum resolution from a variety of bridge measurement devices. The outstanding resolution of these ADCs
eliminates the need for amplification in many applications.
Even in extreme cases where amplification is required,
high resolution ADCs such as the LTC®2440 allow very
modest amplifier gains. A fully differential amplifier topology eliminates the differential-to-single-ended stage of a
typical 3-amplifier instrumentation amplifier along with
the CMRR limitations of this stage.
Often the biggest hurdle in implementing a 20- or 24-bit
bridge measurement circuit is moving beyond the conventional signal conditioning circuitry required for 12- to
16-bit ADCs. Simply substituting a 24-bit ADC in a circuit
designed for a 12-bit ADC does not guarantee a 4096 fold
increase in resolution. While performance may be improved, the 24-bit ADC may simply reveal the limitations
of the analog front-end, and the full benefit of the 24-bit
ADC will not be realized.
Linear Technology’s delta sigma ADCs also simplify noise
filtering. The internal SINC4 FIR digital filter results in a
very small noise bandwidth (6Hz at 7.5 samples/second)
without the long settling time associated with an analog
, LTC and LT are registered trademarks of Linear Technology Corporation.
All other trademarks are the property of their respective owners.
5V
5V
3
350Ω
STRAIN GAUGE,
10mV FULL-SCALE
OUTPUT
400.8Ω
8
1
2
5V
+
7
6
®
LT 1789
G = 500
5
–
4
1k
2
IN+
8
1
VCC
REF
5
7
LTC1860 (12 BIT)
LTC1864 (16 BIT)
0.01μF
3
IN–
6
GND
4
CONV
SCK
SDO
AN96 F01
Figure 1. Typical 12-Bit to 16-Bit System
an96fa
AN96-1
Application Note 96
filter of equivalent bandwidth. Thus no filter is required to
prevent an amplifier’s noise from reducing resolution, or
to reject 50Hz-60Hz line pickup.
The 120dB minimum CMRR of the ADC itself eliminates
concern about the mid-supply common mode voltage of
a typical bridge sensor. The ADC also lends itself readily to
floating measurements with little additional circuitry. See
Design Note 341.
Understanding the capability of the sensor is a critical
aspect of measurement circuit design. Often a requirement is stated as a number of “bits of resolution” without
taking into account the sensor’s limitations, or even the
sensor’s output voltage. Lack of familiarity with the sensor
can result in an improperly designed circuit (bad for
product performance) or an overdesigned circuit (bad for
financial performance). The applications that follow are
developed starting at the sensor and considering its performance in terms of physical units; i.e., kgs, PSI, etc.,
disregarding the number of “bits” as a figure of merit until
the conclusion.
Low Cost, Precision Altimeter Uses Direct Digitization
The availability of small, low cost, piezoresistive barometric pressure sensors has led to a plethora of portable
devices with barometer and altimeter functions. The
LTC2411 is a perfect companion to these sensors, as it is
capable of outstanding resolution with no analog signal
conditioning at all.
The NPP301-100 absolute pressure sensor from G.E.
Lucas Novasensor is a piezoresistive device in an SO-8
package. Full-scale output is 20mV per volt of excitation
voltage at one atmosphere (the sensor’s full-scale input).
Temperature coefficient of span is nominally – 0.2%/°C
(typical of piezoresistive sensors) and the temperature
coefficient of offset is ±0.04%/°C.
The formula for altitude vs pressure, based on the 1976
U.S. standard atmosphere is:
Altitude (Ft) =
⎛
⎛ P ⎞⎞
⎜ log10 ⎜⎝ P0 ⎟⎠ ⎟
⎜
⎟
⎜ 5.2558797⎟
⎜
⎟
⎠
10⎝
– 6.8755856 • 10 – 6
where P is the pressure at a given altitude and P0 is the
pressure at sea level.
The input resolution of the LTC2411 is 1.45μVRMS (independent of reference voltage), providing a pressure resolution of:
1.45μV
= 0.0145mB
100mV
(0.00043 inches of mercury)
1000mB •
when the bridge is excited with 5V. 0.0145mB corresponds to an altitude resolution of 5 inches at sea level,
everything else being perfect.
The circuit shown in Figure 2 records pressure and temperature data once every 15 seconds to a 32k EEPROM. An
FM75 pre-calibrated temperature sensor measures temperature. Each data point contains the entire 32-bit output
word from the LTC2411 and temperature to the nearest
1/16°C. Three AA cells provide both power and a quiet
reference voltage. The ratiometric bridge measurement
cancels the effect of long-term drift of the battery voltage.
The overall accuracy of the measurement is not affected by
reduced battery voltage, however the noise floor increases
proportionally.
Figure 3 shows altitude data from a steep hike to the top
of Mission Peak (summit at 767m (2517ft) in Fremont,
CA) on a cold evening. The raw altitude data clearly shows
the barometric sensor’s temperature sensitivity—the indicated altitude at the summit is more than 152m (500ft)
too low due to the drop in temperature. Correcting for
temperature effects based on the nominal –1900ppm/°C
bridge temperature coefficient brings the maximum altitude to 780m (2560ft), much closer to the true value of
767m (2517ft). More accurate results are possible with
further calibration.
How Many Bits?
The effective number of bits based on the ADC resolution
and 100mV output of the sensor is
⎛ 100mV ⎞
LOG2 ⎜
⎟ = 16.1 Bits
⎝ 1.45μV ⎠
The Marketing department will raise their eyebrows and
devote whole ad campaigns around the extra 0.1 bit and
an96fa
AN96-2
Application Note 96
J1
1
2
3
4
5
LT1180A
15
T1 IN
T1 OUT
8
T2 IN
T2 OUT
14
R1 OUT
R1 IN
9
R2 OUT
R2 IN
VCC
17
VCC
3 +
V
7 –
V
C5
0.1μF
C4
0.1μF
16
C3
0.1μF
GND
12
11
13
10
VCC
18
SHDN
+ 2
C1
4
C1–
5
C2+
6
–
C2
ENABLE
DISABLE
PIC16F76
C1
0.1μF
RX 19
RC7
TX 17
RC6
16
RC5
15
RC4
14
RC3
13
RC2
12
2x16 CHARACTER LCD DISPLAY
RC1
(OPTREX DMC-162498
11
RC0
OR SIMILAR)
28
D7
RB7
27
D6
RB6
26
D5
RB5
25
D4
RB4
24
EN
RB3
23
RW
RB2
22
RS
RB1
21
RB0
7
RA5
VCC
6
RA4
5
RA3
4
R2
R3
RA2
5k
5k
3
RA1
2
RA0
C2
0.1μF
VCC
C8
0.1μF
C7
4.7μF
4
NPP301-100
ABSOLUTE
PRESSURE
SENSOR
IN+
IN+ 3
2
1
REF+
VCC
2
6
O+
O–
–IN1 4
FO
SCK
LTC2411
5
IN–
SDO
REF– GND CS
3
5 –IN2
10
9
8
7
6
VCC
VDQ
28
VCC
C6
OSC1
OSC2
MCLR
9
Y1
10MHz
10
R1
10k
1
VCC
D1
BAV74LT1
8
18
AN96 F02
FM75
VCC
6
SCL
7
WP
24LC256
5
9
A2
SDA
2
A1
1
A0
GND
1
SDA VCC
2
A0
SCL
3
A1
OS
4
GND A2
8
7
6
5
VCC
Figure 2. Logging Altimeter
3000
30
SUMMIT, 2517'
25
2500
TEMPERATURE
15
1500
LINEAR
1000 TECHNOLOGY
CORRECTED 10
ALTITUDE
5
500
PARKING LOT,
390'
RAW
ALTITUDE
0
–500
–1000
20
0
20
40
TEMPERATURE (°C)
2000
ALTITUDE (FEET)
6
7
8
9
0
60 80 100 120 140 160 180
TIME (MINUTES)
AN96 F03
Figure 3. Example Altitude Data
an96fa
AN96-3
Application Note 96
5.6μVRMS input noise of the LTC2431 ADC dominates. At
a gain of 2, the noise of the ADC still dominates, but the
input resolution is doubled. Around a gain of 30, the
amplifier’s input noise starts to dominate. Increasing gain
to more than 40 only provides an incremental improvement in resolution. Increasing the gain further increases
the measurement errors due to the LTC2051’s bias current
and finite open-loop gain. Even at a gain of 80, less than
20% of the ADC’s input range is used if the input is a
standard 10mV output strain gauge. Don’t be tempted to
bump the gain to 250 to use the whole ±2.5V input range;
the overall resolution will not be improved.
five inch resolution. A skydiver or mountaineer, though, is
more concerned with the overall absolute accuracy in a
wide range of conditions than the impressive sounding
number of bits.
Increasing Resolution with Amplifiers
Linear Technology’s delta sigma ADCs eliminate the need
for instrumentation amplifiers in many instances. However, if the ADC by itself is not adequate, a properly
designed amplifier can increase the overall resolution.
Figure 4 shows a differential amplifier with an input
resolution of 375nVRMS over the bandwidth of the LTC2431.
The LTC2051 is an autozero amplifier with an input offset
of 3μV and an offset drift of 30nV/°C, ideal for applications
in which long-term drift and accuracy are critical.
Table 1
NOISE AT
AMPLIFIER
OUTPUT
(μVRMS)
NOISE
REFERRED
TO INPUT
(μVRMS)
6
RG
GAIN
FRACTION OF
ADC SPAN
USED
(None)
1
1/500
6
With high resolution ADCs, it is often unnecessary (and
sometimes detrimental) to match the amplifier’s output
range to the input range of the ADC. Instead, limit the gain
to a value such that that the overall resolution is limited by
the amplifier’s input noise.
82.5k
2
1/250
6
3
20.6k
5
1/100
6
1.2
9.15k
10
1/50
7
0.7
Table 1 shows the effects of various gains on the performance of the circuit in Figure 4. At a gain of 1, the
How Much Gain?
4.33k
20
1/25
9.5
0.475
2.11k
40
1/12
15
0.375
1.04k
80
1/6
26
0.325
5V
3
2
+
IC1A
1/2
LTC2051HV
1
R1
1k
–
R4
40.2k
5V
C1
0.01μF
2
4
DIFFERENTIAL
INPUT
C2
0.01μF
RG
5
IC1B
1/2
LTC2051HV
VCC
7
FO
SCK
SDO
REF– GND
3
R3
40.2k
–
IN–
C3
1
LTC2431
5
6
IN+
REF+
CS
10
9
8
7
6
R2
1k
AN96 F04
+
Figure 4. Low Noise Differential Amplifier
an96fa
AN96-4
Application Note 96
The 6Hz bandwidth figure predicts total noise fairly accurately for autozero amplifiers that have flat noise power
densities from DC to some frequency higher than 6Hz.
(Note that this bandwidth must be scaled appropriately if
the conversion rate is changed by applying an external
conversion clock. For instance, applying a 300.7kHz conversion clock to an LTC2411 will result in a 12Hz noise
bandwidth.)
20
18
16
OUTPUT
REFERRED
NOISE
NOISE (μVRMS)
14
12
10
8
6
INPUT
REFERRED
NOISE
4
2
0
0
5
10
15
20 25
GAIN
30
35
40
45
AN96 F05
Figure 5. Noise vs Gain
ADC Response to Amplifier Noise
When properly designed, the resolution of this circuit is
limited almost entirely by the amplifier’s input noise. This
is the case whenever the amplifier’s input noise is lower
than the ADC’s input noise (there is no point in using an
amplifier that is noisier than the ADC). So how does one
determine the total noise from the ADC and amplifier data
sheets?
This is an easy exercise with low resolution sampling
converters. The ADC inputs typically have a flat frequency
response out to the full-power bandwidth given in the data
sheet (which may be significantly higher than 1/2 of the
ADC’s maximum sample rate). The bandwidth of the
amplifier-ADC combination is limited by either the
amplifier’s bandwidth or the ADC’s full-power bandwidth.
As long as the total noise that gets through this system
(calculated from the amplifier’s wideband noise and the
square root of the smaller of the amplifier bandwidth or the
ADC bandwidth) is a small fraction of an LSB, the problem
is solved. Common noise reduction techniques are simple
RC filters directly in front of the ADC or a 2nd order
Sallen-Key filter.
Once again, Linear Technology’s delta sigma ADCs change
the approach to noise reduction. The full-power bandwidth of these devices is approximately 3Hz when operating in the 50Hz or 60Hz rejection mode (7.5sps or 6.25sps)
and the response to wideband noise is equivalent to a 6Hz
brickwall filter. It is exceedingly difficult to build an analog
filter that will improve upon this without degrading some
other parameter.
For most amplifiers, a good first estimate of the ΔΣ ADC’s
response to amplifier noise is the 0.1Hz to 10Hz peak-topeak noise specification divided by a crest factor of six.1
It is only fair to calculate noise from 10 seconds worth of
ADC data for non-autozero amplifiers; longer sets of data
contain 1/f noise components below 0.1Hz as well as
thermal drift components.
The 0.1Hz to 10Hz noise for the LTC2051HV is 1.5μVP-P or
1.5μV/6 = 250nVRMS. Since two amplifiers are used, the
total noise is 250nVRMS • √2 = 353nVRMS, very close to the
measured value. (This rule has proved fairly accurate in a
large number of experiments with both autozero and lownoise bipolar amplifiers.)
How Many Bits?
Table 2 extends Table 1 with another column for the
effective number of bits based on the input-referred noise
and a 10mV full-scale input signal at 7.5 sample/sec.
Table 2
FRACTION OF NOISE AT
NOISE
EFFECTIVE
ADC SPAN AMPLIFIER REFERRED NUMBER
USED
OUTPUT
TO INPUT
OF BITS
RG
GAIN
(none)
1
1/500
6
6
10.7
82.5k
2
1/250
6
3
11.7
20.6k
5
1/100
6
1.2
13
9.15k
10
1/50
7
0.7
13.8
4.33k
20
1/25
9.5
0.475
14.4
2.11k
40
1/12
15
0.375
14.7
1.04k
80
1/6
26
0.325
14.9
Faster or More Resolution with the LTC2440
The LTC2440 has an input noise of 200nVRMS at the base
data output rate of 6.8sps—seven times lower than the
LTC2411. Also, the variable oversample ratio allows speed
and resolution to be optimized for a given application.
1Based
on a 99.97% probability.
an96fa
AN96-5
Application Note 96
Decreasing the oversample ratio by a factor of 2 increases
the data rate and effective bandwidth by a factor of 2, the
total noise increases by a factor of √2, and the effective
number of bits is reduced by 1/2 bit. (Increasing data rate
by 4 reduces ENOB by 1 bit.) This relationship holds for
data output rates from 6.8Hz to 880Hz. The highest two
output rates include additional quantization noise, but the
linearity, offset, and full-scale error do not change.
amplifiers do not behave very well when driving this sort
of load, so additional compensation is required.
Figure 7 shows a basic high impedance buffer for applications that require DC accuracy. During a conversion, the
disturbances emanating from the ADC’s inputs are attenuated by the ratio of CSAMPLE /1μF, or ~100dB for the
LTC2440, and the amplifier simply supplies the average
sampling current.
100
RFB
5k
RMS NOISE (μV)
VCC = 5V
VREF = 5V
VIN+ = VIN– = 0V
VCC
–
10
2μV AT 880Hz
1k
200nV AT 6.9Hz
1 (50/60Hz REJECTION)
CCOMP
0.01μF
RLOAD
10Ω
LTC2051HV
+
0.001Ω
CLOAD
1μF
TO
LTC2440
AN96 F07
CCOMP • RFB > 2 • RLOAD • CLOAD
0.1
1
1000
10
100
CONVERSION RATE (Hz)
10000
AN96 F06
Figure 6. LTC2440 Speed vs RMS Noise
This increase in performance does not come entirely for
free. The LTC2411 family devices are relatively easy to
drive. Source impedances of up to 10k do not degrade
performance if parasitic capacitance at the inputs is kept
to a minimum, and the effective input impedance is on the
order of 3MΩ to 5MΩ. On the other hand, the LTC2440
samples the inputs at 1.8Msps, or 11.5 times faster than
the LTC2411. This means that any disturbance at the
inputs must settle more than 11.5 times faster and the
effective input impedance is approximately 110kΩ. There
are two ways to meet the settling time requirement: lower
the source impedance or keep any sampling disturbance
from happening at all. Resistive sources located very close
to the LTC2440 can meet these criteria; current shunts and
350Ω strain gauges may not require any signal conditioning at all. Most signals, though, require buffering of some
sort. The LTC2440 data sheet contains a further discussion of these effects.
Sampling glitches from the LTC2440 contain very high
frequency components (>250MHz). Loading the inputs to
the LTC2440 with large (1μF) capacitors reduces the
sampling glitches to an insignificant level. Of course, most
Figure 7. Basic Buffer for the LTC2440
The input noise of two LTC2051s is approximately equal to
the input noise of the LTC2440 by itself, which means that
the overall resolution is reduced by a factor of 2 (one
effective bit) when both inputs are buffered.
Low noise bipolar amplifiers can be orders of magnitude
quieter than chopper or autozero amplifiers at frequencies
above the amplifier’s 1/f corner. Low frequency noise and
drift are not a problem for AC applications, but may require
canceling for high accuracy DC measurements. AC excitation cancels any DC error sources and allows for extremely
high-resolution bridge measurements.
The circuit in Figure 8 uses the LT1678 low noise amplifier
and correlated double sampling to achieve a single reading
resolution of 14nVRMS. The amplifiers are compensated to
drive 1μF capacitors at the inputs to the LTC2440. The
200nV input noise of the LTC2440 allows for a conservative gain of 21, thus reducing errors associated with finite
amplifier gain and large output swings. Even rail-to-rail
amplifiers tend to perform better when their outputs are
far away from the rails; this circuit only produces a 210mV
differential output for a full scale 10mV input, keeping both
outputs happily close to mid-supply. This is in contrast to
circuits that use an instrumentation amplifier with a gain
of 500 in order to fill the entire input range of a lower
resolution ADC—another major advantage of the LTC2440.
an96fa
AN96-6
Application Note 96
74HC14
8
EXCITATION
SWITCHING
74HC14
10
74HC14
11 12
R6
10k
13
1N4148
10k
10k
1nF
Q1
Si9801
10k
1nF
+EXC
Q2
Si9801
–EXC
1N4148
LT1461-5
10k
1nF
8
1nF
7
6
VREF
3
2
+EXC
+
–
5
LT1678
C12
4.7μF
DIFF GAIN = 21
C11
0.01μF
IN
OUT
NC2
TRIM
GND
2
3
4
R1
100Ω
6
1k
1μF
7
1μF
C2
4.7μF
C3
4.7μF
VCC
8
GND1
VCC
C14
0.1μF
6
5
+
4
7
FRAME
FO
REF–
SCK
+
SDO
IN–
CS
IN
SDI
GND2
7V TO 12V
3
4
INT
GND3
16
TO
MICROCONTROLLER
15
14
13
SCK
12
MLSO
11
CS
10
9
MDBI
AN96 F08
VCC
8
LT1678
AGND
REF+
0.047μF
–
2
LTC2440
1
5
RFI
SUPPRESSION
NC3
1
VCC
1k
C9
0.08μF
C18
0.08μF
NC1
10Ω
0.047μF
R10
100Ω
NC4
VCC
1
R9
100Ω
–EXC
TO
MICROCONTROLLER
VREF
1N4148
1N4148
9
10Ω
74HC14
5
74HC14
14
7
6
C13
0.1μF
1
74HC14
2
3
4
Figure 8. Single 5V Supply Circuit Resolves 1 Part in 200,000 Over a 10mV Strain Gauge Output Span
Reversing the excitation to the bridge produces several
benefits. First of all, autozero amplifiers are not required to
maintain DC accuracy, since all offsets are cancelled. Parasitic thermocouples are cancelled as well since these voltages appear in series with the amplifier offsets. If the signal
wires from the sensor are of even slightly different composition, a thermocouple pair will result. Consider the case
of two “identical” copper wires that have a thermoelectric
potential of 0.2μV/°C. A “temperature noise” of 1°CRMS
translates directly to 200nVRMS measurement noise (Linear Technology Application Note 86, Appendix J).
Bridge excitation switching is accomplished by brute force
with two Si9801DY FET half bridges. While this may seem
less elegant than driving the excitation with force/sense
amplifiers, it eliminates the need for supply voltages
outside of 0V and 5V and the errors introduced are far less
than those of most very high quality sensors. The total
RDS(ON) of 0.13Ω translates to a mere 0.037% full-scale
error and the 5000ppm/°C temperature coefficient of
RDS(ON) only causes –2ppm/°C drift when used with a
350Ω bridge. These errors will be almost three times less
with a 1000Ω bridge.
an96fa
AN96-7
Application Note 96
Figure 9 shows the inputs to the LTC2440 and the state of
BUSY pin, indicating when sampling is taking place.
How Many Bits?
A full-scale input of 10mV and an input noise of 14nVRMS
gives 19.4 bits, noteworthy to the Marketing department.
With this level of precision, the bridge itself is the dominant error source. Consider the Omega LC1001 series
calibrated, temperature compensated load cells. This device has a full-scale error of 0.25%, a zero offset of 1% of
full scale and a linearity of 0.05% of full scale. Temperature
coefficient of both zero and span are 20ppm/°C. All of
these errors can be calibrated out, including thermal drift
if the temperature of the cell is measured. However,
mechanical hysteresis and non-repeatability affect the
maximum resolution that can be achieved under all conditions. The hysteresis specification for this load cell is
0.03% of full scale, or 1 part in 3333. This does not
necessarily mean that this will be an “11.7-bit” system—
it depends on the application. If this load cell is used in a
parts counting scale, then it will be zeroed frequently and
the load will be quickly applied and measured. Long term
creep effects that lead to hysteresis will be negligible.
To illustrate the real resolution of the circuit in Figure 8, half
a penny was dropped onto a Tedea model 1240 load cell
with a 200kg full-scale range, equivalent to adding 1 part
in 200,000. As Figure 10 shows, the additional weight is
clearly registered.
LTC2440 IN+
500mV/DIV
LTC2440 IN–
BUSY
5V/DIV
AN96 F09
5ms/DIV
Figure 9. Amplifier Waveforms
241880
241870
241860
ADC COUNTS
241850
241840
241830
241820
241810
241800
241790
241780
0
50
150
100
SAMPLE NUMBER
200
250
AN96 F10
Figure 10. 1 Gram Step
an96fa
AN96-8
Application Note 96
Appendix A—Frequency Response of an
AC Excited Bridge
The AC excitation technique described in the last application circuit is actually a simple finite impulse response
(FIR) filter. Any signal not caused by the excitation voltage
(which includes all offsets and amplifier input noise) sees
a 2-tap FIR filter with coefficients of (0.5, –0.5). This
produces a null at DC, fS, 2fS, etc., and a gain of 1 (0dB) at
fS/2, 3fS/2, 5fS/2, etc., and the frequency response is
0.5 – 0.5 • COS(2π • f/fS).
Noise at 3.4Hz is not attenuated, but it actually isn’t quite
so bad. The ADC’s own internal filter is down 3dB at the
sampling frequency so the net gain is –3dB at 3.4Hz.
Although 3.4Hz is below the amplifier’s 13Hz 1/f corner, it
is still faster than any expected thermal effects.
The autozeroing process also affects the response of the
input signal. Since the excitation reversal is calculated out
in software, the result is a 2-tap FIR filter with coefficients
of (0.5, 0.5). This produces a gain of 1 at DC, fS, 2fS, etc.,
and a null at fS/2, 3fS/2, 5fS/2, etc., and the frequency
response is 0.5 – 0.5 • COS(2π • f/fS). This also reduces the
bandwidth by a factor of 2, which reduces the noise by a
factor of 2.
Since the LTC2440 input noise is Gaussian, averaging
more samples further reduces the noise. (Noise is reduced
by a factor of the square root of the number of readings
averaged.) The optimum number of samples to average
depends on the application—where the cost for additional
noise reduction is increased settling time.
0
–10
REJECTION (dB)
–20
–30
–40
–50
–60
–70
–80
–90
0
5
NOISE RESPONSE
SIGNAL RESPONSE
LTC2440 RESPONSE,
OSR32768
15
10
FREQUENCY (Hz)
25
20
AN96 F11
Figure 11. Correlated Double Sampling Frequency Response
an96fa
AN96-9
Application Note 96
Appendix B—Measuring Resolution,
RMS vs Peak-to-Peak Noise and Psychological
Factors
When testing signal conditioning circuits, it is important to
isolate error sources and be familiar with the limitations of
the sensor. In the case of the circuit in Figure 8, the first
test is to short the differential amplifier inputs together and
bias them to mid-supply. This emulates a perfect load cell
with zero offset and zero output impedance. In this configuration, the only output is the noise and offset of the
circuit itself. Another test is to connect the inputs to a midsupply bias through two 350Ω resistors, adding the
effects of amplifier bias current and current noise.
The last test, before actually connecting the load cell, is to
connect a DJ Instruments model DJ-101ST strain gauge
bridge simulator. This instrument is a precision resistor
bridge that simulates a strain gauge. Full-scale outputs of
1, 2, 3, 5, 10 and 15mV/V are provided, and for a given
range the output can be adjusted from 0% to 120% of full
scale in 10% steps. The objective is to emulate all of the
properties of a strain gauge except measuring strain. This
device verifies that Figure 8 maintains 19nVRMS resolution
across its entire input range. The LT1461 was selected
based on its low drift and high output current—there are
more quiet references available, but this test shows that its
noise performance is adequate. Applying a full-scale input
will determine if the reference voltage is sufficiently quiet
—a noisy reference will elevate ADC noise when the input
is close to full scale. (The output code of an ADC is
VIN/VREF. Thus noise in the output data that is due to
reference noise is directly proportional to the input voltage, assuming the reference noise is small compared to
VREF.)
The last test is to actually connect a load cell. This circuit
will detect 1 gram on a Tedea model 1240 load cell with a
200kg capacity, and it will detect one sheet of copier paper
dropped on a stack of 20 reams (10,000 sheets). The
importance of testing the circuit with a bridge simulator
becomes clear when the air conditioner turns on—a single
sheet of paper gets buried in noise. This exposes a very
real limitation on high resolution weigh scales; a large tare
weight turns the scale into a very sensitive seismograph.
Other limitations include mechanical hysteresis, creep
and linearity of the load cell.
RMS vs Peak-to-Peak Noise
Another topic that often surfaces in high resolution applications is whether to use RMS noise or peak-to-peak
noise. Some would eschew RMS noise as useless, asserting that peak-to-peak noise is the true measure of performance. However RMS noise has a distinct advantage—it
is standardized and easy to calculate by taking the standard deviation of a set of ADC readings. This is only valid
if the output noise is Gaussian, which is the case for all of
Linear Technology’s delta sigma ADCs.
Consider a high resolution ADC that has 1μVRMS input
noise and zero offset. With the inputs shorted together, it
will produce a distribution of output values, 68.27% of
which will be within 1μV of zero. Of course this implies that
31.73% of the readings are more than 1μV away from zero.
It would be nice to know the true “peak-to-peak” noise of
an ADC; some bound on the error for any given data point.
But electrical noise does not work this way; there is always
a nonzero probability that any one reading can have a value
very far from the average. Fortunately there is a systematic
way to relate the performance requirements of an application to the RMS noise level, but it does require a small dose
of realism.
Say a weigh scale application requires 10,000 “counts” of
resolution. If the load cell has a 10mV full-scale output,
this implies a voltage resolution of 1μV. The LTC2440 has
200nVRMS input noise in its highest resolution mode, so
it should work. But one common rule says that the ratio of
peak-to-peak to RMS (also called crest factor) is 6 for
Gaussian noise, so the peak-to-peak noise is 1.2μV—
greater than the 1μV spec. The piece of information
missing is the probability that a reading will be outside of
the acceptable limit. If the noise at the ADC inputs is
Gaussian, then the answer should lie in the normal error
integral table found in the back of any statistics textbook.
Figure 12 shows 10,000 readings from an LTC2440 in the
lowest noise mode (6.8 samples per second), and Figure
13 is a histogram of these readings that appears Gaussian
at first glance.
an96fa
AN96-10
Application Note 96
800
600
VOLTAGE (nV)
400
200
0
–200
–400
–600
–800
0
1000
2000
3000
6000
5000
4000
SAMPLE NUMBER
7000
8000
9000
10000
AN96 F12
Figure 12
2500
FREQUENCY (Hz)
2000
1500
1000
500
0
–800
–640
–480
–320
–160
160
0
VOLTAGE (nV)
320
480
640
8000
AN96 F13
Figure 13
The RMS noise of this particular LTC2440 is 194nV,
slightly better than the 200nV typical spec. Table 3 compares the textbook probability that a reading will be within
a certain crest factor to the actual measured values.
Table 3
CREST FACTOR
TEXTBOOK
PROBABILITY (%)
MEASURED
PROBABILITY (%)
2
68.27
70.95
3
86.64
85.12
4
95.45
95.66
5
98.76
98.83
6
99.73
99.76
7
99.95
99.98
This shows that the noise at the input of the LTC2440 is
indeed very close to Gaussian. It also shows that only one
reading in 100 will be outside of a ±0.5μV range. If the
display shows 10,000 counts, one would have to stare at
it for almost 15 seconds to see more than one count of
noise. If this is acceptable, then assuming a crest factor of
5 is adequate and there is no need for additional signal
conditioning. If it is not acceptable, follow the design
procedure in the section on increasing resolution with
amplifiers.
Psychological Factors
Linear Technology’s 20- and 24-bit ADCs have an LSB size
that is smaller than the noise voltage (this is typical of any
high resolution ADC). As a result, these devices will have
a number of bits that do not hold steady for a constant
input voltage. It is almost impossible to estimate ADC
noise by looking at the binary data output. Looking at a
decimal representation of the output data is not much
better. In fact, the only way to get an objective opinion on
the RMS noise level of a given circuit is to collect a set of
data points and take the standard deviation.
an96fa
AN96-11
Application Note 96
mode,” such as a pin that normally reads the state of a
pushbutton. It is not even necessary to use a hardware
UART to generate the serial data; a simple “bit-bang”
routine at 1200 baud will work just fine. Most compilers
provide a printf or sprintf function to format data as ASCII
decimal characters. If these are not available, then sending
ADC data as eight ASCII hexadecimal characters will work
as most spreadsheets provide a “HEX2DEC” function to
convert hexadecimal to decimal data. Most operating
systems have a terminal program included that is suitable
for capturing data to a text file that can then be imported
into a spreadsheet.
This is a good lead-in to one last hint for designing circuits
with Linear Technology’s delta sigma ADCs. Always provide an easy way to get data points into a PC. Even in a
handheld application that will never be attached to a
computer in real life, the ability to analyze data will save an
incredible amount of troubleshooting time. A convenient
way to do this is to send data to the PC’s serial port using
the circuit shown in Figure 14.
Use a spare I/O pin to send the serial data and write a small
test program that only takes data from the ADC and sends
it to the PC. If all of the processor’s I/O pins are used up,
pick one that can be safely used for this purpose in a “test
J1
LTC1384
TO
SPARE
I/O PIN
14
13
15
12
TO
APPLICATION’S
GROUND
1
1
5V
C1
0.1μF
C2
0.1μF
20
T1IN
T2IN
R1OUT
R2OUT
T1OUT
T2OUT
R1IN
R2IN
17
2
6
8
3
7
16
4
8
9
5
9
RXEN
SHDN
5V
19
2
C1+
VCC
4
C1–
V+
3
5
C2+
V–
7
6
C2–
GND
C5
0.1μF
10
C4
0.1μF
C3
0.1μF
AN96 F14
Figure 14. Serial Debug Circuit
an96fa
AN96-12
Application Note 96
Appendix C—Altimeter Code
Altimeter.c
/*
Logging Altimeter based on LTC2411
Mark Thoren
Linear Technology Corporation
On power-up, program searches for first free memory location in 32KB EEPROM,
then starts taking temperature and absolute pressure data at 7.5 samples per
second, the data output rate of the LTC2411. Every 15 seconds a temperature /
pressure data point is stored to nonvolatile memory.
To read back data for processing, connect to a PC terminal set to 9600 8 N 1
and type “D” for Dump. Capture text to a file and
import to your favorite spreadsheet.
To erase data, type “E” for Erase. This zeros memory, necessesary because of the
data point flag in bit 31. (See data format.)
Data Format: 8 bytes, ms bit = 1, indicating data is present.
Next are 31 data bytes, Then the 16 bit temperature word.
*/
#include
#include
#include
#include
#include
<16F73.h>
“pcm73a.h”
“altimeter.h”
“lcd.c”
“math.h”
int1 new_period, old_period;
// global flags for detecting new period
void main()
{
char i;
// Voltage from LTC2411 and temperature from FM75 are stored as unions
// allowing byte access to 16 and 32 bit variables.
union
// voltage.bits32
the whole thing
{
// voltage.by.te0
byte 0
signed int32 bits32;
// voltage.by.te1
byte 1
struct fourbytes by;
// voltage.by.te2
byte 2
} voltage;
// voltage.by.te3
byte 3
union
{
signed int16 bits16;
struct twobytes by;
} temperature;
// temperature.bits16
// temperature.by.te0
// temperature.by.te1
the whole thing
byte 0
byte 1
float dec_voltage;
float dec_temperature;
int deg_c;
unsigned int16 address = 0;
// Floating point for display purposes only
an96fa
AN96-13
Application Note 96
initialize(); // Set up hardware
lcd_gotoxy(1,1);
// Print obligatory hello message
printf(lcd_putc, “hello!”);
// First to LCD display
printf(“hello serial port!\r\n”);// Then to serial port
// Detect next available address
// To avoid overwriting when cycling power
while(address <= 0x7FFF)
{
if(!(ee_read(address) & 0x80)) break;
address +=8;
}
// Main loop
while(1)
{
while(!kbhit())
{
output_low(ADC_CS_);
while(input(PIN_C4)) {}
voltage.by.te3 = spi_read(0x00);
voltage.by.te2 = spi_read(0x00);
voltage.by.te1 = spi_read(0x00);
voltage.by.te0 = spi_read(0x00);
output_high(ADC_CS_);
//
//
//
//
//
If serial data is in, take action
else start collecting data
Enable LTC2411 serial interface
Make sure data is ready
Read data as four bytes
// Subtract offset (result is in 2’s complement)
voltage.bits32 = voltage.bits32 - 0x20000000;
dec_voltage = (float) voltage.bits32;
// cast as float
dec_voltage = dec_voltage * 2.5 / 268435456.0; // normalize to vref
i2c_start();// Get temperature data from FM75 sensor
i2c_write(FM75_ADDR | I2WRITE);
i2c_write(0x00); i2c_start();
i2c_write(FM75_ADDR | I2READ);
temperature.by.te1=i2c_read(1);
temperature.by.te0 = i2c_read(0);
i2c_stop();
// Convert from bits to degrees C
dec_temperature = ((float) temperature.bits16) / 256.0;
lcd_gotoxy(1,1);
printf(lcd_putc, “%f”, dec_voltage);
lcd_gotoxy(1,2);
printf(lcd_putc, “%3.3f C”, dec_temperature);
// Display sensor voltage
// Write data if a new 15 second period has begun
if(old_period != new_period && address <= 0x7FF0)
{
an96fa
AN96-14
Application Note 96
old_period = new_period;
LED = new_period;
printf(“writing address %ld\r\n”, address);
ee_write(address, voltage.by.te3 | 0x80);
ee_write(++address, voltage.by.te2);
ee_write(++address, voltage.by.te1);
ee_write(++address, voltage.by.te0);
ee_write(++address, temperature.by.te1);
ee_write(++address, temperature.by.te0);
address+=3;
}// End of writing data
}// End of detect character
//
//
//
//
//
Set flag
Blink light
Serial port display
Set MS bit as data flag
Write voltage data.
// Detect commands at serial port
printf(“got a character\r\n”);
switch(getc())
{
case ‘D’: printf(“Dumping Data\r\n”); dump_data(); break;
case ‘E’: printf(“Erasing Data\r\n”); erase_data(); address = 0; break;
default: break;
}
}// End of while loop
}// End of main()
void initialize(void)
{
output_high(ADC_CS_);
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_CLOCK_DIV_2);
setup_spi(SPI_MASTER|SPI_L_TO_H|SPI_CLK_DIV_16|SPI_SS_DISABLED);
CKP = 0; // Set up clock edges - clock idles low, data changes on
CKE = 1; // falling edges, valid on rising edges.
setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_2); // 16 bit counter overflows every 52.4 ms
setup_timer_2(T2_DISABLED,0,1);
setup_ccp1(CCP_OFF);
setup_ccp2(CCP_OFF);
enable_interrupts(INT_TIMER1);
enable_interrupts(global);
lcd_init();
delay_ms(6);
i2c_stop();
i2c_start();
i2c_write(FM75_ADDR | I2WRITE);
i2c_write(0x01);
i2c_write(0x60);
i2c_stop();
}
// Configuration register
// Set to 12 bit resolution
#int_TIMER1
TIMER1_isr()
{
an96fa
AN96-15
Application Note 96
// 286.25 interrupt periods at 52.4ms each = 15 seconds
static int16 count;
if(++count == 286)
{
new_period = new_period ^ 0x01; // Toggle new_min
count = 0;
}
}
Altimeter.h
#fuses HS,NOWDT, PUT
#use delay(clock=10000000) // 10MHz clock
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7)
#use i2c(master,slow,sda=PIN_A0,scl=PIN_A1)
#define ADC_CS_
PIN_C2
#bit
LED
= PORTC.0
#define
#define
#define
#define
#define
MAX_EE_ADDR
EE_ADDR
FM75_ADDR
I2READ
I2WRITE
0x7FFC
0b10100000
0b10011110
0x01
0x00
// Ground all address pins
// Prototypes
void initialize(void);
// Structures to allow byte access to word and long word data
struct fourbytes
{
//Define structure of four consecutive bytes
int8 te0;
int8 te1;
int8 te2;
int8 te3;
};
struct twobytes
{
//Define structure of two consecutive bytes
int8 te0;
int8 te1;
};
// Read data from I2C EEPROM
char ee_read(int16 address)
{
char x;
i2c_stop();
i2c_start();
if(i2c_write(EE_ADDR | I2WRITE)) printf(“\r\NAK DEVICE ADDRESS!!”);
if(i2c_write(address >> 8)) printf(“\r\nNAK MSB!!”);
if(i2c_write(address)) printf(“\r\nNAK LSB!!”);
i2c_start();
an96fa
AN96-16
Application Note 96
if(i2c_write(EE_ADDR | I2READ)) printf(“\r\nNAK WRITE COMMAND!!”);
x=i2c_read(0);
i2c_stop();
return x;
}
// Write data to I2C EEPROM
void ee_write(int16 address, char data)
{
int8 x;
i2c_stop();
i2c_start();
if(i2c_write(EE_ADDR | I2WRITE)) printf(“\r\nNO ACK!!”);
if(i2c_write(address >> 8)) printf(“\r\nNO ACK!!”);
if(i2c_write(address)) printf(“\r\nNO ACK!!”);
if(i2c_write(data)) printf(“\r\nNO ACK!!”);
i2c_stop();
do
// Make sure data is written
{
i2c_start();
x=i2c_write(EE_ADDR | I2WRITE);
i2c_stop();
} while(x);
}
// Send data to PC
void dump_data()
{
int16 address = 0;
char x = 0x80;
union
{
signed int32 bits32;
struct fourbytes by;
} altidata;
//
//
//
//
//
voltage.bits32
voltage.by.te0
voltage.by.te1
voltage.by.te2
voltage.by.te3
the whole thing
byte 0
byte 1
byte 2
byte 3
union
{
signed int16 bits16;
struct twobytes by;
} tempdata;
//
//
//
//
//
voltage.bits32
voltage.by.te0
voltage.by.te1
voltage.by.te2
voltage.by.te3
the whole thing
byte 0
byte 1
byte 2
byte 3
do
{
altidata.by.te3 = x = ee_read(address);
altidata.by.te2 = ee_read(++address);
altidata.by.te1 = ee_read(++address);
altidata.by.te0 = ee_read(++address);
tempdata.by.te1 = ee_read(++address);
tempdata.by.te0 = ee_read(++address);
address +=3;
altidata.by.te3 &= 0x7F;
// Clear detect bit (would screw up math)
printf(“%ld,%ld\r\n”, altidata.bits32, tempdata.bits16);
an96fa
AN96-17
Application Note 96
}while((x & 0x80) && address <= 0x7FF0);
printf(“done\r\n”);
}
// Clear data in I2C EEPROM
void erase_data()
{
int16 address;
int i;
char x;
for(address=0; address<=0x7FFF; address+=64)
{
i2c_start();
i2c_write(EE_ADDR | I2WRITE);
i2c_write(address >> 8);
i2c_write(address);
for(i=0; i<64; ++i)
// 64 byte burst write
{
i2c_write(0);
}
i2c_stop();
do
// Make sure data is written
{
i2c_start();
x=i2c_write(EE_ADDR | I2WRITE);
i2c_stop();
} while(x);
}
}
an96fa
AN96-18
Application Note 96
Appendix D—Correlated Double Sampling
Driver Code
/*
This function takes care of switching the bridge excitation, allowing
the amplifiers to settle, programming the LTC2440 oversample ratio,
and reading the LTC2440 output. The return value is the difference between
the present reading and the previous reading. The first time this function
is called the return value will not be valid. EXCITATION, CS, AND MISO refer to
the I/O pins for the bridge excitation switching, LTC2440 chip select,
and the LTC2440 SDO pin, respectively.
*/
int32 double_sample(void)
{
#define SETTLING_TIME
2
#define OSR 0xFF
static union{
struct fourbytes by;
signed int32 bits32;
} positive;
// Miliseconds, settling time after switching bridge
// Hex code to program the LTC2440 oversample ratio
// (OxFF = OSR32768)
// These are static because they need to be remembered
// from one conversion to the next.
static union{
struct fourbytes by;
signed int32 bits32;
} negative;
union{
struct fourbytes by;
signed int32 bits32;
} voltage;
// Doesn’t need to be static
static boolean polarity = 0; // 0=negative, 1=positive
output_low(CS);
while(input(MISO)) {}
// Enable SPI interface
// Wait for SDO to go low indicating end of conversion
// The following block takes care of switching bridge polarity and loading
// the proper
if(polarity==1)
{
polarity = 0;
output_low(EXCITATION);
// Switch excitation
delay_ms(SETTLING_TIME);
// Here is the place to insert extra
// Read out positive result
// settling time for amplifiers
positive.by.te3 = spi_read(OSR);
// Program OSR, read first byte
positive.by.te2 = spi_read(0);
positive.by.te1 = spi_read(0);
positive.by.te0 = spi_read(0);
}
else
{
an96fa
AN96-19
Application Note 96
polarity = 1;
output_high(EXCITATION);
delay_ms(SETTLING_TIME);
// Read out negative result
negative.by.te3 = spi_read(OSR);
negative.by.te2 = spi_read(0);
negative.by.te1 = spi_read(0);
negative.by.te0 = spi_read(0);
}
output_high(CS);
// Switch excitation
voltage.bits32 = (positive.bits32 - negative.bits32); // Take difference oflast
voltage.bits32 = voltage.bits32 >> 1;
// two readings, divide by 2
return voltage.bits32;
// Return result
}
an96fa
AN96-20
Linear Technology Corporation
LT 0507 REV A • PRINTED IN USA
1630 McCarthy Blvd., Milpitas, CA 95035-7417
(408) 432-1900
●
FAX: (408) 434-0507 ● www.linear.com
© LINEAR TECHNOLOGY CORPORATION 2005