Página 1 de 1

Transmissão de Dados

MensagemEnviado: 24 Jan 2013 11:05
por JeanPaul
Olá pessoal,

Estou trabalhando em um projeto onde preciso fazer a comunicação entre dois dispositivos microcontrolados. As distâncias podem variar de 20 a 500 metros no máximo. A rede será composta por um mestre que fará a leitura de um ou mais escravos. Os escravos precisam ter a possibilidade de pedir a atenção do mestre no caso de algum tipo de alarme. Os dados são valores de tensão, corrente e temperatura que serão atualizados a cada segundo.

Bom, sempre trabalhei com SPI e I2C para pequenas distâncias, mas não tenho experiência nenhuma com distâncias maiores. Algum dos amigos pode me direcionar para a melhor solução?

Pesquisei alguns protocolos como o RS232, que acho que não me atende pela distância, RS485 e CAN, mas não tenho certeza qual seria a melhor opção para o meu caso. Existem outras opções?

Desde já agradeço por qualquer ajuda!

[]’s

Jean Paul

MensagemEnviado: 24 Jan 2013 11:41
por brasilma
O RS485 irá atender, ele é projetado para distâncias de até 1.200m.

Você consegue até 10Mbits para pequenas distâncias e 100K à 1.200m.

MensagemEnviado: 24 Jan 2013 11:47
por KrafT
Tem n opções, desde Ethernet, redes sem fio, fibra óptica, etc...

Mas o mais barato é RS485. Se teus escravos precisam avisar o mestre sem poderem ser "pooleados", o CAN é uma boa solução.

Eu faria RS485.

MensagemEnviado: 25 Jan 2013 12:43
por JeanPaul
Fiz uma pesquisa mais focada nestes dois protocolos sugeridos. Coisa superficial, mas dá pra ter uma ideia. Quanto ao RS485 ele me atende na distância e na velocidade. A questão de ter que “poolear” os escravos pode ser até revisto no projeto, talvez o alarme não precise ser instantâneo. O que está pegando é que li que o protocolo suporta apenas 32 indivíduos na rede, por questões de impedância. Procede isso?

Vi que é possível fazer algumas modificações para aceitar mais unidades na rede, mas isso pode afetar a velocidade e a imunidade à ruídos da rede.

Quanto à CAN, gostei do que li. Me parece ser muito simples de implementar com um MCU que tenha um módulo embutido. Quanto à distância e velocidade também me atende, agora não encontrei nada sobre a quantidade de módulos que posso conectar no barramento. Quem limita isso são os bits de identificação?

Não queria trabalhar com um protocolo limitado no que diz respeito ao número de módulos conectados, e achei a CAN aparentemente muito simples de ser implementada. Posso estar errado, pois o que fiz até agora foi ler apostilas e datasheets.

Kraft e brasilma, vocês já trabalharam com CAN? Tiveram bons resultados?

Muito obrigado pela ajuda.

[]’s

Jean Paul

Re: Transmissão de Dados

MensagemEnviado: 25 Jan 2013 12:54
por andre_luis
Jean,


Dependendo da carga de dados á trafegar, os protocolos síncronos I2C/SPI podem ser uma boa pedida, pois se o handshake foi realizado por firmware ( e não pelos módulos built-in do uC ) a taxa de comunicação pode ser até mesmo de poucos Hz, compensando a efeitos decorrentes distancia.


+++

MensagemEnviado: 25 Jan 2013 16:24
por KrafT
- O CAN não é adequado à longas distâncias (CAN com par trançado).
- O RS485 pode ter até 256 nós no barramento, depende só do driver.

Critérios que vão definir o que usar:

1- O delay que teu alarme pode ter antes de ser reconhecido pelo mestre;
2- A distancia máxima da rede;
3- A quantidade máxima de nós que a rede vai ter que suportar.

Veja que de repente até o LIN te atenda.

MensagemEnviado: 25 Jan 2013 21:30
por RobL
Não queria trabalhar com um protocolo limitado no que diz respeito ao número de módulos conectados, e achei a CAN aparentemente muito simples de ser implementada. Posso estar errado, pois o que fiz até agora foi ler apostilas e datasheets.


1- Precisa eleger o padrão elétrico mais conveniente.
2- Eleger o protocolo mais conveniente.

Pode haver limitação na quantidade de módulos tanto no ítem 1 como no item 2.
No item um a limitação normalmente estará na baixa impedância e no 2 na quantidade de endereços possíveis. Por exemplo, no protocolo ModBus o endereço tem um byte (8 bits).
Quanto ao padrão elétrico, por exemplo RS485, se usar componentes antigos, a limitação esta em 32 unidades sem repetidores, mas com compontentes modernos pode-se chegar a centenas sem repetidor.
Não confundir padrão elétrico RS485 com protocolo, por exemplo, o DH485.
Quanto ao padrão elétrico, deverá recair em um de modo diferencial como o CAN e o RS485, por exemplo.
Muitos pensam que o RS485 é half duplex, mas não é. O RS422 normalmente é usado como full duplex e o RS485 normalmente usado como half duplex.
Quanto ao protocolo, infelizmente haverá sempre uma quantidade máxima de servos, devido a quantidade de bits do endereço.
Mesmo com o padrão elétrico como o RS485, com protocolo ModBus, tem maracutaia para endereçar um número muito grande de servos.
E deve pensar no Ethernet com TCP/IP também.