Oi pessoal . bom dia.
Para participar de um projeto de um amigo aqui do LdG, resolvi aprender o protocolo Modbus.
Ele é um protocolo de certa forma até simples, uma vez que só utiliza 3 camadas
do modelo OSI. (Camadas 1, 2 e 7, ).
Depois de tentar vários exemplos , optei por usar o Master que tem o exemplo no site oficial do
arduino: http://playground.arduino.cc/Code/ModbusMaster.
Como slave usei um exemplo do site:
https://sites.google.com/site/jpmzometa/arduino-mbrt/arduino-modbus...
Funcionou muito bem em RS232.
Depois vei a parte de incluir um interface RS485.
Há algum tempo, eu havia adquirido 4 CI MAX481 par um projeto de DMX.
Montei no protoboard 2 módulos de RS485 conforme o esquema abaixo (do site)
http://arduino-info.wikispaces.com/RS485-Modules
Ok, aí começaram os problemas:
Como o código do master não previa um pino (não encontrei) para ativar a transmissão,
precisei modificar a biblioteca para incluir este pino.
Ok, depois de muito estudar a biblioteca, consegui definir um pino.
Funcionou muito bem.
Resolvi então montar 2 módulos de RS485 em um proto impresso.
http://labdegaragem.com/photo/rs485-frente?context=latest
Ao testar com estes módulos, não funcionou.
Só funcionou qdo pequei os Chips que estavam no proto board e coloquei no modulo.
Só pra exemplificar vou dar números aos meus chips: Ch1, Ch2, Ch3, Ch4.
Se o Ch1 for o chip ligado ao mega (Master), funciona bem.
Se forem os outros chips ligados ao mega não funciona.
Mas os 3 chips funcionam ligados no Uno (Slave).
Este chips nunca tinha sido utilizados.
Abaixo seguem 2 timming charts das 2 situações.
Aceito sugestões.
Rui
Tags:
Corrigindo os erros e português:
Depois vei a parte de incluir um interface RS485. = Depois veio a parte de incluir um interface RS485.
Só funcionou qdo pequei os Chips = Só funcionou qdo peguei os Chips
Este chips nunca tinha sido utilizados. = Este chips nunca tinham sido utilizados.
Se tiver mais, desculpem-me.
Rui
Pessoal,
graças ao conhecimento do nosso grande amigo o GMSSCEI (Grande Mestre Sir San Celso Eiju Ito).
problema foi resolvido.
Os resistores de 20K no bus RS485 foram substituídos por valores menores ( 8k2),
e então funcionou corretamente.
Talvez porque estou usando MAX481 e não o MAX485.
Valeu GMSSCEI.
Rui
Muito bom tutorial, amigo Rui !
Obrigado por compartilhar.
Abraços
Gustavo
Oi JGAM, bom dia.
Muito obrigado pelo elogio.
A ideia é esta. Aprender e passar pra frente.
Rui
Olá,
Rui, a rede padrão EIA485 (RS485) ainda é uma das mais usadas no mundo da automação em geral, devido as sua várias vantagens, como simplicidade, custo, confiança e velocidade de transmissão. Mas para que seja confiável, ela deve ser bem projetada e bem executada, senão a comunicação não ocorre ou ocorre de forma instável.
Os dois resistores de 20k no seu esquema são comumente chamados de "bias resistors" e são usados com a intensão de polarizar as linhas A e B do barramento com um nível de tensão pré determinado quando o nenhum dos transceivers do barramento estiverem transmitindo, de forma a deixar a saída dos receptores em nível alto.
Normalmente os resistores de bias são deixados ligados em apenas uma das extremidades do barramento, e os valores dos resistores normalmente são mais baixos que os que você está a usar, geralmente algo em torno de 390 a 820 Ohms, entenda que o bias é calculado para que haja uma certa corrente no barramento de forma a proporcionar uma diferença de tensão entre a linha A e B, no link abaixo tem um documento da texas que mostra o porque são usados e como calcular o seu valor.
Nos transceivers mais modernos não é mais necessário usar o bias, mas normalmente continuam sendo usados por motivo de compatibilidade de comunicação com os chips mais antigos.
Abraço.
Boa tarde Sr. W
obrigado.
Rui
Nossa, que pena que perdi o momento do post.
O RV tem uma moral grande no LDG e ajudá-lo seria uma forma de agradecer todo o esforço que tem em ajudar os garagistas.
Mas o que importa é problema resolvido. Partimos para o próximo.
Já são 4 anos apanhando com essa rede.
Oi SAB, obrigado pelo elogio,
mas ainda tenho muito que aprender, afinal ainda sou um garotovelhão kkkkk,
e estou em fase de crescimento (bariga e careca).
Pode deixar, ainda vou pedir sua ajuda.
Obrigado.
Rui
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por