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

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.
