Manufatura inteligente

Monitoramento de Temperatura de Rolamentos com Sensores Sem Fio e Alertas MQTT

Uma configuração prática de monitoramento de temperatura de rolamentos: sensores sem fio a bateria nas caixas de mancal, leituras compensadas pela temperatura ambiente via MQTT, detecção de taxa de elevação e alertas por limite que disparam antes de um rolamento superaquecer.

Monitoramento de temperatura de rolamentos com um sensor sem fio na caixa de mancal de uma bomba enviando alertas para um dashboard MQTT na nuvem
Rode isso no seu próprio broker MQTTTenha um broker MQTT privado e gerenciado no plano Free e comece com exemplos de código prontos.
Teste grátis Exemplos de código Sem cartão de crédito

O monitoramento de temperatura de rolamentos é uma das formas mais simples de proteger motores, bombas, ventiladores e transportadores contra paradas não planejadas. Este caso de uso mostra como instalar sensores de temperatura sem fio nas caixas de mancal, publicar leituras via MQTT, compensar a temperatura ambiente e gerar alertas por limite e por taxa de elevação bem antes de um rolamento superaquecer.

Por que monitorar a temperatura dos rolamentos

Rolamentos falham por motivos conhecidos: degradação da lubrificação, excesso de graxa, contaminação, desalinhamento, tensão excessiva de correia e simples fadiga. A maioria desses problemas aparece como atrito extra, e atrito extra aparece como calor. Um rolamento que normalmente opera a uma diferença estável acima da temperatura ambiente e começa a subir aos poucos está avisando alguma coisa.

A temperatura costuma ser um indicador mais tardio do que a vibração. Um sensor de vibração pode detectar um defeito superficial inicial com semanas de antecedência, enquanto a temperatura tende a subir quando o dano ou o problema de lubrificação já está bem avançado. Isso não a torna menos valiosa. Sensores de temperatura são baratos, fáceis de instalar e fáceis de interpretar, e são excelentes para detectar modos de falha que se desenvolvem rapidamente, como uma falha de lubrificação depois de uma rota de lubrificação esquecida ou uma vedação travada. Na prática, os melhores programas usam os dois: sensores de monitoramento de vibração para o alerta mecânico precoce e a temperatura como uma segunda opinião robusta.

A configuração de monitoramento

O caso de uso abaixo cobre uma área de utilidades típica, como a de uma usina ou de uma planta em Joinville: seis bombas e quatro ventiladores, cada um com um rolamento do lado acionado e um do lado oposto. Passar cabos para vinte pontos de medição em uma casa de máquinas é caro, então os sensores são sem fio e alimentados por bateria.

Componente Função Exemplo de escolha
Sonda de temperatura Mede a temperatura da caixa de mancal DS18B20 em uma bainha de inox, ou um termistor de contato
Sonda ambiente Mede a temperatura da sala perto da máquina Segundo DS18B20 na mesma placa
Nó sem fio Lê as sondas, publica, dorme ESP32 a bateria, ou um sensor sem fio comercial com gateway
Broker MQTT Recebe todas as leituras e alertas Broker MQTT gerenciado da ConnectMQ
Lógica de alerta Limites e detecção de taxa de elevação Regras de limite do portal mais um pequeno serviço em Python
Dashboard Visão ao vivo por ativo Dashboard do portal ou qualquer ferramenta de dashboard compatível com MQTT

Montando a sonda

Monte a sonda na caixa de mancal, o mais perto possível do anel externo, de preferência na zona de carga. Um pequeno furo roscado com uma sonda rosqueada oferece o melhor contato térmico; epóxi térmico ou uma base magnética com pasta térmica funcionam onde não é permitido furar. Evite montar em proteções, tampas ou na carcaça do motor longe do rolamento, porque elas respondem com atraso e indicam valores mais baixos. Identifique cada sonda com seu ativo e posição, por exemplo pump3/de para o lado acionado.

