Introduction

In instrumentation and sensor/analog design stability of used electronic components can depend on many factors. Key factors can be such as power, temperature, pressure and humidity. One of most visible effects is related to temperature, as every component has specified operational range of temperatures, and lot of electrical circuit properties change with actual temperature. Even simple passive component, such as resistor is affected by temperature. Higher temperature makes electrons move with different speed, making total resistance change. Rate of this change per fixed temperature value is called temperature coefficient of resistance. This coefficient,sometimes referred as “alpha” (α) and “beta” (β) constants reflects the resistance change factor per 1 degree of temperature change. Different materials used as resistor elements have a certain specific resistance at standard 20°C, and rate of resistance change to temperature by certain amounts. For pure metals, TCR is a positive number, meaning that resistance increases with increasing temperature. Some other elements, such as carbon, silicon, and germanium have negative TCR, meaning that resistance decreases with increasing temperature. Metal alloys can have overall TCR close to zero, meaning that the resistance stays stable within specific temperature variation.

Also TCR depends a lot on construction of resistor, used package and even resistance element shape and configuration. Making resistor to some specific value, let’s say 10.0000 KΩ is not that difficult, but making same resistor with very low temperature coefficient is much bigger challenge. Even stress introduced to precision resistance wire can make otherwise stable resistance become mediocre due to thermal coefficient. Good analog designers who need accurate signal processing pay attention to resistor temperature coefficient, and often this value is more important then resistance accuracy tolerance itself. And since better TCR resistors (more stable ones) are usually also much more expensive, it’s important to know and be able to measure TCR. This allow to calculate error budget of design and factor in possible resistance variations, to ensure circuit is working correctly under possible temperature variation.

Image 1: Test resistors for tempco study

We will need stable resistance meter, temperature controller with little “oven” box and some Raspberry Pi software to automate the measurements. Often simple estimation of temperature coefficient can be made by measuring resistance on two points (low temperature, high temperature), but this may lead to inaccurate results due to non-linear resistance changes.

Test setup

So to do accurate temperature coefficient measurement slow temperature change speed over extended range is required. If resistor under test cooled or heated too fast thermal gradients may develop stress and cause larger resistance change compared to temperature coefficient change itself. Large wire-wound and large value resistors are especially sensitive in this respect. This speed is also sets overall temperature ramp test time, and can become multiple hours long. Test software app developed for this study tests each resistor for duration of 15-30 hours. Having 130 resistors to test that would mean three months of continuous testing, if we use just single ohm-meter.

To speed up testing multiple separate multimeters were used, with test resistors individually connected. Initial test runs were using three calibrated long-scale DMMs (HP 3458A, K2002-4 and K2002-6). Use of high performance DMM in stable environment is important, to ensure minimal error from meter drift/own tempco. Later test runs had forth calibrated HP 3458A added in the mix. Even better method would be using stable current source to drive test resistors and sensitive voltmeter. This setup will be used to measure tempco of low value resistors, such as 50 mΩ and 10 mΩ 4-terminal shunts. Lowest range of used DMMs (10 Ω in case of HP 3458A) lacks of required stability and too noisy for ppm-level temperature coefficients of such low resistances.

Alternative measurement can be also performed using resistance bridge with stable reference resistor held at constant temperature and DUT resistor in thermal chamber. However better in theory uncertainty comes at high price (require multiple standards), due to large magnitude of DUT resistance values, ranging from 0.1 Ω to 1 GΩ.

Thermal chamber

Each resistor under test was quickly (to reduce thermal stress of resistor element itself) soldered to twisted AWG34 test copper 4-wire cable. Other end is directly connected to DMM inputs in 4W configuration (except ranges >10MΩ, where 2 wires only are used). If resistor have four terminals, sense line connected separately to dedicated pins. Otherwise both sides tied as resistor sides.

Image 2-3: Parts for DIY thermal box

Connected resistors are placed in metal die-cast box with copper slug and precision thermistor to monitor and feedback box inner temperature. Precision 10KΩ (25°C) thermistor from YSI, Model 44031 is used as thermal sensor feedback, connected to Keithley SMU by 4-wire cable. Today these termistors are manufactured and sold by Omega, another big and well-known thermal solutions manufacturer.

Image 4: Precision thermistor YSI 44031

Few mm thick copper plate added on the bottom of the chamber as thermal damper, with thermistor mounted in center. Thermal grease was used to enhance surface contact and provide good thermal coupling of sensor with metal slug to minimize self-heating and readings noise. Make sure you don’t subject sensitive thermistor to temperatures over +75°C and use heatsinking during leads soldering.

Image 5: Thermistor mounted to a plate

Box top cover is bolted down and whole test assembly placed in styrofoam larger container with 40W TEC and heatsink attached thru bottom. TEC setpoint, temperature control and power is maintained using Keithley 2510 TECSMU.

Image 6-9: Keithley 2510 configuration

Such simple yet effective setup allow to set and stabilize any temperature from +5°C to about +70°C with precision better than 0.05°C. Insulation required to reduce heat loss and influence of ambient temperature change on internal box temperature. This means that we will spend less power to adjust and maintain set temperature in the box.

Image 10-11: Fansink and mount on the box

All instruments like DMMs and Keithley 2510 are remotely controlled by simple Python application, running on Terasic DE1-SoC board (or Raspberry Pi 3). Actual physical interface is GPIB, with linux-gpib as software framework. We have actual guides covering setup both popular NI GPIB-USB-HS and Agilent 82357B dongles with linux-gpib.

Image 12: Box ready for resistors test

Environment conditions such as ambient temperature, humidity and pressure are also logged at every sample, with help of Bosch BME280 I2C sensor. Here’s the guide setting it up with Python in linux.

Automated Python code

Actual test starts from configuring all meters to proper range, setting 3458A’s to NPLC 100 speed, AZERO on, OCOMP ON and Keithley 2002s to equivalent settings with NPLC 30. Meters then sampled in sequence, and box sensor temperature, TEC current are read from Keithley 2510. Each 20 samples (equals about 30 minutes of time) setpoint temperature increased by +0.1 °C. After reaching +40.0 °C ramp down sequence with same speed executed to bring box temperature down to +20 °C. This allow to also confirm symmetric temperature coefficient in both directions while heating or cooling resistor under test.

Coefficients A,B,C are taken from actual sensor datasheet, and PID values are tweaked to work on my specific thermal box setup, shown above in this article. Let’s take a look on Keithley 2002’s config:

This code uses counter for timespan, with data collected from meters on each count, and temperature configured on each 10th count. First 100 counts code runs with fixed 20 °C setpoint, to obtain our reference point readings, used as 0.0 ppm calculation reference. This is our start. Next step is to increase temperature setting at +0.1 °C increments by programming Keithley 2510 SMU.

Once temperature reaches +40.0 °C code will keep this temperature level for another 50 samples, to ensure resistors under test are stable. Next is ramp down in -0.1 °C change till reach of final value +20.0 °C. Ramp down data used on some resistors tests, to confirm accurate and uniform results, so it’s not used on every case.