Fabricación inteligente

Monitorización de temperatura de rodamientos con sensores inalámbricos y alertas MQTT

Una configuración práctica de monitorización de temperatura de rodamientos: sensores inalámbricos a batería en los soportes, lecturas compensadas por temperatura ambiente vía MQTT, detección de velocidad de subida y alertas por umbral antes de que un rodamiento se sobrecaliente.

Monitorización de temperatura de rodamientos con un sensor inalámbrico en el soporte de una bomba enviando alertas a un dashboard MQTT en la nube
Pruébalo en tu propio broker MQTTConsigue un broker MQTT privado y gestionado con el plan Free y empieza con ejemplos de código listos para usar.
Pruébalo gratis Ejemplos de código Sin tarjeta

La monitorización de temperatura de rodamientos es una de las formas más sencillas de proteger motores, bombas, ventiladores y transportadores frente a paradas no planificadas. Este caso de uso muestra cómo instalar sensores inalámbricos de temperatura en los soportes de los rodamientos, publicar las lecturas por MQTT, compensar la temperatura ambiente y generar alertas por umbral y por velocidad de subida mucho antes de que un rodamiento se sobrecaliente.

Por qué monitorizar la temperatura de los rodamientos

Los rodamientos fallan por motivos conocidos: degradación del lubricante, exceso de grasa, contaminación, desalineación, tensión excesiva de correas y simple fatiga. La mayoría de estos problemas se manifiestan como fricción adicional, y la fricción adicional se manifiesta como calor. Un rodamiento que normalmente funciona a una diferencia estable por encima de la temperatura ambiente y empieza a subir poco a poco te está diciendo algo.

La temperatura suele ser un indicador más tardío que la vibración. Un sensor de vibración puede detectar un defecto superficial incipiente con semanas de antelación, mientras que la temperatura tiende a subir cuando el daño o los problemas de lubricación ya están avanzados. Eso no le resta valor. Los sensores de temperatura son baratos, fáciles de instalar y fáciles de interpretar, y son excelentes para detectar los modos de fallo que se desarrollan rápido, como un fallo de lubricación tras una ronda de engrase omitida o un retén agarrotado. En la práctica, los mejores programas usan ambos: sensores de monitorización de vibraciones para el aviso mecánico temprano y la temperatura como una segunda opinión robusta.

La configuración de monitorización

El caso de uso siguiente cubre una zona de servicios típica: seis bombas y cuatro ventiladores, cada uno con un rodamiento del lado de accionamiento y otro del lado opuesto. Tender cables hasta veinte puntos de medición en una sala de máquinas es caro, así que los sensores son inalámbricos y funcionan con baterías.

Componente Función Ejemplo
Sonda de temperatura Mide la temperatura del soporte del rodamiento DS18B20 en vaina de acero inoxidable, o un termistor de contacto
Sonda ambiente Mide la temperatura de la sala junto a la máquina Segundo DS18B20 en la misma placa
Nodo inalámbrico Lee las sondas, publica y duerme ESP32 con baterías, o un sensor inalámbrico comercial con gateway
Broker MQTT Recibe todas las lecturas y alertas Broker MQTT gestionado de ConnectMQ
Lógica de alertas Umbrales y detección de velocidad de subida Reglas de umbral del portal más un pequeño servicio en Python
Dashboard Vista en directo por activo Dashboard del portal o cualquier herramienta de dashboards compatible con MQTT

Montaje de la sonda

Monta la sonda en el soporte del rodamiento, lo más cerca posible del aro exterior y, idealmente, en la zona de carga. Un pequeño orificio roscado con una sonda roscada ofrece el mejor contacto térmico; la resina epoxi térmica o un montaje magnético con pasta térmica funcionan donde no se permite taladrar. Evita montarla en protecciones, tapas o en el bastidor del motor lejos del rodamiento, porque reaccionan con retraso y marcan valores bajos. Etiqueta cada sonda con su activo y posición, por ejemplo pump3/de para el lado de accionamiento.

