Bom dia,comecei a me aventurar a pouco tempo na plataforma ,montei um standalone para mim e estou fazendo uns testes liguei uma fan de 3 fios a um 4n25 e este ligado ao pino digital 2 do atmega...

A intenção e mostrar o rpm do mesmo para estender o funcionamento pois logo pretendo colocar um rpm digital e um velocimetro no carro atraves do sensor de velocidade o gol G2-6 pulsos.

Gostaria que alguem pudesse me ajudar a melhor o codigo...

Segue o mesmo abaixo:

--------------------------------------

#include <TimerOne.h>

unsigned char fanpin = 2; //conectado ao pino do 4n25
unsigned char pulso = 0;
unsigned short int  Rpm = 0;

void setup (){
  Timer1.initialize(1000000);
  Timer1.attachInterrupt(Rpmf);  
 
  Serial.begin(9600);
  pinMode (fanpin,INPUT); //define o pino digital 2 como entrada
  attachInterrupt (0,fan,FALLING); //chama a funcao quando cai de alto para baixo
}

void loop (){     
}

void fan(){  
  pulso++;  
}

void Rpmf(){
  Rpm = (pulso*60)/2;
  pulso = 0 ;
  Serial.println(Rpm);  
}

Exibições: 391

Responder esta

Respostas a este tópico

Bom, eu faria com uma interrupção só:

unsigned char fanpin = 2; //conectado ao pino do 4n25
unsigned char pulso = 0;
unsigned short int  Rpm = 0;

void setup (){
  Serial.begin(9600);
  pinMode (fanpin,INPUT); //define o pino digital 2 como entrada
  attachInterrupt (0,fan,FALLING); //chama a funcao quando cai de alto para baixo
}

void loop (){     

   int t=millis();

   while((millis()-t) < 1000)

   {

   }

  Rpm = (pulso*60)/2;
  pulso = 0 ; 
  Serial.println(Rpm);  
}

void fan(){  
  pulso++;  
}

Agradeco o retorno... vo me dedicar para tentar melhorar a precisao e tempo da execucao...

Poque você faz o (pulso * 60) / 2 ?

A cada 1 segundo você deveria só fazer (pulso * 60), que já te dá as rotações por minuto, não ?

Pq sao 2 pulsos por volta completa..
pelo menos com a fan que estou aqui...
Fiz um teste ligando o fio de pulso na perna negativa de um led e a outra perna nos 5v.\
o led acendeu a cada meia volta.
Esta pesquisando o funcionamento da bobina do carro e o mesmo acontece para 4 cilindros sao 2 faiscas da bobina a cada 1 RPM

Ah, entendi agora.

Pensei que o sensor da rotação um pulso por volta.

Fiquei pensando aqui, qual daria o tempo mais preciso, o   while((millis()-t) < 1000) ou a outra interrupção por software usando o Timer1.

To pesquisando formas de se fazer isto . Até porque um segundo e muito tempo para delay em um motor de carro mesmo pq ela se altera muito,preciso achar um meio termo para precisão e conseguir visualizar bem estes dados... A proxima etapa e estudar o sensor de velocidade do gol g2 ele e 6 pulsos por volta.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço