Página 1 de 1
Ruído na RS485 trava PIC

Enviado:
12 Jul 2016 16:36
por ÁgioFelipe
Boa tarde amigos, tenho dois dispositivos (Master e Slave) se comunicando através de um canal RS485 (MAX487), utilizo cabo UTP para realizar a comunicação, estou realizando o seguinte teste: Enrolo o cabo em um ventilador e fico ligando e desligando o mesmo, daí o dispositivo Master trava.
Alguém poderia me ajudar nesse problema?
Re: Ruído na RS485 trava PIC

Enviado:
12 Jul 2016 16:41
por xultz
Você está tratando a comunicação por pooling ou por interrupção?
Se for pooling, pode esquecer, vai dar caca mais cedo ou mais tarde, trate a comunicação por interrupção.
Re: Ruído na RS485 trava PIC

Enviado:
12 Jul 2016 16:52
por andre_luis
Bom, isso na minha opinião poderia ser esperado de um cabo UTP sim.
O ventilador é um dispositivo altamente indutivo, gerando spike quando passa do ligado para o desligado.
Porque não usa então um cabo "shieldado" ?
Re: Ruído na RS485 trava PIC

Enviado:
12 Jul 2016 18:13
por KrafT
Não importa o tipo de cabo nem nível de ruído. O firmware deve sempre ser capaz de se recuperar.
Todo o programa trava, ou só a comunicação?
Comece com uma solução radical: Se a comunicação falhar por x tempo, ressete o master (watch dog). Depois, refina as rotinas para se recuperarem sozinhas.
Agora se o hardware está queimando, aí tens que proteger a linha do 485.
Re: Ruído na RS485 trava PIC

Enviado:
13 Jul 2016 11:35
por ÁgioFelipe
xultz escreveu:Você está tratando a comunicação por pooling ou por interrupção?
Se for pooling, pode esquecer, vai dar caca mais cedo ou mais tarde, trate a comunicação por interrupção.
Quem faz pooling é o slave, nesse não estou tendo problemas. O Master manda a informação.
Porque não usa então um cabo "shieldado" ?
Pq sai bem mais caro, são dois canais de RS485 por questões de segurança, então precisaria de pelo menos 4 vias. Mas vou tentar conseguir um pedaço pequeno para testes.
Não importa o tipo de cabo nem nível de ruído. O firmware deve sempre ser capaz de se recuperar.
Todo o programa trava, ou só a comunicação?
Comece com uma solução radical: Se a comunicação falhar por x tempo, ressete o master (watch dog). Depois, refina as rotinas para se recuperarem sozinhas.
Agora se o hardware está queimando, aí tens que proteger a linha do 485.
Todo o programa trava!
Re: Ruído na RS485 trava PIC

Enviado:
13 Jul 2016 13:14
por KrafT
ÁgioFelipe escreveu: Todo o programa trava!
O Watchdog consegue restaurar o programa?
Re: Ruído na RS485 trava PIC

Enviado:
13 Jul 2016 13:35
por andre_luis
ÁgioFelipe escreveu:Porque não usa então um cabo "shieldado" ?
Pq sai bem mais caro, são dois canais de RS485 por questões de segurança, então precisaria de pelo menos 4 vias.
Não deveria ser tão caro assim, até onde sei. ( ...tem razão, tá os olhos da cara... )
A propósito, a questão pra mim parece apontar pro caminho da solução via hardware.
Por mais que implemente os mecanismos sugeridos acima de identificação/reenvio, ainda haverá o risco de queima física de componentes.
Re: Ruído na RS485 trava PIC

Enviado:
13 Jul 2016 22:26
por Red Neck Guy
Em 2003 eu montei algo assim:
89S8252 + MAX485 (A e B) -> <-(A e B) + Max485 + 89S8252.
Era equipamentos diferentes, eu estava codificando uma unidade e o meu colega outra. As vezes, durante os testes (sem querer né) os dois tentavam transmitir ao mesmo tempo, em alguns casos chegamos a ver a flash do 89s8252 ser corrompida, já que o MCU só voltava a funcionar após a regravação da flash(mesmo o led de status...)
Bom, o que aprendi:
- Nunca ligar os sinais dos transceivers diretamente ao mundo, eu sempre coloco polyswitchs e TVSs, ou no mínimo aquele clássico arranjo de diodos um pra cima e outro pra baixo....
- Nunca uso pooling, sempre interrupção, nunca envio em loop, sempre uso da interrupção.
- Multimestre? Então uso token ring.
- Sempre verifico o tamanho dos buffers quando vou colocar alguma coisa neles, ruído pode "disparar" uma sinalização de recebimento. Se você não trata os erros pode colocar esses 3000 glithcs no buffer como se fossem dados. Até onde vai até estourar todo o CSTACK?
Uma vez fiz um indicador com 89S51, ele tinha o protocolo MODBUS e uns displays de 7 segmentos. As vezes quando comunicava com um mestre nervoso( que fazia muitas requisições) os displays piscavam. Onde estava o erro? Eu não verificava os limites dos buffers, assim quando passava do tamanho do buffer do modbus os dados transbordavam pra o buffer do display.
(Claro que as vezes transbordava pra tudo e a placa parava)
Aí resolvi com
if(bytesRecebidos<TAMANHO_BUFFFER)
buffer[bytesRecebidos++] = dadoRecebido;
Re: Ruído na RS485 trava PIC

