Leitura de RPM para Datalogger Automotivo (Arduino, SDCard e LCD 1602) com FuelTech

Bom vou explicar o cenário, estou desenvolvendo um Datalogger automotivo, ele tem a função de monitorar tudo que acontece com o carro e armazenar em um cartão Sd, Uso para carros de arrancada, competição e/ou modificados sistema de injeção com a Fueltech, Pandoo Injetech e etc... O Datalogger tem a função de capturar os dados como, posição do acelerador, pressão atmosférica do coletor, temperatura do motor e etc... isso já esta funcionando perfeitamente, Já esta coletando os dados armazenando em um SD e exibindo em tempo real em um Display 1602, porém eu preciso de Ler o RPM do carro, e essa parte que não estou conseguindo desenvolver, estou coletando o sinal do motor, medido antes, ele gira em torno de 2V porém as leituras ocila muito e não tem nada a ver com o RPM do carro, estudando um pouco sobre o assunto, eu descobri que ele trabalha em frequencia Hz e estou tentando ler isso pelo arduino, até encontrei um material, em [url]http://www.avdweb.nl/arduino/hardware-interfacing/frequency-period-... [/url] porém jogo dentro do arduino e não compila, mesmo colocando as bibliotecas no lugar, alguém tem um rumo pra mim caminhar ou solução? 

Já tentei da 022 até a 1.5 do arduino 

Exibições: 34199

Responder esta

Respostas a este tópico

Não use taxa de amostragem alta (sample rate).

Se estamos esperando uma frequencia de 30 a 40 Hz (~1000 rpm), use uma taxa de amostragem de 500 ou 1000 Hz.

Se os pulsos forem diferentes disso, provavelmente estarão incorretos 

Olá amigos!

Sou um iniciante em Arduino, tenho somente uma semana de experiencia...

Ontem estava iniciando os primeiros passos para um "computador de bordo" parecido com o do Wlington, e acabei caindo na mesma dúvida... Como pegar o sinal de rotação do carro?

Como na fueltech já possui um sinal de saída de rotação, fio verde do chicote, que é destinado para ligar "Conta giros"...

Pesquisei bastante e achei um material bem legal onde se utiliza um LM2907 para fazer a conversão da frequência em mV, tendo somente que calcular o Capacitor e o Resistor correto para a faixa de trabalho que irá utilizar...

Segue abaixo os links do site que tirei a informação:

https://code.google.com/p/multidisplay/wiki/RPM

Datasheet do LM2907:

http://www.ti.com/lit/ds/symlink/lm2917-n.pdf

No mercado livre achei somente o LM2917, que possui a mesma funcionalidade:

LINK REMOVIDO POR DESCUMPRIR OS TERMOS DE USO

Agora preciso somente de ajuda dos amigos "engeheiros" eletrônicos para a "Criação" do circuito...

abraço

Amigo, acredito que esse esquema é algo relativo com o exemplo acima do José Gustavo, mais vou da uma analisada, e esses dias estou em viagem e não estou podendo recolher amostras para teste, mais vou fazer, obrigado pela ajuda, e continua acopanhando ai que logos temos novidades

Pedro e Welington, esse circuito de conversão de frequência em tensão pode ser impreciso em relação á medição de frequência usando o Arduino. Não recomendo esse circuito, Ele não tem nada a ver com os circuitos que já sugeri.

Os circuitos que sugeri, eles adaptam o pulso de 12V do sensor de rotação Hal para entrada do Arduino (limitado a 5V).

Pesquisei nas revistas Elektor antigas da decada de 1980. Somente como referência na captação do pulso. Usando o Arduino, o diodo zener tem que ser 5,1 V ou 4,7 V,

Nesses casos não era chave Hal e sim platinado (sabem o que é isso?).

José, boa noite!!!

Conheço platinado sim, e já vi meu pai brigar muiiiito com ele...

Vamos fazer o seguinte, esqueça tudo que já discutimos nesse tópico e vamos começar do zero...

Eu possuo um equipamento que gera uma frequência que varia de 8,3 Hz até 150 Hz, como eu posso fazer para o arduino ler essa frequencia?

Depois vou ver se eu consigo um osciloscópio para verificar a forma da onda e/ou a voltagem dela, mas se não me engano é um pulso "negativo" (Desculpa se falei besteira, mas ainda sou bem leigo nesta área)...

Obrigado!!!

