A l'origine les lateral n'ont pas de système d'avance automatique (centrifuge a depression ou électronique ) mais uniquement un système manuel qui a pour but de ce raprocher du 8° pour le démarrage et de remonter a une valeur moyenne fixe pendant tout les autres regimes moteur (que l'on soit au ralenti a un stop ou en plein régime).
Maintenant que c'est éléctronique ce sont des composant type pic ou autre qui mesure le regime de ton moteur et qui en deduit l'avance a mettre a l'étincelle. Je travail (quant j'ai le temps) sur un allumage a base de nano ou tout est bien expliqué.
Comment ça marche
Uniquement pour les esprits curieux, ces commentaires ne sont aucunement indispensables pour la réalisation du module.
Contrairement aux versions précédentes à base de Pic, grâce à la puissance de l’Arduino, l’avance est calculée en temps réel à partir des deux lignes de données de l’utilisateur ( N et Ang ) : on supprime la phase de saisie de la courbe avec un logiciel spécifique (sous DOS) ainsi que la phase d’assemblage. Le programmateur de Pic disparaît lui aussi.
La courbe d’avance est une suite de segments de droite fixant l’angle d’avance en degrés en fonction du régime en tours/minute.
Dans setup(), la fonction Init() convertit ces couples en deux tableaux de coefficients C1 et C2 . A chaque couple (N,Angle) correspond un couple (C1,C2).
La période T est mesurée en microsecondes entre deux passages de la cible devant le capteur au moyen de la fonction standard micros().
La fonction principale loop() attend le front du capteur pour calculer T, puis situer T sur le segment d’avance approprié. Ceci permet d’extraire le couple (C1,C2) associé pour le calcul de D
D = T*C1 + C2 ( ici encore l’équation d’une droite mais dans le domaine temporel cette fois)
Le calcul du délai D à observer avant l’étincelle est réduit à une simple multiplication suivie d’une addition.
Le temps de calcul à compenser se trouve dans tcor= 120/140 µs. Cette valeur a été retranchée de C2 lors de son évaluation avant stockage. La valeur tcor a été mesurée avec un oscilloscope numérique de precision.
La précision est correcte puisque à 7000 t/m, et 28° d’avance, le délai théorique est 408 µs et le délai mesuré au scope est 410 à 415 µs.
A ce régime, 1° correspond à 28µs, l’erreur est donc bien inférieure à 1°.
Si Dwell = 1,le temps de coupure de la bobine (donc d’étincelle ) est fixé à 1 ms, ce qui maximise le temps de charge.
Pour Dwell = 2 ou 3, voir le détail dans l’Annexe 5.
Une interruption est générée par overflow de Timer1 toutes les secondes pour s’assurer qu’une étincelle a bien été émise, sinon le moteur est considéré arrêté et le courant dans la bobine est coupé. Si le moteur tourne, l’interruption de Timer1 commande le rétablissement du courant dans la bobine après le délai Davant_rech, calculé selon le type de dwell .
Concernant le schéma, la résistance de charge du capteur est la résistance de PullUp interne de l’Arduino.
Et finalement ces 150 lignes de code C ( C-Arduino, hors variables et commentaire) font nettement plus et plutôt mieux que 300 lignes de code assembleur (Pic) + 250 lignes de Basic pour la saisie de la courbe d’avance...
http://a110a.free.fr/SPIP172/article.ph ... rticle=142
Pour ta deuxième question ce serais possible mais compliqué a réaliser:
-Démonter les culasses
-Faire un support rotative a vitesse variable pour faire tourner la roue arrière
( ça avec une moteur et un variateur )
-Mettre une vitesse
-Mesurer et tracer le cylindre avec un feutre d’électricien le 38°
-Faire tourner la roue arrière jusqu'au regime moteur correspondent a 38°
-Vérifier avec un lampe stroboscopique si le piston est bien au niveau du trait.
Tu vois pas vraiment simple, je pense que ce serai plus simple de percer la cloche.
