(PROBLEMA) Contador de pulsos + Ethernet Shield para medir fluxo

Olá pessoal! Bom dia!

Estou com um pequeno problema para fazer que uma página html leia corretamente os pulsos recebidos em uma entrada digital do arduino. A minha ideia é fazer um medidor de fluxo com o mesmo, usando um sensor óptico que ficará fixado no medidor da concessionária (nele há um disco que dá uma volta para cada litro de água que passa pelo medidor) assim para cada pulso enviado pelo sensor terei um litro de água. Primeiro montei um código para os dados do sensor serem lidos no monitor serial, até ai funcionou perfeitamente! porém quando incluí, esse código em meu projeto não funcionou legal...

até pensei que fosse o tamanho do meu sketch pois o meu projeto tem vários botoes, sensor de temperatura etc... e quando compilava aparecia a mensagem dizendo que problemas de estabilidade poderiam ocorrer.  Então decidi montar um código com pagina html somente para a leitura desse contador, mas o problema persiste apesar de agora a contagem estar funcionando melhor, ou seja: nem sempre que envio o pulso para a entrada digital, a contagem é feita.

obs: estou usando uma chave fim de curso no lugar do sensor óptico, só para testes;

estou usando o arduino MEGA, e configurei o pino 46 como INPUT_PULLUP;

fisicamente fecho o pino 46 com o GND, através da chave fim de curso;

Então, eu gostaria de saber se vocês podem me ajudar a resolver este problema da contagem do sensor não chegar corretamente na página html.

anexei o código pra vocês darem um olhada!

Agradeço a atenção de todos!

Exibições: 543

Anexos

Responder esta

Respostas a este tópico

Bom dia KJ.

acho que o seu problema de falhar a contagem, é porque você está usando

um interruptor mecânico (estou usando uma chave fim de curso no lugar do sensor óptico) no lugar

de um sensor.

O interruptor gera "spikes" (bouncing)  e você não colocou prevenção para evitar isto.

Rui

Obrigado RV, vou conseguir um sensor óptico e fazer os testes novamente.

É verdade, estou usando uma chave mecânica para testes, mas como prevenir esses "spikes"?

sei que neste caso seria melhor eu já fazer os testes com o sensor óptico, mas acho importante já saber como prevenir isso caso eu precise fazer essa mesma contagem com a chave mecânica num projeto futuro..

Estou fazendo um projeto bem parecido com o seu, estou usando o ethernet shield, vou contar pulsos também e mandar para um servidor ainda estou no inicio do projeto. Futuramente quero usar um ESP 8266, mais ele esta me dando mita dor de cabeça e mesmo refazendo tutoriais não consigo fazer funcionar.

--->Se o seu problema for porcausa da chave mecanica ia falar para você aumentar o delay - coloca 200ms, e no hardware faça um pull up ou pull down e coloca um capacitor ao GND. 

pois é... já tentei mudar o delay, mas não deu certo.

mas o capacitor eu ainda não tentei usar... que valor de capacitor seria?

mas se eu usar o pull up ou pull down do arduino também não é a mesma coisa?

Oi KJ,

use uma rotina de "deboucing".

Assim:  Testa se a chave foi acionada                          : if ( digitalRead(BI10)  == LOW )

                                                                                    {

              Se foi, aguarda 20ms                                     :      (delay(20))

              Novamente se a chave está ainda acionada    :      if( digitalRead(BI10)  == LOW )

                                                                                  :     {

                faça sua rotina                                            :        xxxxxx

                                                                                  :     }

                                                                                  :  }

Rui

Obrigado Rui!

eu vou tentar aqui.

Um capacitor de 10uF ou 16uF ja estava ótimo! tenta fazer o pull up no hardware...

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço