NTC Thermistors Guide Arduino Interfacing

Introduction

10k NTC Thermistor

 

  • Thermistor is short form of thermal resistor, whose resistance changes with change in temperature.
  • Thermistors are inexpensive, rugged, reliable and responds quickly. Because of these qualities thermistors are used for simple low temperature measurements, but not for high temperatures.
  • Thermistors are mostly used in digital thermometers and home appliances such as refrigerator, ovens, and so on.
  • Thermistors are available in different shapes like rod, disc, bead, washer, etc.
  • Thermistor differs from RTD. In Thermistor, semiconductor materials are used while RTD has pure metals.

Also, RTD are useful for large temperature range whereas Thermistor are useful over small temperature range typically -100 °C to 300 °C.

 

Types of Thermistor

1.  PTC (Positive temperature coefficient) Type Thermistor

  • In positive temperature coefficient thermistor, resistance of thermistor increases with increase in temperature.
PTC Thermistor Properties
PTC Thermistor Resistance vs Temperature

 

  • PTC thermistor are divided into two groups based on

             1.  Material used

             2.  Their structure and manufacturing process

  • In first group, thermistor comprises of silistors, which use silicon as the semiconductive material. They are used as PTC temperature sensors for their linear characteristic.
  • The second group is the switching type PTC thermistor. This type of PTC thermistor is widely used in PTC heaters, sensors etc.
  • PTC thermistors are mostly used as self-regulating heaters, for overcurrent protection, etc.

 

2.  NTC (Negative temperature coefficient) type thermistor:

  • In negative temperature coefficient thermistor, resistance decreases with increase in temperature.
NTC Thermistor Properties
NTC Thermistor Resistance vs Temperature

 

  • NTC thermistor are made from semiconductor material (such as metal oxide and ceramic)
  • Most thermistor NTC sensors are typically suitable for temperature range between -55°C to +150°C
  • Generally, NTC thermistors are used for temperature measurement.

 

How to Use NTC Thermistor for Temperature Measurement

  • Voltage Divider Network

The output of thermistor is change in resistance. This change in resistance can be measured using voltage divider network by adding one series resistance with thermistor shown below.

Thermistor Interfacing

Now, measure analog output voltage which is a function of change in resistance with change in temperature.

1.      Convert analog voltage to Thermistor resistance

How to calculate Resistance value of thermistor?

\textbf{Rth }\textbf{=} \left ( \frac{\textbf{1023*Series Resistor}}{\textbf{ADC Output}} \right )\textbf{- Series Resistor}

 

 

Where,

ADC Output – Digital value of Vout(from 0 to 1023).

Series Resistor – In circuit diagram shown above, we used 10K ohm series resistor.

2.      Calculate Temperature from Resistance

Steinhart hart equation

  • The Steinhart hart equation is used to derive a precise temperature of thermistor since it provides a closer approximation to actual temperature than simpler equations, and is useful over the entire working temperature range of the sensor.
  • The Steinhart hart equation is,
\frac{\textbf{1}}{\textbf{T}} \textbf{=} \textbf{A+B}\left (\textbf{lnR} \right) \textbf{+C}\left ( \textbf{lnR} \right ) ^{\textbf{3}}

 

Where,

T – temperature in kelvin

R –natural logarithm of the resistance

A, B and C are coefficients derived from experimental measurement.

How to get value of A, B and C?

  • There are different ways to get these three values.
  • As per 'Calibrate Steinhart-Hart Coefficients for Thermistors' (attachment given below)methods, we can measure thermistor resistor value at different temperatures and can calculate A, B, C values using matrix method.
  • A, B and C are the Steinhart-Hart coefficients which will vary depending on the type and model of thermistor.
  • Steinhart hart formula is typically accurate around +-0.15°C, over the range of -50°C to +150°C which is useful for most applications.
  • For reduced temperature range, 0°C to 100°C we will get better accuracy, around +-0.01°C.

 

B Parameter Equation

  • But in above Steinhart-Hart equation, we must know or calculate different variables (A, B and C). So, we can use following B parameter equation.
  • It is also a Steinhart-Hart equation with C = 0.
