A comunicação entre dois dispositivos pode ocorrer de diversas formas. Entretanto, nem todas são robustas ao ruído, que é um grande problema nas comunicações de dados sensíveis. Portanto, vamos aprender sobre o padrão RS-485 que é confiável até em ambientes ruidosos.

Recomendo a leitura dos posts sobre a comunicação serial assíncrona, o I2C, o SPI e o Modbus RTU.

Informações básicas

Interface, padrão, comunicação e protocolo

Os parágrafos abaixo são baseados na minha opinião e foram escritos 2 anos após a publicação deste post (junho 2021). Ao longo deste tempo, vi que muitos destes termos se misturam e separá-los de forma categórica é desnecessário em certo sentido. Mas isso foi algo que me deixou bastante confuso durante meu aprendizado sobre as diferentes comunicações/padrões/protocolos existentes. A chave para o entendimento destas parte é o modelo OSI, mas entendê-lo é um processo demorado na minha opinião. Então, para poupar o tempo e confusão de outros, fiz o texto abaixo.

Antes de explicar sobre o RS-485, vale comentar um pouco sobre os conceitos de interface, padrão, comunicação e protocolo. A diferença entre os quatro não é muito bem definida e, muitas vezes, vi eles sendo utilizados como sinônimos. Você pode encontrar materiais que chamam o RS-485 de padrão, de interface, de comunicação ou de protocolo.

Dependendo do contexto, a diferença dos termos é bem sutil, mas não vejo sentido em preocupar com isso. O certo seria eu achar um livro para referenciar e fundamentar esses conceitos, mas minha ideia neste post é fazer você entender algumas características do RS-485 sem preocupar com nuances dos termos.

Entretanto, o termo protocolo é melhor diferenciado em alguns contextos. Seu significado genérico será explicado adiante.

Protocolo (simplificado)

O protocolo pode ser definido como um conjunto de regras que agem sobre os dados transmitidos/recebidos. Ou seja, o protocolo define como os 1’s e 0’s são interpretados.

Algumas interfaces/padrões/comunicações podem ser chamadas de protocolos, sendo que eles vão além do “conjunto de regras” para interpretar os bits. Por exemplo, a comunicação OneWire define tanto regras para transmitir/receber os bits, quanto um meio físico (apenas 1 fio para fazer toda a transmissão/recepção dos dados). Outros exemplos incluem o I2C, o SPI e o caso do parágrafo abaixo:

Vejamos o exemplo da comunicação serial assíncrona (em termos de protocolo): ela define que o modelo padrão de mensagem tem: um bit de início, 8 bits de dados, 1 bit de paridade (opcional) e 1 ou 2 bits de parada. Veja a imagem abaixo para entender:

Exemplo de comunicação serial assíncrona

O que é o RS-485

A comunicação RS-485 é um padrão que define como dois dispositivos se comunicam a nível físico. Ela pode definir um protocolo se você considerar que ela possui regras para definir como os níveis de tensão são interpretados como bits.

É comum de usar ela com o protocolo da comunicação serial assíncrona. Ou seja, pode-se enviar 8 bits de dados, com um bit de parada e um bit de paridade para verificar erros.

Além disso, o padrão RS-485 define que a ligação física deve ser constituída por um par de fios trançados. Um dos fios recebe o nome de ‘A’ e o outro de ‘B’. E eles são utilizados em conjunto para determinar o nível lógico do sinal recebido (0 ou 1).

De acordo com o padrão, é possível conectar até 32 dispositivos nestes dois barramentos (A e B). Sendo assim, é necessário ter no mínimo um mestre (coordena a comunicação) e um ou mais escravo (responde ao mestre) conectados aos fios. Veja a imagem abaixo para entender.

Ligação do padrão RS-485

O padrão RS-485 também define resistores de terminação que devem ser ligados na saída do barramento de cada dispositivo. Entretanto, não demonstrei eles na imagem acima. Para mais detalhes, recomendo ler este documento.

Funcionamento do RS-485

