Boa noite, galera!

Preciso da ajuda de vocês, estou tentando fazer um rpm (vou por no meu carro, uma caravan 1982, que estou colocando injeção eletronica e o painel dela se resumi a uma chapa de fibra de vidro com um monte de chave do tipo caça, um conta giro no meio do painel e uma fueltech) só que eu preciso ver a velocidade( o tal do rpm do arduino, depois eu vejo onde colocarei o sensor e o rpm se transformará em velocidade, viva a matematica!!) o odometro e o nivel de combustivel, ai resolvi usar o arduino.

Enfim, a idéia é o arduino contabilizar em um espaço de tempo quantas "passadas" o sensor deu e transformar isso em rpm, quando o arduino chegar em um tempo "precisao" eu zero mostro o rpm no visor, zero as variaveis e começo de novo...

Meu problema: ele não está aparecendo certo no visor... como eu zero as variaveis ele me quebra o valor exato..

Será que alguem me dá uma luz? rs

#include
#include
int hall = 2;
//int estadopino = 0;
int passadas = 0;
int rpm = 0 ;
unsigned long inicio ;
int precisao = 3000;
//int rpmvisor;
//int pino2 = HIGH;
LiquidCrystal_I2C lcd(0x3f, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

void setup() {
lcd.begin (16, 2);
pinMode (hall, INPUT);
Serial.begin(9600);
// pinMode (pino2, OUTPUT);
attachInterrupt(0,interrupcao,FALLING);
//vel=millis();

// put your setup code here, to run once:

}

void interrupcao()

{
passadas = passadas + 1;
}

void loop() {

if (passadas == 0)
{
inicio=millis() + precisao;
}

if (inicio >= millis())
{
rpm= ((10000 * passadas)/precisao);
//Serial.println(rpm);
Serial.println(passadas);
//rpmvisor==rpm;

}
else
{

passadas=0;
// rpm=0;
lcd.clear();
lcd.print (rpm);
//vel=millis();
}

Serial.println (passadas);

}

Exibições: 2092

Responder esta

Respostas a este tópico

Seu Fueltech já não fornece RPM?

Como o Celso já disse, 

Injeção eletrônica precisa de um sensor de RPM para funcionar...

Onde esta o seu sensor ? Onde esta Wally ?

fueltech pega os pulsos da bobina e nela eu programo quantos pistoes tem, em cima disso você pega o rpm. Porém foge do meu foco. meu problema é marcar a velocidade. na verdade meu problema é lógica rs

rpm funciona... mas em cima do rpm vou transformar em velocidade... mas como não sei onde colocarei o imã deixei a função como rpm (por ora) 

na verdade eu quero deixar marcando a velocidade... 

mas para fins didaticos e nao encher de matematica que só eu (pois só eu vou saber onde esta o imã, dai tem o diametro da roda.. enfim)  quero que, por ora, mostre o rpm (do que quer que seja, estou tendendo a por no cardã)

Antes de desenvolver o programa, precisará de saber dados do sensor de velocidade.
Por exemplo - variação de RPM dentro da faixa de velocidade que pretende medir.
Será que dá para captar um pulso dentro do velocimento do Opalão ?


velocidade
10 Km/h = X RPM
50 km/h = Y RPM
100 Km/h = Z RPM

é totalmente mecanico....

e meu problema é com a lógica, a parte de transformar de rpm pra velocidade é tranquilo. 

quero, por ora, que ele marque o rpm certo...

rapaz!!! maravilhoso!! esse ultimo link postado veio perfeito! exatamente o que eu precisava... agora achar um bom lugar para grudar um imã e o sensor... alterar o rpm pra velocidade e ser feliz rs

Não vai dar certo medir o RPM do motor para saber a velocidade do carro.

A não ser que você tire a caixa de cambio e o carro funcione apenas com 1 marcha.

Bom dia Celso, ele sabe disso.
Ele esta testando o programa de RPM para adapta-lo para medição de velocidade.
E vai providenciar um sensor de velocidade.
Abraços.

posso muito bem colocar no cardã, sabendo a relação do diferencial para o semi-eixo e o diametro do pneu eu consigo sim...

João, boa tarde!

Você está usando interrupções. No caso é a interrupção no pino 2 (hall) por Falling.

A sintaxe "mais" apropriada para esse caso é esta:

attachInterrupt(digitalPinToInterrupt(hall),interrupcao,FALLING); 

Pode ser isso.

Outra dúvida:

Não li todo o código, mas o IF não teria que ser assim?

if (inicio >= (millis()+precisao))

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço