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?

Exibições: 685

Responder esta

Respostas a este tópico

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:

Anexos

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:

Anexos

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...

Anexos

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:

Anexos

uma correção.

como está agora:

o pino no borne é este e não o mencionado anteriormente:

Anexos

segue o sketch:

Anexos

Boa noite KJ,

abaixo um esquema de domo é a saída do seu medidor  DDS-1Y-18L.

RV

KJ,

ligue assim:

RV

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço