0
\$\begingroup\$

Say we have a ten bit ADC (MSP430G2433) and a thermistor. We have the problem that two temperature measurements are too far apart, whilst the temperature has barely changed. So, we take more measurements in rapid succession, average them and we get closer values. So far, so good.

Now, take the following paper: https://www.silabs.com/documents/public/application-notes/an118.pdf

This paper explains that if we first sampled at one 1 Hz, and then increase to 256 Hz, we get four additional bits, assuming that the noise is white noise.

Now, we sample once per minute and we used to take 8 samples. Say now, that we increase the sample rate so that we have 64 samples, but we take those samples within a second (ADC lies dormant for 59 seconds, then takes 64 samples, etcetera).

Can we now say that we have gained 3 bits?

\$\endgroup\$
4
  • \$\begingroup\$ How are they connected to the MCU? What is the sampling time and recommended source impedance to the ADC? Does the problem change to other thermistor if you change the reading order? Are MCU pull-ups and downs disabled? \$\endgroup\$
    – Justme
    May 14, 2020 at 11:42
  • \$\begingroup\$ Why are the measurements far apart? Is this consistent with the signal on the input pin? (i.e. can you see it varying by that amount on a scope?) \$\endgroup\$
    – user16324
    May 14, 2020 at 12:53
  • \$\begingroup\$ I removed the piece of information about two thermistors, it is not relevant, because the problem happens on both. If we take one measurement once per minutre, we get almost always a different temperature. If we take multiple (64, currently), we get way less changes. \$\endgroup\$
    – Cheiron
    May 14, 2020 at 13:40
  • 1
    \$\begingroup\$ Keep in mind that oversampling can increase resolution but it does not necessarily improve accuracy. \$\endgroup\$ May 14, 2020 at 13:46

2 Answers 2

3
\$\begingroup\$

Oversampling and averaging can get you more resolution, under certain circumstances, but it's not a magic bullet.

If the noise at the ADC, either inherent in the system, or indeed added externally for the purpose, spreads the input signal suitably, then adding together N readings and averaging will improve the SNR by sqrt(N). 'Suitably' means either a flat distribution of exactly 1 LSB width (which is difficult to arrange and maintain) or a normal(ish) distribution covering 'several' LSBs (rather easier).

While this improves the signal to noise ratio and so the resolution, it will not improve the accuracy. It does nothing to improve low order non-linearities in the ADC, and nothing to improve its drift.

Generally if you are using the ADC to make fine distinctions between similar voltages at similar times, then it's well worth doing. If you want to make accurate differences between widely different voltages, or over a long period of time, you probably need a fundamentally better ADC.

It really depends what the limiting factors are in your ADC, and how you want to use the reading, whether the extra bits you get from oversample and average are useful or not.

Using the inherent noise of the ADC and then averaging a few readings is a very easy thing to do. It's worth doing the experiment to see whether the averaged ADC really gives you a benefit in your use case.

\$\endgroup\$
1
  • \$\begingroup\$ Good point about the INL and DNL (among other things) not being improved; my experience is that for a practical application, we might get 2 more bits of resolution. If more than that is required, I use a better ADC. \$\endgroup\$ May 14, 2020 at 11:09
0
\$\begingroup\$

You will gain some more resolution but if you do not know your noise sources it may not be meaningful resolution and your 2 measurements may be just as poor.

I would begin by isolating where the noise / errors are coming from and reduce or remove them.

Top candidates would be the power supply to the thermistor divider / adc reference. This would include the ground and how much noise may be coupling.

Ratiometric systems usually buffer the adc's own reference for the dividers supply so that any dc shifts in the measured value are cancelled out.

Next if you're keeping within the input impedance requirements of the adc. If not some capacitance to reducenthe impedancen when sampled may help. The adc has to charge a small internal sampling capacitor each time. If it does not charge up fast enough you see errors in your measured values.

And lastly. Are you doing anything with the signal and return wires to keep external noise low. E.g. off board sensors should have the wiring twisted to keep the amplitude and polarity of any nearby noise sources self cancelling.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.