Pessoal estou tendo dificuldades em ajustar minha rotina que calcula o RPM do motor. Os valores ficam errados, mas a fórmula está correta, o motor está em 850RPM aproximadamente mas os valores que são exibidos ficam errados e oscilando aleatoriamente por ex.: 2568,1487,4879,2589,7852,15975... Alguém pode me dar uma luz?

O código anexo.

Exibições: 555

Anexos

Responder esta

Respostas a este tópico

Oi 2CB, boa noite.

Recomendações:

Leia http://labdegaragem.com/forum/topics/sugest-o-de-como-postar ,

retire o code da área de texto e anexe como arquivo e ai posso pensar em ajuda-lo.

Rui

Corrigido. Obrigado.

Ok, agora vamos lá

Testa este code.

http://pastebin.com/vMBaRzkh

Rui

Rui,

infelizmente não calculou certo. A leitura ficou bem mais estável do que antes. Só os valores que não ficaram corretos.Veja no vídeo:

https://youtu.be/UvjAos06YzA

Nesse momento o motor estava em aproximadamente 700 a 750RPM. O arduino mostrava valores entre: 23800-31700RPM

Tem alguma sugestão?
Muito obrigado!

Boa noite Cezar, desculpe se estou enganado mas esse programa nao e para motor 6 cilindros, o seu motor e 6 cilindros? se tiver enganado me desculpe.

Sim, isso mesmo Nelson.

Mas o calculo é o mesmo.

1 volta no virabrequim equivale ao número de cilindros dividido por 2. Logo (6 / 2) a cada 3 pulsos temos 1 volta.

Então divide pega a quantidade de pulsos obtidos numa determinada janela de tempo e divide por 3, no meu caso. E multiplica isso pelo equivalente em 1 minuto. Basicamente é isso, mas no arduino não mostra os valores corretos. E oscila um pouco...

Ola Cezar, no codigo que o Rui Viana te enviou em :

  rpm = (((float)pulsos / ((float)numeroCil / 2)) ) * 300;

  experimenta trocar o ( * 300) por 3000 ou 6000, talvez seja ai a diferenca,

 em questao de oscilacao na leitura pode ser o jeito de como voce esta fazendo a leitura?  voce esta utilizando  que circuito?

Olá Nelson,

mas no caso seria dividir, não? O RPM no carro estava  +/- 750RPM

enquanto que no arduino mostrava na casa dos 20000. Se mudar de 300 para 3000 vai ficar maior ainda o valor.

Estou pegando o pulso diretamente do negativo da bobina +12v e ligando em um regulador de voltagem para +5v e nele direto na porta do arduino, seria isso a oscilação?

Bom Dia Cezar, e isso ai e dividir , pode diminuir para "30" ou mais, vai testando, e se nao der certo tem esse topico que usa um codigo parecido que pode funcionar:

http://labdegaragem.com/forum/topics/ajuda-com-codigo-para-medir-rp...

nesse topico ele explica o jeito que ele tira o pulso da bobina tambem,

tem esse circuito tambem(em anexo--rpm--bobina), mas se tiver receio de queimar o arduino pode usar esse( em anexo--rpm bobina fotoacoplador) que usa um foto acoplador (esse circuito foi do José Gustavo Abreu Murta de um outro topico) que voce pode usar um fotoacoplador comum , ele tem um zener de 12V na entrada para protecao , a entrada voce pode ligar em paralelo com a bobina (o lado do resistor no polo + da bobina e o outro no polo - da bobina).

Anexos

Boa tarde Nelson,

eu tinha visto esse tópico, mas não achei o código eficiente, pois usa um "while" dentro do "loop", queria uma solução sem matar tempo da CPU. Vou estudar esse fotoacoplador, Obrigado pela dica!

Cezar bom dia , 

Já pesquisei bastante sobre Tacomentros com Arduino.

Imfelizmente, devido à uma limitação no uso dos contadores internos do ATmega328, existe uma pequena imprecisão na contagem (fica variando). 

Existem vários meios de medir RPM :

http://www.pyroelectro.com/tutorials/tachometer_rpm_arduino/

http://www.arduinoos.com/2013/08/engine-rpm-part-1/  (em 5 partes) 

http://members.rennlist.com/tom86951/Speedometer%20Calibrator%20Pag...

O que pode minimizar o problema da imprecisão é usar um filtro passa baixa ( sketch) . Tenho usado esse filtro com sucesso para outros tipos de medidas. Tente fazer um teste. 

A variação do seu Tacometro esta absurda ( alguma coisa errada). Envie o circuito que esta usando. Pode estar sofrendo alguma interferência eletromagnética. Use cabo blindado para conectar o sensor ao Arduino. Não use a bateria do carro para alimentar o Arduino (pelo menos durante os testes).

Se for usar a bateria do carro, terá que usar filtros e choque( bobina) para eliminar ruidos da ignição do motor. 

Calculando RPM 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço