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: 333

Anexos

Responder esta

Respostas a este tópico

Bom dia RV, como conversamos ontem a noite, tentei colocar os capacitores e medir os pulsos com o osciloscopio. Não alterou nada em comparação ao video que está nesse tópico. Porém, usamos um diodo zener antes do optoacoplador, fazendo com que o sinal ficasse melhor. Conclusão, quando pegamos a frequencia mostrada no osciloscopio e multiplicamos por 60, o valor do RPM da exatamente certo ao valor do RPM real (conferido pelo horímetro). Ou seja, depois de colocar o diodo zener, o problema da qualidade do sinal foi corrigido. 

Depois de fazer isso, testei seu código "zerarRPM3.ino" e os valores não deram compatíveis com o do RPM. Mas quando utilizei o código "RPM_Interrupt" os valores não deram 100% iguais, tiveram uma oscilação, mas ficaram próximos, com um erro de mais ou menos 50-100 RPM. Vou anexar o código que eu utilizei e que deu mais próximo do real. Porem, esse código não zera o RPM quando o motor está desligado. Apresentando o problema antigo. 

Vou anexar as fotos da frequencia e do sinal mostrado no osciloscopio mais o código que eu utilizei para medir o RPM dando mais próximo do real e uma foto do circuito usado. Mais a noite vou montar o projeto no Tinkercard para facilitar sua visualização no computador. Obrigado.

Anexos

Diminua a base de tempo do scope para 5 ou 1 ms.

Para a gente ver se esta havendo pulsos espúrios.

Se houver pulsos espúrios, será impossível medir o RPM corretamente.

Boa noite RV,
implementei seu código junto com o meu programa final, porém, apesar de estar zerando certo, o RPM é somado, a cada ciclo, no monitor serial mostra por exemplo: 0, 0, 1500, 3000, 5000, (...) infinito, 0. Saberia o por que disso estar ocorrendo? O que eu fiz foi somente pegar seu código e junta-lo com outro meu que controla o servo motor.

Anexos

Boa Tarde,

RV, saberia me falar por que o ultimo código está somando os valores de RPM?

Boa tarde GABS.

Os delays do seu código está bagunçando tudo.

RV

Boa Dia RV,
Uma dúvida, na programação de um servo motor eu necessariamente preciso de um delay, certo?
Obrigado.

Bom dia GABS,

Escrevi este novo sketch para um tactômetro.

Os pulso a serem medidos deverão ser "injetados" no port D5.

Para fins de teste, vc nem precisa ligar no motor, basta ligar o port 11 (saida PWM ) no port 5,

o sketch "medirá"  as rotações do PWM.  (Port 5  entrada externa do timer1)

Para facilitar os testes, criei um "Gerador de pulsos" no próprio arduino.

No sketck  é um bloco de instruções que eu chamei de "bloco para debug".

Este bloco tem por objetivo gerar um PWM com a frequência que vc escolher e uma das linhas :

    TCCR2B = TCCR2B & B11111000 |......... Escolha somente uma e comente as outras.

As rotações serão iguais à frequência lá mostrada, multiplicadas por 60.

Ao usar o sketch no seu motor, estas linhas não serão necessárias, pode ficar ou não. Tanto faz.

Mas para tira-las, basta comentar esta linha:   #define DEBUG;  , que ao compilar,  a IDE tira fora

estas linhas todas.

Este sketch é bem básico.

Não tem nada das suas outras rotinas.

Sugiro que primeiro vc faça ele funcionar com o PWM (Sem ligar o motor nele).

Ligue um fio do port  11 ao port 5.

Da forma que está ele vai mostra na serial uma RPM que fica variando de 1800 a 1860, o que é normal,

pois a frequência que eu defini  é de  30,517578125 Hz * 60 =  1831 RPM. 

Depois que verificar isto,  você desliga o fio que vai do port 1 ao port 5, e liga o motor, e veja se a rotação

está compatível com a rotação real e estável.

Se estiver instável, significa que você tem problemas na captura dos pulsos vindos do motor.

Se estiver ok, dai vc acrescenta aos poucos  as suas rotinas. testando cada vez que o fizer.

Obs: Na realidade, este sketch é um bom frequencímetro.

O que muda é este multiplicador freq *60.

RV

Anexos

Bom dia RV,
Muito obrigado pela sua ajuda. Vou testar o mais breve possível e trago aqui os resultados.

Boa noite Gabriel, 
Pelos sintomas que demonstrou, o seu circuito captador de RPM esta funcionando incorretamente. 

Dentro de um carro, existem vários tipos de interferência eletrônica !

1) não use o chassi como condutor ! Use um cabo blindado. 

2) o circuito captador deve ficar próximo do motor / O Arduino não precisa estar tão perto.

3) use filtros (choque) para a alimentação de todos os circuitos : sensor e Arduino - Recomendo que use um carregador de bateria de smartphone 5V . Eles já tem proteção. 

De onde esta captando o pulso de RPM ? Seu motor usa injeção elêtronica ? 

http://labdegaragem.com/forum/topics/leitura-de-rpm-para-datalogger...

http://labdegaragem.com/forum/topics/rpm-com-sensor-hall?

https://playground.arduino.cc/Main/ReadingRPM

https://playground.arduino.cc/Animeshshastry/Motor-rpm-measurement-...

http://playground.arduino.cc/Learning/Tachometer

O pulso do RPM é captado de um magneto de dentro do motor. Acho que se assemelha a esses projetos que você postou sobre RPM através de um sensor Hall, mas não tenho certeza. O motor não tem injeção eletrônica.

Vou estudar esses materiais que você postou. Obrigado José Gustavo!

Bom dia, 

Primeiro passo, sugiro que meça com o scope (osciloscópio) a forma de onda captada pelo sensor Hall. Ela deve ser limpa, quadrada, , não pode ter pulsos espúrios. Use cabos blindados, pode ser de áudio. Informe o diagrama do circuito que esta usando. 

Para efeito de testes, sugiro que alimente todo o seu circuito com um battery pack (esses de carregar smartphone). Dessa forma, a gente terá certeza que não esta tendo interferência da energia do carro. 

Mostre para a gente essa forma de onda limpa, e se possível informe o RPM provável. 

Rui boa noite, 

Testei o seu Sketch RMP.ino com o meu simulador de RPM ! Teste aprovado ! 

http://labdegaragem.com/forum/topics/como-zerar-rpm-de-um-motor?com...

Só achei o tempo de resposta um pouco lento. Pois durante as aceleradas do carro, o RPM varia mais rápido. 

Grande abraço e parabéns ! 

Gustavo 

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2017   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço