Queda de tensão por distância inviabilizando comunicação entre 2 arduinos

Oi, tinha postado aqui há algum tempo falando sobre eu estar pensando em colocar diversos Arduinos na minha casa monitorando atividades e todos enviando dados para um outro Arduino central, tudo certo por softwareserial.

O problema agora é que a comunicação a curta distância funciona bem, mas peguei um rolo de 100 metros de fio, e nessa distância a comunicação falha.

Pelo que me disseram, tenho que alimentar todos os arduinos com a mesma fonte de energia, é o que estou fazendo, sai 4.8 v da central, que alimenta todos, e chegam 4.7 v no fim dos 100 metros, por culpa disso não há mais comunicação.

Alguém tem alguma ideia de como posso solucionar isso?

Obrigado.

Exibições: 2321

Responder esta

Respostas a este tópico

João,

Para comunicação serial a distância superior a alguns metros é preciso um hardware que seja capaz de manter a transferência de dados sem erros devidos a  perdas de tensão, captação de interferências eletromagnéticas ou reflexões devidas a falta de adequação da linha de transmissão.

Um modo é o RS485, que pode se comunicar a até 1200m de distância e é muito confiável e por isso é muito usado na indústria e comércio.

O RS485 é um meio físico, podendo ser usado com inúmeros protocolos, como MODBUS ou até mesmo um protocolo desenvolvido por você mesmo.

Dê uma olhada no manual do kit RS485 aqui da loja do ldg:

Abraço

:(

Isso é tenso, estou pensando em jogar módulos de rádio por toda a casa que fica mais fácil.

Você saberia explicar o porque isso ocorre?

Pelo que tinha entendido, o Arduino adota por exemplo, 4.8v como o dígito 1, e 0 v como o dígito 0, então se comunicavam pela variação disso.

Tem alguma coisa a ver? E usando pinos PWM teria como comunicar ambos?

Outra ideia que tive seria mandar 12v para tudo e reduzir com um LM7805 em todos, ai todos teriam exatos 5v, mas acredito que não funcionaria, estou certo?

Muito obrigado :D

Pelo que tinha entendido esse RS485 era um tipo de transmissão sem fio, mas fui pesquisar e encontrei isso:

http://www.soldafria.com.br/circuito-integrado-sn75176bdr-smd-rs485...

R$ 1.39 por cada peça, gostei, não ficará caro, mas você saberia me informar se trabalha bem se comunicando entre dezenas de Arduinos? Até agora tem 5 arduinos para se comunicar com um arduino central, mas pensava em colocar um em cada cômodo da casa (1 em cada banheiro, 1 em cada quarto, escritório, cozinha...), no total dá uns 20.

1 desses seria facilmente ligado a 20? Lembrando que não fiz eles enviarem sinais todos ao mesmo tempo, mas sim, enviar sinais quando algo ocorre, por exemplo, alguém acender a luz, alguém ligar a TV...

Muito obrigado

Ah, e embora eu tenha dito Arduinos em alguns casos pensei em usar Attiny85 no lugar, pois por exemplo nos banheiros, só iria monitorar o interruptor, tem como conectar isso em Attiny85 também ou não funcionaria?

Valeu.

joão, como o wiechert disse, o rs485 é o meio fisico mais indicado para vc, se bem que uma comunicação sem fio ficaria melhor. O padrao TTL (0 a 5v) que é utilizado nas seriais dos uC é apenas uma interface nao devendo ser utilizado para longas distancias por isso dá pau. Outra coisa, se vc quer apenas monitorar chaves, nao vai precisar de um arduino em cada canto, vc pode apenas levar o sinal via cabo pra central.

Estou desenvolvendo um sistema em casa e no meu escritório, o escritório é menor (qualquer distância funcionará) e mais congestionado de fio, então vou colocar tudo sem fio mesmo.

Em casa quero antes testar com fio.

Quanto a colocar vários arduinos, o problema seria minimizar a quantia de fios mesmo, nem que gaste mais comprando vários, fora que em alguns lugares queria usar Attiny.

E obrigado pela ajuda.

Encontrei uns links em inglês falando que o Attiny85 não suporta isso, outro cara disse que suporta sim, mas para isso seria necessário ter um espaço livre para jogar mais um trecho no programa. É isso mesmo? Conseguiria com um Attiny85?

Obrigado.

Se consegue sim com o Attiny85. Até com um pic12F da de fazer. Só depende da vontade e tempo.

Não precisa alimentar os dois Arduinos com a mesma fonte.

Use fontes adequadas para a alimentação.

O limite de distancia para interface RS232 é de 25 metros.

Como esta usando TTL-RS232 o limite deve ser menor do que 25 metros.

O indicado, como o Wiechert disse, é usar interface RS485.

http://labdegaragem.com/profiles/blogs/tutorial-como-utilizar-o-shi...

Valeu pela ajuda, comprei 10 desses RS485 na solda fria hoje, agora é só esperar chegar e testar.

hahah bom saber que usando vários atinys tb dá problema... eu aqui fiz um sisteminha com multiplexadores I2C, pcf8574, a ideia era boa... com 8 cabos saindo do arduino poderia controlar 64 pontos cada um com atuador e sensor.

apanhei para conseguir funcionar com um cabo de 12m, muitos me disseram que não teria como.. que o i2c era para comunicação na mesma placa...

hoje esta funcionando com um cabo de mais de 30m... so estava tendo problema com os reles que não funcionavam em função da queda de tensão... 

agora estou alterando para funcionar como vc comentou, com 12v e um regulador em cada terminal... nos testes preliminares ta funcionando 100%. agora preciso ver com todos os pontos funcionando.

Bom saber que essa ideia de usar reguladores de tensão pode funcionar, pelo que vi ainda há muita discordância nas respostas dos usuários aqui, testarei as opções para ver o que acontecerá.

Acredito que essa queda 4.8 pra 4.7 não seja seu problema, e sim a questão das capacitancias internas dos fios. Como eles são longos condutores isolados formam um capacitor.

Esse capacitor derruba a capacidade de transmissão de dados uma vez que diminui a "capacidade de mudar de tensão", ou o tempo de resposta, ou "rise time" do sinal.

Uma solução seria trabalhar com impedancias mais baixas, ou seja: Colocar um pullup menor e nas 2 pontas do fio. Por ex 4K7. Se entendi quem garante o nivel alto no seu circuito é um resistor. Se ele for alto a tensão leva muito tempo para subir (circuito RC onde C é a capacitancia do fio).

Ainda, se o fio estiver enrolado podem aparecer indutancias. O fio instalado pode ter menos (digo pode, pq se for par trançado isso não acontece).

A solução do RS232 é otima, simples, mas é ponto a ponto. 

A solução do RS485 é otima, medianamente complexa, multiponto, profissional, universal, tem impedancia baixa, etc. <- Melhor opcao.

A solução por Radio, depende do radio, pode ser simples, complexa, barata, otima ou meia boca.

Eu tentaria:

1) Melhorar usando apenas o pullup, otimizar o valor do resistor e o tipo de fio. Mandar em velocidade menor (300bps te atende) e com fio blindado. Vc pode usar fio de fone de ouvido, microfone stereo, camera, etc.

2) Partir para o RS485.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço