Proyecto Arduino sensor temperatura: guía técnica

Proyecto Arduino sensor temperatura: guía técnica

Una lectura de 24 °C en el monitor serial no sirve de mucho si el sensor está junto a un regulador caliente, el cable recoge interferencia o el relé conmuta una carga sin aislamiento. Un proyecto Arduino sensor temperatura bien ejecutado parte por definir qué se medirá, con qué precisión, en qué ambiente y qué acción debe activar el sistema cuando la variable salga de rango.

Este tipo de montaje puede resolver desde una estación STEM y un registrador para una sala de racks hasta la supervisión de un gabinete eléctrico, una incubadora, un proceso de secado o una alarma de sobretemperatura en maquinaria. La diferencia entre un prototipo demostrativo y una instalación útil está en seleccionar correctamente el sensor, cuidar el montaje mecánico y separar la señal de control de las cargas de potencia.

Defina el objetivo antes de elegir el sensor

No todos los sensores de temperatura responden al mismo escenario. Si necesita medir la temperatura ambiente de una habitación, un módulo digital económico puede ser suficiente. Si debe leer una tubería, una superficie metálica o un líquido, importa más el encapsulado, el método de contacto y la longitud del cable que la placa Arduino utilizada.

La precisión requerida también cambia la selección. Para activar un ventilador cuando un gabinete supera los 35 °C, una desviación de uno o dos grados normalmente es aceptable. Para control térmico de alimentos, laboratorio o procesos sensibles, conviene incorporar calibración, un sensor de mejor especificación y, según el caso, una arquitectura industrial con PT100 o PT1000 y un transmisor adecuado.

Antes de comprar componentes, deje definidos cuatro parámetros: rango de temperatura, medio de medición, distancia entre sensor y controlador, y acción de salida. Esa definición evita usar un DHT22 dentro de un tablero con ruido eléctrico o intentar llevar una señal analógica débil por varios metros sin acondicionamiento.

Sensores recomendados para un proyecto Arduino de temperatura

El DS18B20 es una opción práctica para temperatura ambiente, superficies y líquidos cuando se usa en versión encapsulada impermeable. Se comunica mediante bus 1-Wire, permite conectar varios sensores en un mismo pin de datos y entrega una lectura digital. Es una alternativa conveniente para monitorear varios puntos de una sala técnica, estanque o sistema de ventilación sin consumir múltiples entradas analógicas.

El DHT11 y el DHT22 miden temperatura y humedad. El primero funciona para ejercicios básicos, pero su rango, velocidad y precisión son limitados. El DHT22 suele ser más apropiado para monitoreo ambiental de baja exigencia. No debe instalarse donde reciba condensación, polvo conductor, radiación directa de una fuente de calor o corrientes de aire que no representen el ambiente real.

El LM35 entrega una señal analógica proporcional a la temperatura y es sencillo de implementar. El TMP36 tiene un comportamiento similar, pero su ecuación de conversión es diferente. Ambos requieren especial atención a la referencia de tensión y al ruido de la entrada analógica. En una placa alimentada por USB, una variación de la línea de 5 V afecta directamente el cálculo si esa tensión se usa como referencia ADC.

Para aplicaciones exigentes, un termopar tipo K permite trabajar a temperaturas más altas, pero no debe conectarse directamente a Arduino. Requiere un módulo conversor como MAX6675 o MAX31855, compensación de unión fría y cableado compatible. Si el proceso trabaja con motores, variadores o resistencias calefactoras, la inmunidad al ruido y la correcta puesta a tierra pasan a ser parte central del diseño.

Selección rápida según aplicación

Un DS18B20 es adecuado para medición distribuida o contacto con líquidos. Un DHT22 sirve para ambiente y humedad relativa. Un LM35 o TMP36 funciona en prototipos analógicos de corta distancia. Para hornos, extrusoras o procesos térmicos de mayor temperatura, un termopar con su módulo de interfaz es la elección técnica más razonable.

No elija solo por precio. Revise alimentación, rango, tolerancia, tipo de salida, encapsulado y compatibilidad con la placa. Arduino Uno y Nano operan normalmente a 5 V, mientras que muchas placas ESP32, RP2040 y algunas variantes de Arduino trabajan con lógica de 3.3 V. Un sensor alimentado a 5 V puede entregar una señal no segura para una entrada de 3.3 V.

Cableado del DS18B20: simple, pero no improvisado

Para un primer montaje confiable, el DS18B20 con tres conductores es una muy buena base. Conecte VCC a 5 V o 3.3 V según la placa y el módulo utilizado, GND a tierra común y DATA a un pin digital, por ejemplo D2. Entre DATA y VCC debe instalar una resistencia pull-up de 4.7 kΩ.

La resistencia pull-up no es un accesorio opcional: mantiene el bus 1-Wire en estado lógico alto cuando ningún dispositivo está transmitiendo. Algunos módulos ya la incluyen; un sensor encapsulado con cable generalmente no. Verifique el producto antes de duplicarla o de omitirla.

