suite logique d'activation de solenoide pneumatique (etape "haut" "bas")

bonjour

tu a totalement raison artouste (en lisant juste la page 9 on pige rien)

pour résumer je suis passer d'une carte UNO a une seeeduino MEGA

le but est de commander une boite séquentiel par palette au volant (il y a 6 électrovanne pneumatique) le code est déjà fini et fonctionnel mai ayant du temps j'ai décider de fiabiliser et de sécuriser mon installation notamment par 2 ajout

le premier crée une entrer pour mettre un BP sous la pédale d'embrayage pour éviter de passer les rapport accidentellement quand le moteur et au ralentie avec le coude ou si on se penche dessus ect... se que j'ai réussie a faire sans trop de soucie comme je commence a comprendre les base du code

le second ajout et c'est lui qui me pose probleme serrer de lire la sortie tachometer (sortie destiner au compte tour) qui sort de mon ECU (gestion programmable du moteur) pour l'injecter dans mon seeeduino est de la modifier pour en sortir une valeur en RPM (tour minute du moteur) je n'est pas le matériel pour lire se signal mais d'apprer se que j'ai vue il s’agit d'un signal de 12V en hertz a 300hertz je suis a 6000rpm se qui équivaut a 3 impulsion par tour de vilebrequin, étant donner que sur un 4T on a 720° pour réaliser le cycle 4T on en déduit que sur les 720° on a 6 impulsion 3 sur le premier 360° (premier tour du cycle) et 3 autre sur le second 360° (2eme et dernier tour du cylce 4T) on en déduit aussi que c'est un 6 cylindre

donc je ne savez pas vraiment par ou attaquer car je n'est jamais exploiter se type de signale est surtout le reproduire (car actuellement le moteur et hors de la voiture donc difficile de faire des teste)

donc ma première question etait de savoir comment le reproduire
artouste ma donc appris que je pouvez le reproduire par une simple carte son d'ordinateur et avec un AOP amplificateur c'est se que j'ai donc fait

d’abord j'ai utiliser la fonction pulsein qui me paraisse la plus approprier mais au final mais essaie se sont enverrez erronée (trop imprécis)

je suis donc revenus ici et artouste ma plutôt conseiller d'utiliser la formule d’interruption qui est bien plus précise en me fournissant aussi un code

j'ai donc injecter le code dans ma UNO (j'utilise ma UNO pour tout les test la puce étant monter sur socket je me soucis guère du nombre de flash)

les résultat on était beaucoup plus précis mais ne suivez pas la logique que je voulez

j'ai utiliser se code:

/*
 * Optical Tachometer
 *
 * Uses an IR LED and IR phototransistor to implement an optical tachometer.
 * The IR LED is connected to pin 13 and ran continually.
 * Pin 2 (interrupt 0) is connected across the IR detector.
 *
 * Code based on: www.instructables.com/id/Arduino-Based-Optical-Tachometer/
 * Coded by: arduinoprojects101.com
 */

volatile byte rpmcount;
unsigned int rpm;
unsigned long timeold;


void rpm_fun()
 {
   //Each rotation, this interrupt function is run twice, so take that into consideration for 
   //calculating RPM
   //Update count
      rpmcount++;
 }

void setup()
 {

   Serial.begin(9600);
   //Interrupt 0 is digital pin 2, so that is where the IR detector is connected
   //Triggers on FALLING (change from HIGH to LOW)
   attachInterrupt(0, rpm_fun, CHANGE);


   rpmcount = 0;
   rpm = 0;
   timeold = 0;
 }

 void loop()
 {
   //Update RPM every second
   delay(1000);
   //Don't process interrupts during calculations
   detachInterrupt(0);
   //Note that this would be 60*1000/(millis() - timeold)*rpmcount if the interrupt
   //happened once per revolution instead of twice. Other multiples could be used
   //for multi-bladed propellers or fans
   rpm = 20*1000/(millis() - timeold)*rpmcount;
   timeold = millis();
   rpmcount = 0;
   //Restart the interrupt processing
   attachInterrupt(0, rpm_fun, CHANGE);
   Serial.println(rpm, DEC);
  }

j'ai changer pas mal de fois la ligne:

rpm = 20*1000/(millis() - timeold)*rpmcount;

et aussi

attachInterrupt(0, rpm_fun, CHANGE); (par RISING,CHANGE, ect...)

mais je n'est jamais de bon résultat j'ai une gamme en hertz ou c'est très précis des que j'augmente ou que je diminue le signal sa me mais n'importe quoi

dans la gamme la plus précise j'ai des erreur de 10 a 20 rpm pas plus se qui commence a être intéressant

je voulez donc savoir quelle est la meilleur méthode pour calculer se type de signale

je pensez attendre que ma voiture soit remonter dans 5 ou 6 mois pour tester avec le vraie signal sortant de mon ecu

ou bien a l'aide d'un montage électronique de convertir se signale en hertz en entrer analogique 0-5volt se qui est peut être plus exploitable pour l'arduino ??

pour le logiciel qui créer mon signale j'utilise sa: VB_Generator_standalone

voila si quelqu’un a déjà traiter se type de signal est se type de situation est bien je suis preneur sur la méthode qu'il a employer pour traiter convenablement le signal

en vous remercient par avance si il y a d'autre point a éclaircir merci de me le faire savoir