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