Firmware del nodo inalámbrico

El sketch siguiente despierta un ESP32 cada minuto, lee una sonda de rodamiento y una sonda ambiente en el mismo bus OneWire, publica un mensaje JSON y vuelve al deep sleep. Instala PubSubClient, OneWire y DallasTemperature desde el gestor de librerías de Arduino. Para profundizar en el sensor, consulta el tutorial ESP32 DS18B20 con MQTT.

#include <WiFi.h>
#include <PubSubClient.h>
#include <OneWire.h>
#include <DallasTemperature.h>

const char* WIFI_SSID = "YOUR_WIFI";
const char* WIFI_PASS = "YOUR_WIFI_PASSWORD";
const char* CLIENT_ID = "brg-pump3-de-51ad7e";
const char* TOPIC = "connectmq/demo/51ad7e/utilities/pump3/bearing_de";
const uint64_t SLEEP_US = 60ULL * 1000000ULL;

// Sustituye por las direcciones que imprime un sketch escáner de OneWire
DeviceAddress BEARING = {0x28, 0xFF, 0x64, 0x1E, 0x15, 0x21, 0x03, 0x9A};
DeviceAddress AMBIENT = {0x28, 0xFF, 0x3C, 0x0B, 0x15, 0x21, 0x03, 0x41};

OneWire oneWire(4);
DallasTemperature sensors(&oneWire);
WiFiClient net;
PubSubClient mqtt(net);

void sleepNow() {
  esp_sleep_enable_timer_wakeup(SLEEP_US);
  esp_deep_sleep_start();
}

void setup() {
  sensors.begin();
  sensors.requestTemperatures();
  float bearing = sensors.getTempC(BEARING);
  float ambient = sensors.getTempC(AMBIENT);

  WiFi.mode(WIFI_STA);
  WiFi.begin(WIFI_SSID, WIFI_PASS);
  uint32_t start = millis();
  while (WiFi.status() != WL_CONNECTED) {
    if (millis() - start > 15000) sleepNow();  // desiste e inténtalo en el siguiente ciclo
    delay(100);
  }

  mqtt.setServer("broker.connectmq.com", 1883);
  if (!mqtt.connect(CLIENT_ID)) sleepNow();

  char payload[160];
  snprintf(payload, sizeof(payload),
           "{\"bearing_c\":%.2f,\"ambient_c\":%.2f,\"delta_c\":%.2f,\"rssi\":%d}",
           bearing, ambient, bearing - ambient, WiFi.RSSI());
  mqtt.publish(TOPIC, payload, true);  // retenido: los dashboards ven el último valor al instante
  mqtt.loop();
  delay(100);
  mqtt.disconnect();
  sleepNow();
}

void loop() {}

El mensaje es retenido, así que un dashboard que se abre entre dos despertares muestra de inmediato la última lectura. Publicar delta_c, la diferencia entre la temperatura del rodamiento y la ambiente, es la decisión de diseño más importante de esta configuración.

Por qué importa la compensación de temperatura ambiente

Una alarma fija sobre la temperatura absoluta del rodamiento se comporta mal a lo largo de las estaciones. Una sala de bombas en verano puede estar mucho más caliente que en invierno, de modo que un límite seguro en julio quizá nunca se dispare en enero, y un límite ajustado para enero provocará alarmas molestas todo el verano.

En cambio, el aumento de temperatura sobre la ambiente depende sobre todo de la carga, la velocidad y el estado del rodamiento. Alarmar sobre la diferencia elimina el efecto estacional, mientras que un límite absoluto independiente sigue protegiendo frente a un funcionamiento fuera del rango nominal del lubricante y del rodamiento. Los fabricantes publican temperaturas máximas de funcionamiento para rodamientos y grasas; usa esos documentos como límite superior en lugar de una cifra genérica sacada de internet.

