Ordi : Explication sur la mesure d'allumage

Briefing

Dans le cadre du projet de l'ordinateur de bord pour voiture de collection, j'ai developpé une entrée compte-tours à partir de l'allumage d'un moteur essence, relu par la carte Acquisition.
Et puis comme l'électronique c'est cool, je me suis dit que d'ajouter la mesure de l'avance à l'allumage serait sympa.

2016 : Compte-tours sur un rupteur

Présentation d'un allumage à rupteur

schema allumage Sur le schema ci-contre (source wikipedia) on voit que la bobine est en fait un transformateur avec le primaire et le secondaire reliés à la masse (toutes les masses étant communes, bien sur !). On voit que le rupteur est au primaire de la bobine, donc sur le circuit 12V. Du coup, en théorie dans le plus beau des mondes, on devrait avoir un signal 12V carré avec quelques rebonds à cause du rupteur, mais un signal carré quand même, facile à traiter.

Le Problème

oscillo etincelle 200V Le problème, c'est que dans le vrai monde, on a un retour de l'étincelle sur le primaire de la bobine, d'environ 200~250V. L'image ci-contre est un relevé du rupteur de mon estafette au ralenti. J'ai utilisé un pont diviseur pour avoir une echelle verticale de 100V/division (soit 250V de pics). Je rappelle quand même que de l'autre coté, sur la bougie, la tension monte à 10~15 kV !
Il faut donc trouver un filtre électronique pour filtrer le 250V et sortir du signal le carré 12V qui nous interresse. Comme on aime bien le challenge, il faut penser que ça peut changer d'une voiture à l'autre…
On note que les pics sont espacés de 43 ms environ, ce qui fait 23 Hz, ce qui fait à raison de 2 étincelles par tours 697 trs/minutes… on est bien sur le ralenti de l'estafette ;-)

Question de fréquence

oscillo etincelle On va déjà observer les fréquences de tout ça. Ci contre, une sonde d'oscilloscope placée sur le rupteur de mon estafette, en direct, à 20V/division verticale (sonde à facteur 10)

  • On observe sur le signal ci-contre une fréquence à l'ouverture du rupteur (front montant 12V) de 6000 Hz environ. C'est ce phénomène qui atteind 250V
  • On observe aussi une fréquence à l'ouverture du rupteur (front descendant 12V) de 2000 Hz environ. Cette perturbation est plus modérée, environ 70V
  • Moteur : sur un 4 cylindres, à 2 étincelles par tours, on est donc à 266 impulsion/seconde à 8000 trs/minutes (ce qui est déjà beaucoup !)

Un peu de maths

courbe gain Il faut donc laisser passer le 12V à 266Hz et bloquer le 250V à 6000Hz ainsi que le 50V (frond descendant) à 2000Hz.
Un filtre passe bas du 2nd ordre avec une fréquence de coupure vers 300Hz doit faire l'affaire. Ci contre, j'ai placé dans un fichier excel les 3 valeurs de tension à leur fréquence respectives. J'ai placé la courbe de gain du filtre souhaité simulé en dessous. La courbe rouge ce sont les 3 pics en fréquence à l'entrée du filtre, et en vert à la sortie... Celui qu'on veut garder, c'est le plut petit pic, celui à 266Hz, celui que l'on souhaite conserver. Donc, ça sent bon !

Un peu de simulation

maquette adaptation eteincelle Comme je compte produire des millions de cartes ;-) Il faut bien faire les choses. Je vais donc confirmer mes calculs dans LTSpice. (un logiciel de simulation électronique). Je crée donc le schéma complet que je compte reprendre sur ma carte, en particulier avec une diode zener de protection en parallèlle de la première capacité.
Derrière le filre il y a aussi un passe haut qui permet de rabaisser le signal, sans quoi, à cause des pics à 250V notre signal ne serait pas entre 0 et 12V mais plutot entre 30 et 42V par exemple. (rappel : un passe bas est un moyenneur).

simulation avant Ci-contre, c'est la forme simulée du signal à l'entrée. C'est une supperposition d'un carré 12V à 500Hz (soit 15 000trs minutes sur un 4 cylindres ou 8000 trs/minutes pour un V8), avec une pertubation à 10kHz à 250V. (la fréquence n'est pas la bonne, on fait ce qu'on peut)

