I'm trying to design a circuit to average 3 Pt100 resistors to feed into a single temperature controller.

All the solutions I've found so far involve either a microcontroller or a complex opamp + wheatstone bridge circuit. Is there anything simpler I've missed?

Bonus: if possible, I'd like to start the circuit with the 3 resistors in series - in order to minimise the number of conductors used to 2 instead of 4. But it's optional.

  • 2
    \$\begingroup\$ If you connect them in series, the total resistance is 3 times the average resistance. That's the definition of "average". \$\endgroup\$
    – Dave Tweed
    Mar 25, 2022 at 23:25
  • \$\begingroup\$ I know, but I don't know how to divide the resistance by three in the circuit to make it a true average Pt100. I could multiply by 3 all the Pt100 calibration tables but it's really long on this specific controller \$\endgroup\$
    – user42875
    Mar 25, 2022 at 23:28
  • \$\begingroup\$ Update: the best I found is to measure the series association using a pull-up and an ADC, then switch 10 resistors in/out wired in parallel using SSRs. As you can see it's far from ideal... \$\endgroup\$
    – user42875
    Mar 26, 2022 at 0:03
  • \$\begingroup\$ Isn't there something to play with the opamp's negative resistance configuration? \$\endgroup\$
    – user42875
    Mar 26, 2022 at 0:13

4 Answers 4


Time discretization/switched capacitor techniques could be used.

The controller most likely has a low-pass filter on the front end, and uses DC sensing - you can verify that first of course.

In the circuits below, low resistance MOS switches are essential - you should be able to use a low-voltage, low RDS(ON) devices. Their voltage rating does not need to be as high as the open-circuit voltage of the temperature controller, since the filtering capacitor C1 maintains the average closed-circuit RTD voltage. The switches only need to withstand 1.5-2x the closed-circuit RTD voltage.

Time multiplexing

Time-multiplex those three Pt100 sensors.


simulate this circuit – Schematic created using CircuitLab

The gate drives can be generated using e.g. a three-stage Johnson counter, a multivibrator for the counter's clock, and a simple 5V or 12V low-power voltage isolator to keep the gate charges circulating outside of the temperature controller's circuit.

Conductance Division = Resistance Multiplication

The paralleled resistors are attached to the circuit for 1/3rd of the time. Their time average is 3x equivalent resistance.


simulate this circuit


If you needed four Pt100 resistors, you could put 2 in parallel, and two of those in series. If you only 'need' 3 to measure, you could put the 4th at some 'average' temperature.

You could put 3 in parallel, and three of these triplets in series to measure 3 points, but that would be expensive.

Note that no technique will be perfectly accurate since the PT100 is not 100 % linear with temperature, therefore the average temperature is not derivable from the average resistance of the PT100s, although it will be 'close'.

  • \$\begingroup\$ Interesting configuration, the series/parallel for 4 resistors. I need 3 but I like this particular case. I don't want to ruin the measurement with a 4th dummy resistor but that's an interesting take. \$\endgroup\$
    – user42875
    Mar 26, 2022 at 3:03
  • \$\begingroup\$ @user42875 You could put three in parallel right next to each other at each measurement point, and then put the three points wired in series. That would give you a 3 x 3 grid giving you the average. \$\endgroup\$
    – user4574
    Mar 26, 2022 at 20:31

You could do something like this, which will work with typical <=1mA DC RTD currents (and assuming 2-wire connection):-

enter image description here

One dual op-amp and 4 precision resistors. Standard building block, invented by A. Antoniou ca. 1967. See DOI: 10.1049/el:19670270

  • \$\begingroup\$ This looks promising. I don't understand though, I'm trying to create an average resistor to feed a temperature controller which certainly has a built-in Wheatstone bridge of some sort. Should I connect it across your 3x 100R resistors on the output? Is it going to simulate (R1+R2+R3)/3 once excited by the controller's bridge? \$\endgroup\$
    – user42875
    Mar 26, 2022 at 3:05
  • \$\begingroup\$ The resistance looking into RTD_A (relative to ground) is R= (R5+R6+R7)/3. RTD_A and RTD_B go to the controller. Vrtd and ground connect to the 3 sensors in series. R5, R6, R7 represent the 3 RTDs in series. \$\endgroup\$ Mar 26, 2022 at 3:07
  • \$\begingroup\$ Ahhh sorry I didn't think about it in this angle. Sounds great! I'll calculate the equations to understand the circuit better but it does sound like what I was looking for so thanks a lot! \$\endgroup\$
    – user42875
    Mar 26, 2022 at 3:10
  • \$\begingroup\$ Are you sure the circuit is correct? When I replicate this exact circuit (even same opamps, and I double checked all nets twice), and add a current source of 1mA sourcing into C3 I get 1V and not 100mV as is supposed to happen. \$\endgroup\$
    – user42875
    Mar 26, 2022 at 4:19
  • 1
    \$\begingroup\$ What do you think? i.imgur.com/PA92VBR.png \$\endgroup\$ Mar 26, 2022 at 4:20

You could acquire the resistance and control a digital potentiometer to the third of the series association.

You may need to add several in parallel to achieve the accuracy you want because they often range 10kOhm, 1024 taps max.

I have calculated that with 2x 8-bits 1k digital potentiometers wired in parallel, you can achieve a worst case of 0.2°C resolution (80mOhm). Just set the fine pot to half its value, calculate the coarse, then calculate the fine with the calculated coarse value. It's a simple parallel-2-resistors equation:


  • R be the total resistance of one pot
  • N be the number of taps (= number of different values)
  • Rcoarse be the calculated resistance of the coarse pot
  • Rfine be the calculated resistance of the fine pot
  • Rtarget be the target equivalent resistance
  • Req be the calculated equivalent resistance of Rfine//Rtarget

Rcoarse_wanted_fraction = Rtarget*(R/2)/(R*(R/2-Rtarget))

Rcoarse_closest_fraction = ROUND(Rcoarse_wanted_fraction*N,0)/N

Rcoarse_closest = Rcoarse_closest_fraction*R

Rfine_wanted_fraction = Rtarget*Rcoarse_closest/(R*(Rcoarse_closest-Rtarget))

Rfine_closest_fraction = ROUND(Rfine_wanted_fraction*N,0)/N

Rfine_closest = Rfine_closest_fraction*R

enter image description here

  • \$\begingroup\$ Thanks, I like your solution. It's a great digital candidate that works with any number of resistors to average :) \$\endgroup\$
    – user42875
    Mar 26, 2022 at 3:09
  • \$\begingroup\$ I have edited your answer with the algorithm I have come up with based on your instructions, it's as you said quite accurate, thanks! \$\endgroup\$
    – user42875
    Mar 26, 2022 at 4:45

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.