Close

First calibration test

A project log for Programmable Precision Resistor

A SCPI programmable precision resistor

sebastianSebastian 08/22/2023 at 16:020 Comments

In one of the previous logs I covered in depth, how I use the term “calibration” in the context of the programmable decade resistor and how the calibration procedure works. Now it's time for an initial test of the calibration procedure. To automate the calibration I wrote a little Python script that interfaces with the programmable resistor as well as the multimeter (Agilent 34401A) via PyVISA and SCPI commands.

Automated calibration procedure using SCPI commands

Adjustment/calibration results

The result table shows a selection of calibration points for the 4 wire mode. It has the following columns:

Applied value (Ω)Calculated value (Ω)Ind. value (Ω)Min (Ω)Max (Ω)Dev. (%)Dev. Calc. to Ind. (%)
00.0790.0700.0000.300-11.5278
11.0621.0520.9951.3055.2383-0.9056
22.0802.0741.9902.3103.7170-0.2721
1010.12210.1089.9510.351.0764-0.1418
100100.074100.06199.5100.80.0609-0.0131
1k1000.2001000.1619951005.30.0161-0.0039
10k9999.0139998.949995010050.3-0.0105-0.0006
100k100000.33999999.99499500100500.30.0000-0.0003
900k900000.234900018.830895500904500.30.00210.0021
Excerpt of the calibration results for four-wire measurement

As expected, the programmable decade resistor stays well within the initial goal of << 0.5% of value + 0.3 Ω. That, however, was a pretty low bar. At the upper end, the performance is fairly impressive and showed how well the algorithm described in this post actually works. Also, the estimation of the actual resistance (that is also shown on the display) is very close to the measured value.

At the lower end, however, there is some significant deviation, mostly caused by the relay contact resistances, trace resistance and so on. 

Next steps

Before doing a proper full calibration and presenting the final results in a more user-friendly form, let's do a small hardware optimization of the design.

Discussions