Load cell offset drift cancellation circuit

OBW0549

Joined Mar 2, 2015
3,566
Question: how can I make the AD7780 report a full range of 24 effective bits with a 2mV/V load cell?
That depends on what you mean by "effective bits." If you expect the AD7780, given a perfectly stable reference voltage and a perfectly stable input voltage, to report the same 24-bit number time after time, that's simply not going to happen, no matter what you do.

A SAR (Successive Approximation Register) ADC behaves that way, although those are limited to around 16 bits or so (unless you want to spend a LOT of money to get an extra bit or two): given perfectly stable, noise-free reference and input voltages, a SAR ADC will give you the same 16-bit number, reading after reading, all day long.

Σ-Δ converters like the AD7780 and the LTC2440 behave very differently, in that their outputs are inherently noisy. Instead of producing the same output code over and over again given ideal conditions, they output a range of codes with a Gaussian distribution centered around the "correct" output code, as in the following histogram taken from the AD7780 data sheet:

Untitled.png

This distribution of codes results partly from analog Johnson noise in the ADC's front end, and partly from the stochastic Σ-Δ conversion process, and behaves statistically as white noise. The above distribution histogram, when viewed as a sequence of readings, looks like this:

Untitled2.png

That output noise, in terms of ADC counts, can be translated directly into terms of equivalent input voltage. That input voltage noise, with Vref = 5V, Gain = 128 and 10 conversions/second, amounts to 49 nanovolts rms, or about 300 nV peak-to-peak (see Table 8 on p. 10).

At that equivalent input noise voltage level, the data sheet lists the converter's resolution as 18 bits; and what they mean by this is that the most-significant 18 bits of the converter's output will be jitter-free, while the lower-order 6 bits will be random noise.

The bottom line is this: if what you mean by "effective bits" is noise-free bits, this "24 bit" ADC is actually only an 18-bit converter. They call it a 24-bit converter not just because that's the output word width in bits, but also because 24 bits is the level at which there are no missing codes-- i.e., the voltage-to-code transfer function neither skips over any code or range of codes, nor does it repeat any sequence of codes. The transfer function is continuous and monotonic for all 24 bits.

It is also a 24 bit converter in the sense that if you were to take an infinite number of readings and average them the result would be accurate to 24 bits, assuming an ideal reference voltage and input signal.

Would an external gain amplifier needed to be added?
Maybe. Maybe not.

Adding an external amplifier will certainly expand your load cell's output to fill a larger range of ADC output codes; but whether that also results in an increase in effective resolution depends entirely on how good the amplifier is.

Remember, any external amplifier is going to amplify not only your load cell's output, but also its own input noise voltage. If that noise voltage is lower than the ADC's own equivalent noise voltage, you can gain some resolution; if not, you will either gain no benefit or even lose resolution.

The data sheet for the MAX44246 dual op amp specifies its typical (not worst-case!) input voltage noise at 117 nanovolts peak-to-peak in a 10 Hz bandwidth. Since you'd be constructing a differential amplifier using both of the MAX44246's amplifiers, the total noise would be 117 nVp-p times the square root of 2 (because the input voltage noise signals of the two amplifiers are random and uncorrelated), or a total of 165 nVp-p. This is somewhat lower than the AD7780's own equivalent input voltage noise of 300 nVp-p, so you'd be gaining roughly an extra half-bit of resolution, possibly close to a full bit. Is that worth the extra expense and board space? Only you can make that judgement.

Would increasing the reference and excitation voltage to 7V (the maximum allowed by the chip) also increase resolution?
Absolutely not.

That 7 volt figure comes from the Absolute Maximum Ratings section of the data sheet. The numbers in that section don't represent recommended-- or even tolerable-- operating conditions: they represent conditions that place the device on the threshold of destruction. Read the note at the bottom of that section:

Stresses above those listed under Absolute Maximum Ratings may cause permanent damage to the device. This is a stress rating only; functional operation of the device at these or any other conditions above those indicated in the operational section of this specification is not implied. Exposure to absolute maximum rating conditions for extended periods may affect device reliability.
And they mean it, too. Trust me.
 

Thread Starter

cmartinez

