Bom dia pessoal!
Tenho um projeto que tem por objetivo monitorar o consumo de energia.
Escrevi um código, que faz a contagem dos pulsos que vem do medidor, (1000 pulsos/kw). Recentemente abri um tópico para que os pulsos fossem contados a partir de um valor especificado na variável... Esse problema foi resolvido, porém encontro o seguinte problema:
os pulsos que são recebidos na entrada digital do arduino nem sempre são considerados.
A parte de hardware do projeto funciona da seguinte maneira: o medidor envia os pulsos através de um led vermelho ou seja cada piscada do LED é um pulso. Então instalei um pequeno LDR na frente desse LED, esse LDR excita a base de um bc 548 que por sua vez chaveia um rele de 12Vcc, do rele peguei um contato NA e liguei no pino do arduino que configurei como entrada digital.Enfim cada piscada do LED la no medidor faz com que o rele dê um "clique", mas nem sempre o arduino reconhece esse "clique".
Fiz o seguinte teste:
com o multímetro medi a continuidade nos pinos do arduino que recebem os contatos que vem do rele, e toda vez que o rele atraca, da continuidade... então esta OK, ou seja, GND e e pino 39 do arduino estão sendo curto-circuitados pelo contato NA do relé... mas porque não esta incrementando todos os pulsos? ou seja as vezes conta as vezes não
suspeitas:
DEBOUCING
pode ser um problema de deboucing...mas não sei como montar o código.
já mudei o delay mas não deu certo. Será que saber o tempo exato de cada pulso poderia ajudar?
INTERFERÊNCIA
Pode ser o GND. O GND do arduino é o mesmo GND dos módulos relé, ou seja a mesma fonte de 12V que alimenta os módulos reles alimenta o arduino também...(já tem aterramento pro projeto).Algum tipo de interferência poderia fazer com que os pulsos fossem desconsiderados em alguns momentos?
SKETCH
Quando o programa é carregado para a placa, a seguinte informação é dada:
O sketch usa 25.482 bytes (10%) de espaço de armazenamento para programas. O máximo são 253.952 bytes.
Variáveis globais usam 7.635 bytes (93%) de memória dinâmica, deixando 557 bytes para variáveis locais. O máximo são 8.192 bytes.
Pouca memória disponível, problemas de estabilidade podem ocorrer.
O fato de ter pouca memoria disponível pode ter alguma relação? porque o meu projeto faz muito mais coisas alem de medir o consumo de energia, tenho controle de iluminação, monitor de temperatura, status de nível de reservatório alarme com 4 zonas monitoradas por entradas digitais...etc, o código esta com 682 linhas. Gostaria de simplificar o código do projeto e assim economizar mais espaço na memoria do arduino e melhorar o seu desempenho... suspeito do Sketch porque quando monto um código exemplo só pra monitorar o medidor mesmo, ele conta os pulsos normalmente sem falhar...
O que vocês acham que pode ser?
Tags:
Boa tarde KJ,
sugiro que você post aqui um esquema das suas ligações.
Um desenho explica melhor que mil palavras.
RV
esse é o diagrama:
esse diagrama é o primeiro que fiz.
eu tinha setado entradas digitais para fazer o monitoramento dos níveis de reservatório não estava dando certo e fiz de outra maneira, com potenciômetro(usei uma entrada analógica)...
então aquelas entradas que estão definidas como níveis no lado esquerdo do desenho ficaram sobrando, então usei a entrada 39 para fazer a contagem do medidor de consumo...
no desenho estão indicados o pino que estou utilizando no arduino e o respectivo borne:
como essa placa acima eu já havia confeccionado eu fiz essa menor para receber os pulsos do medidor.
o LDR recebe o sinal luminoso do medidor, e chaveia o transistor que por sua vez permite o acionamento do rele, veja que S+ e S- são os pinos do rele que vai pro arduino um pra o GND e outro pra o pino 39 (indicado no borne azul na imagem anterior)
em anexo a imagem da placa do modulo extra que fiz pra receber os pulsos do medidor:
RV1 e RV2 é um trimpot pra ajuste de sensibilidade do LDR...
na próxima imagem mostro nas setas em vermelho no diagrama e na placa o jamper que faço para selecionar se uso o GND da fonte ou não:
uma correção.
como está agora:
o pino no borne é este e não o mencionado anteriormente:
segue o sketch:
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por