Firmware do nó sem fio

O sketch abaixo acorda um ESP32 a cada minuto, lê uma sonda do rolamento e uma sonda ambiente no mesmo barramento OneWire, publica uma mensagem JSON e volta ao deep sleep. Instale PubSubClient, OneWire e DallasTemperature pelo Gerenciador de Bibliotecas do Arduino. Para conhecer melhor o próprio sensor, veja o tutorial ESP32 DS18B20 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;

// Substitua pelos endereços exibidos por um sketch scanner 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 tenta no próximo 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);  // retida: os dashboards veem o último valor na hora
  mqtt.loop();
  delay(100);
  mqtt.disconnect();
  sleepNow();
}

void loop() {}

A mensagem é retida, então um dashboard aberto entre dois despertares ainda mostra a última leitura imediatamente. Publicar delta_c, a diferença entre a temperatura do rolamento e a ambiente, é a decisão de projeto mais importante desta configuração.

Por que a compensação da temperatura ambiente importa

Um alarme fixo sobre a temperatura absoluta do rolamento se comporta mal ao longo das estações. Uma casa de bombas no verão pode ficar muito mais quente do que no inverno, então um limite seguro em janeiro pode nunca disparar em julho, e um limite ajustado para julho vai gerar alarmes incômodos durante todo o verão.

Já a elevação de temperatura acima da ambiente depende principalmente de carga, rotação e condição do rolamento. Alarmar sobre o delta elimina o efeito sazonal, enquanto um limite absoluto separado continua protegendo contra a operação fora da faixa nominal do lubrificante e do rolamento. Os fabricantes publicam temperaturas máximas de operação para rolamentos e graxas; use esses documentos como limite superior, em vez de um número genérico da internet.

Estratégia de alertas: três camadas

Um bom esquema de monitoramento de temperatura de rolamentos combina três tipos de regra:

  1. Limite absoluto. Temperatura do rolamento acima do máximo permitido pela especificação do rolamento e da graxa. Sempre um alarme.
  2. Limite de delta. Elevação acima da ambiente significativamente maior do que o normal aprendido para aquele rolamento. Geralmente primeiro um aviso, depois um alarme.
  3. Taxa de elevação. Temperatura subindo mais rápido que o normal em uma janela curta, por exemplo vários graus em meia hora com carga estável. Isso detecta cedo as falhas de desenvolvimento rápido, muitas vezes antes de qualquer um dos limites ser atingido.

Os dois primeiros são limites simples. No portal da ConnectMQ você pode criar regras de alerta por limite nos campos bearing_c e delta_c de cada topic e revisar cada excursão no log de alertas, sem código. A taxa de elevação precisa de histórico, então roda em um pequeno serviço assinante.

Detector de taxa de elevação em Python

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

PREFIX = "connectmq/demo/51ad7e"
WINDOW_S = 30 * 60          # olha 30 minutos para trás
MAX_RISE_C = 5.0            # alerta se o delta subir mais do que isso dentro da janela
STALE_S = 5 * 60            # o nó perdeu vários despertares

history = defaultdict(deque)   # topic -> deque de (tempo, 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)

O detector ignora os topics de alerta retidos, compara o delta mais recente com o menor valor da janela e limpa seu histórico após alertar, para não disparar a cada minuto. A verificação de dados obsoletos é importante para nós a bateria: um sensor que para de reportar em silêncio é tão perigoso quanto um rolamento quente que ninguém vê.