En cables cortos, el montaje sobre protoboard funciona para pruebas. Para una instalación permanente, utilice terminal blocks, borneras de paso, cable adecuado y una caja de proyecto. Mantenga el conductor del sensor alejado de alimentación de motores, contactores, fuentes switching de mala calidad y conductores de 220 V. Si debe cruzarse con potencia, hágalo a 90 grados y no en paralelo durante varios metros.

Cuando haya más de un sensor DS18B20, cada unidad tiene una dirección única. El programa puede identificar cada dirección y asignarla a zonas como "entrada de aire", "rack superior" o "retorno de agua". Etiquetar físicamente cada cable evita confusiones durante el mantenimiento.

Código base para lectura y alarma

Instale las bibliotecas OneWire y DallasTemperature desde el administrador de bibliotecas del IDE de Arduino. El siguiente ejemplo lee un DS18B20 en D2 y activa una salida de alarma en D8 al superar 35 °C. La salida puede controlar un LED, buzzer o la entrada de un módulo de relé compatible.

```cpp
#include
#include

const byte PIN_SENSOR = 2;
const byte PIN_ALARMA = 8;
const float LIMITE_ALTO = 35.0;

OneWire oneWire(PIN_SENSOR);
DallasTemperature sensores(&oneWire);

void setup() {
Serial.begin(9600);
sensores.begin();
pinMode(PIN_ALARMA, OUTPUT);
digitalWrite(PIN_ALARMA, LOW);
}

void loop() {
sensores.requestTemperatures();
float temperatura = sensores.getTempCByIndex(0);

if (temperatura == DEVICE_DISCONNECTED_C) {
Serial.println("Sensor no detectado");
digitalWrite(PIN_ALARMA, HIGH);
delay(2000);
return;
}

Serial.print("Temperatura: ");
Serial.print(temperatura);
Serial.println(" C");

digitalWrite(PIN_ALARMA, temperatura >= LIMITE_ALTO ? HIGH : LOW);
delay(2000);
}
```

Este código no incorpora histéresis. Cerca de 35 °C, el relé podría activarse y desactivarse repetidamente si la lectura oscila. Para controlar ventilación o calefacción, use dos umbrales: active a 35 °C y desactive recién bajo 32 °C. Esa diferencia reduce ciclos innecesarios y prolonga la vida útil de relés, ventiladores y fuentes.

También es recomendable programar una condición de falla. Si el sensor se desconecta, el sistema debe avisar y, según el riesgo del proceso, adoptar una posición segura. En un gabinete con equipos críticos, puede ser preferible encender ventilación y emitir alarma ante una lectura inválida, no simplemente ignorarla.

Salidas, relés y seguridad eléctrica

Arduino no puede alimentar directamente ventiladores de alta corriente, resistencias calefactoras, electroválvulas ni cargas conectadas a red eléctrica. Sus pines entregan señal lógica, no potencia. Para una carga DC pequeña use un transistor o MOSFET con diodo de rueda libre si la carga es inductiva. Para una carga AC, use un relé o SSR correctamente especificado.

Un módulo de relé debe evaluarse por tensión de bobina, nivel lógico de disparo, corriente y tipo de carga. No es lo mismo conmutar una lámpara resistiva que un motor con corriente de arranque. Instale fusible, caja aislante, prensaestopas y borneras protegidas. Nunca lleve 220 V a una protoboard ni deje terminales energizados expuestos.

Si el controlador, sensor y fuente comparten un gabinete, distribuya el cableado por zonas: baja tensión y señal por un lado, potencia por otro. Una fuente de 12 V para ventiladores puede alimentar el sistema mediante un convertidor DC-DC a 5 V para Arduino, siempre que se dimensione la corriente y se mantenga una tierra común donde corresponda.

Montaje, calibración y validación en terreno

La ubicación física determina la calidad de la lectura. Un sensor de aire pegado a la pared de un rack puede medir la temperatura del metal, no la del flujo de aire. Para detectar puntos calientes, instálelo cerca de la salida superior; para controlar ingreso de aire, ubíquelo en la zona baja o frontal. Si mide una superficie, use fijación mecánica o pasta térmica cuando la aplicación lo permita y proteja el conjunto contra desprendimientos.

Compare el sistema con un termómetro de referencia en condiciones estables. Registre varias lecturas, calcule el error promedio y aplique un offset en el firmware solo si la desviación es consistente. No intente corregir por software un sensor mal instalado, expuesto a corrientes de aire o afectado por una fuente de calor cercana.

Para telemetría, agregue una pantalla LCD u OLED, registro en tarjeta microSD o conectividad WiFi, Ethernet, LoRaWAN o NB-IoT según la infraestructura disponible. En instalaciones donde una caída de red no puede detener el control, la lógica local de alarma debe seguir funcionando aunque falle el envío de datos.

Un proyecto de temperatura adquiere valor cuando entrega una lectura creíble y una respuesta segura. Empiece con un sensor bien seleccionado, documente pines, umbrales y alimentación, y deje espacio en el gabinete para inspección y mantenimiento: ese orden simplifica cualquier ampliación futura.

Regresar al blog