Re: Nouveau projet allumage AEPL-duino.
Publié : 11 juin 2018, 08:08
Oui, le Boyer a bien deux capteurs mais à 180° et montés en série. Il n'y a qu'une seule info par tour moteur.
http://www.motos-anglaises.com/
https://www.motos-anglaises.com/phpBB3/
https://www.motos-anglaises.com/phpBB3/viewtopic.php?t=32244
Code : Tout sélectionner
// Le capteur à fourche SR 17-J6 contient un aimant en face, type saturé, sortie basse à vide,
// et haute avec une cible métallique. Il faut CapteurOn = 1, déclenche sur front montant.
Code : Tout sélectionner
if (valCorAv < 80 || valCorAv > 880) { // Shunt 0 ohm donne 15 ou pas de shunt ou pas de résistance donne 1015 et plus
modC1 = 0; // MM Shunt 0 ohm donne 15 correction = 0
Serial.print("+ 0"); // correction 0
Code : Tout sélectionner
//*************** Courbe Avance régime à renseigner
// Courbe d'avance type Triumph T140 1980 (750cc)****************************************************************
// Au régime moteur de (obligatoirement croissant):
int Na[] = {0, 500, 600, 700, 800, 900, 1000, 1500, 2000, 2500, 3000, 3500, 5000, 6800, 7000, 0}; // Courbe a (Triumph T140)
// degrés d'avance vilebrequin correspondant:
int Anga[] = {0, 5, 5, 5, 14, 13, 12, 18, 25, 29, 32, 33, 35, 35, 5, 0};
int Ncyl = 2; // Nombre de cylindres
const int AngleCapteur = 72; // Position en degrès (vilebrequin) avant le PMH, du capteur (Hall ou autre), coté distribution et allumeur c'est 36° pour toujours avoir AngleCapteur = 72° (vilebrequin)
const int CaptOn = 1; // CapteurOn = 1 déclenche sur front montant (capteur saturé) le capteur conduit quand il n'y a pas le disque qui fait écran à l'aimant
// CapteurOn = 0 déclenche sur front descendant (capteur non saturé). le capteur Hall conduit (donc 0 V) quand le disque aimanté passe devant Voir explications en fin du listing
//***** MULTICOURBES **** IL FAUT TOURNER LE SELECTEUR POUR SELECTIONNER LA COURBE D'AVANCE *******
// A la place de la courbe a, on peut sélectionner la courbe b, c, d ou e
// Un sélecteur rotatif et 4 résistances de 4K7, 18K (ou 22k), 47K et 100K font le job
// avec l'entrée configurée en Input Pull-up, ainsi s'il y a une coupure on reste sur la valeur par défaut
//*************** les autres Courbes Avance régime à renseigner si besoin
Code : Tout sélectionner
//************ Ces valeurs sont eventuellement modifiables *****************
// Ce sont Nkick Nplancher, TchargeBob , DsecuBob, Ndem, PasCorecAv
const byte Nkick = 3; // MM Nkick seuil du nombre de tours moteur au démarrage, utilisé pour le démarrage au kick et forcer l'allumage à 0° ******* Nombre de tours au kick *******
const int Nplancher = 500; // vitesse en t/mn jusqu'à laquelle l'avance est fixe à 0°, doit être supérieur à Ndem, au-dessus l'avance est celle programmée et avec correction
const unsigned long DsecuBob = 5000000; // Sécurité: bobines coupées après "DsecuBob" en µs, ex 5 sec pour laisser le temps de démarrer au kick après avoir mis le contact
const int TchargeBob = 7500; // temps de recharge bobine, ex minimum 7 ms bobines Lucas T140, 5 ms à 14,5 V U batterie pour bobine Bosch crayon (mesuré sur Clio 1.6L 16S)
const unsigned long TsecuKick = 1000000; // Sécurite: remettre à 0 N tours moteur si le moteur a calé, temps en uS, ex 1 sec
const int NgestBob = 1400; // Seuil du régime où isr Gest Bobine entre en action
const unsigned long Tdem = 200000; // Valeur de T au démarrage pour le premier tour moteur, exemple 200 ms pour 300 tr/mn
int PasCorecAv = 2; // MM pas d'avance pour correction, par ex 2°. Quand le sélecteur avance d'une position, l'avance croit de "PasCorecAv"
//*********************** Majoration temps de charge bobine en accélération ************************************
const byte MajorTchargBob = 1; // MM majoration du temps de charge bobine en phase d'accélération 1 en service 0 hors service
const int LimitMajorTchargBob = 10000; // MM limite du régime maxi de majoration temps de charge bobine ex : 10 ms = 6 000 tr/mn
const float KmajorTchargBob = 1.5; // MM Coefficient de majoration du temps de charge bobine en phase d'accélération
//*********************** Surveillance tension batterie ************************************
volatile unsigned int tension = 0; // valeur de A2 lue, tension batterie de 0 à 1023
volatile float Ubat = 0; // U batterie en Volt, de 0 à 15 V
volatile unsigned int fxUbat = 0; // Pour lecture U batterie avec virgule fixe (optimisation par rapport à virgule flottante)
//*********************** Multi-étincelles ************************************
// Si multi-étincelles désiré jusqu'à N_multi, modifier ces deux lignes
const int Multi = 1; // 1 pour multi-étincelles, 0 pour mettre HS
const int N_multi = 1500; // limite supérieure en t/mn du multi-étincelles
const int EtinMulti = 3; // Nombre d'étincelles après la principale en mode multi-étincelles
const float CoefTchargeBobMulti = 0.2; // Coefficient (0 à 1, ex 0.2 Bosch) appliqué au temps de charge lors d'un multi-étincelles, le temps de charge est plus court que pour la première étincelle
int N_Etin = 0; // Comptage nombre d'étincelles après la première