Expandindo para a planta inteira

  1. Comece com um piloto em poucos ativos críticos. Escolha máquinas cuja falha para a produção, não as mais fáceis de alcançar.
  2. Colete de duas a quatro semanas de dados antes de ajustar. Aprenda o delta normal de cada rolamento em carga típica.
  3. Defina limites de delta e de taxa de elevação por rolamento. Rolamentos do lado acionado e do lado oposto costumam operar em temperaturas diferentes.
  4. Combine uma resposta. Quem recebe um aviso, quem recebe um alarme e o que verificar primeiro (lubrificação, alinhamento, tensão da correia, carga).
  5. Registre as constatações. Cada alerta deve terminar com uma nota curta do que foi encontrado, para que os limites melhorem com o tempo e o seu cálculo de MTBF e MTTR reflita a realidade.
  6. Migre para um broker privado. Substitua a demonstração pública por credenciais do portal, TLS na porta 8883 e topics ISA-95 como acme/plant1/utilities/pumproom/pump3/bearing_de.

A demonstração acima roda no servidor MQTT público gratuito, onde tudo fica visível para qualquer pessoa; use-o apenas para testes e protótipos. Para ativos reais, um broker MQTT gerenciado mantém os dados privados, os certificados renovados e o serviço funcionando sem que ninguém da sua equipe precise manter servidores.

Dicas de duração da bateria e confiabilidade

  • Acorde, publique e durma o mais rápido possível. A maior parte do consumo da bateria vem da conexão Wi-Fi, então um intervalo de um minuto é um meio-termo; cinco minutos são suficientes para tendências lentas se você mantiver janelas de taxa de elevação longas.
  • Use IP estático ou uma estratégia de reconexão rápida para reduzir o tempo de conexão.
  • Reporte rssi e a tensão da bateria para que nós fracos sejam corrigidos antes de caírem.
  • Em sites grandes ou casas de máquinas com muito metal, considere sensores que usam um protocolo sem fio dedicado e um gateway que republica no MQTT.

Onde a temperatura de rolamentos se encaixa

A temperatura é um sinal entre vários. Combinada com o monitoramento de corrente de motores, ela separa o aquecimento causado pela carga do aquecimento causado pelo atrito, e combinada com a vibração confirma falhas mecânicas a partir de duas fontes independentes. O guia de manufatura inteligente mostra como esses sinais compartilham um único backbone MQTT e uma única estrutura de topics em toda a planta.

Proteja seus rolamentos com a ConnectMQ

A ConnectMQ oferece um broker MQTT privado e protegido por TLS, com retained messages, explorador de topics ao vivo, visão de dispositivos por nível ISA-95 e regras de alerta por limite no portal. Comece no plano Serverless gratuito em app.connectmq.com, sem cartão de crédito, e conecte hoje seu primeiro sensor de rolamento.

Perguntas frequentes

Qual é a temperatura normal de um rolamento?

Depende do rolamento, da carga, da rotação, do lubrificante e do ambiente. Aprenda a elevação normal acima da ambiente para cada rolamento e use as especificações máximas do fabricante do rolamento e da graxa como limite superior absoluto.

O monitoramento de temperatura de rolamentos basta sozinho?

Ele detecta bem falhas de lubrificação e defeitos de desenvolvimento rápido, mas a temperatura frequentemente sobe depois da vibração. Combine os dois para obter o alerta mais precoce.

Com que frequência um sensor de rolamento sem fio deve reportar?

A cada um a cinco minutos é o típico. A temperatura do rolamento muda devagar, e intervalos mais longos aumentam muito a duração da bateria.

Por que alarmar pela elevação de temperatura acima da ambiente?

A temperatura ambiente varia com a estação e a hora do dia. A elevação acima da ambiente reflete mais diretamente a condição do rolamento, então os alarmes continuam significativos o ano inteiro.

Artigos relacionados

OEE vs TEEP vs OOE: qual indicador você deve usar?

OEE, OOE e TEEP compartilham os mesmos fatores de desempenho e qualidade, mas medem contra bases de tempo diferentes. Esta comparação resolve um único exemplo e lista os sinais MQTT de que cada indicador precisa.

8 min de leitura

Todos os artigos →

Seu broker MQTT privado está a poucos cliques de distância

Crie uma conta, receba as credenciais do seu broker e conecte seu primeiro dispositivo — sem servidores para instalar, atualizar ou escalar.