Welcome to Solarduino , A blog about DIY Solar PV and Arduino projects

How to use NTC Thermistor to measure Temperature?

A thermistor is a thermometer that is made of semiconductor that its resistance value changes with temperature. Thermistor will has its own temperature coefficient rating which tells us the amount of resistance changed or involved for every Kelvin or Celcius changes. 

There are two types of thermistor, the Negative Temperature Coefficient (NTC) and Positive Temperature Coefficient (PTC). With an NTC thermistor, when the temperature increases, its resistance decreases. This type of thermistor is widely used. On the contrary, A PTC thermistor will works the other way round, when temperature increases, its resistance will also increase. This type of thermistor is generally used as a fuse.

 

NTC Temperature Sensor

NTC Thermistor is a temperature sensor based on resistance value changes. The higher the temperature, the lower its resistance. You can grab it at our affiliate link here !!!

Arduino UNO (compatible board)

If you still not yet own an Arduino Micro-controller Board, you can get it cheap at our affiliate link here !!!

Thermistor resistance change is not in linear throughout the wide range of temperature. Thus some manufacturer will state all the temperature coefficient values as a table for whole or wide range of temperature OR provide only one coefficient value which is valid within a short range of temperature measurement (example -20 to 105 degree C).

 

We need to convert the resistance value measurement to voltage input value which is within 0 to 5V so that it is measurable by Arduino Analog Pin. In Arduino UNO board, there are 6 Analog Pins (A0 – A5) available for NTC thermistor temperature measurement. 

Since the thermistor sensor acts as a resistor, the 2-wire sensor does not have polarity, you can connect any pin to Analog Pin and another one to the Ground Pin. However, in order to convert from resistance to voltage, the Voltage Divider Method is used. The voltage divider consists of two resistors connected in series as shown in the diagram below. All you need is just 2 resistors with different resistance values, and a 5V voltage supply. The resistance can be reversed calculate since analog value can be read by Arduino.

You can put any R1 and R2 resistor values but recommend to stay below 50k ohm in total. In this example, we put R1 as 10k ohm resistor and R2 will be the rating of the thermistor which we choose 5k ohm rating at 25 degree C. R2 value is the value that will keep changing. By applied the formula above, the analog read can be converted to the resistance value which is needed to substitute in the second part of our calculation, the thermistor equation.

Choosing a Thermistor temperature sensor

When you buy a NTC thermistor, there are 3 important information that need to know.

1) Resistance value 

As stated earlier, the resistance of an NTC thermistor is changing depending on temperature. However, in order to rate a thermistor, the standard temperature that most manufacturers use is the 25 degree Celsius which is equivalent to room temperature. So the most common and market available resistance value for thermistor temperature sensor is 5k ohm, 10k ohm, 50k ohm, 100k ohm and even 200k ohm at 25 degree. I prefer getting a low resistance value thermistor.

2) Beta or B value (Temperature coefficient)

The beta value or B value is the temperature gradient value which defines the resistance changed in two different temperature points or limit (T1 and T2). The based temperature point T1, which is usually 25 degree Celcius (298.15K) and T2 is usually refers to the measurement temperature limit, example 100 degree Celcius (373.15K). The B value written in BT1/T2  form will be B25/100 and should be within 3000 to 5000. So if measurement temperature is within this range, the B value is applicable while beyond the measurement range the B value might be slightly changed because in wider temperature range the temperature gradient is not linear.  

3) Head type of the thermistor

There are a lot of shapes and sizes of thermistor. What we are looking at is the silver head sensor with an extension cable of about 15cm to 1m as the first picture above. The head can be round, rectangle or looks like cable lug shape to suit your application needs.

Thermistor Equation

The first part of calculation was getting the resistance value R2 which is converted from the analog reading from the thermistor. This is the second part of calculation where the resistance value R2 is then substitute to Thermistor Equation to obtain its temperature value T2. We are using thermistor equation as below:

Not to confuse with the R1 & R2 value on previous calculation which is based on voltage divider method. All the values in thermistor equation are referring to the thermistor itself. The value R1 and T1 refer to the thermistor standard rating (resistance at 25 degree celcius) while R2 is value from previous calculation and the T2 is the actual temperature that we need to find.

There is no exam over here and you do not need to memorize it. We know that the formula is a bit complicated but the purpose of showing it to you is just to let you know that we are using the above formula for calculation, nothing more. 

 

Hardware Connection

Once you get the temperature sensor and resistor ready, you may start to do hardware wiring. Below is the schematic of the wiring. I recommend you to get a mini breadboard to put it next to the Arduino to put your resistor and wiring which is available here !!!

Arduino with NTC Thermistor Wiring Diagram

