Termómetro Exterior Arduino con Tendencia, Máximas y Mínimas
Componentes y materiales
| Arduino UNO | × | 1 |
| Sensor de temperatura de precisión TS-NTC-103, 10 kΩ (B+B Thermo Technik) | × | 1 |
| Pantalla LCD 16×2 (blanco sobre azul) – estándar Adafruit | × | 1 |
| Fuente de alimentación 12 V DC 2 A (RobotGeek) | × | 1 |
| Condensador 100 nF (0,1 µF) | × | 2 |
| Condensador electrolítico 470 µF 16 V | × | 1 |
| Resistencia metalfilm 10 kΩ, tolerancia 0,1 % | × | 1 |
| Pulsador (normalmente abierto) | × | 1 |
| Potenciómetro rotativo 10 kΩ lineal (contraste LCD) | × | 1 |
| Resistencia 10 kΩ (tolerancia estándar) | × | 1 |
Descripción del proyecto
Introducción
Construí este termómetro por diversión y para ganar experiencia programando Arduino y usando una pantalla LCD. Durante el desarrollo decidí añadir funcionalidades extra: registro de temperatura máxima y mínima, y una flecha en pantalla que indica la tendencia (subida/bajada) de la temperatura. Un pulsador permite reiniciar los valores máx/mín a la temperatura actual.
Cómo montarlo
El montaje es sencillo. Conecte los componentes siguiendo el esquema. La salida de 5 V del Arduino Uno debe ir a todas las conexiones +5 V (flechas). Interconecte también todas las masas. El termómetro se alimenta mediante una fuente externa de 12 V CC conectada al Arduino. Descargue el sketch, cárguelo en su Arduino y listo.
Lista de materiales:
- Arduino Uno
- Pantalla LCD 1602A
- Fuente 12 V CC
- Sensor NTC B+B Thermo Technik TS-NTC-103 (10 kΩ)
- Resistencia metalfilm 10 kΩ, tolerancia 0,1 %, 0,6 W, coef. temp. 25 ppm
- Potenciómetro 10 kΩ lineal
- Resistencia 820 Ω (tolerancia 10 % o mejor)
- Resistencia 10 kΩ (tolerancia estándar)
- Condensador 0,1 µF (=100 nF) 16 V (2 uds.)
- Electrolítico 470 µF 16 V
- Pulsador (normalmente abierto)
- Caja de montaje (opcional)
El sensor: un NTC de alta precisión
El NTC utilizado es un sensor de precisión de B+B Thermo Technik de 10 kΩ con tolerancia de resistencia a 25 °C de ±0,5 %. La serie TS-NTC cubre un rango de -60 … +150 °C, siendo alternativa a resistencias de platino. Tanto la resistencia base como el valor B están dentro de ±0,5 %, permitiendo usar el componente sin calibración y reemplazarlo sin reajuste. Así, mediante una simple medición de resistencia se alcanza una precisión de ±0,12 K a 25 °C. En el rango -60 … +85 °C el error máximo es ≈ ±0,5 K. Puede usarse otro NTC de alta precisión, pero deberá cambiar los coeficientes de Steinhart-Hart en el sketch.
Para mediciones de alta precisión, la otra resistencia del divisor de tensión (en serie con el NTC) también debe ser de baja tolerancia. Usé una resistencia metalfilm 10 kΩ, 0,1 %, 0,6 W, 25 ppm. Cualquier resistencia con tolerancia ≤ 0,5 % sirve.
Ruido en el cable del NTC
El NTC se coloca en el exterior, en mi caso con varios metros de cable. Para evitar interferencias de equipos «ruidosos» en casa, puse un condensador de desacoplo de 0,1 µF entre la entrada analógica del Arduino (pin 14) y tierra. El osciloscopio mostraba aún algo de ruido en el pin 14, causado por el reloj de la pantalla LCD 1602. Desapareció al colocar otro condensador de 0,1 µF entre los pines VDD y VSS de la LCD, soldado directamente en la placa con cables lo más cortos posible (≤ 1 cm).
La señal en el pin 14 quedó limpia. Para evitar ruido y rizado de la fuente conmutada, añadí un electrolítico de 470 µF entre 5 V y GND del Arduino.
Ubicación del NTC
Para evitar lecturas erróneas, el NTC y su caja nunca deben recibir sol directo. Debe colocarse a la sombra, preferiblemente en la cara norte de la casa (sur en el hemisferio sur) o alejado de la pared. No pegado a la pared, sino a unos mm de ella, pues la pared puede estar varios grados más caliente que el aire exterior. Idealmente, una pared sin calefacción detrás (ej. garaje).


