a ideia e receber as rotações do motor do carro e monstra-las em um display de lcd , para implementar o projeto , coloquei também uma leitura de tensão de bateria (resístores divisão de tensão) e um sensor de temperatura (LM35 sensor analógico).
esquema:
a entrada do optoacoplador(4n25) deve estar ligado no pino negativo da bobina do carro , usa-se o pino negativo da bobina pois é nesse pino que temos os pulsos para gerar as faícas para as velas, deve observar se seu carro tem uma bobina para todas as velas ou se tem uma para cada duas velas e também a quantidades de pitões de seu carro pois isso vai ser utilizado no calculo de RPM no programa do arduino .Neste programa fiz amostras a cada 300 ms como mo meu carro era um Gol quadrado com motor AP
com uma bobina para todos os 4 pistões , então o sinal que é obtido no pino negativo da bobina é de 2 vezes a rotação do morto, assim se o motor estiver com 1000 RPM temos 4000 pulsos por minuto, para converter temos que fazer a seguinte conta:
Para leitura de temperatura e tensão temos que fazer os seguintes calculos:
temperatura = (valorLido * 0.00488); // 5V / 1023 = 0.00488 (precisão do A/D)
temperatura = temperatura * 100;
valorTensao = analogRead(pinoTensao);
tensao = valorTensao * 0.00488 ;
tensao = tensao * 4 ;
temperatura = temperatura * 100;
valorTensao = analogRead(pinoTensao);
tensao = valorTensao * 0.00488 ;
tensao = tensao * 4 ;
No LCD usei comunicação I2C com o ci PCF8574 , a biblioteca usada é LiquidCrystal_I2Ca pode ser baixada aqui .
Seque o codigo :
#include <liquidcrystal_i2c .h="">
#include <wire .h="">
int pinoSensor = 0; //pino que está ligado o terminal central do LM35 (porta analogica 0)
int valorLido = 0; //valor lido na entrada analogica
float temperatura = 0;
int pinoTensao = 1;
int valorTensao = 0; //valor lido na entrada analogica
float tensao = 0;
byte detecta = 2;
int contador = 0;
LiquidCrystal_I2C lcd(0x38,16,2);
void setup()
{
lcd.init();
lcd.backlight();
lcd.print("CONTA GIROS DNL");
pinMode(detecta,INPUT);
digitalWrite(detecta,HIGH);
contador = 0;
attachInterrupt(0, DETECTA, FALLING);
noInterrupts();
delay (10000);
}
void loop()
{
unsigned long tempo = millis();
while(tempo +300 > millis())
{
interrupts();
}
contador = contador * 100 ;
valorLido = analogRead(pinoSensor);
temperatura = (valorLido * 0.00488); // 5V / 1023 = 0.00488 (precisão do A/D)
temperatura = temperatura * 100;
valorTensao = analogRead(pinoTensao);
tensao = valorTensao * 0.00488 ;
tensao = tensao * 4 ;
lcd.setCursor(0, 0);
lcd.print("V:");
lcd.print(tensao);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print("T:");
lcd.print(temperatura);
lcd.print(" ");
lcd.setCursor(8, 1);
lcd.print("RPM:");
lcd.print(contador);
lcd.print(" ");
contador = 0;
}
void DETECTA()
{
contador ++;
}
#include <wire .h="">
int pinoSensor = 0; //pino que está ligado o terminal central do LM35 (porta analogica 0)
int valorLido = 0; //valor lido na entrada analogica
float temperatura = 0;
int pinoTensao = 1;
int valorTensao = 0; //valor lido na entrada analogica
float tensao = 0;
byte detecta = 2;
int contador = 0;
LiquidCrystal_I2C lcd(0x38,16,2);
void setup()
{
lcd.init();
lcd.backlight();
lcd.print("CONTA GIROS DNL");
pinMode(detecta,INPUT);
digitalWrite(detecta,HIGH);
contador = 0;
attachInterrupt(0, DETECTA, FALLING);
noInterrupts();
delay (10000);
}
void loop()
{
unsigned long tempo = millis();
while(tempo +300 > millis())
{
interrupts();
}
contador = contador * 100 ;
valorLido = analogRead(pinoSensor);
temperatura = (valorLido * 0.00488); // 5V / 1023 = 0.00488 (precisão do A/D)
temperatura = temperatura * 100;
valorTensao = analogRead(pinoTensao);
tensao = valorTensao * 0.00488 ;
tensao = tensao * 4 ;
lcd.setCursor(0, 0);
lcd.print("V:");
lcd.print(tensao);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print("T:");
lcd.print(temperatura);
lcd.print(" ");
lcd.setCursor(8, 1);
lcd.print("RPM:");
lcd.print(contador);
lcd.print(" ");
contador = 0;
}
void DETECTA()
{
contador ++;
}
Amigo, tem como fornecer o código fonte para um estudo? eu tenho um gol também com FUELTECH e estou implementando ela, e o seu sistema me ajuda muito, se puder enviar para welingtonjb@hotmail.com
ResponderExcluirBom dia amigo , o codigo esta no tutorial ,mas posso te enviar sim !
ResponderExcluirDaniel, eu me perdi um pouco nos calculos que vc fez. No meu caso, tenho duas bobinas duplas, e um motor de 4 cilindros, como faço os calculos de RPM ?
ExcluirDaniel, tem algum vídeo do projeto funcionando? Abraços!
ResponderExcluirVinny , tem sim um vídeo! ta aqui o link http://www.youtube.com/watch?v=0_-tiGbBUzQ . Abraços!
ResponderExcluirObrigado! :)
ExcluirOla, uma duvida, você usa CCP para leitura do RPM ou conta os pulsos por um determinado tempo e depois só calcula? e outra, como você filtrou a os pulsos da bobina, estou tentando a um tempo, e com coolers de computador ele mede exato, mas no carro fica malucão!
ResponderExcluirola , Xevete , eu com os pulsos e calculo o tempo , para ligar na bobina usa um acoplador óptico 4n24 que vai isolador o sinal liga no negativo da bobina pois é neste pino que pulsa ! no para tirar um pouco a variação que pode ficar você pode fazer por exemplo 3 leituras , leitura 1, leitura 2 e leitura 3 e tirar uma media das 3 , soma todas e divide por 3 o resultado você usa para mostrar .
ResponderExcluirabraços
olá, posso contar com a sua ajuda, estou montando o seu projeto com a pcf8574p e estou com uma duvida, será que funciona com este modulo i2c ?
ResponderExcluirola , vc pode usar ele como I/O via i2c sim , da uma olhada no datasheet dele que tem as distancias máximas a serem respeitadas ,mas da para usar sim !
ExcluirVlw, ja montei e testei, ams não consigo fazer o codigo funcionar no meu prisma.
Excluireu coloco o hardware na saveiro do meu pai q a bobina é para os quatros cilindros e funfa, mas no meu prisma que é quatro bobinas, uma para cada cilindro ele fica louco., me da um help ?
Geralmente os carros da chevrolet sao bobinas de duas torrers. E proximo do assoalho onde entra os fios do chicote tem um roxo k eh o do rpm. Me manda a foto da bobina e do conector. fernando_jak@hotmail.com
ExcluirDesculpe nao eh roxo eh verde
ExcluirDesculpe nao eh roxo eh verde
Excluirgostei do projeto, poderia me enviar o codigo por e-mail ? não achei link. grato pela atenção
ResponderExcluirhenriquew@hotmail.com
é só copiar do quadro acima e colar na ide do arduino
Excluireh sim ! copia e cola que da certo !
Excluircara vc sabe me dizer de onde eu pego o sinal do conta giros do prisma 2008 ?
Excluirja procurei tudo e não acho no chicote
Não eh da própria bobina PC Silva?
ExcluirOlá. Daneil, uma dúvida se puder responder... Fiz um esquema de conta giros parecido com o seu, a ligação elétrica é a mesma, o código é um pouco diferente... Nos testes que venho fazendo, quando uso a alimentação na bateria do carro igual você fez, tenho muita variação na leitura. Quando alimento pelo notebook funciona perfeitamente... Você usou algum tipo de filtro na alimentação ? Pois minha idéia é usar o atmega "stand alone" alimentada por um LM7805. Se quiser posso te passar um código que montei que funciona bem... Seria ótimo se pudesse testar assim como fez no video. Obrigado.
ResponderExcluirpoderia me passar seu codigo no meu email ?
Excluirpcps258@gmail.com e se possivel o diagrama eletrico tbm
https://m.youtube.com/watch?v=G86d1pUZWVE
ExcluirBoa tarde Daniel Olmo, parabéns pelo projeto, gostaria saber, voce tem o projeto esquema eletronico com placa aruino para me enviar? fabio.musicosax@gmail.com. obrigado
ResponderExcluirhttps://m.youtube.com/watch?v=G86d1pUZWVE
Excluiramigo, veja se pode me ajudar, eu instalei no meu vectra que é 4 cilindros um painel digital do omega que é 6 cilindros, porem o rpm nao atuou, ja me disseram que num da pra fazer funcionar por causa dos pulsos que sao diferentes....existe alguma solução pra isso? mexo com mecanica e elética a anos mas isso nao tenho a minima ideia de como resolver...se puder me ajudar ficaria muito grato, obrigado
ResponderExcluirSem dúvidas o conta giros ia ficar meio maluco...não dá não colega, não dá pra alterar porque o microcontrolador do painel já trabalha com o número de 6 cilindos. Ele ia na versão 3.0 Opel, não é passivel de nenhuma gambiarra infelizmente. Venda o painel... =P
ExcluirOi, talves eu possa ter oferecer uma solucao eu posso te fazer um hardware que somara um pulso a mais nas rotacoes do motor assim enganaria o painel que entenderia seu motor como um 6 cilindros. Entre em contato cmgo fernando_jak@hotmail.com
ExcluirOlá poderia mandar o projeto do proteus? Grato...
ResponderExcluirEste comentário foi removido pelo autor.
ResponderExcluirTens como me enviar o codigo apenas do medidor do rpm??? ou me enviar o arquivo do proteus?? ja tentei de td e nao consigo pega esse sinal maldito
ResponderExcluirOlá amigo td bm? estava olhando a formula que você usou... o que seria os 60000? de onde vc tirou essa constante?
ResponderExcluirgrato desde ja
millis() = 60000 milisegundo, ou 60 segundos
Excluirhttps://www.youtube.com/watch?v=Uxf_4gSZqTA
ResponderExcluireai amigo fiz esse contagiro e adicionei umas coisas mas nao consigo mostrar com numeros grandes vc me passa o codigo com mumeros grandes
ResponderExcluirMEU AMIGO QUERO USAR EM MOTOR DIESEL COMO FAÇO SO TEM ALTERNADOR QUE JA TEM UMA SAÍDA PARA CONTA GIRO DARIA?
ResponderExcluirola amigo, para motores diesel é comum usar o sinal do alternador para conta-giros, pode usar o mesmo circuito, ligando ele no sinal do alternador, o que vai mudar é o programa, vai ter que fazer uma programa para fazer a leitura desse sinal para fazer as alterações no calculo do RPM, você vai precisar saber quantos pulsos dão em um giro.
ExcluirOk obrigado vou sair a procura Desa informação
ExcluirOlá amigo, no caso só vou utilizar o rpm,será necessário que eu utilize o Crystal?
ResponderExcluirOla boa noite, se estiver usando o arduino uno ou o duemilanove, eles possuem um cristal de 16MHz, agora se pretende usar somente o atmega328 com o oscilador interno RC de 8MHz, você deve fazer algumas alterações para trabalhar com ele na IDE do arduino, vai ter que criar um arduino em 8MHz na IDE, vou vazer um novo tutorial como fazer isso e vou postal aqui.Obriado!
Excluirola amigo!
ResponderExcluirexcelente tutorial, agora poderia me explicar a formula que você utilizou para o conta giro ?
aquele 300 da formula o que seria?
boa noite amigo, o 300 da formula é porque o programa faz uma amostragem de 300 ms, como o motor do meu carro da época era um AP carburado, para dar uma volta ele da 2 pulsos na bobina, então para calcular quantos pulsos vai dar em um determinado RPM faz a conta, RPM * 2(porque a cara giro são dois pulsos), dividido por 60000(que são quantos milissegundos em um minuto), vezes 300 ms( a amostragem do programa), assim se quiser saber quantos pulsos vai ter em 2000 RPM, fazendo a conta descobre que vai tem 20 pulsos em 300 ms, para transformar esse 20 pulsos em RPM multiplica por 100.
ExcluirOpa e ai ...cara gostei do seu projeto estou pensando em fazer o mesmo e implementar alguns itens mais, pode me mandar seu código via email?
ResponderExcluirJohnny.a.123@gmail.com
Daniel, liguei o optoacoplador no negativo da bateria e o negativo no chassis do carro.
ResponderExcluirCara ja queimei 3 optoacopladores... nao sei o que fazer! Ja coloquei resistor entre ele e o negativo da bateria mas nao adianta.
Meu caso eh um fusca, me da uma ajuda ai...
Em tempo... ele esta funcionando, o unico problema eh que nao dura muito e logo queima optoacoplador.
ResponderExcluirbom dia amigo, o que pode fazer eh usar um diodo zener para limitar a tensão, como o nossa amigo Iuri disse, mas deve testar se não vai alterar a leitura do rpm, no caso seu carro é um fusca, se ele usa gerador tem muita oscilação de tensão o que pode estar queimando o optoacoplador. Qual optoacoplador você esta usando? vou realizar umas simulaçoes no proteus com o 4n25 e com um zener para ver como vai ficar.
ExcluirCiro eu verifiquei aqui, e para o fusca temos que montar um outro circuito de leitura, pois o fusca usa platinado, e o pulso na bobina eh negativo , quando não tem o pulso negativo o sinal fica positivo por retorno da bobina, com uma tensão mais alta, assim gera uma tensão reversa no acoplado o que leva a queima-lo, vou projetar um circuito para o fusca!
ExcluirOpa! Alguma novidade sobre o projeto para o fusca? O meu tem ignicao eletronica 6 pinos. será que da pra ler o sinal que vem do modulo de ignicao (proprio para RPM) ao inves de ler pelo negativo da bobina?
ExcluirEste comentário foi removido pelo autor.
ResponderExcluirEste comentário foi removido pelo autor.
ResponderExcluirEstou tendo o mesmo problema do Ciro, meu carro também é um fusca, pensei em colocar um diodo zener para limitar a voltagem da bobina, será que isso resolveria o problema?
ResponderExcluirbom dia Iuri, da uma olhada nas respostas que dei para nosso amigo Ciro por favor, vou tentar resolver esse problema, assim que tiver uma solução mando para vocês e posto aqui no blog.
ExcluirBom dia. Tb tenho um fusca, mas já eh distribuidor. Pensei em. Colocar um regulador de tensão antes do à acoplador. Será que evita esse problema?
ExcluirBom dia amigo, agredito que o regulador não funcione, nao fiz o teste mais acredito que usando diodo zener de certo, teria que testar, eu acredito que o fusca tenha picos de tesão gerados pela bobina apos o pulso do distribuidor... pode ser esse o problema, talvez um diodo em paralelo com a bobina daria certo..infelizmente não tenho fazer esses teste por não ter um fusca ou um carro com distribuidor para teste..
ExcluirOlá! Achei muito interessante seu trabalho e gostaria de uma ajuda. Adaptei o painel de instrumentos do CELTA 2009 em um Chevette e está quase tudo funcionando. Mas, estou tendo problemas com o conta giros e indicador de temperatura do motor. Pelo que entendi, o sinal para o conta giros do painel do celta vem do modulo de injeção (acho que é digital) e o do chevette, vem da bobina. Existe alguma forma de resolver isso? Algum "transformador" ou alguém que poderia resolver isso? Desde já agradeço a oportunidade!
ResponderExcluirBoa noite
ResponderExcluirgostaria de ajuda para implementar este codigo utilizando o contagiros para movimentar um servo motor e fazer girar tantos angulos para a esquerda e tantos angulos para a direita dependendo do numeros de rpm tipo assim quando tiver a 4500 rpm inicia o acionamento proporcional ate 9000 giros poderia me ajudar meu email e marcio.hso@oi.com.br. poderia me ajudar?
Amigo, por gentileza, no 4n25 o pino 1 recebe o negativo da bobina e no pino 2 vai o terra comun, por exemplo o negativo da bateria, é isso?
ResponderExcluirestou com a mesma duvida!!
ExcluirBoa tarde me tira uma dúvida se eu usar o sinal que vem do alternador que já é especifico para rpm poderia usar esse sinal?
ResponderExcluirEste comentário foi removido pelo autor.
ResponderExcluirBoa noite. Qual o codigo para o conta giros somente?
ResponderExcluirBoa dia, tem como voce enviar este projeto para o meu email por favor ?
ResponderExcluirelcn.eng17@uea.edu.br
Amigo e o esquema pras letras grandes no display qual foi a mágica ?
ResponderExcluirOla tudo bem! não consigo ler a library de lcd! já baixei, já coloquei no diretório ja mudei as aspas etc...
ResponderExcluir#include
#include
Alguem pode me ajudar
Opa, muito bom projeto! Eu nao tenho muito conhecimento com Arduino. Eu gostaria de saber qual parte do codigo e so para o contagiro
ResponderExcluirMuito obrigado me deu uma boa ajuda, alterei algumas coisa para rodar e fico muito bom.
ResponderExcluirHow to make money from making money from making money with money
ResponderExcluirA successful bookie offers a simple and งานออนไลน์ easy way to septcasino make money from placing bets kadangpintar and winning. A bookmaker will reward customers for being successful.