Estrategia de alertas: tres capas

Un buen esquema de monitorización de temperatura de rodamientos combina tres tipos de reglas:

  1. Límite absoluto. Temperatura del rodamiento por encima del máximo permitido por la especificación del rodamiento y de la grasa. Siempre es una alarma.
  2. Límite de diferencia. Aumento sobre la ambiente claramente superior al valor normal aprendido para ese rodamiento. Normalmente primero un aviso y después una alarma.
  3. Velocidad de subida. La temperatura sube más rápido de lo normal en una ventana corta, por ejemplo varios grados en media hora con carga estable. Esto detecta pronto los fallos de desarrollo rápido, a menudo antes de alcanzar cualquiera de los límites.

Las dos primeras son umbrales simples. En el portal de ConnectMQ puedes crear reglas de alerta por umbral sobre los campos bearing_c y delta_c de cada topic y revisar cada desviación en el registro de alertas, sin código. La velocidad de subida necesita historial, así que se ejecuta en un pequeño servicio suscriptor.

Detector de velocidad de subida en Python

import json
import time
from collections import defaultdict, deque
import paho.mqtt.client as mqtt

PREFIX = "connectmq/demo/51ad7e"
WINDOW_S = 30 * 60          # mirar 30 minutos hacia atrás
MAX_RISE_C = 5.0            # alertar si delta sube más que esto dentro de la ventana
STALE_S = 5 * 60            # el nodo se ha saltado varios despertares

history = defaultdict(deque)   # topic -> deque de (time, delta_c)
last_seen = {}

def on_connect(client, userdata, flags, reason_code, properties):
    client.subscribe(f"{PREFIX}/+/+/+", qos=1)

def on_message(client, userdata, msg):
    if msg.topic.endswith("/alert"):
        return
    now = time.time()
    data = json.loads(msg.payload)
    h = history[msg.topic]
    h.append((now, data["delta_c"]))
    last_seen[msg.topic] = now
    while h and now - h[0][0] > WINDOW_S:
        h.popleft()
    rise = h[-1][1] - min(v for _, v in h)
    if rise > MAX_RISE_C:
        alert = {"ts": int(now), "kind": "rate_of_rise", "topic": msg.topic,
                 "rise_c": round(rise, 1), "window_min": WINDOW_S // 60,
                 "bearing_c": data["bearing_c"]}
        client.publish(f"{msg.topic}/alert", json.dumps(alert), qos=1, retain=True)
        print("ALERT", alert)
        h.clear()

client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id="brg-ror-51ad7e")
client.on_connect = on_connect
client.on_message = on_message
client.connect("broker.connectmq.com", 1883, keepalive=60)
client.loop_start()

while True:
    time.sleep(60)
    for topic, seen in list(last_seen.items()):
        if time.time() - seen > STALE_S:
            print(f"STALE {topic}: no reading for {int(time.time() - seen)} s")
            last_seen.pop(topic)

El detector ignora los topics de alerta retenidos, compara la última diferencia con el valor más bajo de la ventana y borra su historial tras alertar para no dispararse cada minuto. La comprobación de datos obsoletos es importante en los nodos a batería: un sensor que deja de informar en silencio es tan peligroso como un rodamiento caliente que nadie ve.

Despliegue en toda la planta

  1. Haz un piloto con unos pocos activos críticos. Elige máquinas cuyo fallo detenga la producción, no las más accesibles.
  2. Recoge de dos a cuatro semanas de datos antes de ajustar. Aprende la diferencia normal de cada rodamiento con carga típica.
  3. Define límites de diferencia y de velocidad de subida por rodamiento. Los rodamientos del lado de accionamiento y del lado opuesto suelen funcionar a temperaturas distintas.
  4. Acuerda una respuesta. Quién recibe un aviso, quién recibe una alarma y qué revisan primero (lubricación, alineación, tensión de correas, carga).
  5. Registra los hallazgos. Cada alerta debe cerrarse con una nota breve de lo encontrado, para que los umbrales mejoren con el tiempo y tu cálculo de MTBF y MTTR refleje la realidad.
  6. Pasa a un broker privado. Sustituye la demo pública por credenciales del portal, TLS en el puerto 8883 y topics ISA-95 como acme/plant1/utilities/pumproom/pump3/bearing_de.

