dépressiomètre

Article en cours de rédaction:

Pour faire l’entretien de mes motos, je voudrais faire la synchronisation des carburateurs.

La synchronisation nécessite un équipement pour mesurer la dépression de chaque carburateur.

Cet équipement doit permettre de connaitre la valeur absolue de chaque carburateur.

En effet la Honda VFR800Fi demande un réglage spécifique avec le 3ieme carburateur réglé a -20mmHg par rapport au premier cylindre et 10mm pour le 4ieme cylindre.

Il existe bien des équipements dans le commerce pour faire ça, mais le prix n’est pas négligeable.

Un peu de lecture sur internet permet de faire un montage à base d’arduino pour environ 30€.

La documentation :

L’idée vient du site http://denis.tauvel.free.fr/twinmax_maison.htm

Il faut donc trouver un capteur de pression absolue en 5v avec une pression par exemple entre 10kpa et 115kpa.

 

J’ai trouvé un lot de 4 MPXA6115A sur ebay à moins de 24€ fpi.

La documentation sur le capteur est disponible sur internet, la tension de sortie est linéaire a la pression et la formule de conversion pression / tension est directement fournie dans la datasheet.

Voici un extrait du datasheet :

courbe

la formule de conversion:

formule

 

 

Pour l’affichage, le choix le plus simple est d’utiliser directement un PC via le port USB.

Cette méthode permet aussi de supprimer la partie alimentation de l’arduino, l’alimentation sera gérée elle aussi via le port USB.

Voici le schéma électrique :

schema

Voici le code coté arduino :

void setup ()
  {
  Serial.begin (115200);
  Serial.println ();
 
  ADCSRA &= ~(bit (ADPS0) | bit (ADPS1) | bit (ADPS2)); // clear prescaler bits
 
  // uncomment as required
 
//  ADCSRA |= bit (ADPS0);                               //   2  
//  ADCSRA |= bit (ADPS1);                               //   4  
//  ADCSRA |= bit (ADPS0) | bit (ADPS1);                 //   8  
//  ADCSRA |= bit (ADPS2);                               //  16
//  ADCSRA |= bit (ADPS0) | bit (ADPS2);                 //  32
//  ADCSRA |= bit (ADPS1) | bit (ADPS2);                 //  64
  ADCSRA |= bit (ADPS0) | bit (ADPS1) | bit (ADPS2);   // 128

  }  // end of setup

const int ITERATIONS = 1000;
unsigned long totals [6];
const byte lowPort = 4;
const byte highPort = 7;

void loop ()
  {
  for (int whichPort = lowPort; whichPort <= highPort; whichPort++)
    totals [whichPort - lowPort] = 0;
 

  for (int i = 0; i < ITERATIONS; i++)
    {
    for (int whichPort = lowPort; whichPort <= highPort; whichPort++)
       {
       int result = analogRead (whichPort);
       totals [whichPort - lowPort] += result;
       }
    }


  for (int whichPort = lowPort; whichPort <= highPort; whichPort++)
     {
     Serial.print ("c");
     Serial.print (1+whichPort - lowPort);
     Serial.print ("=");
     Serial.println (((((totals [whichPort - lowPort] / ITERATIONS)*5.0/1023)/5)+0.095)/0.0009);    
     }
 
  }  // end of loop

 

 

La partie affichage sur PC est faite en VB, le code est disponible dans la section téléchargement.