[RESOLVIDO] Arduino Resetando Aletoriamente - Trabalho de conclusão de curso

Olá amigos, gostaria de contar com a ajuda de vocês pois estou com um problema em meu trabalho de conclusão.

É o seguinte meu projeto consiste em controlar uma subestação de abastecimento para pequenos distritos (até 300 pessoas) através da utilização da plataforma Arduino juntamente com o software de supervisão ScadaBR, ou seja, a principal intenção do projeto e diminuir os custos finais para a empresa que cuida desse tipo de serviço, já que nesses tipos de locais o controle ocorre por comandos elétricos e sem nenhum tipo de monitoramento, já que muito das vezes os funcionários não se encontram no local.

Estou utilizando um Arduino UNO, Ethernet Shield W5100, Modulo Relé 5v de 8 canais que esta sendo alimentado por uma fonte externa de 5v (já foi testado outra fonte), um sensor ultrassônico HC-SR04, lâmpadas, botões e contatores para a parte de potência. A parte de comando está totalmente separada da parte de potência, sem risco de interferência

Bem, vamos ao que importa, meu projeto está funcionamento corretamente, apenas em momentos bem aleatórios o Arduino insiste em resetar, já realizei vários testes tais como:

- Tirei partes do código que não afetavam o funcionamento do sistema apenas para teste;

- Removi toda parte de comunicação;

- Alterei partes do código sem alterar a lógica para testar;

- Testei outro ethernet shield novo, e sem ethernet shield;

- Toda parte elétrica foi conferida e está tudo correto;

- Trocamos os contatores;

Ainda existem mais testes que foram realizados que não me recordo.

Estou postando o código e algumas fotos para vocês entenderem melhor o projeto. Desde já agradeço a ajuda.

Link do código: http://pastebin.com/hQvSy41r

Exibições: 3254

Responder esta

Respostas a este tópico

Mateus, boa noite!

Primeiramente, parabéns pelo projeto.

Fica difícil ajudar à distância...

As principais causas de instabilidade do Arduino, acho que você já testou:

- Memória no limite;

- Ruídos (interferências elétricas principalmente);

- Quando você compila o código no Arduino, a nova IDE reporta a memória utilizada e o quanto sobrou. O que aparece lá?

- Você consegue fazer um teste com a placa Arduino Mega?

Boa noite José, agradeço pela atenção e muito obrigado.

Bom vamos lá:

 - O uso de memória, quando compilado é informado que o sketch usa 45% e as variáveis utilizam 58% da memória dinâmica, sobre isso não tenho informações de qual é o limite que pode ser usado ou não, lembrando que utilizo modbus e isso pode "sobrecarregar" o controlador, porém já tirei a parte de comunicação e não foi resolvido, e quando compilado o sketch utiliza 14% e as variáveis utilizam incríveis 5%.

- Sobre os ruídos, vou exemplificar na imagem abaixo (ficou estranho, mas está valendo kkk) como está a distribuição da fiação, a linha em amarelo são os 3 fios que saem do disjuntor e vão para a parte de potência do circuito, a linha em vermelho é um fio que sai do arduino, entra no ultimo contator (botão de emergência), e retorna para o gnd do arduino através da linha verde, serve apenas para obter um sinal lógico do contator, já a linha azul são as saídas que são ligadas nas bombas, não sei se é possível acontecer algum ruído pois a parte de comando e potência está bem separada, o único que eu achava que poderia acontecer seria das linhas vermelho e verde, porém não me recordo de ter testado.

E a placa Arduino Mega, vou pegar uma com um amigo amanhã e realizar testes na quinta.

Esse botao de emergencia faz  o que?

Aterramento correto eh de suma importancia.

Nao misturar toda a fiacao entrada e saida tbm, ta tudo junto pelo que entendi.

Um teste que poderia ter sido feito era separar tudo. toda fiacao, deixar tudo longe e ver o que acontece, todas as placas longe uma da outra.

A dica do Flavio eu fiz, eu li este artigo sobre terra na epoca, eh a melhor opcao mas pode usar diodo ou varistor tbm.

Aqui uma imagem usando um varistor

Primeiramente obrigado pela atenção Akira.

O botão de emergência interrompe todo o processo quando acionado, as 3 fases do disjuntor passam pelo contator acionado pelo botão para depois ser distribuído ao restante do sistema.

