Por que meu conversor RS485 mostra leitura 0 repentinamente?

Você já teve aquele problema desesperador: “Meu sensor RS485 está lendo 0 aleatoriamente” “Conversor USB RS485 Modbus RTU dá leitura 0 do nada” “Leitura instável no Modbus RTU, fica...

Você já teve aquele problema desesperador:

  • “Meu sensor RS485 está lendo 0 aleatoriamente”
  • “Conversor USB RS485 Modbus RTU dá leitura 0 do nada”
  • “Leitura instável no Modbus RTU, fica zerando”
  • “Dados vazios no registrador Modbus”
  • “Sensor de temperatura/pressão/nível RS485 mostra 0 de vez em quando”

Se você está lendo este artigo, provavelmente já testou cabo, já trocou o conversor, já verificou a alimentação, já checou o endereço Modbus… e mesmo assim os valores caem para zero repentinamente, voltam ao normal e zeram de novo.

A boa notícia: na enorme maioria dos casos, o culpado é um só:

Falta do resistor de terminação de 120 ohms no final da linha RS485.

E o mais impressionante: isso acontece até em instalações muito curtas, em pequenos testes!

Como identificar o problema de reflexão no RS485 (a famosa “leitura 0”)

Quando não há resistor de terminação, o sinal RS485 sofre reflexão nas extremidades do cabo. Essa reflexão gera ruído que, em determinados momentos, faz o receptor interpretar bytes errados — e o resultado mais comum no Modbus RTU é exatamente o valor 0 nos registradores.

Veja um exemplo real na leitura de um sensor:

Por que isso acontece mesmo com cabo curto?

Muita gente acha que “só precisa de resistor se o cabo tiver mais de 10 metros”. Isso é um mito perigoso.

Em velocidades típicas do Modbus (9600 ou 19200 baud), o problema de reflexão pode aparecer mesmo com cabos bastante curtos, principalmente se o cabo não for blindado, lembrando que depende do seu conversor também.

Para referência, realizamos o teste com 2 conversores populares, sendo eles:

  • Conversor Preto e Verde : Esse apresenta bastante falhas da leitura, sendo ideal sempre utilizar o resistor de terminação.
  • Conversor Azul ZK-U485: Esse outro modelo em nossos testes não foi necessário, porém reforçamos que é ideal em todas as aplicações para garantir sua leitura estável.

A solução definitiva (e barata!)

Basta colocar um resistor de 120 ohms ±1% 1/4W entre os terminais A e B:

  • No último dispositivo da rede (sensor mais distante ou último conversor)
  • Ou, se for ponto a ponto (apenas mestre + um escravo), coloque no escravo

Alguns conversores já possuem internamente, além de alguns contarem com um jumper para habilitar e desabilitar.


Fonte: Embarcados

Apesar do resistor 1/4W ser bastante flexível, pode ser que ele não atenda toda a sua rede, muitos conversores vem de fábrica com resistores de 1/2W (0,5W) para atender a todos os dispositivos e uma distância maior.

Passo a passo para resolver agora:

  1. Identifique o último dispositivo da sua rede RS485.
  2. Coloque um resistor de 120 ohms entre A (+) e B (-).
  3. Reinicie a comunicação.
  4. Pronto! Agora você deve ter uma leitura estável (caso piore pode ser que já exista o resistor em seu sensor/conversor).

Conclusão

Nunca mais perca horas procurando defeito no sensor, no cabo ou no software. Na quase totalidade dos casos de “leitura 0 repentina no Modbus RTU RS485”, a solução é simples e custa menos de R$ 2,00: o resistor de terminação de 120 ohms.

Se depois de colocar o resistor o problema continuar, aí sim podemos investigar outros pontos (ground loop, polaridade invertida, baudrate errado, etc.), mas isso é menos de 5% dos casos.

Deixe seu comentário abaixo: qual foi a distância do seu cabo quando aconteceu isso? Já resolveu com o resistor? Vamos ajudar a comunidade!

Categorias
EletrônicaTutoriais

Sou programador e estudante de eletrônica, busco explorar como as coisas funcionam 💡
Sem Comentários

Deixe seu Comentário

*

*

Sobre nós

Hoje a Usinainfo é um dos maiores ecommerces de Ferramentas, Peças para Eletrônica, Componentes Eletrônicos, Sensores e Arduino do Brasil, contando com uma grande diversidade de produtos na linha de eletrônica.

Sugestões

Artigos Relacionados