Ce site est devenu
et cet article
http://loutrel.org/aeduino.php
**Programmable electronic ignition DIY
Christophe
belle mise en oeuvre et cela fait toujours plaisir de voir un utilisateur satisfait...Je te cite :
"Petit bonus. Ayant la flemme de faire un disque gradué pour caler précisément l’avance statique (45° entre top capteur et PMH), j’ai calé au pif et démarré. N’ayant pas de lampe strobo fiable, j’ai ajouté une LED de 3W allumée par l’Arduino au moment de la coupure du courant bobine, elle sert de lampe strobo pour affiner le calage."
Cette idée est excellent et te la pique immédiatement....Elle doit permettre d’éviter le traçage du repère à 45° avant le PMH sur la poulie de vilo, suivi du calage en statique du capteur pratiqué habituellement avec un voltmètre ou une Led.
Je pense l’utiliser comme suit : on programme une courbe avec 0° à 1000 et 2000 t/mn par exemple.On met le capteur non bloqué vers 45° avant PMH, au pif.On démarre ( en ajustant à la main le capteur si nécessaire ) et quand le moteur tourne, on amène le repère de PMH sur l’index du carter, soit une avance de 0°, toujours en ajustant à la main le capteur.On bloque le capteur en position car il est alors parfaitement à 45° avant le PMH.
La modif logicielle est très simple.
Bonjour,
Oui, c’est tout à fait ça. En fait je n’ai pas eu à faire une courbe spéciale à 0° car
sur une Fiat 126, il y a un repère sur la poulie vilo et 2 repères lui faisant face sur le carter. Un à 0° l’autre à 10° d’avance.
la courbe de la Fiat est à 10° de 500tr à 12000tr je n’avais donc qu’a viser le repère 10° au ralenti.
Pour l’utiliser sur n’importe quel véhicule, le mieux est effectivement de programmer une courbe à 0°. On peut se servir d’une des courbes B et C sélectionnées par D8/D9.
Pour ce qui est du soft, voici ce que j’ai fait :
D = D - tflash ;[....]
digitalWrite (Flash, 1) ; // Flash de calage
delayMicroseconds(tflash) ;
digitalWrite (Flash, 0) ;
digitalWrite(Bob, 0) ; //Couper le courant, donc étincelle
digitalWrite(Led13, 0) ; //Temoin
Mais, à la réflexion, il aurait été tout aussi simple de faire comme suit :
digitalWrite(Bob, 0) ; //Couper le courant, donc étincelledigitalWrite(Led13, 0) ; //Temoin
digitalWrite (Flash, 1) ; // Flash de calage
delayMicroseconds(tflash) ;
digitalWrite (Flash, 0) ;
Cdt, Christophe
Bonjour,
Bravo et merci pour le développement de cet AEPLduino ! J’avais, il y a quelques années, commencé à monter un prototype d’AEPL à base de PIC, mais je n’étais pas arrivé au bout (il est assez frustrant de faire un montage sans maitriser le langage de programmation utilisé !).
Je viens donc de démarrer ma Fiat 126 avec un AEPLduino et ça marche super !!! Pour le moment, j’ai programmé la courbe d’origine selon la RTA, il me reste à l’optimiser et à trouver un boîtier un peu plus étanche.
Pour ceux que ça intéresserait, je mets quelques photos à cette adresse : https://atlas.noho.st/wiki/doku.php ?id=technique :mecanique_auto :allumage_electronique
Cordialement, Christophe G.
Bonjour "Moto Dniepr",
— 3 ohms sous 12 V (4A) est identique à 1.5 ohms sous 6 V, il valait mieux le preciser, j’ai modifié le texte, bonne question, donc...
— Pour le capteur 45° avant le PMH vilo = 22°5 avant le PMH allumeur , est probablement l’origine de tes problèmes d’ avance.
— Je suppose que ce décalage de capteur est aussi à l’origine de ces eructations regrettables....
Je lis avec un très grand intérêt vos differentes rubriques et me suis laissé séduire par la fabrication d’un aeplduino pour une moto flat Russe. L’appareil est sur son banc d’essai et j’ai quelques questions à vous poser :
- La moto étant en 6 volts, j’ai une bobine de 6 volts de 1,5 ohms. Vous indiquez l’obligation d’avoir une bobine 6volts d’au moins 3 ohms, je suppose pour ne pas griller le nano ou le IGBT. Puis je rajouter une resistance balast de 1,5 ohms en serie à la bobine ?.
- Malgrés tous mes essais dans la programmation du Nano, je n’arrive pas à dépasser 15° d’avance à l’allumage à plein régime, mon 1GT101DC étant, dans la programmation, à 45° du PMH et le moteur etant un bicylindre flat à étincelle perdue type 2cv, les 2 cibles etant en fait un axe de 8mm noyé dans un rotor en alu cylindrique, le tout fixé sur l’arbre à cames. Cette impossibilité à dépasser les 15° d’avance arbre à came ( 30° vilo) est elle due à la trop faible resistance de la bobine (1,5 ohms) ?, ou à autre chose.
- Une dernière question : est il possible de supprimer, lorsque le moteur cale, la dernière étincelle qui survient systématiquement 1 seconde apres l’arrêt du rotor cible ? et qui dans une certaine phase du cycle du moteur est susceptible de déclencher une derniere explosion un peu aléatoire. Ou bien cette dernière étincelle est elle inhérente à la conception de l’aeplduino ?.
Merci de votre reponse.
Bonjour Sébastien
eh bien ton enthousiasme fait chaud au cœur du rédacteur de ces notes techniques, merci... !
Effectivement ce logiciel accepte tout nombre de cylindres, avec possibilité de cibles sur le vilos si le nombre de cylindres est pair mais l’allumeur est obligatoire pour les nombres impairs ( sauf le monocylindre, pour lequel on génère une étincelle perdue).
La prise en compte de la dépression par l’Aepl-duino a été réalisée par une équipe de talent sur des moteurs Panhard.
Ajouter une entrée venant d’un détecteur de cliquetis ne poserait pas problème : on peut alors facilement retrancher quelques degrés pendant quelques secondes.
Bien amicalement
Bonjour Philippe,
Il y a quelques années nous nous sommes croisé sur ce forum (ou par mail) je ne me souviens plus, à propos de L’AEPL pour les 5 Cylindres Audi .... Je viens de repasser sur ton excellent site web et je viens de découvrir l’AEPL Duino !!!! un mot résume ma joie, mais ne peux l’écrire !
J’ai téléchargé le code, car j’ai lu nb de cylindres sans forcement voir de limitations. Dans le code j’ai vue que tu avais prévu le coup pour des moteurs bancales (3, 5, cylindres) ..... :-) MERCI !
Je vais essayer sur mon 5 audi (2 litres atmo) dés que j’aurais la voiture sous la main. En plus mon allumeur intégre déjà un Hall, puisque c’est lui qui commande le module (TZ) d’allumage. donc il faut juste que je vire le module et que je le remplace par AEPL-Duino. (et l’avance à dépression bien sur).
En lisant ta doc j’aime beaucoup le potard qui permet de décaler la courbe d’avance, comme j’ai aussi un 5 cylindres Turbo (UR quattro) et que son module d’allumage (complexe) est rare et pas modifiable je me posais la question de remplacer la consigne du potard par un module MAP (qui me permettrait de décaler la courbe en fonction de la pression ...) et donc éviter le cliquetis. ou de switcher sur des courbes différentes (B, C) adapté au fonctionnement en mode suralimentation ...
Vue ton code et vue cette fonction décalage ... pourquoi pas également récupérer une info cliquetis pour éviter de fumer les gamelles avec trop d’avance. en utilisant un module GM (20€) qui traite le signal et qui fourni une info nettoyée parfaite pour trigger une entrée du Duino. (déja vue ailleur, et je dois avoir la doc).
Bref je me prend à rêver en ayant lu ton code (je dois y revenir pour comprendre certaine chose) mais je vois pas pourquoi ce ne serait pas possible.
En tout cas je vais essayer soon,
Merci pour cette merveille :-)
Cordialement,
Sébastien Laubréaux
Bonjour, Ce site est une référence pour moi depuis déjà longtemps. Mais là c’est le bonheur total !!! L’année dernière je me suis interessé à l’arduino et au code (C++) dans l’espoir de réaliser un allumage programmable sur la base d’un UNO. Mais ...... j’ai pas réussis. Manque d’expérience et de connaissance.
Bref, j’ai passé plusieurs heures à lire votre code avec beaucoup d’attention, et avec un grand sourire ! La bonne nouvelle (pour moi), c’est que la philosophie de ma tentative de code était sur la bonne voie. La mauvaise c’est que je comprends toujours pas bien le fonctionnement des timers.
J’ai donc une question : la loop est cadencé à quelle fréquence ? J’étais convaincus qu’il fallait appeler une interruption hardware (pour la détection de la cible) pour être précis.
PS : un topics sur lequel j’avais partagé mon projet http://forum.arduino.cc/index.php ?topic=307249.0
Bonjour ww67.. ?
le rouge de la confusion s’étant effacé, je te remercie de ces commentaires flatteurs mais venons en au fait :
dans la fonction principale (loop()), effectivement je n’utilise pas les interruptions pour mesurer la période du signal du capteur.Chaque fois que cela est possible, il est plus sur et plus facile d’utiliser le polling (scrutation en bon Anglais).Donc la première ligne de loop() attend tout simplement l’arrivée d’un front.Quand il arrive, on calcul le délai avec le front précédent, c’est à dire la période T.
L’interruption de Timer1 est utilisée, par contre, pour définir le délai avant reconnexion de la bobine, variable suivant le dwell désiré par l’utilisateur.
As tu jeté un coup d’oeil sur les 2 macros ps et pv qui sont des points d’arrêt, vraiment utiles pendant la mise au point ?
Elles sont expliquées dans http://a110a.free.fr/SPIP172/article.php3 ?id_article=144
PS Merci de vérifier ton lien qui semble mort
Bonjour Steff
une simple recherche sous Google te donnerait ce qui suit...mais je suis sympa...
Tu vas sur https://code.google.com/archive/p/arduino-timerone/downloads, et prends la première ligne.
Tu extraies et place le tout sous :
ProgramFiles(x86)\Arduino\libraries où tu trouveras les librairies de base déjà installées, comme LiquidCrystal pour les LCD.
Si tu n’as pas un PC sous Win 7, il suffira au préalable de localiser le répertoire Arduino\libraries.
Bravo pour votre site et votre inventivité, c’est un vrai régal de vous lire, je vous avez posé des questions sur aepl-si et voici que vous sortez un nouvel allumage avec arduino nano.
Juste 2 questions sur le montage AEPL- duino avant de me lancer :
Le montage fonctionne-t-il réellement en 6 volts ?
Ma bobine 6 volts a 1,9 ohms au primaire et 7,95 kohms au secondaire ( type 2cv ), cela peut il fonctionner en sachant que la masse est négative ?. Le tout pour faire fonctionner un allumage de bicylindre à plat latéral Russe de type Dniepr k750 qui n’a même pas d’avance mécanique à l’allumage.
Voir 2 sites dont je n’arrive pas à inserer l’URL :
Cb 125 k le bon forum.com : adieu vis platinées bonjour effet hall
œil de Moscou du belge page 15 à 18 et autres...
Merci de la reponse et encore bravo.
Bonjour ?
merci pour tes louanges, c’est trop, je rougis...
Pour tes site avec un copier/collé dans Google je n’ai pas eu de problème d’accès, sous Chrome en tous cas.
http://cb125k.lebonforum.com/
http://www.est-motorcycles.fr/forum/viewtopic.php ?t=3126 pour l’oeil de Moscou
Ta bobine de 2 ohms environ sous 6V donnera 3A ce qui est parfait.
Mes essais sous alimentation variable du Nano, entrée directe sur la patte Vin (surtout pas de régulateur ) , et mesure de la tension sur la patte 6 du processeur 328 P (Vcc) ont donné :
— Vin =4.5V Vcc= 3.5V un peu juste pour la précision de l’horloge à 16MHz du Nano, mais rien de vital (Noter que le 328P fonctionne dès Vcc = 1.8V mais à 4MHZ seulement)
— Par contre dès que Vin = 4.9V, Vcc= 3.9V et là c’est suffisant, donc tout doit aller bien même à 5V sur la batterie.
Bonjour et un grand merci pour ce montage avec Arduino ! J’y pensais depuis un bon moment, je regardais d’autres montages Arduino d’allumages mais là ça paraît être l’idéal. J’ai hâte d’essayer sur des motos : Triumph, Norton (anciennes), voir sur le MAC. C’est vrai que l’avantage du Nano (et autres) c’est qu’on le trouve facilement et à petit prix. Pour les composants il faut guetter les -20% chez Conrad ça revient périodiquement, par contre le capteur à effet Hall SR17C-J6 est avec 7 semaines de délai en ce moment. Il doit y avoir moyen de trouver du capteur automobile à prix raisonnable. Ma préférence sur la moto serait de monter le capteur, comme en auto, en bout de vilebrequin, et de conserver l’ancien allumage (coté distribution) en dépannage éventuel...
Encore merci pour cette réalisation et de partager le code !
Bonjour Michel et merci pour tes appréciations !!
Le MAC c’est pour compiler le programme ou le nom d’un engin qui roule ?
Si tu cherches des capteurs SR 17C il semble que Farnell en ait 9 en stock à ce jour, 11€ et quelque HT + port.
http://fr.farnell.com/honeywell-s-c/sr17c-j6/capteur-magnetique/dp/2445923
Un allumage à chaque bout du vilo ? Bonne idée, et le coté électronique dépannera le standard...
C’est à peine une boutade car sur la Berlinette (1600S de 1971, 1796cc) je roule avec un Aepl standard depuis plus de 10 ans et c’est un des rares composant qui n’ait pas offert "une opportunité d’amélioration", comme on dit pour les pannes dans le petit monde Alpine....
Bonjour, Le MAC pardon c’est http://www.motos-anglaises.com/. Un allumage électronique en bout de vilo mais en conservant celui d’origine en bout d’arbre à cames.
En attendant l’arrivée du Nano, j’ai fait un essai statique avec l’Arduino Uno, ça fonctionne très bien, mais c’est vrai que la (les) bobine(s) risque de chauffer à bas régime. Déjà j’ai mis un temps plus long d’étincelle 3ms mais ce n’est pas suffisant à bas régime et une mauvaise solution (à haut régime). J’avoue que je ne sais pas si c’est compliqué d’ajouter un temps de dwell comme dans certains programmes d’allumage, pour pouvoir utiliser des bobines modernes à faible résistance ou simplement éviter sur des véhicules anciens à faible puissance de charge de gaspiller de l’énergie électrique.
Comme je l’ai mis sur le MAC il est intéressant pour la courbe d’avance d’avoir une auto-régulation du régime de ralenti, c’est juste quelques points en plus à ajouter aux avances et régimes donc très facile dans ce programme. Un exemple un peu grossier du principe : //Au régime moteur de : const int N[] = 0, 500, 600, 800, 900, 1000, ....................., 7000, 0 ; //degrés d’avance vilebrequin correspondant : const int Ang[] = 0, 0, 8, 12, 8, 12, ........................., 28, 0 ;
Le régime de ralenti va être régulé vers 900tr/mn, si le moteur veut descendre à 800 l’avance augmente ce qui tend à l’accélérer...
Un grand merci car ça fonctionne déjà fort bien !
Michel
Bonjour Michel
ça fait plaisir d’avoir des commentaires chiffré de surcroît sur ce montage ! Tu as bien raison pour la gestion du dwell, c’est à dire limiter à 3 ou 4 ms le passage du courant dans la bobine par cycle.Je l’ai réalisée sur la version Aepl Jumo, je me cite :
"Contrairement aux bobines classiques dont le primaire mesure environ 3 ohms, ces bobines jumo ont une très faible resistance, de l’ordre de 0,6 ohm. Sous 12 volts, le courant dans une bobine classique est de 4 A, mais 20A dans une bobine jumo ! A cette intensité, la puissance dissipée dans une telle bobine serait 20*12= 360W, traduisez qu’elle part en fumée en quelques secondes ! La version standard de l’Aepl gère le courant en l’interrompant 1ms seulement entre deux étincelles. Ici ce n’est pas envisageable, donc il a été développé une gestion de courant plus complexe : le courant n’est rétabli dans la bobine que 3ms avant la prochaine étincelle, soit avec un délai de T-3ms après étincelle. La constante de temps de ces bobines est faible, le courant monte rapidement, quasi linéairement, à raison de 1.3A/ms environ. En 3ms on atteint le courant maxi de 4A environ. La consommation globale des deux bobines est proportionnelle au régime moteur, moins de 1A à bas régime, et environ 2A à 6000t/mn. Après les premiers essais, l’algorithme de la gestion du courant a dû être affiné pour tenir compte des accélérations ! En effet, durant une forte accélération, la période diminuant rapidement, il faut en tenir compte pour conserver 3ms de temps de charge. Si T est la période actuelle et Tprec celle précédente, le délai est T-(Tprec-T)-3ms = 2T-Tprec-3ms
Inversement, à la deceleration,la période augmente d’une période à l’autre, le courant est rétabli plus tard, régulant le courant moyen dans la bobine."
Le problème est que je galère pour programmer ça sur l’Arduino, les Timers se mélangeant un peu les pinceaux. Donc patience, il va bien falloir que j’y arrive et si une bonne âme veut m’aider (le code ne fait que 70 lignes, commentées) je suis preneur...
Ta courbe auto régulée à bas régime me donne l’idée de l’essayer sur l’Alpine pour régler les Weber un peu plus pauvres au ralenti, et diminuer ainsi l’encrassement des bougies... ??? Facile à essayer je te tiens au courant.
Bonjour,
Quelques tests aujourd’hui, j’ai essayé jusqu’aux limites haute (RAS ça coupe à 7 000tr/mn), et basse ça fonctionne à 60 tr/mn avec 0° d’avance, ce qui est suffisamment bas pour le démarrage au kick d’une moto. C’est en fait la tempo de protection à 1 sec qui limite, sinon on peut descendre à 10 tr/mn il y a encore 0° d’avance comme prévu, encore plus bas l’avance augmente un peu. Mais bon 10 tr/mn il faut vraiment être endormi sur le kick !
Pour le code je suis débutant et j’ai du mal à bien comprendre toute l’architecture, si je peux aider pas de soucis, mais peut-être que quelqu’un qui travaille sur son programme pour Panhard pourrait aider dans quelques temps... (il a déjà ajouté la dépression et j’ai testé ça fonctionne)
J’ai fait quelques mesures sur l’allumage électronique d’origine Lucas d’une Triumph T140, avec les bobines d’origine c’est vraiment pas terrible : La durée d’allumage n’est que de 240 µs, donc loin de 1 ms que je pensais un peu juste. Je me suis demandé si je ne me trompais pas mais après plusieurs mesures ça donne sensiblement la même chose. La surtension primaire est de 250 V (maxi). La bobine est alimentée après 540 µs (environ). La batterie est bien chargée, 13 V, et moteur tournant à 1500 tr/mn la tension est de 14,4 V.
Le remplacement des bobines me paraît une nécessité pour avoir une meilleure combustion, l’allumage électronique seul ne fait pas tout.
J’ai mis sur le MAC des informations sur la gestion de l’avance et la puissance de l’allumage pour Norton, que j’avais vues sur un forum US. Intéressant je pense.
Pour les essais sur l’Alpine ça devrait fonctionner, il y a une "bosse" de 5° environ pour réguler le ralenti, peut-être il faudra en mettre un peu plus si nécessaire. Bon courage
Michel
Bonjour Michel
eh bien tant mieux si ça coupe à la ligne rouge comme prévu et aussi si ça évite les retours de kick...Tu peux d’ailleurs augmenter le temps de protection en changeant Timer1.initialize(1000000) en 2000000, 2s par exemple (ce sont des µs) en fin de fonction Init().
J’encourage la lecture du "sketch" qui ne fait que 50 lignes de code (hors variable et commentaires, au besoin en revenant plus tard sur la fonction Init() un peu plus complexe).
Le code est très linéaire et on capte vite comment ça fonctionne.
Revenant à tes mesures, le temps d’étincelle de 240µs parait très faible pour un allumage inductif et trop long pour un CDI (décharge capacitive) ....bizarre.