Project 18: Thermometer

Description

This project aims to design a simple Arduino smart thermometer using an Thermistor NTC-MF52AT 10K and an LCD display. The Thermistor sensor detects the ambient temperature, and the LCD displays the temperature value in real-time. This project serves as a great exercise for beginners, as it helps them understand the basic working principle of sensors and practice interaction between the display and sensor.

Hardware

1. UNO R3 development board (ch340) x1

2. Thermistor NTC-MF52AT 10K x1

3. 16x2 LCD display x1

4. resistors (220 ohms) x1

5. Breadboard x1

6. Jumper wires

Working Principle

The working principle of this project is as follows:

The Thermistor NTC-MF52AT 10K detects the ambient temperature and converts it into a corresponding analog voltage signal.

The analog input pin of the Arduino development board (A0 in this case) reads the analog voltage output from the Thermistor.

The analog-to-digital converter (ADC) inside the Arduino converts the analog voltage value into a digital quantity.

Based on the conversion formula of the Thermistor (where every 10mV corresponds to 1 degree Celsius), the Arduino converts the digital quantity into a temperature value.

The Arduino then displays the computed temperature value on the LCD1602 liquid crystal display.

Wiring Diagram

Thermistor Sensor

VCC: Arduino’s 5V

GND: Arduino’s GND

VOUT: A0 (analog input pin)

LCD1602

RS: Connect to digital pin 11

EN: Connect to digital pin 12

D4-D7: Connect to digital pins 5, 4, 3, 2, respectively

Img

Sample Code

/*

Electronics Learning Starter Kit for Arduino

Project 18

Thermometer

Edit By Keyes

*/

#include <LiquidCrystal.h>

// Initialize the GPIO pins: RS, E, D4, D5, D6, D7

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

const int sensorPin = A0; // Thermistor connected to A0

void setup() {

// Set LCD column and row count

lcd.begin(16, 2);

// Display text on the first line

lcd.print("Temperature:");

}

void loop() {

// Read the analog value from Thermistor (0-1023)

int sensorValue = analogRead(sensorPin);

// Convert the analog value to voltage (unit: mV)

float voltage = sensorValue * (5000.0 / 1023.0);

// Calculate the temperature value (unit: Celsius)

float temperatureC = voltage / 10.0;

// Display the temperature value on the LCD second line

lcd.setCursor(0, 1);

lcd.print(temperatureC);

lcd.print(" C ");

// Update every second

delay(1000);

}

Code Explanation

Library Inclusion and Initialization

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

const int sensorPin = A0; // Thermistor connected to A0

#include <LiquidCrystal.h>: Includes the LiquidCrystal library for LCD control.

LiquidCrystal lcd(...): Initializes the lcd object based on the LCD pin connections.

const int sensorPin = A0;: Defines the analog pin connecting the Thermistor sensor as A0.

Setup Function setup()

void setup() {

lcd.begin(16, 2);

lcd.print("Temperature:");

}

lcd.begin(16, 2);: Sets the LCD to a 16-column and 2-row display mode.

lcd.print("Temperature:");: Displays “Temperature:” on the first line of the LCD.

Main Loop Function loop()

void loop() {

int sensorValue = analogRead(sensorPin);

float voltage = sensorValue * (5000.0 / 1023.0);

float temperatureC = voltage / 10.0;

lcd.setCursor(0, 1);

lcd.print(temperatureC);

lcd.print(" C ");

delay(1000);

}

Read Sensor Value

int sensorValue = analogRead(sensorPin);

analogRead(sensorPin): Reads the analog voltage value from the Thermistor sensor, returning an integer between 0 and 1023.

Convert to Voltage

float voltage = sensorValue * (5000.0 / 1023.0);

Converts the sensor value to an actual voltage value in millivolts.

5000.0 accounts for Arduino’s 5V reference voltage, which is converted to 5000mV.

1023.0 is the maximum value of the ADC (10-bit ADC scale: 0-1023).

Calculate Temperature

float temperatureC = voltage / 10.0;

Given Thermistor’s specifications, every degree Celsius equals 10mV.

Thus, dividing the voltage by 10 yields the current temperature in Celsius.

Display Temperature on LCD

lcd.setCursor(0, 1);

lcd.print(temperatureC);

lcd.print(" C ");

lcd.setCursor(0, 1);: Moves the cursor to the second line, first column on the LCD.

lcd.print(temperatureC);: Displays the temperature value.

lcd.print(" C ");: Displays the Celsius symbol with spaces to cover any leftover characters.

Delay of One Second

delay(1000);

Delays for 1000 milliseconds (1 second) to control the update frequency.

Project Result

Upon completing this project, you will have a fully functional temperature tester. This device can display the ambient temperature in real time and provide visual feedback for temperature changes.

P18