La demo anterior se ejecuta en el servidor MQTT público gratuito, donde todo es visible para cualquiera; sirve para pruebas y prototipos, no para datos de producción. Para activos reales, un broker MQTT gestionado mantiene los datos privados, los certificados renovados y el servicio en marcha sin que nadie de tu equipo tenga que mantener servidores.

Consejos de autonomía y fiabilidad

  • Despierta, publica y duerme lo más rápido posible. La mayor parte del consumo de batería procede de la conexión Wi-Fi, así que un intervalo de un minuto es un compromiso; cinco minutos bastan para tendencias lentas si mantienes largas las ventanas de velocidad de subida.
  • Usa una IP estática o una estrategia de reconexión rápida para reducir el tiempo de conexión.
  • Informa del rssi y de la tensión de la batería para corregir los nodos débiles antes de que se caigan.
  • En instalaciones grandes o salas de máquinas con mucho metal, considera sensores que usen un protocolo inalámbrico dedicado y un gateway que republique a MQTT.

Dónde encaja la temperatura de rodamientos

La temperatura es una señal entre varias. Combinada con la monitorización de corriente del motor distingue el calentamiento por carga del calentamiento por fricción, y combinada con la vibración confirma los fallos mecánicos desde dos fuentes independientes. La guía de fabricación inteligente muestra cómo estas señales comparten una misma columna vertebral MQTT y una estructura de topics en toda la planta, que también puede alimentar un gemelo digital 3D de la sala de máquinas.

Protege tus rodamientos con ConnectMQ

ConnectMQ ofrece un broker MQTT privado y protegido con TLS, con retained messages, un explorador de topics en directo, una vista de dispositivos por nivel ISA-95 y reglas de alerta por umbral en el portal. Empieza con el plan gratuito Serverless en app.connectmq.com, sin tarjeta de crédito, y conecta hoy tu primer sensor de rodamiento.

Preguntas frecuentes

¿Cuál es una temperatura normal de rodamiento?

Depende del rodamiento, la carga, la velocidad, el lubricante y el entorno. Aprende el aumento normal sobre la temperatura ambiente de cada rodamiento y usa las temperaturas máximas del fabricante del rodamiento y de la grasa como límite superior absoluto.

¿Basta por sí sola la monitorización de temperatura de rodamientos?

Detecta bien los fallos de lubricación y los fallos de desarrollo rápido, pero la temperatura suele subir más tarde que la vibración. Combina ambas para obtener el aviso más temprano.

¿Con qué frecuencia debe informar un sensor inalámbrico de rodamiento?

Lo habitual es cada uno a cinco minutos. La temperatura de los rodamientos cambia despacio, y los intervalos más largos alargan mucho la autonomía de la batería.

¿Por qué alarmar sobre el aumento de temperatura respecto a la ambiente?

La temperatura ambiente varía con la estación y la hora del día. El aumento sobre la ambiente refleja más directamente el estado del rodamiento, de modo que las alarmas siguen siendo significativas todo el año.

Artículos relacionados

OEE vs TEEP vs OOE: ¿qué indicador deberías usar?

OEE, OOE y TEEP comparten los mismos factores de rendimiento y calidad, pero se miden frente a bases de tiempo distintas. Esta comparativa resuelve un único ejemplo y enumera las señales MQTT que necesita cada indicador.

8 min de lectura

Todos los artículos →

Tu broker MQTT privado, a unos pocos clics

Crea una cuenta, obtén las credenciales de tu broker y conecta tu primer dispositivo, sin servidores que instalar, parchear ni escalar.