Understanding tolerances of elements

Hello,

if resistor have 1% it means, that it value can be anywhere from 990 to 1010 ohms for 1k resistor.

If 5V voltage regulator have 1% tolerance, it means that output can vary from 4,95 to 5,05 V.

I understand that.

I take 1k resistor and measure it with really accurate instrument and it shows let's say 1005 ohms. Than I measure voltage output on 5V regulator and it shows for example 5,01 V.

What I am wondering is, if this deviation of elements is fixed value or it will change? If it is fixed, I can calibrate it. But if the values are swinging inside tolerance range all the time, that's a problem.

But if the values are swinging inside tolerance range all the time, that's a problem.

Generally values do not change very much with time alone, but temperature changes can have a large effect.

In many cases you can calibrate, or carefully select parts. Don't forget that your multimeter also has errors.

In general the more accurate the resistor, the smaller the tempco (tempco is short for temperature
coefficient, the percentage change of value with temperature) - this has to be so, for a resistor that is
accurately 1000.000 ohm at 25C but 1044.356 at 100C is just a 5% resistor.

Sometimes you only care about the differential change in value with temperature between two resistors
(for instance in a wheatstone bridge circuit), and then only the variation in tempco between devices
matters, not its absolute value.

So there is more to this than immediately apparent - circuits that only require well matched components,
rather than components with a well defined absolute value are more useful, since real money can be saved.

I don't know if it is still the case (this was quite a few years ago when I ran into it), but if you got 100 1k 20% resistors and measured them, you would typically expect a normal distribution curve around the 1k mark. Not the case - what you ended up with was a double hump with a dip in the center at 1k. They tested them after production and the ones that were in the center got either the silver (10%) or gold (5%) band (and cost more). So if you got the 20% ones, they typically would NOT be at the nominal value. These days though, 1% or better are much more common (and less expensive with the laser trimming). Where we use resistors most often here though are for either pull-down or current limiting (LED etc.) and as such, the value just isn't that critical.

Don't expect to calibrate away more than "about half" of the tolerance variation unless you have identified from datasheets which parts of the tolerance variation arise from manufacturing variation ( eg. fatter resistance dimension than designed ideal ) and which arise from environmental changes ( eg, resistance change with temperature and temperature gradient ). As a rule of thumb, more expensive "1%" parts tend to be improved in both respects from "5%" cheap parts.

If you really want to get rid of variations, read up about temperature regulated boxes and any other improvements used by national physical laboratories. And you really cannot do much if your circuit is going to be in a corrosive environment such as at sea and unprotected.

Thank you for all the answers. I will continue here, although this one is probably for another subject.

I calculated that if I use Pt1000 sensor with 3,3V power supply and use reference of 1.2V, I get +170 °C, where fixed resistor is 3k (+/- 0,1%). In this case, change is 0,0021 V/°C.

With 10bit ADC of ATmega at 1,2V reference this means 0,001177 V/bit, which would mean temperature resolution of aproximately 0,5 °C.

I will calibrate resistance deviation out but I am in doubt, what to use for voltage reference, since voltage change for one degree is so small. I was thinking about LM4041AIM3-1.2/NOPB for voltage reference (shunt reference with +/- 0,1%) and LP2950ACZ-3.3G with +/- 0,5% for sensor powering.

If I can get accuracy of +/- 1 °C in the end, that's fine. Is this concept ok?

gpsmikey:
I don’t know if it is still the case (this was quite a few years ago when I ran into it), but if you got 100 1k 20% resistors and measured them, you would typically expect a normal distribution curve around the 1k mark. Not the case - what you ended up with was a double hump with a dip in the center at 1k. They tested them after production and the ones that were in the center got either the silver (10%) or gold (5%) band (and cost more). So if you got the 20% ones, they typically would NOT be at the nominal value. These days though, 1% or better are much more common (and less expensive with the laser trimming). Where we use resistors most often here though are for either pull-down or current limiting (LED etc.) and as such, the value just isn’t that critical.

EEVblog #215 - Gaussian Resistors
EEVblog #216 - Gaussian Resistor Redux

If I can get accuracy of +/- 1 °C in the end, that's fine. Is this concept ok?

Seems OK to me.

You can get higher resolution out of the ADC by oversampling and averaging. There are some caveats and precautions to take, but your should have no problem getting 12 bit resolution or higher, with slowly changing temperature measurements.

