Proyecto 18: Termómetro

Descripción

Este proyecto tiene como objetivo diseñar un termómetro inteligente simple con Arduino utilizando un Termistor NTC-MF52AT 10K y una pantalla LCD. El sensor Termistor detecta la temperatura ambiente, y la pantalla LCD muestra el valor de la temperatura en tiempo real. Este proyecto sirve como un excelente ejercicio para principiantes, ya que les ayuda a entender el principio básico de funcionamiento de los sensores y practicar la interacción entre la pantalla y el sensor.

Hardware

1. Placa de desarrollo UNO R3 (ch340) x1

2. Termistor NTC-MF52AT 10K x1

3. Pantalla LCD 16x2 x1

4. Resistencias (220 ohmios) x1

5. Protoboard x1

6. Cables jumper

Principio de Funcionamiento

El principio de funcionamiento de este proyecto es el siguiente:

El Termistor NTC-MF52AT 10K detecta la temperatura ambiente y la convierte en una señal de voltaje analógico correspondiente.

El pin de entrada analógica de la placa de desarrollo Arduino (A0 en este caso) lee la salida de voltaje analógico del Termistor.

El convertidor analógico a digital (ADC) dentro del Arduino convierte el valor de voltaje analógico en una cantidad digital.

Basado en la fórmula de conversión del Termistor (donde cada 10mV corresponde a 1 grado Celsius), el Arduino convierte la cantidad digital en un valor de temperatura.

Luego, el Arduino muestra el valor de temperatura calculado en la pantalla de cristal líquido LCD1602.

Diagrama de Conexiones

Sensor Termistor

VCC: 5V del Arduino

GND: GND del Arduino

VOUT: A0 (pin de entrada analógica)

LCD1602

RS: Conectar al pin digital 11

EN: Conectar al pin digital 12

D4-D7: Conectar a los pines digitales 5, 4, 3, 2, respectivamente

Img

Código de Ejemplo

/*

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);

}

Explicación del Código

Inclusión de Librerías e Inicialización

#include <LiquidCrystal.h>

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

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

#include <LiquidCrystal.h>: Incluye la librería LiquidCrystal para el control del LCD.

LiquidCrystal lcd(...): Inicializa el objeto lcd basado en las conexiones de los pines del LCD.

const int sensorPin = A0;: Define el pin analógico que conecta el sensor Termistor como A0.

Función de Configuración setup()

void setup() {

lcd.begin(16, 2);

lcd.print("Temperature:");

}

lcd.begin(16, 2);: Configura el LCD para un modo de visualización de 16 columnas y 2 filas.

lcd.print("Temperature:");: Muestra “Temperature:” en la primera línea del LCD.

Función Principal 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);

}

Leer Valor del Sensor

int sensorValue = analogRead(sensorPin);

analogRead(sensorPin): Lee el valor de voltaje analógico del sensor Termistor, retornando un entero entre 0 y 1023.

Convertir a Voltaje

float voltage = sensorValue * (5000.0 / 1023.0);

Convierte el valor del sensor a un valor real de voltaje en milivoltios.

5000.0 corresponde al voltaje de referencia de 5V del Arduino, convertido a 5000mV.

1023.0 es el valor máximo del ADC (escala ADC de 10 bits: 0-1023).

Calcular Temperatura

float temperatureC = voltage / 10.0;

Según las especificaciones del Termistor, cada grado Celsius equivale a 10mV.

Por lo tanto, dividir el voltaje entre 10 da la temperatura actual en Celsius.

Mostrar Temperatura en el LCD

lcd.setCursor(0, 1);

lcd.print(temperatureC);

lcd.print(" C ");

lcd.setCursor(0, 1);: Mueve el cursor a la segunda línea, primera columna del LCD.

lcd.print(temperatureC);: Muestra el valor de la temperatura.

lcd.print(" C ");: Muestra el símbolo de Celsius con espacios para cubrir cualquier carácter sobrante.

Retardo de Un Segundo

delay(1000);

Espera 1000 milisegundos (1 segundo) para controlar la frecuencia de actualización.

Resultado del Proyecto

Al completar este proyecto, tendrás un probador de temperatura completamente funcional. Este dispositivo puede mostrar la temperatura ambiente en tiempo real y proporcionar retroalimentación visual para los cambios de temperatura.

P18