Dupont Line Wires

You may need Dupont Line Wires to connect Arduino board, NTC Thermistor and resistor. It is available at our affiliate link here !!! 

Software Codes

The final step would be adding source code onto Arduino board. I assume you have installed the Arduino Software. If you still have not installed the software, the link here can bring you to the official download site. Once you have downloaded the software, you may download the code file (.ino) for this application below (right click save link). 

There are two source code files attached, the first source code is normal NTC temperature code for people out there without the LCD Display. The measured temperature value can be shown in Serial Monitor using Arduino Software. The second one is the NTC temperature code with LCD display shield function. Once the code is uploaded to the Arduino board, the temperature value will be shown on the LCD Display. 

I recommend you to add a 16X2 LCD Display Shield which can be directly fit on to the top of the Arduino board without the need of extra wiring for the LCD Display. Without the LCD Display, you can only monitor the measured current value on PC via Serial Monitor. You can get the LCD Display board at our affiliate link here !!!. 

Datalogger Shield

If you plan to record the data in a proper way, you may consider this Datalogger Shield. It allows your arduino to record your data in SD Card. Datalogger shield is often installed together with LCD Display shield. Please find it at our affiliate link here !!! For more about this Datalogger Shield, kindly visit our post here.

Screw Shield / Expansion Shield

When there are a lot of wiring around especially more than 1 sensor, sharing pins will be difficult as existing pins (ground and 5V) are limited. This shield provides a lot of convenient terminals for each of the input and output pins. The shield can be mounted directly on top of the Arduino Uno board or in between the shields which made it very convenient to use. You can get it at our affiliate link here !!!

Codes for NTC Thermistor Temperature sensor with LCD Display Shield. Note: the codes shown here may not be 100% correct due to translation error. For accurate code, kindly download the .ino file. 

// Measure Temperature using NTC Thermistor by Solarduino

// 0- General

int decimalPrecision = 2;

// 1- Temperature Measurement

int ThermistorPin = A1;
float voltageDividerR1 = 10000;
float BValue = 3470;
float R1 = 5000;
float T1 = 298.15;
float R2 ;
float T2 ;

float a ;
float b ;
float c ;
float d ;
float e = 2.718281828 ;

float tempSampleRead = 0;
float tempLastSample = 0;
float tempSampleSum = 0;
float tempSampleCount = 0;
float tempMean ;

// 2 - LCD Display

#include LiquidCrystal LCD(8,9,4,5,6,7);
unsigned long startMillisLCD;
unsigned long currentMillisLCD;
const unsigned long periodLCD = 1000;

void setup()
{
// 0- General

Serial.begin(9600);

// 2 - LCD Display

LCD.begin(16,2);
LCD.setCursor(0,0);
startMillisLCD = millis();

}

void loop()

{

// 1- Temperature Measurement

if(millis() >= tempLastSample + 1)
{
tempSampleRead = analogRead(ThermistorPin);
tempSampleSum = tempSampleSum+tempSampleRead;
tempSampleCount = tempSampleCount+1;
tempLastSample = millis();
}

if(tempSampleCount == 1000)
{
tempMean = tempSampleSum / tempSampleCount;
R2 = (voltageDividerR1*tempMean)/(1023-tempMean);

a = 1/T1;
b = log10(R1/R2);
c = b / log10(e);
d = c / BValue ;
T2 = 1 / (a- d);
Serial.print(T2 - 273.15,decimalPrecision);
Serial.println(" °C");

tempSampleSum = 0;
tempSampleCount = 0;
}

// 2 - LCD Display

currentMillisLCD = millis();
if (currentMillisLCD - startMillisLCD >= periodLCD)
{
LCD.setCursor(0,0);
LCD.print("T=");
LCD.print(T2 - 273.15,decimalPrecision);
LCD.print(char(223));
LCD.print("C ");
LCD.setCursor(0,1);
LCD.print(" ");
startMillisLCD = currentMillisLCD ;
}
}

Before we end, we would like to give gratitude to you for taking the time to read the post. We would need readers like you to support us in order to keep growing. You can support us in the following ways :

Donate & Fund Raising

If you like my work, please send me a donation to encourage me to do more. Thanks

Aliexpress Affiliate

We are the member of Aliexpress affiliate marketing. Do support us by clicking the affiliate product links if you do wish to purchase them.

Like and Share

If you like our post, we need your support to like and share our posts or videos so that it can reach more and more people like you !!

Result – In Serial Monitor

 

Result – In LCD Display

For Arduino Code Files, Remember to Right Click > Save Link As … You may alter the internal code as you wish. Happy coding !! 

NTC Temperature Sensor.ino
NTC Temperature Sensor with LCD Display.ino