HomeProdutos › Módulo adaptador RS485 – TTL baseado em MAX485

Módulo adaptador RS485 – TTL baseado em MAX485

A finalidade deste módulo é conectar um dispositivo TTL qualquer (como  o arduino) a dispositivos RS485 (EIA/TIA485).

Se você já sabe como estabelecer comunicação com outros dispositivos pela porta serial do Arduino, então já sabe quase tudo o que é preciso para estabalecer uma comunicação RS485, porque é quase a mesma coisa. Só há um detalhe que você precisa ter em mente: Você não pode receber ao mesmo tempo que transmite, por isso se seu programa requer as duas coisas precisará modificá-lo para acomodar isso.

Você pode usar dois módulos desse para estabelecer comunicação RS485 entre dois arduinos, se quiser.

Para transmitir, coloque +5V nos terminais DE e RE do transmissor e GND nos terminais RE e DE do receptor. Aí está o problema: se um dos dispositivos vai sempre transmitir e outro sempre receber, o funcionamento é simples e transparente. Mas se você precisa inverter os papéis de vez em quando, precisará seguir um protocolo para evitar colisões (dois trasmitindo ao mesmo tempo).

A primeira e mais simples providência é deixar sempre ambos no modo RX e só colocar em modo TX durante o tempo estritamente necessário para transmitir. Se um dos dispositivos sempre inicia e o outro sempre responde, também é fácil implementar. Problema mesmo é quando ambos podem iniciar a transmissão a qualquer momento. Em redes grandes, geralmente um dispositivo chamado de master fica com a tarefa de organizar a comunicação entre os outros, chamados de slaves. O master consulta um por um os slaves perguntando se eles tem algo a dizer.

Outras providências serão necessárias dependendo da complexidade da “conversa” entre os dispositivos.

Sobre RS485

RS485 tem caracterísitcas importantes com relação à bem mais conhecida RS232:

  • Um alcance muito maior, que chega a 1200m;
  • Maior imunidade a ruído;
  • Possibilidade de conectar vários dispositivos na forma de um “barramento”. Isso dependendo do caso gera uma economia enorme em fiação

Tanto a RS422 quanto a RS485 são especificações DE HARDWARE. Nada se fala sobre software ou protocolos de qualquer tipo nessas especificações. É o projetista quem tem que determinar como os nós irão trocar informações. O endereçamento dos nós é feito por software (ou firmware, no caso dos uCs), por isso numa rede multiponto RS485 o software empregado precisa  prever isto. Mas como não existe nenhum protocolo “especial” na RS485, qualquer programa que já funcione com RS232 pode funcionar em RS485 com alterações mínimas.

Note que mesmo quando falamos que a ligação é a dois fios ou a quatro fios, pode existir um terceiro e um quinto fios: o terra. Ele pode ser dispensado, mas seu uso garante que a tensão de modo comum no receptor fique dentro de uma faixa segura e isso aumenta a estabilidade e imunidade a ruídos da interface.

Quando a ligação é a dois fios, dependendo de como seja implementada, o nó transmissor pode ou não receber um eco de sua própria transmissão. Leve isso em conta. A recepção do eco pode ser usada para verificar se está havendo Line Contention no Bus (ou mesmo que ele está em curto).

A forma correta de implementar RS485 “desconecta” os transmissores inativos do barramento. Isso é conseguido com drivers dotados de saída tri-state. Os chips compatíveis com RS485, como o 75176, tem um pino de “Enable” que é comumente ligado à linha RTS da porta RS232 no PC. O sinal RTS é então usado como LIGA/DESLIGA da transmissão. Em um nó com microcontrolador, é claro, um substituto do sinal RTS deve ser implementado, já que mesmo em um uC com UART embutida apenas existem os sinais TX e RX.

Só que “gastar” uma saída do uC somente para habilitar a transmissão nem sempre é aceitável. Além disso, em algumas aplicações, RS485 é usada apenas para estender o alcance de uma RS232 e o software já existente nem sempre manipula o sinal RTS da forma correta. Muitos softwares levantam o sinal RTS assim que abrem a porta e só o desativam quando a fecham, mas para ser usado para controlar uma interface RS485 o sinal RTS deve levantar imediatamente com o primeiro bit transmitido e cair pouco depois do último bit. Para piorar as coisas, se o sofware estiver rodando sob Windows pode não ser possível levantar e baixar a linha RTS com o sincronismo necessário. Isso cria um problema.

Problema que frequentemente é contornado implementando um circuito que monitore a linha TX da interface e ative o sinal de enable da RS485 assim que a transmissão iniciar e que o derrube uma fração de segundo após a linha TX estabilizar. Essa forma de implementar poupa uma linha do uC e, do lado do PC, usa apenas RX, TX e GND.

Definitivamente não é recomendável criar um sistema com múltiplos masters. Sempre que possível, delegue a missão de Master a apenas um nó do sistema (geralmente será o PC).

O 75176 é obsoleto. Você pode usar os mais modernos LTC485 e MAX485 no lugar. São compatíveis pino a pino já que o 75176 se tornou um “industry standard”. E os chips mais modernos são também mais resistentes, como você pode ver no artigo da Circuit Cellar (links).

—————————
Links Úteis

5 Comments.[ Leave a comment ]

  1. Vocês possuem o esquemático desse conversor?

  2. Sebastião Coutinho

    Caro Jefferson

    No datasheet do RS-485 trás uma montagem típica de 4 rs485. E nela vemos apenas dois resistores.
    No componente que você mostra existem diversos outros componente na placa além do MAX485.
    Então para que servem esses componentes “extras”?

Reply to Jefferson ¬
Cancel reply

NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">