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

No eixo do motor que esta captando o sensor hall, um pulso é gerado para cada volta ?

Dependendo do tipo de motor e em qual eixo esta montado o sensor hall, poderá gerar dois ou quatro pulsos por cada giro do motor.

https://www.engineeringtoolbox.com/pulley-diameters-speeds-d_1620.html

Mais um projeto:

https://nateduxbury.wordpress.com/tag/speed-sensor/

Bom dia José Gustavo,

obrigado pelos projetos. Estou sem tempo para verifica-los todo, mas assim que conferi-los irei atualizar aqui. Sobre sua pergunta, a resposta é que são gerados um pulso a cada volta.

Arduino Simulador de pulsos para teste de RPM - motor à combustão 

Boa tarde Gabriel, 

Desenvolvi uma montagem com o Arduino para teste do seu Tacômetro (medidor de RPM). 

Não é um simulador com extrema precisão, mas o ajudará a resolver o problema do seu projeto. 

Fiz testes de verificação com Scope.  Ele simula 600 RPM a 6000 RPM. 

Monte um potenciômetro de 10K ohms (pode ser maior ou menor) no protoboard junto com o Arduino.

Pino central do POT, conecte-o ao pino A0 do Arduino. As outras extremidade do POT, conecte no +5V e GND. 

A saída dos pulsos gerados no Simulador RPM Arduino esta no pino D13. Conecte esse pino de saída  na entrada do seu Tacometro. As leituras aparecerão na console da IDE (altere a velocidade para 115200 bps. 

Anexei o sketch = RPMsimulator3.INO 

/*  RPM Simulador de pulsos    Gustavo Murta 18/out/2017    Ligacao do Potenciometro 10K ohms - pino central A0 - outras extremidades +5V e GND
    Conecte a entrada do medidor de RPM no pino HallPin do Arduino simulador
RPM = RPS x 60 RPS (Frequencia)
exemplos : 600 RPM = 10Hz x 60 6000 RPM = 100Hz x 60
Periodo = 1 / Frequencia
*/

float RPS = 0; // Frequencia
int RPM = 0; // RPM
float Periodo = 0; // Periodo
int HallPin = 13; // Pino de saida do Sensor Hall

void setup()
{
Serial.begin(115200); // configure a console para 115200 bps
pinMode(HallPin, OUTPUT); // Pino Hall como saida
digitalWrite(HallPin, LOW);
}

void loop()
{
int POT = analogRead(0); // Potenciometro - pino central no pino A0
Periodo = (map(POT, 0, 1023, 1000, 100)/10); // Variando o valor do Periodo 100 a 10 ms
RPS = 1000 / Periodo ; // RPS = frequencia
RPM = 60 * RPS; // Calculo do RPM

digitalWrite(HallPin, HIGH); // Pulso positivo do sensor Hall = 1 milisegundo
delay(1);
digitalWrite(HallPin, LOW); // Pulso negativo variavel do sensor Hall
delay(Periodo-1.4); // subtracao dos atrasos

Serial.print(Periodo,0);
Serial.print(" ms ");
Serial.print(RPS,0);
Serial.print(" Hz ");
Serial.print(RPM);
Serial.println(" rpm ");
}

Anexos

Boa noite José,

nesse exato momento acabei de testar o código do RV, o último, e deu valores bem próximos. Amanhã vou continuar os testes pra ver se o problema está realmente resolvido. Vou testar o seu também para ver qual tem erro melhor. Muito Obrigado!

O meu simulador não serve para medir RPM. 

Serve para simular o pulso de RPM. 

Para você identificar se o circuito do sensor Hall é a causa do seu problema.

Arduino Tacometro - medindo RPM através da frequencia do sensor Hall 

Achei essa Biblioteca FreqMeasure na IDE 1.8.3 do Arduino bem precisa. Através dela pode-se medir a frequência do pulso do sensor Hall . Nesse caso, um pulso do sensor para cada rotação do motor. 

Acrescentei no sketch de exemplo, o cálculo do RPM .   RPM = 60 x frequencia 

O único inconveniente, é que ela  é um pouco lenta para medir baixas rotações. Como ela calcula a média das medições, pode atrasar um pouco o resultado. Os resultados são bem estáveis. Quanto menor o número de medições, mais rápido ela fica. 

Exemplo de medição (console da IDE) : 

41.80 Hz 2508 rpm
41.80 Hz 2508 rpm
41.80 Hz 2508 rpm
41.80 Hz 2508 rpm
41.80 Hz 2508 rpm
41.80 Hz 2508 rpm
41.80 Hz 2508 rpm

Anexei o sketch = RPMmeasureX1.INO 

/* RPM - tacometro   Gustavo Murta - 19/out/2017  baseado no exemplo :   http://www.pjrc.com/teensy/td_libs_FreqMeasure.html
   Instale antes a biblioteca FreqMeasure, atraves da IDE do Arduino
pino D08 para medição de RPM / frequencia
*/

#include /font>FreqMeasure.h>

void setup() {
Serial.begin(115200);
FreqMeasure.begin();
}

double sum = 0;
int count = 0;

void loop() {
if (FreqMeasure.available())
{
sum = sum + FreqMeasure.read(); // Calcula a media das medicoes
count = count + 1;
if (count > 5) // numero de medicoes
{
float frequency = FreqMeasure.countToFrequency(sum / count);
float freq = round(frequency * 10) / 10.0; // arredonda a frequencia
int RPM = freq * 60; // calcula o RPM
Serial.print(freq);
Serial.print(" Hz ");
Serial.print(RPM);
Serial.println(" rpm ");
sum = 0;
count = 0;
}
}
}

Anexos

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço