Tlemcen Car electronics

Tlemcen Car electronics (https://www.tlemcen-electronic.com/forum/index.php)
-   Arduino (https://www.tlemcen-electronic.com/forum/forumdisplay.php?f=130)
-   -   Synchro de carbu avec CarbuDuino ! (https://www.tlemcen-electronic.com/forum/showthread.php?t=40598)

Mach1 06/05/2015 13h35

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:

https://lh5.googleusercontent.com/-H...506_140241.jpg

https://lh5.googleusercontent.com/-e...506_140301.jpg

https://lh3.googleusercontent.com/-o...506_140610.jpg

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

j-sky 06/05/2015 14h29

Super
Merci de ta contribution
c'est un très beau projet

Mach1 06/05/2015 14h32

J'en ai d'autre, je vais poster au fur à mesure.

PS OS: on ne peut pas éditer les posts une fois publier pour faire des correction ? FIN OS

j-sky 06/05/2015 14h33

Citation:

Envoyé par Mach1 (Message 305804)
J'en ai d'autre, je vais poster au fur à mesure.

PS OS: on ne peut pas éditer les posts une fois publier pour faire des correction ? FIN OS


Non, l'édition des post est une option fournie aux donateurs

Mach1 06/05/2015 16h33

Super merci !
ce serra surtout pour mettre les post a jour !

boul27 06/06/2016 16h32

Superbe idée

je vais porter ton projet sur raspberry (je vais essayer du moins)
Sa pourra m'aider pour la synchro carbu sur mon 600 monstro

luce46M57 02/11/2018 20h56

Salut,
bravo pour ton montage.... as tu le schéma de câblage? Je vais essayer....

Merci par avance....

nota: le rasberrryPi avance?

Black gees 17/02/2019 15h42

Très interessant comme projet, on peut le faire aisement sur un Mikuni de R1?

Mach1 08/11/2019 12h31

Bonjour à tous,

Je reçois des MP pour me demander le schéma de câblage.

je n'ai pas fait de schéma de câblage pour la bonne raison qu'il est dans le code source

je le recolle ici:
// --- 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

Pour le reste c'est du bon sens de branchement des alimes ! Les + aux + et les - aux - (le fil rouge sur le bouton rouge, le fil bleu sur le bouton bleu ............. quel est le c** qu'a fait sauter le pont ....!!!)

C'est un projet open source qui peut facilement être porté sur d'autre µC, voir facilement être amélioré ou complété (compte tour, tension alim, etc ...)

Merci de venir mettre un lien ici, si vous développer un truc en vous servant du code source, cela profitera à tous !

Bien à vous
Mach1

Formator 26/11/2019 10h34

Salut à tous,

Pour synchroniser des papillons (ou volets), en effet, visualiser les valeurs de pressions (ou dépressions) en aval papillons est suffisant.

Par-contre visualiser les courbes de pression et pouvoir les superposer est un avantage quand on veut faire autre chose.
Je dirai que cela ne sert à rien de vouloir synchroniser des papillons quand une ou des soupapes ne sont plus étanche. la visualisation des courbes permet en autre de déceler cela.
Dommage que des outils comme Indiana 2440 (de chez Souriau), ou vacuum analyzer (distribué par Biketech) ne se commercialisent plus.

Je ne sais pas où en est ton projet depuis mai 2015, mais si tu dois le faire évoluer, penses-y Mach1, car comme dis plus haut, les outils le faisant ne sont plus commercialisés.

Topal 04/12/2019 06h30

Salut,

cool ton projet mais j'aurais une question, ou as tu trouvé un boitier comme celui-ci car il a l'air super epait

Pat

Tibo64 09/06/2020 09h04

Super projet! Et c'est bien plus précis qu'une rampe de manomètres...
Mon dernier réglage synchro carbu était avec quelques mètres de durites translucide et de l'huile moteur. L'inconvénient de cette technique, c'est que ça se fait carbu 2 a 2. (d'abord 1/2 - 3/4 puis 2/3)

Par contre vue que les valeurs de dépressions varient pas mal, des petits ''Bar graph'' au centre de l’écran a coté de valeurs serait un plus, pour faciliter le réglage.

taz_13 10/06/2020 07h57

Citation:

Envoyé par Mach1 (Message 735510)
Bonjour à tous,

Je reçois des MP pour me demander le schéma de câblage.

je n'ai pas fait de schéma de câblage pour la bonne raison qu'il est dans le code source

je le recolle ici:
// --- 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

Pour le reste c'est du bon sens de branchement des alimes ! Les + aux + et les - aux - (le fil rouge sur le bouton rouge, le fil bleu sur le bouton bleu ............. quel est le c** qu'a fait sauter le pont ....!!!)

C'est un projet open source qui peut facilement être porté sur d'autre µC, voir facilement être amélioré ou complété (compte tour, tension alim, etc ...)

Merci de venir mettre un lien ici, si vous développer un truc en vous servant du code source, cela profitera à tous !

Bien à vous
Mach1

Bonjour Mach1,
Merci pour ce beau projet!
J'ai bien compris que tu n'avais pas fait de schéma :2: cependant je peux voir 2 régulateurs ? 1 diode ? 1 potentiomètre ? 1 capa ? rien d'autres ??.
Pourrais-tu nous indiquer la réf de chaque et nous :4:un schéma rapide sur ces 5 composants ?
Une fois ces infos j'essaierai de faire un schéma et le poster avec ton autorisation bien-sur.
Par avance merci et portez vous bien.
:yo:

Mach1 09/08/2020 13h43

Boudiou ! Je n'avais pas vue le déterrage de ce post ... :yield:

Je suis actuellement débordé par deux ou trois projets que je devrai pas tarder à boucler ! Et je viendrez mettre à jour ce post et le Carbuduino en tenant compte de vos avis/Infos des que je peux.

Pour répondre en vrac:

Le boitier avait été usiné sur mesure dans du nylon (j'avait une fraiseuse et le brut à dispo. Aujourd'hui il est plus facile de ce dirigé sur de l'impression 3D.

Les Capteurs de pression sont des MPX4100, il faut chercher les meilleurs prix sur le net (tout les capteurs de pression coûtent affreusement cher, compter entre 10/15 euros pièce !).

Le condo c'est pour le filtrage de l'alim du 7805, rien de particulier.

Le potar bleu c'est pour le réglage de luminosité du LCD.

Vous pouvez facilement trouver les valeurs/branchement/etc de chaque composant dans leurs datasheets respectif.

Bien à vous.
Mach1

radouane 16/08/2020 16h31

très bon projets et merci beaucoup pour le partage et pour les informations ,
bon courage


Fuseau horaire GMT +1. Il est actuellement 13h45.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Version française #23 par l'association vBulletin francophone
Tlemcen-electronic © All right reserved