Enviado:
14 Jul 2016 20:28
por Vonnilmam
Muitos e não são poucas as ocasiões em que se haverá problemas com ruidos EMI.
Uma técnica muito simples e eficiente é utilizar uma bobina EMI, que pode ser comprada pronta (normalmente acha-se em SMD) ou você pode confeccionar uma.
Em um ferrite de 0.5cm = expessura x 1cm = comprimento, enrole 6 espiras de fio cabinho 20 ou 22 awg. Tanto na entrada quanto na saída da bobina, coloque um capacitor de 100nf e não saída para o circuito alimentado coloque mais um capacitor de 10uF, afunção dos capacitores é apenas de desacoplamento, pois o trabalho real esta sendo feito pela bobininha.
Esse cálculo cobrirá o range até uns 150mhz de ruido EMI.
Elimina completamente o ruido, se colocar no osciloscópio, verá o ruido totalmente aniquilado (dica, quanto menor a tensão de alimentação maior a probabilidade de interferencias EMI).
Essa dica serve também para uso em circuitos de audio.
É simples e funcional, façam o teste e por favor, postem o resultado aqui.
Obrigado
Re: Ruído na RS485 trava PIC

Enviado:
15 Jul 2016 09:16
por andre_luis
Vonnilmam escreveu:Uma técnica muito simples e eficiente é utilizar uma bobina EMI, que pode ser comprada pronta (normalmente acha-se em SMD) ou você pode confeccionar uma.
(...)
Elimina completamente o ruido, se colocar no osciloscópio, verá o ruido totalmente aniquilado (dica, quanto menor a tensão de alimentação maior a probabilidade de interferencias EMI).
Isso porque pra haver uma filtragem efetiva isso só ocorre quando o nucleo do ferrite saturar, já que a caracteristica de interesse dessa bobina é mais suas perdas do que propriamente sua indutancia, e o ideal seria utilizar um ferrite menor, mas a dica é boa ( apesar de que eu apenas acrescentaria que é a corrente que é considerada, ao invéz da tensão... ).
Re: Ruído na RS485 trava PIC

Enviado:
15 Jul 2016 12:05
por KrafT
andre_teprom escreveu:... isso só ocorre quando o nucleo do ferrite saturar...

Re: Ruído na RS485 trava PIC

Enviado:
15 Jul 2016 14:09
por andre_luis
KrafT escreveu: 

Re: Ruído na RS485 trava PIC

Enviado:
15 Jul 2016 14:18
por Vonnilmam
Boa tarde,
Esse filtrinho mequetrepe que eu passei, funciona legal, pode fazer sem medo, depois coloca aqui o resultado.
O ruido que mencionou, vem através da rede elétrica, e como se trata de ruido com alta frequencia, milhares de megahertz, ele passa batido pela filtagem de sua fonte, suponhando que seja uma fonte comum capacitor diodo regulador.
Eu sempre utilizo isso em todos os projetos que necessitam o cancelamento ou atenuação destes tipos de ruidos.
Em especial em audio, quando se trabalha com DSPs e chips de baixa tensão, abaixo dos 5 volts, tipo 3,3 para baixo, ai é que a ruideira aparece, querendo melar o meio de campo, ou melhor a instabilidade dos micros, coisas anormais acontecem, tipo resets indesejaveis, etc...
Isso é provocado por ruidos...Observe em equipamentos profissionais com tecnologia embarcada, que a fonte possui redutores de EMI com bobinas como mencionei, inclusve tem fabricantes que são especialistas em produzir essas bobinas...
Boa sorte
Re: Ruído na RS485 trava PIC

Enviado:
15 Jul 2016 19:15
por KrafT
andre_teprom escreveu: 
Para mim, a tua afirmação é equivocada. Um indutor saturado causa mais problemas do que ajuda, na questão de filtros. Já para reguladores que se baseiam no princípios dos MagAmps, a saturação é fundamental, mas aí é outra história.
Re: Ruído na RS485 trava PIC

Enviado:
15 Jul 2016 20:09
por andre_luis
KrafT escreveu:Para mim, a tua afirmação é equivocada. Um indutor saturado causa mais problemas do que ajuda, na questão de filtros. Já para reguladores que se baseiam no princípios dos MagAmps, a saturação é fundamental, mas aí é outra história.
Acho que a confusão aconteceu porque inseri indevidamente a palavra "indutor" no meio da história, embora com objetivo de destacar o aspecto da impedancia como o resultado de um componente dissipativo + outro componente indutivo. Acredito que o Vonnilman tenha se referido aos "ferrite bead" e se for isso mesmo, nesse caso especifico o fabricante o caracteriza pela impedancia em função da frequencia. Quanto maior a frequencia, maior a dissipação, assim como quanto maior o fluxo magnetico ( e esse fluxo aumenta conforme a corrente aumenta ) maior vai ser também a dissipação. O gráfico BxH dos materiais magneticos é uma excelente forma de visualizarmos isso, porque a região interna á histereze é o valor da perda, o que significa que quanto maior a frequencia, maiores as perdas por unidade de tempo, bem como quanto maior a corrente, maior será a largura do laço da histereze, e consequentemente maiores as perdas.
A seção 2.2.4 desse tutorial abaixo ( 1º e 2º parágrafos ) explica isso melhor :