Op-amp gain decrease, output not linear

I'm trying to make a circuit with Op-Amps so I can get readings from a PT100 temperature sensor with an Arduino ADC.

I have based my design on this design: RTD Temperature Sensing

• I want to read from 0°C to 500°C with the greatest resolution possible.
• I'm using a LM2902NFS-ND Op-Amp
• I'm using a single 5V supply
• The PT100 has a 4.7kΩ pull-up resistor
• The 1kΩ and 47kΩ voltage divider so 0°C will output 0V
• The gain should be 19.6 so I have an output of 3.309V at 500°C

After a lot of verification, it seems like the circuit does not behave as expected. The voltage offset at 0°C seems to works, but the gain doesn't. I have taken multiple readings between the PT100 and the output, and it seems like the gain drops after the output is 1.2V, so about 200°C.

At 490°C, I should have an output voltage of 3.25V, but I have 1.35V.

From 0°C up to 200°C, the gain is about 15 and is pretty stable.

I have tried powering the Op-Amp with 12V without success. The rest of the circuit was still powered at 5V using a LDO 5V regulator from the 12V supply.

I have the same set-up for 5 sensors and they all behave like the same.

I'm not an expert in electronics and I would be really happy to learn what is wrong with this setup!

Many thanks

Edit: Here are some measurements:
R_RTD - V_RTD - VOA2_out - VOA1_out - VOA3_out
100 - 0.107 - 0.107 - 0.105 - 0.002
138 - 0.147 - 0.107 - 0.145 - 0.754
175 - 0.185 - 0.121 - 0.183 - 1.194
212 - 0.221 - 0.154 - 0.219 - 1.263
247 - 0.255 - 0.186 - 0.253 - 1.306
280 - 0.287 - 0.216 - 0.285 - 1.339

As you pointed out, the VOA2_out is problematic. I will try the fixes proposed!

simulate this circuit – Schematic created using CircuitLab

• How are you powering it? Sep 6, 2016 at 22:01
• Measure the outputs of OA1 and OA2. I suspect that, at the least, the OA2 output is not correct. Your input is too close to Vcc. And, assuming you are using a single power supply (since you talk about " powering the Op-Amp with 12V", your sensor input is too close to the the V- supply. Most importantly, you have swapped R3 and R4. Sep 6, 2016 at 22:45
• Aside from the swapping of R3/R4 I don't see a whole lot wrong with it, assuming you are powering it from +5/0. You may not be able to get quite to 3.5V. (taking into account that your op-amp number on the schematic is not accurate). But if you are powering it from the 3.3V regulator, what you are seeing is 100% expected. Sep 6, 2016 at 23:13
• You fixed R3/R4 and I just fixed the op-amp numbers but you have not specified the power supply. Other than that, there is nothing obviously seriously wrong with this circuit. Sep 7, 2016 at 18:45

If you are powering between 5V and ground, I suspect that the voltage on the positive input of the TL081 comning from the RTD is too close to rail to be a valid input. The other arm of your amp is probably having the same issue You are out of the allowed common mode range for that op-amp.

See table 6.6 on the relevant data sheet. $V_{ICR}$ is volts from the negative rail.

You should use a RRIO op-amp. The TL081 is not suitable for this use.

• Most rail to rail op amps (in my experience) aren't ACTUALLY rail to rail, they just have a very small nonlinear area at the edges of the input range. Unfortunately, for this case, that might be too much. Sep 8, 2016 at 17:19

To expand on Scott Seidman's answer:

Here is the datasheet in question, and references the common mode voltage limits on page 5 at the bottom. The lower limit is $V_- + 4V$, which means that if your signal is lower than 4V, you won't be in the linear regime of the input to your op amp. Given that you are at a quarter of a volt over ground (when at 100Ω), you are likely running into this problem.

There are a couple of different ways to fix it:

• True rail-to-rail op amps would improve things a bit: but most rail to rail op amps still aren't really meant to be linear in that regime.

• A different schema which moves the voltage to be measured to the center of your supply range:

simulate this circuit – Schematic created using CircuitLab

With both of these (yours as well as mine), there will be some error from the fact that you are using resistors as a current source and trying to measure the voltage over the sensor. Since the change in the resistance of the sensor will change the total resistance, the current through the sensor will change as well as the voltage. From this, it looks like the resistance will change from 100Ω to ~400Ω over the temperature range that you are specifying. So you will need to take that into account. That change will likely mean unacceptable error over the full range of your measurement.

• This is a better solution or reverse 4.7k and 47k to ground instead of Vcc. because TL071 has CM range up to Vcc but not near ground+2V so thus violates Cm range for input. Sep 7, 2016 at 17:00
• Very interesting using 2 2.4kΩ resistors, I shall give it a try next time! Sep 8, 2016 at 22:17

This RTD amplifier needs a precision Vref or Vcc to drive the bridge comparing the two R dividers.

The main issue is to determine the RTD (500'C) and then the Voltage across it. Then Choose a gain to generate the Vout of the ADC full scale 3.3x .

R3/R4 matches RTD/R1 ratio at 0'C. ( fix your schema). NB! Vin+ MUST be near Vcc NOT ground , so pullup RTD to Vcc and 4.7k to 0V

This common mode , CM input voltage error reduces gain. If you have noise use twisted pair to RTD thru as many turns around ferrite bead or torroid as possible with small magnet wire or buy CM choke.

• Hi Tony, Many thanks for your comment. I did what you suggested earlier and came to a gain of 19.6 to get the right Vout at 500°C. This wasn't actually the problem. What I'm stuck with is that the gain isn't constant, neither it is delivering the theoritical 19.6. Sep 7, 2016 at 13:56
• I gave a try reverting the logic and use the RTD as a pullup, as suggested, but the Op-Amp can't output more than 3.6V why I power it from 5V. I tried powering it at 12V and it worked fine. However, I wanted to use 0V to 5V output and it won't go below 0.70V, so I have to adjust my gains and refs to make sure I won't reach 0.70V before the sensor gets to its temperature! Thanks for your help ;) Sep 8, 2016 at 22:14