top of page

Transmission des données du Compte-tours en NMEA

Ce programme permet de transmetre une phrase NMEA RPM des données du compte-tours sur un port série ( ici le port USB de la carte UNO )

 

Etage d’entrée pour le compte-tour

Je me suis inspiré de ce site :

http://www.sonelec-musique.com/electronique_realisations_compte_tours_001.html

Merci à son auteur.

 

Voici le circuit :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

L’entrée est à relier à la borne W de l’alternateur ou du compte tours

La sortie est à relier à une borne de masse et une  borne digitale (2) de l’Arduino .

 

Le programme Arduino pour le compte-tours :

//les variables

 

int etatrpm = HIGH;

int inpinrpm = 2;

String laphraserpm;

String laphraserpmfin;

String rpmini;

String lesrpm;

int checkrpm;

 unsigned int rpm;

unsigned long duration;

 

// l’initialisation

void setup()

{

  Serial.begin(9600);

    pinMode(inpinrpm, INPUT);

}

 

 

 

// le programme principale

 

void loop()

 

{

  

 duration = 0;

  duration = pulseIn(inpinrpm, LOW);

 

if (duration != 0)

  {rpm = 30*10000/duration;}

  else

  {rpm = 0;}

 

lesrpm = String(rpm);

   rpmini = "$ERRPM,E,1,”;

laphraserpmfin  = ",,,";

laphraserpm = rpmini +  lesrpm + laphraserpmfin;

checkrpm = getCheckSum(laphraserpm);

laphraserpm =laphraserpm + "*";

 Serial.print(laphraserpm);

 Serial.println(checkrpm,HEX);

   delay(500);     

 

}

 

// fonction pour calculer le checksum

 

int getCheckSum(String phrase) {

int checksum = 0;

int longueur = 0;

longueur = phrase.length();

for(int i = 1; i < longueur; i++)

{

checksum = checksum ^ int(phrase[i]);

}

 

return checksum; 

 

 

 

 

 

bottom of page