Joined Jan 17, 2007
8,759
That depends on what you mean by "effective bits." If you expect the AD7780, given a perfectly stable reference voltage and a perfectly stable input voltage, to report the same 24-bit number time after time, that's simply not going to happen, no matter what you do.

A SAR (Successive Approximation Register) ADC behaves that way, although those are limited to around 16 bits or so (unless you want to spend a LOT of money to get an extra bit or two): given perfectly stable, noise-free reference and input voltages, a SAR ADC will give you the same 16-bit number, reading after reading, all day long.

Σ-Δ converters like the AD7780 and the LTC2440 behave very differently, in that their outputs are inherently noisy. Instead of producing the same output code over and over again given ideal conditions, they output a range of codes with a Gaussian distribution centered around the "correct" output code, as in the following histogram taken from the AD7780 data sheet:

View attachment 140641

This distribution of codes results partly from analog Johnson noise in the ADC's front end, and partly from the stochastic Σ-Δ conversion process, and behaves statistically as white noise. The above distribution histogram, when viewed as a sequence of readings, looks like this:

View attachment 140642

That output noise, in terms of ADC counts, can be translated directly into terms of equivalent input voltage. That input voltage noise, with Vref = 5V, Gain = 128 and 10 conversions/second, amounts to 49 nanovolts rms, or about 300 nV peak-to-peak (see Table 8 on p. 10).

At that equivalent input noise voltage level, the data sheet lists the converter's resolution as 18 bits; and what they mean by this is that the most-significant 18 bits of the converter's output will be jitter-free, while the lower-order 6 bits will be random noise.

The bottom line is this: if what you mean by "effective bits" is noise-free bits, this "24 bit" ADC is actually only an 18-bit converter. They call it a 24-bit converter not just because that's the output word width in bits, but also because 24 bits is the level at which there are no missing codes-- i.e., the voltage-to-code transfer function neither skips over any code or range of codes, nor does it repeat any sequence of codes. The transfer function is continuous and monotonic for all 24 bits.

It is also a 24 bit converter in the sense that if you were to take an infinite number of readings and average them the result would be accurate to 24 bits, assuming an ideal reference voltage and input signal.


Maybe. Maybe not.

Adding an external amplifier will certainly expand your load cell's output to fill a larger range of ADC output codes; but whether that also results in an increase in effective resolution depends entirely on how good the amplifier is.

Remember, any external amplifier is going to amplify not only your load cell's output, but also its own input noise voltage. If that noise voltage is lower than the ADC's own equivalent noise voltage, you can gain some resolution; if not, you will either gain no benefit or even lose resolution.

The data sheet for the MAX44246 dual op amp specifies its typical (not worst-case!) input voltage noise at 117 nanovolts peak-to-peak in a 10 Hz bandwidth. Since you'd be constructing a differential amplifier using both of the MAX44246's amplifiers, the total noise would be 117 nVp-p times the square root of 2 (because the input voltage noise signals of the two amplifiers are random and uncorrelated), or a total of 165 nVp-p. This is somewhat lower than the AD7780's own equivalent input voltage noise of 300 nVp-p, so you'd be gaining roughly an extra half-bit of resolution, possibly close to a full bit. Is that worth the extra expense and board space? Only you can make that judgement.


Absolutely not.

That 7 volt figure comes from the Absolute Maximum Ratings section of the data sheet. The numbers in that section don't represent recommended-- or even tolerable-- operating conditions: they represent conditions that place the device on the threshold of destruction. Read the note at the bottom of that section:


And they mean it, too. Trust me.
Excellent explanation, thank you very much. This is the first time I've heard the delta-sigma technology explained in plain english. And now I get why a 24 bit converter does not literally deliver a 24 bit conversion... but rather a 24 bit approximation with stable 18 bits when working at the aforementioned parameters.

Anyway... yes, I consider the extra bit attainable by very important... but even more important for me is the question of drift. The way I understand it, drift is caused by more than one source, the voltage reference being one of them. The load cell's temperature changes another. But let's look at the two options I'm considering.

The datasheets state:

AD7780
  • Offset Error Drift vs. Temperature ±10 nV/°C Gain = 128
  • Gain Drift vs. Temperature ±2 ppm/°C

MAX44246
  • Input Offset Voltage Drift @10v typ=2.4, max=20 nV/°C