O funcionamento da comunicação RS-485 é relativamente simples: A tensão do barramento ‘B’ é comparada com a do barramento ‘A’. Se a tensão em ‘B’ for maior que em ‘A’, o sinal recebido é 1. E, se a tensão em ‘A’ for maior, o sinal recebido é 0. Essa lógica pode ser invertida dependendo do caso. Há uma margem de tensão de +-0,2V. 

A imagem abaixo ilustra o nível lógico do sinal conforme o estado de ‘A’ e ‘B’. Ela pode ser confusa a princípio, mas basta analisar com calma para entender.

RS-485 funcionamento
  • No 1º e 4º bit do gráfico acima,
    • B=5 V e A=0 V, então VBA = 5-0 = 5 V: nível lógico 1.
  • No 2º e 3º bit:
    • B=0 V e A = 5 V, então VBA = 0-5 = -5 V: nível lógico 0.

Características do RS-485

Como os dois fios juntos geram o sinal de saída, não é possível enviar e receber dados ao mesmo tempo. Portanto, um dispositivo deve esperar os barramentos ficarem “desocupados” para enviar alguma informação.

Sendo assim, por padrão, ele é uma comunicação half-duplex. Para o caso de uma comunicação com envio e recebimento simultâneo, pode ser utilizado mais um par trançado, resultando em uma comunicação full-duplex. Nesta situação, um par é ligado ao TX e outro ao RX do dispositivo.

O benefício deste tipo de comunicação é que ele é robusto contra ruído. Isso, porque, quando ocorre uma interferência eletromagnética, as tensões nos dois fios sofrem praticamente a mesma alteração. Com isso, a diferença de tensão entre os dois fios permanece a mesma e, constantemente, o valor do bit não muda.

Dessa forma, quando ocorre uma interferência e a tensão de ambos os fios aumenta 0,1 V, por exemplo, não tem problema, pois a diferença de tensão entre os dois continua a mesma. Vejamos:

  • Inicialmente:
    • B = 5 V, A = 0 V, VBA = 5-0 = 5 V: nível lógico 1. 
  • Depois da interferência:
    • B = 5,1 V, A = 0,1 V, VBA = 5,1-0,1 = 5 V: nível lógico 1. 

Dispositivo para criar a comunicação

Agora que entendemos o funcionamento por trás da comunicação RS-485, resta saber como utilizá-la na prática. Para isso, temos duas possíveis soluções.

A primeira é utilizar um transceiver e a segunda é utilizar uma plaquinha conversora. O transceiver pode ser o MAX485 (ou MAX487) que está mostrado na imagem abaixo:

A plaquinha possui o CI MAX485, mas a diferença é que ela já vem com as ligações feitas e com os terminais indicados.  Ela pode ser vista na imagem abaixo:

Portanto, no fim das contas, os dois casos são iguais, mas utilizar a plaquinha é mais fácil e intuitivo. Entretanto, no caso de fazer um circuito mais profissional, é recomendado utilizar o CI.

O papel do CI e da plaquinha é de converter níveis do padrão TTL para o padrão RS-485 ou vice-versa. Portanto:

  • Comparam o sinal recebido nos barramentos ‘A’ e ‘B’ e convertem em sinais binários TTL: 0 (0 V) ou 1 (5 V).
  • Podem pegar os sinais binários 0 ou 1 do barramento serial assíncrono e converter em sinais do padrão RS-485.

Para alcançar o objetivo de transmitir e receber dados, existem pinos auxiliares que definem se o dispositivo está recebendo ou transmitindo. Portanto, os pinos auxiliares podem desabilitar o pino RX e habilitar o TX, ou o contrário, para que eles não fiquem interligados ao mesmo tempo.

Caso eles fiquem interligados ao mesmo tempo, o dispositivo pode erroneamente enviar mensagem para si mesmo, ou a mensagem que vem do barramento pode acabar voltando e ficar duplicada.

Observações

Mais detalhes sobre o padrão RS-485 podem ser lidos neste documento. Ele inclui mais detalhes da parte física, como os resistores de terminação e as limitações de distância da comunicação.

Modbus RTU – O que é e como funciona