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,

Exibições: 1295

Anexos

Responder esta

Respostas a este tópico

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

Anexos

Muito Obrigado, vou fazer o teste e coloco aqui o resultado!

Abraços

Vou anexar um arquivo do meu circuito para explicar melhor

Anexos

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

Anexos

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.

Anexos

Estou anexando também o vídeo do osciloscopio com o motor em funcionamento

Anexos

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço