Boa tarde,
tenho um projeto no qual preciso aquisitar os dados do RPM do meu motor. O problema é que eu consigo pegar o valor desse RPM, porém, ele só aumenta e não diminui. Eu preciso saber quando ele é zero. Por exemplo,
Compilo o programa ---> RPM = 0 ---> incremento do RPM (OK) ---> para de aumentar ---> começa a diminuir (PROBLEMA) ---> RPM = 0 (preciso saber quando é zero)
Creio que o problema seja só programação. Alguém poderia me ajudar? Caso alguém ache que o problema possa ser no circuito e que o código parece estar correto opine também por favor.
Att,
Tags:
Boa tarde; Zero RPM,vc consegue com o motor desligado.
Sim, mas eu preciso saber quando. Tem outro jeito de fazer isso? Pq nesse código eu consigo calcula-lo, mas ele não diminui
Opa.
Não zera porque não entre mais nessa condição.
if (signalRpm == HIGH && aux == LOW)
Tem que por um timeout, se por determinado
tempo não entrar aqui, o RPM é zero.
Tambem seria mais indicado usar interrupção
externa para essa aplicação. Boa sorte.
Entendi por que não zera. Mas, to com problema quanto a lógica de programação de como posso fazer a função que irá calcular o tempo em que o programa não entra no
"if (signalRpm == HIGH && aux == LOW)"
Poderia me fornecer mais informações por favor? Grato.
Boa noite GABS,
sempre sugiro ao amigos que ao pedir ajuda aqui no LdG, dê bastante informações (se possível de uma forma clara),
sobre o projeto.
por exemplo, o que o projeto deverá fazer, como será uasdo, quais o componentes ele terá.
Isto pode parecer irrelevantes pra que pede ajuda, mas quem está do outro lado (ajudando), não tem em mãos e
nem a visão do que é e do que ocorre. Etc.
Por exemplo no seu caso:
Como deve funcionar este seu "tacômetro"?
Como chegam ou qual sensor enviam os pulsos para ele?
Porque esta sequencia do tacômetro?
Compilo o programa ---> RPM = 0 ---> incremento do RPM (OK) ---> para de aumentar ---> começa a diminuir (PROBLEMA) ---> RPM = 0 (preciso saber quando é zero)
Na concepção um tacômetro mostra os "RPMs"de um objeto girando.
Então ele não pode "parar de aumentar", diminuir, etc.
Se for um tacômetro normal, sugiro seguir a recomendação do JF, e usar o recurso de interrupt.
RV
Meu "tacômetro" é um circuito elétrico onde eu uso um Schmitt trigger junto com um optoacoplador. Nesse circuito eu pego o sinal que sai do meu motor e transformo ele em um sinal quadrado que pode ser interpretado pelo arduino. Os pulsos chegam nele através da carcaça do motor. Como o amigo JF disse, os valores só são lidos quando crescem ou estão constantes pois quando não estão, não chegam sinal no arduino, e portanto o programa não tem uma função para ler quando não chegam sinais.
Creio que se colocar uma função que consiga saber por quanto tempo meu "if (signalRpm == HIGH && aux == LOW)" não foi utilizado, eu consiga resolver meu problema.
Boa noite GABS,
modifiquei o seu sketch, e estou postando aqui.
Veja que tem 2 linhas que vc terá que modificar baseadas na quantidades de pulsos
que o seu sistema produz em 100 mSeg.
RV
Muito Obrigado, vou fazer o teste e coloco aqui o resultado!
Abraços
Vou anexar um arquivo do meu circuito para explicar melhor
Boa noite GAB,
Com base no arquivo que vc postou modifiquei o sketch.
testa este anexado.
Ele deve imprimir no monitor serial a RPM correta.
RV
Boa Noite RV,
estou anexando imagens dos valores aferidos pelo monitor serial do arduino e uma imagem do horímetro medindo o RPM. Os valores não estão compatíveis com os que teriam que ser. Penso que pode ser algo relacionado com o circuito e não propriamente com a programação. Porém, o valor do RPM agora zera quando o motor está desligado.
Estou anexando também o vídeo do osciloscopio com o motor em funcionamento
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por