Afficher un message
Vieux 06/05/2015, 13h35   #1
Mach1
Débutant T-E
 
Avatar de Mach1
 
Date d'inscription: octobre 2009
Localisation: France / Troyes
Messages: 49
Thanks: 13
Thanked 70 Times in 16 Posts
Pouvoir de réputation: 0
Mach1 will become famous soon enoughMach1 will become famous soon enough
Par défaut Synchro de carbu avec CarbuDuino !

Bonjour à tous,

Dans ce monde d’électronique on oublie parfois que sur des modelés anciennes (auto ou moto) on désire pour des raisons historique ou de réglementation conserver ses vieux carburateurs. Hors les vieux outils de réglage disparaissent avec les vieux véhicules.

Je vous propose ici, un montage pour faire la synchro des carbus, jusqu’à six corps que j'ai appelé CarbuDuino.
De plus j'ai prévu des extensions possible pouvant ce rajouter au fil des besoins, Compte tour moteur, Tension batterie, Température, etc

liste du matériel:

1 carte Arduino 2560 (pour prévoir les extensions a venir ...)
6 Capteurs MPX 4100 (ils piquent un peux au niveau du prix ...)
1 Alim 12v et 5v (issu d'un autre projet que je donnerais sur un autre post)
1 afficheur LCD 4x20
1 boîtier fait maison pour le prototype (version imprimable a suivre)

voici ce que ça donne en photo:







il n'y a pas de typons pour l'instant étant du prototypage, je met à disposition le code ou toutes les indications sont commentées:

Code:
// Auteur: Bodard Harald
// Mise a jour: le 29/12/2014 en version 01.1
// Modifications et ameliorations: Modification de l'affichage des resultats par ajout des moyennes pour fiabiliser et faciliter la lecture.

//**************** Entête déclarative *******
// A ce niveau sont déclarées les librairies, les constantes, les variables...

// --- Inclusion des librairies utilisées ---
#include <LiquidCrystal.h> // Inclusion de la librairie pour afficheur LCD 


// --- Constantes des broches des capteurs de pressions  ---
const int CapPress01=1;   // Declaration du Capteur 01 en broche analogique 01
const int CapPress02=2;   // Declaration du Capteur 02 en broche analogique 02
const int CapPress03=3;   // Declaration du Capteur 03 en broche analogique 03
const int CapPress04=4;   // Declaration du Capteur 04 en broche analogique 04
const int CapPress05=5;   // Declaration du Capteur 05 en broche analogique 05
const int CapPress06=6;   // Declaration du Capteur 06 en broche analogique 06
// --- Constantes des broches du LCD  ---
const int RS=2; // Declaration constante de broche RS du LCD sur broche numerique 02 
const int E=3; // Declaration constante de broche E du LCD sur broche numerique 03
const int D0=4; // Declaration constante de broche D4 du LCD sur broche numerique 04
const int D1=5; // Declaration constante de broche D5 du LCD sur broche numerique 05
const int D2=6; // Declaration constante de broche D6 du LCD sur broche numerique 06
const int D3=7; // Declaration constante de broche D7 du LCD sur broche numerique 07
const int D4=8; // Declaration constante de broche D4 du LCD sur broche numerique 08
const int D5=9; // Declaration constante de broche D5 du LCD sur broche numerique 09
const int D6=10; // Declaration constante de broche D6 du LCD sur broche numerique 10
const int D7=11; // Declaration constante de broche D7 du LCD sur broche numerique 11
// --- Déclaration des variables globales ---
int VarCapPress01=0;    // Initialisation du capteur 01
int VarCapPress02=0;    // Initialisation du capteur 02
int VarCapPress03=0;    // Initialisation du capteur 03
int VarCapPress04=0;    // Initialisation du capteur 04
int VarCapPress05=0;    // Initialisation du capteur 05
int VarCapPress06=0;    // Initialisation du capteur 06
// --- Declaration de variable pour calcule interne ---
const int cycles = 30;   // Nombres de cycle pour calculer la moyenne

 
// --- Initialisation des fonctionnalités utilisées ---
LiquidCrystal lcd(RS, E, D0, D1, D2, D3, D4, D5, D6, D7);// initialisation LCD en mode 8 bits 

//**************** FONCTION SETUP = Code d'initialisation *****
// La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme

void setup()   // debut de la fonction setup()
{ 
  
lcd.begin(20,4); // Initialise le LCD avec 20 colonnes x 4 lignes 

lcd.setCursor(2, 0) ;  // 3ème col - 1ème ligne - positionne le curseur à l'endroit voulu (colonne, ligne) (1ère=0 !)
lcd.print("Synchro CarBuino") ; // affiche la chaîne texte - message de test
delay(2000); // pause de 2 secondes
lcd.clear(); // // efface écran et met le curseur en haut à gauche
delay(5); // pour laisser temps effacer écran
lcd.setCursor(0, 0) ;
lcd.print("Banc pour la") ;
delay(500);
lcd.setCursor(2, 1) ;
lcd.print("synchronisation") ;
delay(500);
lcd.setCursor(4, 2) ;
lcd.print("des carburateurs") ;
delay(4000);
lcd.clear();
lcd.setCursor(0, 0) ;
lcd.print("Materiel et Logiciel") ;
delay(1000);
lcd.setCursor(3, 2) ;
lcd.print("Bodard  Harald") ;
delay(2000);
lcd.setCursor(4, 3) ;
lcd.print("Version 01.1") ;
delay(1000);
lcd.clear();
delay(5); // pour laisser temps effacer écran

}
// fin de la fonction setup()********************************************************************************




//*************** FONCTION LOOP = Boucle sans fin = coeur du programme *************
// la fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension

void loop() // debut de la fonction loop()
{
  int resultPress01 = 0;
  for(int i = 0; i < cycles; i++)
  {
    VarCapPress01 = analogRead(CapPress01)*1.087;
    resultPress01 += VarCapPress01;
    delay(6);
  }
  int resultPress02 = 0;
  for(int i = 0; i < cycles; i++)
   {
    VarCapPress02 = analogRead(CapPress02)*1.087;
    resultPress02 += VarCapPress02;
    delay(6);
   }
     int resultPress03 = 0;
  for(int i = 0; i < cycles; i++)
   {
    VarCapPress03 = analogRead(CapPress03)*1.087;
    resultPress03 += VarCapPress03;
    delay(6);
  }
     int resultPress04 = 0;
  for(int i = 0; i < cycles; i++)
   {
    VarCapPress04 = analogRead(CapPress04)*1.087;
    resultPress04 += VarCapPress04;
    delay(6);
  }
   int resultPress05 = 0;
  for(int i = 0; i < cycles; i++)
   {
    VarCapPress05 = analogRead(CapPress05)*1.087;
    resultPress05 += VarCapPress05;
    delay(6);
  }
   int resultPress06 = 0;
  for(int i = 0; i < cycles; i++)
   {
    VarCapPress06 = analogRead(CapPress06)*1.087;
    resultPress06 += VarCapPress06;
    delay(6);
  }



//Affichage sur le LCD *********************************************
lcd.setCursor(0, 0) ; // 1ème col - 1ème ligne - positionne le curseur à l'endroit voulu (colonne, ligne) (1ère=0 !)
lcd.print("1=") ;
resultPress01 /= cycles;
lcd.print(resultPress01) ; // affiche la chaîne texte - message de test
lcd.print("hPa") ;
//delay(1000); // pause de 2 secondes

lcd.setCursor(11, 0) ;
lcd.print("2=") ;
resultPress02 /= cycles;
lcd.print(resultPress02) ;
lcd.print("hPa") ;
//delay(1000);

lcd.setCursor(0, 1) ;
lcd.print("3=") ;
resultPress03 /= cycles;
lcd.print(resultPress03) ;
lcd.print("hPa") ;
//delay(1000);

lcd.setCursor(11, 1) ; 
lcd.print("4=") ;
resultPress04 /= cycles;
lcd.print(resultPress04) ;
lcd.print("hPa") ;
//delay(1000);

lcd.setCursor(0, 2) ;
lcd.print("5=") ;
resultPress05 /= cycles;
lcd.print(resultPress05) ;
lcd.print("hPa") ;
//delay(1000);

lcd.setCursor(11, 2) ; 
lcd.print("6=") ;
resultPress06 /= cycles;
lcd.print(resultPress06) ;
lcd.print("hPa") ;
delay(10);

//lcd.clear(); // // efface écran et met le curseur en haut à gauche
//delay(5); // pour laisser temps effacer écran
//Fin d'affichage du LCD ************************************************************



}
// fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin
// ********************************************************************************

// --- Fin programme ---

// --- Mémo instructions ---


// ----- memo LCD --- 
// LiquidCrystal(rs, enable, d4, d5, d6, d7) ; // initialisation 4 bits
// lcd.begin(cols, rows); // initialisation nombre colonne/ligne
// 
// lcd.clear(); // efface écran et met le curseur en haut à gauche
// lcd.home(); // repositionne le curseur en haut et à gauche SANS effacer écran
// 
// lcd.setCursor(col, row) ; // positionne le curseur à l'endroit voulu (colonne, ligne) (1ère=0 !) 
// lcd.print("texte") ; // affiche la chaîne texte
// 
// lcd.cursor() ; // affiche la ligne de base du curseur 
// lcd.noCursor() ; // cache le curseur 
// lcd.blink() ; // fait clignoter le curseur
// lcd.noBlink() ;// stoppe le clignotement du curseur
// lcd.noDisplay() ; // éteint le LCD sans modifier affichage
// lcd.display() ; // rallume le LCD sans modif affichage
// 
// lcd.scrollDisplayLeft(); // décale l'affichage d'une colonne vers la gauche
// lcd.scrollDisplayRight(); // décale l'affichage d'une colonne vers la droite
Voila, c'est un projet qui open source, qui peu evoluer pour avoir un petit outil polivalent dans sa caisse à outil !

bien à vous

Mach1
Mach1 est déconnecté   Réponse avec citation
The Following 31 Users Say Thank You to Mach1 For This Useful Post:
Als60 (16/08/2020), atlon2 (26/11/2019), autodiagauto (08/11/2019), bino78 (04/12/2019), dell 66 (06/05/2015), dinalo (06/05/2015), DrDG (06/05/2015), duroi (10/07/2021), elmostro (09/06/2020), ElTurco (13/12/2019), gringo783 (09/07/2021), jphp (06/05/2015), Jul971 (06/05/2015), Legrizzly (09/04/2022), luce46M57 (02/11/2018), manudiag (04/02/2019), MecaTech (05/12/2020), Nextrick (17/02/2019), patricio (09/06/2020), Pelican (04/12/2019), poupaa (05/01/2020), radouane (16/08/2020), rapou30 (18/02/2019), sadna (03/10/2022), samer (14/11/2020), taz_13 (10/06/2020), thomas (06/05/2015), Topal (04/12/2019), WJon (18/09/2021), Y.B tec (06/01/2020), zazear (19/10/2019)