Sobre el software
Se usa la librería LiquidCrystal para la LCD 1602. Se declaran varias constantes y variables; léase los comentarios en el sketch. A, B y C son los coeficientes de Steinhart-Hart para mi NTC; cámbielos si usa otro. El intervalo entero en la línea 17 define el tiempo entre mediciones (3 s). Para suavizar la lectura se calcula una media móvil de 30 mediciones sucesivas (numReadings en línea 22), por lo que la temperatura mostrada es siempre el promedio de los últimos 90 s. Para la media móvil se usa un array readings[30] (línea 21); cada lectura es un entero 0–1023.
Aproximación de Steinhart-Hart
Un NTC (Coeficiente de Temperatura Negativo) es una resistencia cuyo valor disminuye al subir la temperatura. La relación resistencia-temperatura no es lineal, pero la curva R-T puede aproximarse mediante fórmulas. En la práctica se usan la fórmula Beta y la de Steinhart-Hart; esta última da mejor aproximación y es la que empleo. A menudo el fabricante da valores para ambas. Como el TS-NTC-103 opera en -60…+150 °C pero lo usamos en ≈ -10…+30 °C, calculamos los coeficientes específicamente para este rango. Tomé tres pares resistencia-temperatura de las especificaciones del fabricante en nuestro rango de trabajo (-10, 0 y +20 °C). Los coeficientes se calculan fácilmente con la calculadora online de Stanford Research Systems.
En el gráfico adjunto se ven los datos reales (puntos rojos), la aproximación Beta y la de Steinhart-Hart. En la esquina inferior derecha: con 10 kΩ, Steinhart-Hart da 25,0035 °C (muy bueno) y Beta da 25,7716 °C (notablemente peor), siendo el NTC 10 kΩ a 25 °C.

Enlace a la calculadora NTC: Stanford Research Systems NTC Calculator
Código
- Versión 1.4: resuelve un problema de convención en la declaración de
PrintPG()que causaba error de compilación en el editor offline (no en el web). - Versión 1.3: añade histéresis a la flecha de tendencia.
El código completo está disponible en la sección «Code» del proyecto original.
Esquemáticos
Disponibles en la sección «Schematics» del proyecto original.
Proceso de manufactura
- Sistema de control de acceso integrado con QR, RFID y verificación de temperatura
- Conectar múltiples sensores DS18B20 1‑Wire a Raspberry Pi para monitorización precisa de temperatura
- Cómo leer temperatura con un DS18B20 en Raspberry Pi 2
- Medición de temperatura en Raspberry Pi con sensores 1-Wire Maxim y puente I2C DS2482
- Construya un sensor de temperatura remoto con Raspberry Pi y Python – Guía paso a paso
- Monitorización fluida de temperatura y humedad en Raspberry Pi con EzTemp
- Monitorización precisa de temperatura en armario de servidores con Raspberry Pi
- Control de temperatura casero para cerveza: monitorizar y regular con Arduino
- Monitorización de temperatura de sala con Raspberry Pi, gráficas Gnuplot y alertas por email
- Construya un Sistema de Monitorización de Temperatura y Luz Multi‑Sensor con Raspberry Pi y DS18B20
- Construya un robot con Raspberry Pi y Python: Guía completa