jremington:
You can get higher resolution out of the ADC by oversampling and averaging. There are some caveats and precautions to take, but your should have no problem getting 12 bit resolution or higher, with slowly changing temperature measurements.

Great, I will try that. Didn't know that this is possible.

Thank you!

For oversampling to work you need the right amount of noise added to the signal, otherwise
you still see 1024 steps in the signal as the value changes slowly. The noise allows 333.25 to
appear as 333 75% of the time and as 334 25% of the time, without noise its going to read as
333 all the time.
http://www.atmel.com/images/doc8003.pdf

jremington:
Seems OK to me.

You can get higher resolution out of the ADC by oversampling and averaging. There are some caveats and precautions to take, but your should have no problem getting 12 bit resolution or higher, with slowly changing temperature measurements.

Wouldn't you need to add some kind of dithering to the reference voltage or something? If you had a stable enough signal that it would make sense to read it with 12 bits of resolution, it probably wouldn't change the ADC reading very much if at all for averaging to really improve anything.

Jiggy-Ninja:
EEVblog #215 - Gaussian Resistors
EEVblog #216 - Gaussian Resistor Redux

You didn't go back far enough (I'm really old!!). I was thinking more of the old carbon resistors that were 20% (no band), 10% (silver band) or 5% (gold band). Yeah, back to the vacuum tube days essentially was when I ran into the issue. Metal film 1% that he was working with are MUCH better than the old days !!

After really quick test, this works-> GitHub - stylesuxx/Oversample: Oversample Arduinos ADC to get resolutions up to 16 Bit.

luxy:
If I can get accuracy of +/- 1 °C in the end, that's fine. Is this concept ok?

PTZ sensors are capable of .01 deg or better, they are precision measurement devices.

Depends on the measuring circuit though, even if you use 1% tolerance components there are still temperature effects to be considered.
These can make the circuitry very complex. Although there are IC's these days though that do a lot of that for you.

EDIT

What do you want to measure.
There are I2C devices available at 12 bit resolution with all the hard stuff done for you.

Boardburner2:
What do you want to measure.
There are I2C devices available at 12 bit resolution with all the hard stuff done for you.

I will measure the temperature of rising pipes for mixing units, temperature of boilers, collectors, etc.

I want to be able to connect NTC10k sensors on the same hardware also. I will change reference voltage while measuring NTC's.

Since I want to Implement at least 6 sensors, I do not want to use complex (expensive) IC devices, if that's not necessary.

6 voltage dividers, with 100nF capacitor to ground to eliminate noise, into 6 analog pins? So
I'd guess perhaps 4k7 or 3k3 resistors will give a good measurement range (presumably pipes are
hot so 10k thermistor will be a lot less than 10k usually?).

Long cables will mean interference, but low-pass filtering with capacitors to ground should lose
most of that (temperature is a very slowly varying signal, low pass filtering isn't going to make
a difference unless its drastic).

Make sure the sensor wiring is away from high current circuits, and only ground at the Arduino end.

Reference voltage??

MarkT:
Reference voltage??

If I use 3,3 V for powering sensors and reference voltage, I get resolution of 1,5 °C/bit, which is to big.

The idea is to use 3k fixed resistor. In this case I get 1,17 V output at 170 °C which means, that I can set smaller reference and get better precision. With 1,2 V on AREF pin I get resolution of 0,001171 V/bit, which would mean 0,557 °C/bit.

So 3,3 V for sensor powering and 1,2 V for AREF.

Here are my measurement for PT1000:

  • 30 °C: 882,2 ohm
    +170 °C: 1647,7 ohm

R1 = 3000 +/- 3 ohm (0,1%)

Vout (-30 °C): 0,75 V
Vout (170 °C): 1,17 V

0,0021 V/°C

Aref: 0,001171 V/bit (10bit @ 1,2V)

Resolution: 0,557 °C/bit

Or my concept is totally wrong? 0,557 °C/bit is fine but 1,5 °C/bit is too much.

luxy:
Since I want to Implement at least 6 sensors, I do not want to use complex (expensive) IC devices, if that's not necessary.

There are cheap and fairly accurate temperature mearuring semiconductors available.
They may be useful for the lower temperature measurements such as boiler return or mixed output.
They generally give up after 125 deg C

For collectors , if solar you really need the accuracy of PTZ though for best performance.
EDIT
By that i mean to 0.1 deg C to optimise delta T.

Boardburner2:
There are cheap and fairly accurate temperature mearuring semiconductors available.

Can you recommend some of them?