simulation filtree

Et maintenant, c'est la superpoistion du signal d'entrée avec le signal de sortie (en rouge). On voit que les perturbations sont très bien amorties, il ne reste qu'un pseudo-sinus à la fréquence du carré de 12V. Et voila.

Intégration dans la carte Acquisition

carte filtre Ici, j'ai reporté le schéma dans la carte Acquisition. La première résistance n'est pas intégrée, elle doit être le plus près possible du rupteur.

oscillo carte filtre 01Ci-contre le signal du rupteur, et celui à la sortie du filtre sur la carte pour de vrai dans l'Estafette. Le front montant ne présente aucune oscillation, et le plateau est très propre, à une valeur de 4V (le STM32 est 5V tolérant)

oscillo carte filtre 02Même chose en zoomant, le signal de sortie du filtre est très propre.

2021 : Ajout de l'avance à l'allumage

Principe

Le principe de la mesure de l'avance à l'allumage est de mesurer le temps entre l'étincelle et le point mort haut (PMH). Le passage du moteur au PMH survient après l'étincelle, puisque c'est une avance.

Capteur PMH

volant moteur Pour cela il faut rajouter un capteur, pas le choix. Un capteur à effet hall, encore un, est tip top dans ce cas. On peut le mettre n'importe où, pourvu que l'on connaisse sont écart avec le PMH. Ensuite je colle un aimant sur la poulie villebrequin. L'aimant doit passer devant le capteur AVANT l'étincelle sur le premier cylindre. Donc environ 50 à 80° avant le PMH. Cette avance est importante.

Acquisition

scope allumage 01 Je modifie donc le programme de la carte Acqusition. Ci contre, on observe l'entrée compteur tours (l'aimant sur la poulie) en bleu et le rupteur en jaune. On a bien 2 crénaux rupteur par crénau moteur. On note qu'à 4000 tr/minutes, 1° représente un temps de 40 µs (40 microsecondes). Il faut donc être rapide.

scope allumage 02 La carte mesure le temps entre le passage de l'aimant (avant le PMH donc !) et la première étincelle. Il ne reste plus qu'à faire un produit en croix avec : AVANCE = TEMPS * 360 / VITESSE (vitesse en Hz, et non pas en tours minutes) et voila… aux corrections près…

Première correction : le retard à la mesure

scope allumage 03 Tous les capeurs ont un temps de propagation. C'est le temps qu'il mettent à réagir. Les entrées de la cartes acquisition aussi, et comme les entrées sont différentes pour le rupteur et le capteur à effet hall, alors les temps seront différents. Pour illustration, ci contre, le temps de passge dans le filtre du CTP0. Il y a d'autres temps cachés un peu partout. Ce retard est a ajouté à la mesure (c'est un temps).

Seconde correction : la position de l'aimant

volant moteur On le sait, l'aimant n'est pas sur le PMH. Et on ne sait pas tout à fait à quel moment le capteur va le detecter. Ce retard est a ajouté à la fin du calcul (c'est un angle)

Formule corrigée

AVANCE = ((TEMPS + retard à la mesure) * 360 / VITESSE) + position de l'aimant

courbe allumage Pour trouver le retard à la mesure et la position de l'aimant de manière précise, il faut faire une mesure au stroboscope. Il est possible, comme c'est le cas sur l'estafette, que la courbe réelle soit loin de la courbe théorique. Avec la formule ci dessus, on ajuste les paramètre pour avoir la courbe de relevé de l'ordi superposée à celle du stroboscope. Ici, j'ai retard à la mesure = 2,2 ms et position de l'aimant = 70° (donc pas tout à fait 76° de la photo). Voila il faut aller renseigner les constantes TimeCTP0 et DegresOffset dans param.py !

Détecteur d'étincelle manquante

appli spark detect J'en profite pour mettre un compteur d'étincelle dans l'application embarqué du STM32 de la carte acquisition. Cette information est comparée au nombre de tours moteur, et comme on connait le nombre d'étincelles par tour, on peut alors savoir s'il manque des étincelles. J'ai ajouté un voyant pour ça sur le tableau de bord.

NÉNÉSite 1999-2020 J.Zehnne Tout ce site et ses composants sont faits sur Mac