A comunicação entre dois dispositivos pode ocorrer de diversas formas distintas. 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 do post sobre comunicação serial assíncrona. Além disto, eis alguns posts complementares ao conteúdo: I2CSPIModbus RTU.


Diferença entre comunicação e protocolo

Antes de explicar sobre a comunicação RS-485, vale diferenciar o conceito  de comunicação e protocolo. Não há informações muitos claras a respeito do conceito de comunicação (neste contexto), então coloquei o conceito conforme usualmente é utilizado.

Simplificadamente, o protocolo é uma regra que age sobre os dados transmitidos/recebidos e a comunicação pode significar tanto um protocolo (ex: comunicação serial assíncrona, comunicação OneWrire…), quanto uma regra que atua sobre a parte física da transferência de dados (ex: RS485, RS232…).

Protocolo

Ou seja, o protocolo define como os 1’s e 0’s são interpretados. Vejamos o exemplo da comunicação serial assíncrona (protocolo): ela define que o modelo padrão de mensagem tem: um bit de início, 8 bits de dados, 1 bit de paridade e 1 bit de parada. Veja a imagem abaixo para entender

Exemplo de comunicação serial assíncrona

Além da comunicação assíncrona, existem outros protocolos, como I2C, SPI, OneWire…

Comunicação (meio físico)

Enquanto isso, a comunicação (um dos significados) define como dois dispositivos vão enviar ou receber dados fisicamente.

Por exemplo, na utilização física mais simples da comunicação serial (que é um protocolo), é necessário utilizar apenas dois fios ligados entre os dispositivo. Sendo que um fio serve para enviar os dados e o outro para receber. Veja esta implementação física na imagem abaixo:

ligação da comunicação serial

Este conceito de comunicação pode ser bastante confuso, pois ele pode significar mais de uma coisa. A própria comunicação OneWire define tanto um protocolo quanto um meio físico (apenas 1 fio para fazer toda a transmissão/recepção dos dados).


O que é

A comunicação RS-485 é um padrão que define como dois dispositivos se comunicam fisicamente. Conforme o que foi discutido acima, ela não define nenhum protocolo, apenas descreve a parte física da comunicação.

É comum de usar ela com o protocolo da comunicação serial assíncrona. Ou seja, por padrão, são enviados 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 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 um mestre (coordena a comunicação) e um 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

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=5v e A=0v, então VBA = 5-0 = 5v: nível lógico 1.
  • No 2º e 3º bit:
    • B=0v e A = 5v, então Vba = 0-5 = -5v: nível lógico 0.

Características

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 as interferências magnéticas ou elétricas ocorrem em ambos os fios, pois os dois estão trançados e sujeitos à mesma interferência.

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

  • Inicialmente:
    • B = 5v, A = 0v, VBA = 5-0 = 5v: nível lógico 1. 
  • Depois da interferência:
    • B = 5,1v, A = 0,1v, VBA = 5,1-0,1 = 5v: 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 dados da comunicação serial assíncrona 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 0 (0v) ou 1 (5v).
  • Pegam os sinais binários 0 ou 1 do barramento serial assíncrono e converte em sinais do padrão RS-485.

Para alcançar esse objetivo, existem pinos auxiliares que definem se o dispositivo está recebendo ou transmitindo. Portanto, desabilitam o pino RX ou o TX  (ambos da comunicação serial assíncrona), para que eles não fiquem interligados ao mesmo tempo.

Pois, se ficarem interligados, o dispositivo pode erroneamente enviar mensagem a 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.