Pedro, o Arduino somente aceita pulsos positivos. Não injete pulsos negativos pois poderão danificar seu Arduino. Confirme se os pulsos são positivos.

Se você quer medir a frequencia somente para conferência, o metodo que eu recomendo é usando o Analisador lógico com Arduino:

http://labdegaragem.com/profiles/blogs/tutorial-analisador-l-gico-c...

No lado direito da janela do Logic Sniffer, tem a opção de medição.

Pode-se medir frequência, periodo, etc (muito bom)

Você viu o link que o Welington colocou no primeiro post?

http://www.avdweb.nl/arduino/hardware-interfacing/frequency-period-...

Mas se quer medir a frequência para verificar o RPM, continue acompanhando os posts.

Você já viu esses links que eu já tinha postado?

http://www.arduinoos.com/2013/08/engine-rpm-part-1/

http://www.arduinoos.com/2013/08/engine-rpm-part-2/

Encontrei esse circuito para medição de pulsos positivos e  negativos !

Achei fantástico pois isolam os circuitos usando opto-acopladores e ele consegue detectar 

pulsos negativos e positivos.  E a entrada é bipolar, isto é, pode ser ligada invertida ou não.

O valores dos resistores dependerá das tensões usadas.

No caso de conectar na entrada desse circuito, a chave Hall , eu colocaria um resistor de 1 K, 470  ou 240 ohms em série com os leds. (tem que testar)

A logica será inversa - quando a chave hall fechar o led do opto-acoplador irá se apagar.

Na saida eu colocaria resistores de 4,7K ohms e alimentaria os tarnsistores com o +5V do Arduino.

Muito bom esse circuito, Welington ! Segurança e praticidade.

http://forums.parallax.com/showthread.php/109105-Detecting-a-negati...

Opto acopladores :

Grande, boa noite, estava lendo a respeito e acabei parando aqui, uma pergunta, para se contar o giro a partir desse projeto que vc postou com opto, eu preciso contar quantos giros o carro da num determinado tempo não é? Ou seja conto quantos pulsos é enviado a cada segundo e assim tenho a média, se eu contar só o positivo não daria no mesmo? Seria implementar no código que eu tenho só a metade e multiplicar por 2 não é? Estou querendo fazer um circuito desses mas estou meio perdido no código agora...

Obrigado.

isso ai resolve baseado no sensor opto

// Compute the RPM of a simple DC Motor using a photomicrosensor(PMS)

//Pino OUT vai na porta 3
// vcc é 5v
// gnd terra normal no arduino

#define PMS_PIN 3 // Pin for signal from Photomicrosensor
#define LED_PIN 13 //Using Arduino's Internal LED; just as an indicator

#include <LiquidCrystal.h>
LiquidCrystal lcd(9, 7, 6, 5, 2, 8);

boolean counted=false;
int t1=0,t2=0;
int hits=0;
int rps=0;

void setup(){
Serial.begin(57600);
lcd.begin(8, 2);
pinMode(PMS_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
lcd.setCursor(5, 0);
lcd.print("RPM:");
}

void loop(){
t2 = millis();
if(t2 >= (t1 + 1000)){
rps = hits;
hits = 0;
t1=t2;

Serial.println(rps*60 / 2);
lcd.clear();
lcd.setCursor(0, 1);
lcd.print(rps);
lcd.setCursor(6, 1);
lcd.print(rps*60 / 2);
lcd.setCursor(13, 1);
lcd.print(t1/1000);
}

if(digitalRead(PMS_PIN) == HIGH){
if(!counted){
counted = true;
hits++;
}
} else {
counted = false;
}

digitalWrite(LED_PIN, digitalRead(PMS_PIN));

}

Welington , conseguiu fazer a leitura de rpm correta?

Ainda não José Gustavo, estou viajando bastante ultimamente, mais vou pegar no fds pra fazer isso funcionar.... 

Dr. vc já conseguiu usar esse código seu? estou para testar em um controlador, mas não estou entendo muito bem esse seu código, digo o valor do rps vai ser ou 0 ou 1 sempre, lendo o seu código da para ver que na primeira vez que ele passar ele vai ser 0 (o RPS, pois ele iguala a hits que é 0), dai o hits vira 1 (hits++), na segunda passada, o RPS = 1 (HITS é 1 e ele iguala) e novamente o Hits vai para 0, e a baixo para 1 e assim vai, tem algo de errado não tem?

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço