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:
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:
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 ");
}
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;
}
}
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por