# Amplifying the output of a thermistor

I have a 220V heater which is equipped with a thermistor. Its value at room temperature (20-25 °C) is 10Ω.

I'm trying to read its value with an Arduino but the output voltage is as low as 0.007V. Analog values on Arduino go from 0 to 1023, where 0 is 0V and 1023 is 5V: I need to amplify this value or I won't be able to read it properly.

I bought an operational amplifier (LM358P) and made the following circuit:

simulate this circuit – Schematic created using CircuitLab

It's my first ever time working with OpAmps and I'm not an electrical engineer, so the schematic could be completely wrong. If so, I'm sorry for that, it was produced by various internet searches as I'm not an expert.

A few question you might have:

Why R1 is 10Ω? Because I seemed to understand that it's easier to read values if the resistor between the thermistor and ground has the same value as the thermistor at room temperature.

Why R2 is 10kΩ and R3 is 2.2MΩ? Because as far as I understood the amplifier gain is calculated by using the formula 1 + R3 / R2, so in this scenario I should have a gain of nearly 220 (0.007V should become 1.54V).

Why is the circuit like this? I tried to combine the way I usually read voltage value coming from a sensor with a non-inverting OpAmp circuit I found online, and that was the result. I'm not sure this is the right way to do it though, copy-pasting often leads to errors.

Nothing is exploding at the moment, but the issue with this is that on the Arduino side I get random values between 250 and 300. This also happens if I unplug the analog input, so I believe it's not working at all.

Did I get it completely wrong? How should I modify the circuit to make it work?

• @BackSlash Well 10R is an insanely small value for a thermistor, but I don't think just amplifying it is going to do what you think. Even if it was amplifying it properly, you are going to have an issue with the voltage changes from temperature still being too small of a value to easily read with the arduino Commented Feb 29, 2020 at 15:45
• @SamGibson Hi! I'm ok with those risks, thanks :) however I'm not directly dealing with 220V power anyway, this is the part of circuit that I won't even touch, I just want to read from the sensor. The heater comes with a thick wire which holds 4 smaller wires: 2 are for 220V, 2 are for the thermistor. I don't know if it's a thermistor or a thermostat, I'd have to disassemble the heater to get this information, but that would mean being unable to use it again. It's similar to a 3D printer heatbed, but works at 220V. Commented Feb 29, 2020 at 16:11
• @SamGibson It goes a bit up while the temperature increases. From nearly 10 ohms to nearly 14 ohms. It starts decreasing again when it's cooling. This picture is definitely the thing I have in front of me now: i.sstatic.net/SGAko.jpg Commented Feb 29, 2020 at 17:00
• While you do have a thermistor, it's not like the kind you've probably read about which is used for temperature sensing. Since It's low resistance and used in a heater, it's almost certainly a PTC (Positive Temperature Coefficient) type in series with the heater element, and which prevents a power-on surge when the heater element is cold. Commented Feb 29, 2020 at 17:08
• You don't use a PTC to sense temperature the same way you use an NTC. PTCs typically show a really non-linear response. They stay at (pretty much) the same resistance as temperature rises, then suddenly increase resistance very rapidly at some temperature. This allows them to limit current during current surges, but otherwise not respond to smallish variations in temperature. And trying to measure one in a working heater won't work - the resistance of the heating element varies with temperature, and the temperature varies wildly from cold to hot. Try a different thermistor. Commented Feb 29, 2020 at 17:33

We have a XY problem here.

OP says they have a heating element with a sensor, which they believe is a PTC.

It is not.

After reading the long, long comment thread, I've come to the conclusion that what you actually have is a thermocouple embedded in the sensor. Unlike an NTC or PTC, a thermocouple outputs a voltage proportional to temperature.

How to interface it? The thermocouple outputs in the tens of millivolts range. With this low voltage, what's needed is to use a differential amplifier, using both leads from the sensor. There are dedicated ICs for this, one of which appears in the Arduino project link below.

But there's more besides just amplifying the voltage. Thermocouples also have different characteristics depending on the metal-metal junction they use. A common type is K (Nickel-Chromium / Nickel-Alumel) but there are many others with different output curves. They are not linear, and need to have that corrected to get the right temperature value.

Here's a link to interfacing Arduino to Type K thermocouple: https://www.electronicwings.com/arduino/thermocouple-interfacing-with-arduino-uno

Lots of other ideas can be found - thermocouple interfacing is a popular Arduino project.

[edited away - use NTC and voltage divider]

• Also, with a thermocouple, any junction you create to hook up the thermocouple to an amp is a NEW THERMOCOUPLE. You need to use a system designed for this, with cold junction compensation. Commented Mar 4, 2020 at 0:53
• That's an important point. In the interest of brevity I didn't get into that. The linked page shows a solution using the AD595 IC, which includes cold-junction compensation. Commented Mar 4, 2020 at 0:57
• @hacktastical That was it! I bought a MAX6675 thermocouple amplifier and now I can read the temperature properly. Thank you! Commented Mar 5, 2020 at 21:15
• Glad it all worked out for you. Commented Mar 5, 2020 at 22:22

I doubt that you have a 10 Ω thermistor. But here are a few problems with your circuit to keep you busy.

Figure 1. The OP's schematic.

• The voltage at points (1) and (2) is half-supply, 2.5 V.
• With negative feedback the op-amp output will adjust to try to get 2.5 V at the inverting input (3).
• To get 2.5 V at (3) with a gain of 220 the output would have to swing to 550 V DC. That can't happen with any op-amp I know of - even if it wasn't limited by a 5 V supply.

Try swapping the thermistor and R1 but change R1 to 490 Ω. This will give you 0.1 V across the thermistor which when amplified by 220 will give you 2.2 V into your ADC. This gets you started but not finished.

• I doubt that you have a 10 Ω thermistor - What could it be then? The multimeter shows a resistence of 11.4 Ω at room temperature Commented Feb 29, 2020 at 16:26
• I don't know. You've given us no details, brand, model, link to datasheet, photo, etc. Edit them into your question. Commented Feb 29, 2020 at 16:29
• As said, I don't have them, otherwise I'd have included them in the question! An useful information might be that when powered with 12V (its original control circuit) its the value goes from 0V to 0.007V while the temperature increases (measured with the multimeter). Unfrortunately I don't have other informations than the ones I was able to get by measuring Commented Feb 29, 2020 at 16:31
• OK. I guess we've reached the end of the line then. Commented Feb 29, 2020 at 16:33
• @BackSlash - Start by measuring voltages 2 and 3 on Transistor's diagram. What do you get? And are you absolutely sure that your schematic is correct? If your original version (with the thermistor connected to the - input) was correct, this would explain things exactly. Recheck your data sheet. Commented Feb 29, 2020 at 17:11

A thermistor converts temperature to resistance... but you need voltage. So, you have to convert its resistance to voltage keeping the current constant... i.e., you have to supply the thermistor by a constant current source. A non-inverting amplifier with constant input voltage is such a source if you connect the load (thermistor) in the place of R3.

I see this question is a bit old, but I'll post something I noticed anyways in case it might be of some use to someone.

On your diagram, you have +5V for the V+ of the op amp. This is good, but the V- is not ground, it is -5V. 9V would perhaps work best in this situation as well, so try powering your op amp with with the + and - terminals of a 9V battery or some power supply.

In addition, the analog value will be a number between 0 and 1023, convert it back to volts by using input * 5.0/1024.0. More info on this here

Good luck!