Sobre o aterramento não sei se estou fazendo de forma correta, o GND da fonte externa e do arduino eu juntei eles, e também pela imagem que vocês postou vi que a forma de alimentação do módulo estou realizando de forma diferente, a alimentação está em outro lugar, na imagem abaixo fiz um circulo nos pinos onde estou realizando a alimentação do módulo (meu módulo é idêntico ao da foto)

Será que o jeito que estou realizando a alimentação do módulo estaria interferindo? Caso eu trocar o modo de alimentar, não seria necessário utilizar o pino de gnd do modulo no arduino? Pois na imagem que você postou não está sendo indicado a utilização do gnd do módulo junto com o arduino.

Sobre a fiação, os únicos fios de entrada são o do botão de emergência que ja mostrei na imagem acima o caminho que ele faz, o botão de normalidade que é o botão verde, ele ja sai e vai pro arduino, os dois pinos de sinal do sensor e o potênciometro

Em questão do varistor, qual seria o valor dele que teria que inserir?

Oi.

No modulo vc nao esta usando o isolamento optico, fazendo igual ao da imagem que postei voce obtem isso, e para obter o isolamento tem de usar os pinos da direita GND e JD-VCC.

A regra que me ensinaram eh que o varistor tem de ser maior que a AC, tipo 30% maior;

AC 127V um varistor de 175VAC basta, tipo o V175LA20AP

AQUI na pagina 13 esnina como selecionar por exemplo para 24V DC, qual calculo vc deve fazer

Obrigado pela resposta Akira, realizei a ligação igual indicado na imagem e o sistema melhorou muito. Agora sobre o varistor, eu teria que coloca-lo no contato do módulo relé igual indicado na imagem ou no contator em paralelo com carga? visto que em meu projeto é cortado as duas fases da carga por questões de proteção.

Agora há pouco postei no final do tópico explicando meus resultados parciais, de uma olhada se possível, agradeço.

Sim.

Já vi projetos que usavam o ethernet shield em que ocorria o mesmo problema. A causa era a memória que estava no limite.

A solução foi adotar o Arduino Mega e não ocorreu mais o problema.

No entanto a culpa não é da placa e sim do software. Tanto da library quanto do sketch utilizado.

1) A library utilizada pela placa é pesada.

2) Na maior parte das vezes essa placa é utilizada com aplicações web que normalmente tem muito texto estático. E esse texto fica na RAM!!!

Por exemplo:

Quando você envia um texto com a página HTML dessa forma:


X.print("<HTML><HEAD>TITULO</HEAD><BODY></BODY></HTML>")

ou X.send("<HTML><HEAD>TITULO</HEAD><BODY></BODY></HTML>")

Esse texto estático entre aspas vai para a memória RAM ocupando precioso espaço.

O correto é usar a macro F dessa forma:

X.print(F("<HTML><HEAD>TITULO</HEAD><BODY></BODY></HTML>"))

Assim, o texto vai para a memória de programa.

Agora, não sei como é com SCADA e se estou falando bobagem.

A interferência elétrica não deve ser descartada como causa do problema.

Sobre a utilização do Scada, as informações que envio a ele são apenas variaveis booleanas e apenas duas do tipo inteiro, não possui texto, nem nada do tipo que sobrecarregue a memória, mas mesmo assim irei realizar o teste trocando a placa.

Pelo que o pessoal aqui do fórum está falando bem provável de ser algum tipo de interferência, vou realizar todos os testes possíveis em relação a isso, não sei se vou conseguir consertar, pois sexta feira dia 18 tenho a feira de automação da faculdade, então acho que vai faltar tempo.

Boa noite! Talvez seja falta de energia , quando reseta o modulo rele esta conectado? se tiver talvez seja esse o problema.o modulo puxa muito energia.

Boa noite Nelson, agradeço a atenção. SIm ele reseta quando o módulo está conectado, porém o módulo fica ligado constantemente, variando de 1 a 4 canais ligados no máximo. Sobre a falta de energia para alimentar o módulo relé já descartei essa possibilidade, pois tenho uma fonte de 1 ampere somente para ele e o sensor, e para desencargo da mente coloquei uma fonte ATX para testar que disponibilizava 19 amperes na sua saída de 5 volts.

Isso está parecendo um problema de EMI, gerado pelo acionamento das contatoras, você vai precisar criar filtros na alimentação da placa e/ou adicionar snubber.

https://en.wikipedia.org/wiki/Electromagnetic_interference

https://en.wikipedia.org/wiki/Snubber

Obrigado pela resposta Flávio, vou pesquisar mais afundo sobre a questão dos filtros

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço