Fazer o retrofit de máquinas legadas para IoT costuma ser o caminho mais rápido para obter dados reais de produção, porque as máquinas que fabricam a maior parte das suas peças muitas vezes têm décadas de uso e não serão substituídas tão cedo. Neste guia você vai aprender quais sinais não invasivos capturar, como escolher entre sensores e interfaces do controlador e como montar um monitor funcional com alicate de corrente que publica o estado da máquina via MQTT sem alterar nenhuma lógica de CLP.
Por Que Fazer Retrofit em Vez de Substituir
Um torno, uma prensa ou uma injetora de vinte anos, seja em uma planta em Joinville ou em Manaus, ainda pode manter tolerâncias perfeitamente. O que falta é uma porta de rede, ou ela existe mas fala um protocolo que ninguém do lado da TI reconhece. Substituir a máquina para obter dados raramente se justifica. O retrofit custa uma fração disso e pode ser feito em uma janela de manutenção.
O princípio orientador de um bom retrofit é começar pelo não invasivo. Toda mudança na lógica do CLP exige validação, um plano de contingência e muitas vezes o integrador original, que pode nem existir mais. Todo sensor que você prende pelo lado de fora não exige nada disso. Comece pelos sinais que você consegue ler sem tocar no sistema de controle e só avance para a integração com o controlador quando o valor estiver comprovado.
O Que Medir em uma Máquina Legada
A maior parte do valor de um primeiro retrofit vem de um punhado de sinais que respondem à pergunta "a máquina está produzindo peças e, se não está, por quê?"
| Sinal | Como capturar | O que ele informa | Invasividade |
|---|---|---|---|
| Corrente do spindle ou do motor | Transformador de corrente de núcleo dividido (alicate de corrente) em uma fase | Desligada, ociosa, em operação, sobrecarga | Nenhuma, o alicate envolve um cabo existente |
| Estado da torre de sinalização | Sensores de luz ou contatos secos na torre luminosa | Em operação, aguardando, alarme, como o operador vê | Muito baixa |
| Contagem de peças | Sensor de proximidade em um ejetor ou contato no sinal de fim de ciclo | Produtividade e tempo de ciclo | Baixa |
| Vibração | Acelerômetro com base magnética, com ou sem fio | Desgaste de rolamentos, desbalanceamento, condição da ferramenta | Nenhuma |
| Temperatura | Sonda de fixação por abraçadeira ou adesiva | Motores superaquecidos, óleo hidráulico, fluido de corte | Nenhuma |
| Dados do controlador | Leitura Modbus, Ethernet/IP, S7 ou serial por um gateway | Programa, alarmes, setpoints, contadores | Média, acesso somente leitura ao CLP |
O alicate de corrente merece atenção especial. Com um sensor por máquina você consegue derivar o estado, a utilização e até um consumo aproximado de energia. Ele não precisa de CLP, nem de porta de rede na máquina, nem da cooperação do fabricante.
Escolhendo Entre Sensores e Interfaces do Controlador
Há dois grandes caminhos de retrofit, e eles se combinam bem.
Sensores adicionais são independentes do controlador da máquina. Funcionam em máquinas com lógica a relé, CLPs obsoletos ou controladores bloqueados. Eles fornecem a verdade física, como se o spindle realmente girou, mas nenhum contexto, como o número do programa ou o texto do alarme.
Interfaces do controlador leem dados que a máquina já tem. Muitos CLPs mais antigos expõem Modbus RTU por uma porta serial, e muitos das últimas duas décadas suportam Modbus TCP, Ethernet/IP ou comunicação S7. Um gateway lê registradores ou tags em modo somente leitura e os publica. Os nossos guias de Modbus TCP para MQTT e de conectividade do CLP para a nuvem percorrem esse caminho.
Uma sequência prática é começar pelo alicate, comprovar o valor com dados de utilização e depois acrescentar leituras do controlador nas máquinas em que códigos de alarme e contadores justificam o esforço extra.
A Arquitetura do Retrofit
Seja o que for que você meça, a arquitetura continua a mesma:
- Sensores na máquina produzem sinais analógicos, digitais ou de fieldbus.
- Um dispositivo de borda os lê. Pode ser um microcontrolador como o ESP32 para uma única máquina, ou um gateway de borda IIoT para uma linha inteira.
- O dispositivo de borda publica em MQTT para um broker, usando uma hierarquia de topics como
site/area/line/machine/measurement. - Os consumidores assinam: dashboards, cálculos de OEE, historiadores, sistemas de manutenção e um gêmeo digital da linha.
O broker é o que mantém isso escalável. Adicionar a quinquagésima máquina é igual a adicionar a primeira, e um novo consumidor nunca precisa saber como os dados foram coletados. Se o próprio MQTT é novidade, comece por o que é um broker MQTT.
Mão na Massa: Monitor de Máquina com Alicate de Corrente e ESP32
Este exemplo usa um ESP32 e um transformador de corrente de núcleo dividido com saída em tensão, como o SCT-013-030, que fornece 1 V RMS a 30 A. O alicate é ligado ao GPIO34 por um circuito de polarização no ponto médio (dois resistores iguais de 3,3 V ao GND com um capacitor para o terra, e o alicate entre o ponto médio e o pino do ADC), de modo que o sinal AC oscile em torno de aproximadamente 1,65 V.
Segurança em primeiro lugar: o alicate envolve um único condutor isolado dentro do painel da máquina. Esse trabalho deve ser feito por um eletricista qualificado (no Brasil, habilitado conforme a NR-10), com a máquina desenergizada. Nunca envolva um cabo multipolar que carrega todas as fases, porque os campos se cancelam e você vai ler algo próximo de zero.
#include <WiFi.h>
#include <PubSubClient.h>
const char* WIFI_SSID = "plant-iot";
const char* WIFI_PASS = "your-wifi-password";
const char* MQTT_HOST = "broker.connectmq.com";
const int MQTT_PORT = 1883;
// Use um prefixo único no broker público; ele pode ser lido por todos
const char* BASE = "connectmq/demo/k7q2x9/factory1/turning/lathe07";
const int CT_PIN = 34;
const float AMPS_PER_VOLT = 30.0; // SCT-013-030: 1 V RMS = 30 A
const float IDLE_AMPS = 1.0; // abaixo disso a máquina está desligada
const float RUN_AMPS = 4.0; // acima disso o spindle está cortando
WiFiClient net;
PubSubClient mqtt(net);
String lastState = "";
unsigned long lastReport = 0;
float readAmpsRms() {
const int N = 2000;
static float samples[N];
float sum = 0;
for (int i = 0; i < N; i++) {
samples[i] = analogReadMilliVolts(CT_PIN) / 1000.0;
sum += samples[i];
delayMicroseconds(100); // janela de ~200 ms, 10 ciclos da rede a 50 Hz
}
float mean = sum / N;
float sq = 0;
for (int i = 0; i < N; i++) {
float v = samples[i] - mean;
sq += v * v;
}
return sqrt(sq / N) * AMPS_PER_VOLT;
}
void connectMqtt() {
String clientId = "lathe07-" + String((uint32_t)ESP.getEfuseMac(), HEX);
String stateTopic = String(BASE) + "/state";
while (!mqtt.connected()) {
// O last will marca o monitor como offline se a energia ou o Wi-Fi caírem
if (mqtt.connect(clientId.c_str(), stateTopic.c_str(), 1, true, "UNKNOWN")) {
lastState = "";
} else {
delay(5000);
}
}
}
void setup() {
Serial.begin(115200);
analogSetPinAttenuation(CT_PIN, ADC_11db);
WiFi.begin(WIFI_SSID, WIFI_PASS);
while (WiFi.status() != WL_CONNECTED) delay(500);
mqtt.setServer(MQTT_HOST, MQTT_PORT);
connectMqtt();
}
void loop() {
if (!mqtt.connected()) connectMqtt();
mqtt.loop();
float amps = readAmpsRms();
String state = amps < IDLE_AMPS ? "OFF" : (amps < RUN_AMPS ? "IDLE" : "RUNNING");
// Publica o estado quando muda, retido para que os dashboards o vejam na hora
if (state != lastState) {
mqtt.publish((String(BASE) + "/state").c_str(), state.c_str(), true);
lastState = state;
}
// Publica a corrente a cada 10 segundos para tendência
if (millis() - lastReport > 10000) {
char buf[64];
snprintf(buf, sizeof(buf), "{\"amps\":%.2f}", amps);
mqtt.publish((String(BASE) + "/current").c_str(), buf);
lastReport = millis();
}
}
Troque k7q2x9 pela sua própria string aleatória (o servidor MQTT público pode ser lido por qualquer pessoa e serve apenas para testes), grave a placa e assine a partir de um notebook:
mosquitto_sub -h broker.connectmq.com -p 1883 -i lathe-watch-$RANDOM \
-t 'connectmq/demo/k7q2x9/#' -v
Calibre os limites observando a corrente com a máquina desligada, ociosa com o spindle parado e cortando. Cada máquina tem seu próprio consumo em vazio por causa de bombas, ventiladores e sistemas hidráulicos, então IDLE_AMPS e RUN_AMPS precisam ser ajustados por máquina. Em produção, mude para WiFiClientSecure na porta 8883 e use o nome de usuário, a senha e o client ID do seu portal da ConnectMQ.
Armadilhas Comuns no Retrofit
- Limites errados. Uma máquina cuja bomba hidráulica funciona continuamente vai parecer "em operação" o turno inteiro se o limite de operação for baixo demais. Calibre com base no comportamento observado.
- Ruído elétrico. Inversores de frequência e contatores injetam ruído. Mantenha a fiação dos sensores curta, use cabo blindado e faça a média das leituras ao longo de vários ciclos da rede, como o exemplo faz.
- Wi-Fi em painéis de aço. Uma placa dentro de um painel fechado pode perder a conexão. Use uma antena externa ou monte a eletrônica fora do painel.
- Sem estado offline. Sem um last will, um monitor que perde energia mostra o último estado para sempre. O exemplo publica
UNKNOWNcomo mensagem will retida para evitar isso. - Topics sem estrutura. Defina a hierarquia antes da segunda máquina. Renomear cinquenta dispositivos depois é doloroso.
Escalando de Uma Máquina para Todo o Chão de Fábrica
Quando algumas máquinas já estão reportando, as perguntas deixam de ser sobre fiação e passam a ser sobre operação: quantas conexões, quem pode ler quais dados, como alertar sobre paradas. Um broker MQTT gerenciado elimina o trabalho com servidores para que você possa se concentrar nos sensores. Com a ConnectMQ você acompanha cada máquina com retrofit no explorador de topics ao vivo, agrupa-as por nível ISA-95 na visão de dispositivos e define regras de alerta por limite, por exemplo quando a corrente do spindle ultrapassa um limite de sobrecarga. O plano Serverless gratuito suporta até 25 conexões, o suficiente para uma célula piloto. Para a jornada completa do retrofit até os dados de toda a planta, leia o nosso guia de IoT industrial com MQTT e o plano de prova de conceito IIoT.
Comece a Usar a ConnectMQ
Crie um broker Serverless gratuito em app.connectmq.com, sem cartão de crédito. Troque o servidor MQTT público pelo seu próprio endpoint ConnectMQ com TLS, e suas máquinas com retrofit passam a gerar dados estruturados ao vivo que qualquer dashboard ou ferramenta de analytics pode assinar.
Perguntas frequentes
Posso fazer o retrofit de máquinas legadas para IoT sem modificar o CLP?
Sim. Alicates de corrente, sensores de torre de sinalização, sensores de vibração e sensores de contagem de peças são todos instalados fora da lógica de controle. Eles fornecem o estado e a utilização da máquina sem nenhuma mudança no CLP.
Qual é a forma mais barata de monitorar o estado de uma máquina?
Um único alicate de corrente de núcleo dividido na alimentação do motor principal ou do spindle, lido por um pequeno microcontrolador, costuma ser a opção de menor custo. O nível de corrente distingue desligada, ociosa e em operação.
É seguro instalar um alicate de corrente em uma máquina em funcionamento?
A instalação do alicate dentro de um painel elétrico deve ser feita por um eletricista qualificado, seguindo os procedimentos de bloqueio e etiquetagem. O alicate em si não interrompe o circuito, mas o painel contém partes energizadas.
Quando devo ler os dados diretamente do CLP?
Quando você precisa de contexto, como códigos de alarme, números de programa ou contadores exatos de peças. Use um gateway com acesso somente leitura e comece depois que os sensores adicionais tiverem comprovado o valor dos dados.



