LusoRobótica - Robótica em Português
Sistemas específicos => Arduino / AVR => Tópico iniciado por: almamater em 09 de Agosto de 2012, 22:47
-
Olá, preciso de uma ajuda para fazer as ligações de 2 Arduinos ao chip da maxim RS485.
Queria testar fazer uma comunicação entre 2 Arduinos com 2 destes chips, pelo que andei a ver as ligações em cada Arduino devem ser assim:
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fdereenigne.org%2Fwp-content%2Fuploads%2Fmodbus-417x600.png&hash=131eb07815e7c19f10d97b766efead0e00d2669c)
http://dereenigne.org/wp-content/uploads/modbus.png (http://dereenigne.org/wp-content/uploads/modbus.png) (http://dereenigne.org/tag/rs-485 (http://dereenigne.org/tag/rs-485))
Dúvida:
- Para estabelecer comunicação com ambos os Arduinos/RS485 é ligar ambos os chips de que maneira?
A ideia mais tarde seria juntar mais Arduinos e brincar com 1 Maters e os restantes Slaves. Encontrei este site mas eles usam uma placa já feita e não consigo perceber as ligações entre arduinos/chips, mas tem exemplos de código que acho que posso usar. http://arduino-info.wikispaces.com/RS485-Brick (http://arduino-info.wikispaces.com/RS485-Brick)
-
Ligas os dois (ou mais) com os Pinos TX e RX.
-
Ok, tenho ainda umas questões ;D
Se tiver 1 Master e 2 Slaves por exemplo ligo o Arduino Master ao TX\RX do RS485 e os outros 2 RS485 vão partilhar as saídas A /B deste 1º certo? Tipo isto:
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg577.imageshack.us%2Fimg577%2F5448%2F001xg.png&hash=8fad9b48e32975ca9501c727bd811555bd2c7443) (http://imageshack.us/photo/my-images/577/001xg.png/)
1ª Questão: Se o Master enviar por exemplo "1" (em que o '1' acende o LED do 1º Slave e '2' acende o Led do 2º Slave), o 1º Slave aceita e o 2º Descarta certo? Não preciso de usar nenhum código mais complicado que isto pois não? (como um protocolo modbumaster, etc..).
2ª Questão: A resistência de 150ohm tem de ser colocada no último RS485 (no final e entre os fios A e B) ou em todos? ou não é preciso usar resistência em curtas distâncias?
-
2º - a resistência de 120 OHM é usada normalmente em longas distâncias, no Master e no Último Slave.
para brincadeiras em protoboards não há essa necessidade
-
Olá,
Fiz o esquema acima ma não coloquei nenhum condensador nem resistências, liguei o 1º Arduino do lado esquerdo como MASTER e os outros 2 como SLAVE A e B, acontece que o último arduino (SLAVE_B) não faz nada.. não recebe o 'B' enviado pelo Master:
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimageshack.us%2Fa%2Fimg802%2F4834%2Fimg2830v.th.jpg&hash=a5eeedb2c3f398223812f1099014deb8ab74f1ca) (http://imageshack.us/photo/my-images/802/img2830v.jpg/)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimageshack.us%2Fa%2Fimg809%2F8075%2Fimg2833ox.th.jpg&hash=99baadf684148f48e524bd6d605f0316ac27bf43) (http://imageshack.us/photo/my-images/809/img2833ox.jpg/)
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimageshack.us%2Fa%2Fimg19%2F6215%2Fimg2831hl.th.jpg&hash=35c97b21914dd3fc3e9f4fe8c388bf50b11a1598) (http://imageshack.us/photo/my-images/19/img2831hl.jpg/)
O SLAVE_A está a funcionar bem e as ligações estão todas bem feitas.. o código que usei é simples e deste site: http://arduino-info.wikispaces.com/RS485-Brick (http://arduino-info.wikispaces.com/RS485-Brick)
Tenho de acrescentar alguma coisa no último Arduino?
-
Ok, resolvi o mistério... troquei o chip MAX485 deste SLAVE_B e já deu.. o outro deve ter algum defeito.
Tinha sido um sample que pedi à maxim e tem a refª CPA1121, com um outro que comprei no ebay funciona bem, este último tem a refª CPA1118 mas são iguais.