🎯 Objetivo de la Práctica
En esta práctica vas a construir un termómetro digital usando el sensor TMP36. El Arduino leerá la temperatura ambiente y la mostrará por puerto serial y opcionalmente en una pantalla LCD.
- Conexión de sensores analógicos
- Lectura de valores analógicos (0-1023)
- Conversión de valores a temperatura (°C)
- Uso de variables decimales (float)
- Visualización en Serial y LCD
📦 Materiales Necesarios
- Arduino Uno (o compatible)
- Sensor TMP36 (1 por grupo)
- Cables jumper (3 por sensor)
- Protoboard
- LCD 16x2 con I2C (opcional)
- LED + resistencia 220Ω (para alarma)
- Cable USB para Arduino
- No confundir con el LM35 (son similares pero tienen diferente escala)
- La patita izquierda es 5V, centro es señal, derecha es GND
- No conectar al revés o se puede quemar el sensor
🔌 Diagrama de Conexiones
Conexión del TMP36
┌─────────────────────────┐
│ VISTA FRONTAL │
│ DEL TMP36 │
│ │
│ ┌─────────┐ │
│ │ TMP │ │
│ │ 36 │ │
│ └───┬┬┬───┘ │
│ │││ │
│ ││└──────→ GND │
│ │└───────→ A0 │
│ └────────→ 5V │
└─────────────────────────┘
CONEXIONES AL ARDUINO:
─────────────────────
TMP36 Izquierda (5V) → Arduino 5V
TMP36 Centro (Señal) → Arduino A0
TMP36 Derecha (GND) → Arduino GND
| Patita TMP36 | Función | Conexión Arduino | Color Sugerido |
|---|---|---|---|
| Izquierda | Alimentación | 5V | 🔴 Rojo |
| Centro | Señal Analógica | A0 | 🟡 Amarillo |
| Derecha | Tierra (GND) | GND | ⚫ Negro |
💻 Código AlbertCode (Básico)
Copiá y pegá este código en el Traductor AlbertCode:
Variables
entero valorSensor
decimal temperatura
fin variables
al iniciar
serial 9600
pin A0 entrada
fin al iniciar
para siempre
valorSensor = leer A0
temperatura = valorSensor * 0.488 - 50
imprimir "Temperatura: "
imprimir temperatura
imprimir " C"
demorar 1000
fin parasiempre
El TMP36 entrega un voltaje proporcional a la temperatura:
0.5V = 0°C10mV por cada °C- Fórmula:
temperatura = (voltaje - 0.5) × 100
📄 Código Arduino Generado
Esto es lo que AlbertCode traduce automáticamente:
int valorSensor;
float temperatura;
void setup() {
Serial.begin(9600);
pinMode(A0, INPUT);
}
void loop() {
valorSensor = analogRead(A0);
temperatura = valorSensor * 0.488 - 50;
Serial.println("Temperatura: ");
Serial.println(temperatura);
Serial.println(" C");
delay(1000);
}
📟 Código con LCD (Opcional)
Si tenés un LCD I2C, agregá esta versión mejorada:
Variables
entero valorSensor
decimal temperatura
fin variables
al iniciar
serial 9600
lcd i2c 0x27
pin A0 entrada
fin al iniciar
para siempre
valorSensor = leer A0
temperatura = valorSensor * 0.488 - 50
lcd limpiar
lcd cursor 0, 0
lcd imprimir "Temp: "
lcd imprimir temperatura
lcd imprimir " C"
imprimir "Temperatura: "
imprimir temperatura
demorar 1000
fin parasiempre
El simulador Tinkercad no soporta LCD I2C. Para probar esta versión necesitás:
- Arduino físico + módulo LCD I2C
- O usar el LCD paralelo (con más cables)
🚨 Código con Alarma de Temperatura
Versión avanzada con LED que se enciende si hace mucho calor:
Variables
entero valorSensor
decimal temperatura
fin variables
al iniciar
serial 9600
lcd i2c 0x27
pin A0 entrada
pin 13 salida
fin al iniciar
para siempre
valorSensor = leer A0
temperatura = valorSensor * 0.488 - 50
lcd limpiar
lcd cursor 0, 0
lcd imprimir "Temp: "
lcd imprimir temperatura
lcd imprimir " C"
si temperatura > 30 entonces
encender 13
lcd cursor 0, 1
lcd imprimir "ALERTA CALOR!"
sino
apagar 13
fin si
imprimir "Temperatura: "
imprimir temperatura
demorar 1000
fin parasiempre
📋 Paso a Paso para la Clase
📊 Tabla de Valores de Referencia
Estos valores te ayudan a debuggear si las lecturas no son correctas:
| Temperatura | Voltaje | Valor Analógico | Estado |
|---|---|---|---|
| -50°C | 0.0V | 0 | Mínimo teórico |
| 0°C | 0.5V | 102 | Punto de referencia |
| 25°C | 0.75V | 154 | Temperatura ambiente |
| 30°C | 0.8V | 164 | Umbral de alarma |
| 50°C | 1.0V | 205 | Máximo práctico |
| 150°C | 2.0V | 410 | Máximo teórico |
Si leés valores cercanos a 0 o 1023, revisá las conexiones. Un TMP36 conectado correctamente en ambiente interior debería dar valores entre 150-200 (20-30°C).
🎯 Desafíos para los Alumnos
Modificá el código para que la alarma se active a 25°C en lugar de 30°C.
Agregá un LED azul que se encienda cuando la temperatura sea menor a 20°C (frío).
Mostrá la temperatura en la línea 1 y el estado (FRÍO/NORMAL/CALIENTE) en la línea 2.
Usá una variable para guardar y mostrar la temperatura máxima registrada.
🔧 Solución de Problemas
| Problema | Posible Causa | Solución |
|---|---|---|
| Temperatura siempre 0°C | Sensor mal conectado | Verificar que las 3 patitas estén en los pines correctos |
| Temperatura muy alta (>100°C) | Sensor al revés | Rotar el TMP36 180 grados |
| Lecturas inestables | Cables sueltos | Presionar bien los cables en la protoboard |
| LCD no muestra nada | Dirección I2C incorrecta | Probar con 0x3F en lugar de 0x27 |
| Serial muestra caracteres raros | Baudios incorrectos | Verificar que Monitor Serial esté en 9600 |