Considering a typical drift of 2.4 nV/°C, methinks that the MAX44246 has a much better performance in this respect than the AD7780 internal GA... or am I missing something here?
 

OBW0549

Joined Mar 2, 2015
3,566
The way I understand it, drift is caused by more than one source, the voltage reference being one of them. The load cell's temperature changes another. But let's look at the two options I'm considering.
(Note that voltage reference drift only causes scale factor (gain) drift; it doesn't contribute to offset drift.)

Considering a typical drift of 2.4 nV/°C, methinks that the MAX44246 has a much better performance in this respect than the AD7780 internal GA... or am I missing something here?
No, I don't think you're missing anything; I would expect the MAX44246 to give a measurable improvement. Whether it's dramatic or not, that remains to be seen.

I would recommend you build up an evaluation board with a MAX44246 and the AD7780, and arrange it so the external amplifier can be bypassed (jumpers, switch, etc.). That way, you can evaluate the difference in performance between the external amplifier and the AD7780's own internal amplifier.
 

Thread Starter

cmartinez

Joined Jan 17, 2007
8,759
(Note that voltage reference drift only causes scale factor (gain) drift; it doesn't contribute to offset drift.)
Glad you've mentioned that, now everything's much clearer.

I would expect the MAX44246 to give a measurable improvement.
So would I... the question is, is it worth it? ... and I'm the only one who can answer that at this point ... :rolleyes:

The only way to know would be to build a small board with the AD7780, and another one with the MAX44246 but with the LTC2440 as the ADC. Both ADC's are relatively easy to interface to, so it might be worth a try. The downside is that the latter option will require more components and will be more complex and harder to put together.... I'm going to have to mull this a little...
 

OBW0549

Joined Mar 2, 2015
3,566
The only way to know would be to build a small board with the AD7780, and another one with the MAX44246 but with the LTC2440 as the ADC.
Why? You could build it with the MAX44246 and the AD7780; just make the AD7780 inputs jumper-selectable between either the MAX44246 outputs (and use the X1 setting on the AD7780's PGA) or the MAX44246 inputs, and use the X128 setting on the PGA. In the latter case, the MAX44246 outputs simply wouldn't go anywhere and it would sit there unused.

That will give you a direct comparison between the MAX44246 and the AD7780's internal PGA.
 

Thread Starter

cmartinez

Joined Jan 17, 2007
8,759
Why? You could build it with the MAX44246 and the AD7780; just make the AD7780 inputs jumper-selectable between either the MAX44246 outputs (and use the X1 setting on the AD7780's PGA) or the MAX44246 inputs, and use the X128 setting on the PGA. In the latter case, the MAX44246 outputs simply wouldn't go anywhere and it would sit there unused.

That will give you a direct comparison between the MAX44246 and the AD7780's internal PGA.
You're most probably right... after that last post I've been comparing the drift characteristics of the AD7780 (set with a gain of 1) with that of the LTC2440, and they're very similar...
 

Thread Starter

cmartinez

Joined Jan 17, 2007
8,759
Well... after giving some thought to all these over a few beers during the weekend, here's how I'm going to proceed:

  • It seems to me that the alternate switching technique has become obsolete due to the newest chips out there that boast near-zero drift and auto zero features. Plus, neither you nor Joey have defended its use one bit... and you're both far more knowledgeable than I am in this respect... So I'm going to abandon that idea altogether... I'm stubborn, but I'm not obstinate... so thank you both for pointing me in a better direction. Still, it's a very interesting technique, and maybe there are still some applications out there that could benefit from it.
  • Joey has a point regarding simplicity, but I don't want to proceed further without the chance of testing the differences between having an in-chip PGA and an external one.... which might possibly be of a significantly higher quality.

So I'll go along with your suggestion and build a test board with both the AD7780 (I'm going to forget about the LTC2440 for the time being) and the MAX44246... bypass jumpers and all.

I'll start drawing the PCB for that test board, and post it here when I'm done before etching it. I'd very much appreciate your input regarding its layout. It would be real nice if I didn't have to build the thing more than once. If all goes well, I'll make yet another board with the finish version, sans jumpers or sans MAX33246, depending on what worked best.

Thanks again for all your help.

EDIT: I'll start by choosing an adequate voltage reference first.
 

joeyd999

Joined Jun 6, 2011
6,279
Well... after giving some thought to all these over a few beers during the weekend, here's how I'm going to proceed:

  • It seems to me that the alternate switching technique has become obsolete due to the newest chips out there that boast near-zero drift and auto zero features. Plus, neither you nor Joey have defended its use one bit... and you're both far more knowledgeable than I am in this respect... So I'm going to abandon that idea altogether... I'm stubborn, but I'm not obstinate... so thank you both for pointing me in a better direction. Still, it's a very interesting technique, and maybe there are still some applications out there that could benefit from it.
  • Joey has a point regarding simplicity, but I don't want to proceed further without the chance of testing the differences between having an in-chip PGA and an external one.... which might possibly be of a significantly higher quality.

So I'll go along with your suggestion and build a test board with both the AD7780 (I'm going to forget about the LTC2440 for the time being) and the MAX44246... bypass jumpers and all.

I'll start drawing the PCB for that test board, and post it here when I'm done before etching it. I'd very much appreciate your input regarding its layout. It would be real nice if I didn't have to build the thing more than once. If all goes well, I'll make yet another board with the finish version, sans jumpers or sans MAX33246, depending on what worked best.

Thanks again for all your help.

EDIT: I'll start by choosing an adequate voltage reference first.
First: regarding a reference -- you don't need one as long as you drive the reference voltage input with the same voltage source you drive the load cell with. In fact, you run the risk of adding "reference noise" to your signal chain thereby actually degrading the performance.

Second: The PGA in a (most?) delta sigma is digital, not analog. Therefore, it adds very little drift and additional noise to the signal chain. An analog front end adds both the in-amp noise and drift, and the noise and drift of the associated gain-setting resistors, to the signal chain. You can design an exceptionally low noise/drift analog front end, but this is a far more difficult task.

Third: A few posts back you wrote:

Excellent explanation, thank you very much. This is the first time I've heard the delta-sigma technology explained in plain english. And now I get why a 24 bit converter does not literally deliver a 24 bit conversion... but rather a 24 bit approximation with stable 18 bits when working at the aforementioned parameters.
Actually, it does deliver a 24 bit conversion that more closely resembles an actual analog signal than a lower-bit-count SAR. The noise in the lower bits is essentially "white", or randomly distributed, thereby giving you an opportunity to trade time for more bits via oversampling. The S/N is improved by the square root of the number of samples you average for one complete reading. This can only be done to a limited extent with a SAR because SARs suffer from quantization noise where a DS does not.
 

Thread Starter

cmartinez

Joined Jan 17, 2007
8,759
you don't need one as long as you drive the reference voltage input with the same voltage source you drive the load cell with.
That's exactly what I'm planning to do. But since I'll need at least about 30mA for that, I'm also planning on using the following current boost circuit (but using the ADR4550ARZ chip) to drive and reference both the ADC and the load cell.

upload_2017-12-4_10-57-2.png

Except that I plan to drive the digital part of the ADC with a different 5V source, of course.

Are you saying that this is unnecessary? That I could simply use and off the shelf 7805 to drive the analog part of the circuit, and that the results regarding gain and offset drift will be the same?
 
I did a couple that monitored the output with nothing on the scale. As the output drifted little bits over time, it adjusted the zero in firmware - kind of an auto tare. When weight was applied (bigger signal change) the latest 'zero' value was taken as the tare value. I was told that this was from a now-expired Ohaus patent - I just coded it. Worked perfectly - of course, you need the microcontroller. The excitation was DC referred to Vref.

Zero creep is one of many issues to think about. A considerable amount of our firmware was dedicated to load cell imperfections. Karl Hoffman's book is an excellent resource if you can find one.

Good luck.
Hi John
Would you be able to share your code for the auto zero?
Is your firmware tare done at regular intervals or is it a more complex routine?
Best Regards
Torben
 

JohnInTX

Joined Jun 26, 2012
4,787
Hi John
Would you be able to share your code for the auto zero?
Is your firmware tare done at regular intervals or is it a more complex routine?
Best Regards
Torben
Welcome to AAC!
I am sorry but that project was done for a client and they have the rights to the code.
 
Top