\frac{\textbf{1}}{\textbf{T}} \textbf{=}\frac{\textbf{1}}{\textbf{T0}}+\frac{\textbf{1}}{\textbf{B}}\textbf{ln}\left ( \frac{\textbf{R}}{\textbf{R0}} \right )

 

Where,

All temperatures are in Kelvin

T0 –Room temperature i.e. 25ºC = 298.15 K

B – Coefficient of thermistor (given on Thermistor)

R0 – Resistance at room temperature.

            e.g. 10 K NTC have 10K resistance at room temperature.

R – Series resistance

 

Specification of NTC Thermistor

  • Resistance at 25°C: 10,000 ohms (10k ohms)
  • Beta value (or "B value"): Typically between 3500 and 4500
  • Temperature range: -40°C to 150°C
  • Tolerance: Typically +- 1% or +- 2%
  • Time constant: Typically around 10 seconds
  • Maximum power dissipation: Typically around 100mW

 

Alternate options for NTC Thermistor

  1. PTC Thermistor
  2. RTD
  3. LM35
  4. Thermocouples

 

NTC Thermistor vs PTC Thermistor

NTC ThermistorPTC Thermistor
Negative Temperature CoefficientPositive Temperature Coefficient
Resistance decreases as temperature increasesResistance increases as temperature increases
Commonly used for temperature sensing and measurementCommonly used for Circuit protection from over-temperature 
Temperature range: -55 to 150 CelsiusTemperature range: -40 to 150 Celsius

 

NTC Thermistor interfacing with Arduino

Interfacing Thermistor With Arduino UNO
NTC Thermistor interfacing with Arduino

 

NTC Thermistor Temperature measurement Code for Arduino

#include<math.h>
const int thermistor_output = A1;

voidsetup(){
 Serial.begin(9600);  /* Define baud rate for serial communication */
}

voidloop(){
  int thermistor_adc_val;
  double output_voltage, thermistor_resistance, therm_res_ln, temperature; 
  thermistor_adc_val = analogRead(thermistor_output);
 output_voltage = ( (thermistor_adc_val * 5.0) / 1023.0 );
 thermistor_resistance = ( ( 5 * ( 10.0 / output_voltage ) ) - 10 ); /* Resistance in kilo ohms */
 thermistor_resistance = thermistor_resistance * 1000 ; /* Resistance in ohms   */
 therm_res_ln = log(thermistor_resistance);
  /*  Steinhart-Hart Thermistor Equation: */
  /*  Temperature in Kelvin = 1 / (A + B[ln(R)] + C[ln(R)]^3)   */
  /*  where A = 0.001129148, B = 0.000234125 and C = 8.76741*10^-8  */
  temperature = ( 1 / ( 0.001129148 + ( 0.000234125 * therm_res_ln ) + ( 0.0000000876741 * therm_res_ln * therm_res_ln * therm_res_ln ) ) ); /* Temperature in Kelvin */
  temperature = temperature - 273.15; /* Temperature in degree Celsius */
 Serial.print("Temperature in degree Celsius = ");
 Serial.print(temperature);
 Serial.print("\t\t");
 Serial.print("Resistance in ohms = ");
 Serial.print(thermistor_resistance);
 Serial.print("\n\n");
  delay(1000);
}

 

The output of this code is the temperature in degrees Celsius and the resistance of the thermistor in ohms. The temperature is calculated using the Steinhart-Hart Thermistor Equation, and the resistance is calculated using the voltage reading from the thermistor output pin. The code prints the temperature and resistance to the serial monitor, and the values are updated every second due to the delay function used in the loop.

To know more about NTC Thermistor using Arduino refer to this link

 

Examples of Thermistor interfacing

  1. Thermistor Interfacing with ATmega16
  2. Thermistor Interfacing with PIC18F4550
  3. Thermistor Interfacing with Arduino
  4. Thermistor Interfacing with TI Launchpad

Components Used

NTC Thermistor
NTC Thermistor
1
Ad