▷ Medición de Temperatura con Arduino y Sensor LM35 - Tutorial Completo

Implementa un sistema completo de medición de temperatura con Arduino UNO, sensor LM35 y display LCD 16x2. Este proyecto es perfecto para iniciarse en el mundo de la electrónica y programación con Arduino, permitiéndote aprender sobre sensores analógicos, conversión de datos y visualización en tiempo real.



🎯 Características del Proyecto

  • Sensor LM35: Precisión de ±0.5°C
  • Display LCD 16x2: Visualización clara en tiempo real
  • Rango de medición: -55°C a 150°C
  • Fácil calibración: Configuración simplificada
  • Bajo costo: Componentes económicos y accesibles

📋 Materiales Requeridos

🖥️ Componentes Electrónicos

  • Arduino UNO: Microcontrolador principal
  • Sensor LM35: Sensor de temperatura analógico
  • Display LCD 16x2: Pantalla de visualización
  • Potenciómetro 10kΩ: Control de contraste del LCD

💻 Explicación Detallada del Código

1️⃣ Inclusión de Librerías y Configuración Inicial

El primer paso es incluir la librería LiquidCrystal, que proporciona funciones para controlar el display LCD. Luego, creamos una instancia del objeto LCD especificando los pines del Arduino a los que conectaremos el display.

#include <LiquidCrystal.h>

// Configuración de pines del LCD (RS, E, D4, D5, D6, D7)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
📌 Nota: La librería LiquidCrystal permite controlar displays LCD de manera sencilla. Los seis pines especificados (12, 11, 5, 4, 3, 2) corresponden a RS, E, D4, D5, D6, D7 del LCD respectivamente.

2️⃣ Configuración Inicial (Setup)

La función setup() se ejecuta una sola vez al iniciar el Arduino. Aquí inicializamos el LCD indicándole su tamaño (16 columnas × 2 filas).

void setup() {
    // Inicializar LCD de 16 columnas x 2 filas
    lcd.begin(16, 2);
    
    // Mensaje de bienvenida
    lcd.print("Sistema Listo");
}

3️⃣ Bucle Principal (Loop)

La función loop() se ejecuta repetidamente. En cada iteración, lee la temperatura del sensor, la convierte a grados Celsius y la muestra en el LCD con formato legible.

void loop() {
    // 1. Leer temperatura del sensor
    int c = centi();
    
    // 2. Configurar cursor en primera línea
    lcd.setCursor(0, 0);
    lcd.print("TEMPERATURA:");
    
    // 3. Mostrar valor de temperatura
    lcd.setCursor(13, 0);
    lcd.print(c);
    lcd.print((char)223); // Símbolo de grados °
    lcd.print("C");
    
    // 4. Pequeña pausa para estabilidad
    delay(1000);
}

4️⃣ Función de Lectura de Temperatura

Esta función realiza la lectura analógica del sensor y convierte el valor digital a grados Celsius usando la fórmula de conversión adecuada para el LM35.

float centi() {
    // 1. Leer valor analógico del pin A0 (0-1023)
    int dato = analogRead(A0);
    
    // 2. Convertir valor digital a temperatura en °C
    // Fórmula: (500.0 × valor_analógico) ÷ 1023
    float c = (500.0 * dato) / 1023;
    
    // 3. Retornar valor en grados Celsius
    return c;
}

🔍 Explicación de la Conversión Analógica a Digital

Concepto Descripción Valor
Rango entrada Voltaje del sensor 0V a 5V
Rango ADC Valor digital convertido 0 a 1023
0°C Salida del LM35 0V → 0
50°C Salida del LM35 0.5V → 102
100°C Salida del LM35 1V → 205

📊 Lectura Analógica del Sensor

El sensor LM35 genera una salida de 10mV por cada grado Celsius. Esto significa:

  • A 0°C: 0V (0 en escala 0-1023)
  • A 50°C: 0.5V (aproximadamente 102)
  • A 100°C: 1V (aproximadamente 205)
  • A 150°C: 1.5V (aproximadamente 307)

🧮 Fórmula de Conversión

La fórmula utilizada es:

Temperatura (°C) = (500.0 × valor_ADC) ÷ 1023

Donde 500.0 representa el rango máximo teórico de medición del conversor ADC de 10 bits.

⚙️ Características del Sensor LM35

Propiedad Especificación
Precisión ±0.5°C
Rango de temperatura -55°C a 150°C
Salida 10mV/°C
Alimentación 4V a 30V
Consumo de corriente 60μA máximo

🔧 Consejos de Implementación

✅ Conexiones Correctas

  • LM35 Vcc: Conectar directamente a 5V del Arduino
  • LM35 Vout: Conectar al pin analógico A0
  • LM35 GND: Conectar a tierra (GND)
  • LCD VCC: A través del potenciómetro para control de contraste
  • Verificar polaridad: El LM35 es sensible a la inversión de polaridad

⚠️ Solución de Problemas Comunes

  • Lecturas incorrectas: Verificar conexión del sensor y alimentación 5V
  • LCD sin visualización: Ajustar contraste con el potenciómetro
  • Lecturas fluctuantes: Agregar capacitor de 0.1μF entre Vout y GND
  • Errores de compilación: Verificar que la librería LiquidCrystal esté instalada
  • Calibración: Si las lecturas están desviadas, verificar ecuación de conversión

🎓 Lo que has Aprendido

📚 Conceptos Clave

Al completar este proyecto, dominas la lectura de sensores analógicos con Arduino, el manejo de displays LCD 16x2, la conversión de valores analógicos a unidades físicas significativas y la implementación de sistemas de medición básicos. Estas habilidades son fundamentales para proyectos avanzados de IoT, automatización industrial y sistemas embebidos.

❓ Preguntas Frecuentes

¿Puedo usar otro sensor de temperatura?

Sí, pero necesitarás ajustar la fórmula de conversión según las especificaciones del nuevo sensor (generalmente viene en el datasheet).

¿Cómo puedo registrar datos históricos?

Puedes conectar una tarjeta SD o usar la memoria EEPROM del Arduino para almacenar lecturas periódicamente.

¿Cómo agrego alarmas si la temperatura supera un límite?

Agrega un LED o buzzer conectado a un pin digital y actívalo cuando la temperatura supere el umbral establecido.

📥 Descarga el Código Completo

Accede al código fuente optimizado, esquemático en Fritzing y documentación técnica

💬 ¿Tienes preguntas? ¡Comparte tus dudas en los comentarios y te ayudamos a resolverlas! Si lograste implementar el proyecto correctamente, cuéntanos tu experiencia.

0/Deja un comentario/Comentarios

¡Hola! Nos alegra mucho que hayas llegado hasta aquí y que estés leyendo este artículo en Edeptec.
Este formulario es un espacio abierto para ti: puedes dejar un comentario con tus dudas, sugerencias, experiencias o simplemente tu opinión sobre el tema tratado.

» ¿Te resultó útil la información?
» ¿Tienes alguna experiencia personal que quieras compartir?
» ¿Se te ocurre algún tema que te gustaría ver en próximos artículos?

Recuerda que este espacio es para aprender y compartir, por eso te animamos a participar de manera respetuosa y constructiva. Tus comentarios pueden ayudar a otros lectores que están en el mismo camino, ya sea en electrónica, programación, deportes o tecnología.

¡Gracias por ser parte de esta comunidad de aprendizaje! Tu participación es lo que hace crecer este proyecto.