Table of Contents

Thermistor

Temperature Measurement Using Thermistor

This scenario demonstrates how to measure temperature using a thermistor (temperature-sensitive resistor) connected to an Arduino Uno. The temperature is calculated using the Steinhart-Hart equation.

Prerequisites

Hardware Connections

Component Arduino Pin
————————-
Thermistor A5 (Analog)
LCD RS=8, EN=9, D4=4, D5=5, D6=6, D7=7

Suggested Knowledge Resources

Task

Measure temperature using a thermistor and display the results (ADC reading, voltage, resistance, and temperature in Celsius) on the LCD.

Steps

Step 1: Include Libraries

#include <math.h>
#include <LiquidCrystal.h>

Step 2: Initialize LCD

Declare LCD pins and initialize:

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
const int sensorPin = A5;

Step 3: Setup

Set LCD dimensions and initial message:

void setup() {
  lcd.begin(16, 2);
  lcd.print("Temperature");
  delay(1000);
}

Step 4: Main Loop

Read sensor value, calculate temperature, and display on LCD:

void loop() {
  readThermistor(analogRead(sensorPin));
  delay(1000);
  lcd.clear();
}
 
void readThermistor(int RawADC) {
  double Temp;
  long Resistance;
 
  // Calculate resistance
  Resistance = ((10240000 / RawADC) - 10000);
 
  // Display ADC and voltage
  lcd.setCursor(0, 0);
  lcd.print("AD=");
  lcd.print(RawADC);
  lcd.setCursor(8, 0);
  lcd.print("U=");
  lcd.print(((RawADC * 5.0) / 1024.0), 3);
 
  // Display resistance
  lcd.setCursor(0, 1);
  lcd.print("R=");
  lcd.print(Resistance);
 
  // Calculate temperature (Steinhart-Hart)
  Temp = log(Resistance);
  Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp)) * Temp);
  Temp = Temp - 273.15; // Convert Kelvin to Celsius
 
  // Display temperature
  lcd.setCursor(8, 1);
  lcd.print("T=");
  lcd.print(Temp);
}

Validation

LCD displays accurate ADC values, voltage readings, resistance, and temperature in Celsius. Typical room temperature should range between 19-24 °C.

Troubleshooting

If temperature readings are incorrect or unstable: