Hallo,
ich wollte hier mal mein Projekt "Elektronische Zündung mit Arduino" vorstellen. Kurz zur Vorgeschichte:
Ich habe mir vor knapp einem Jahr eine zerlegte Honda CB 250 K4 gekauft, die nun im Keller steht und restauriert wird (was aber noch längere Zeit dauern wird). Unabhängig davon hatte ich mir vor einem Jahr mal ein Arduino-Entwicklerset gekauft (für die, die mit dem Wort "Arduino" nichts anfangen können: Es handelt sich dabei um einen programmierbaren Microcontroller, mir dem man messen, steuern, regeln usw. kann). Bis vor kurzem hatte ich (außer einigen Spielereien) damit aber noch nichts sinnvolles gemacht. Das änderte sich mit der Honda, da kam mir die Idee, den Arduino für eine elektronische Zündung zu verwenden.
Im Internet hatte ich dazu in einigen Foren ein paar Ansätze gefunden, aber keine "fertige Lösung". Also habe ich mich daran gemacht, das selbst zu entwickeln (ich weiß, es gibt so was fertig zu kaufen, mich hat aber das Selbermachen gereizt). Da ich meine Brötchen mit Programmieren verdiene, war das für mich auch kein komplettes Neuland (obwohl ich dennoch einiges dabei gelernt habe).
Das erste Zwischenergebnis möchte ich hier mal kurz beschreiben. Wenn jemand Interesse hat, bei dem Projekt mitzumachen, stelle ich gerne den Arduino-Quellcode zur Verfügung.
Das fertige Projekt wird aus drei Teilen bestehen
1. Der Arduino-Steuereinheit
2. Einer "Zündelektronik", die die Signale der Steuereinheit so umwandelt, dass die Zündkerze auch zündet.
3. Ein Signalgeber mit einem Hall-Sensor (Magnetfeldsensor), der an die Nockenwelle angeschlossen wird und Informationen an die Steuereinheit überträgt, aus denen dann Umdrehungszahl, Zündzeitpunkt usw. berechnet werden.
Arduino-Steuereinheit
=====================
Die Einheit besteht aus einem Arduino UNO und einem LCD Shield (für die Anzeige von Daten). Hier mal ein Bild des Prototyps:
Bitte nicht am Kabelsalat stören, die meisten Kabel sind nur für die Verbindung zu einem Soundkarten-Oszilloskop (für Testzwecke) notwendig. In der Praxis werden nur 5 Anschlüsse benötigt: Plus, Masse, Einhang vom Hall-Sensor, 2 Ausgänge zu den beiden Zündspulen.
Das LCD-Shield hat auch einige Taster. Über zwei davon (hoch und runter) kann eine von 9 einprogrammierten Zündkurven mit verschiedenen Charakteristiken ausgewählt werden. Die gewählte Zündkurve wird dann auf dem LCD angezeigt. Jede Zündkurve ist intern durch 4 Datenpaare (Umdrehung und Frühzündungswinkel) definiert. Daraus berechnet das Programm dann eine Tabelle, aus der dann in Abhängigkeit von der Umdrehungszahl (genauer gesagt der Umdrehungszeit) eine "Wartezeit" (nach dem "Feuern" des Hall-Sensors am unteren Totpunkt) berechnet wird. Danach wird die betreffende Zündspule "geladen" und anschließend (über die Zündelektronik) die betreffende Kerze gezündet.
Über den SELECT-Schalter des LCD-Shields wird in einen KOnfigurationsmodus geschaltet, um den Hallgeber korrekt am unteren Totpunkt des ersten Zylinders einstellen zu können.
Die Programmierung der Steuereinheit ist fertig, mit HIlfe eines Soundkarten-Oszilloskopes habe ich geprüft, dass die Berechnungen im Programm auch stimmen. Der "proof of concept" ist somit erbracht.
Grundsätzlich könnte man das auch mit einem kleineren Arduino-Typ (z.B. Nano) umsetzen, dann muss aber eine andere Lösung für die Anzeige her (und entsprechende Änderungen im Code). Auch eine Anpassung für einen Einzylindermotor sollte problemlos möglich sein. Eine Verwendung mit einem Vierzylinder-Motor ist sicher auch möglich, dürfte aber einige größere Änderungen im Code notwendig machen.
Zündelektronik
===============
Hierzu hab ich einen fertigen Bausatz gefunden (http://www.velleman.eu/product…ountry=es&lang=de&id=8946). Diese Transistorzündung (es werden zwei Bausätze benötigt) wird zwar normalerweise in Verbindung mit mechanischen Unterbrecherkontakten verwendet, in meinem Projekt soll sie aber durch das vom Arduino erzeugte Ausgangssignal angesteuet werden.
Signalgeber
=============
Als Signalgeber soll ein auch im Automobilbereich verwendeter Hallsensor verwendet werden (http://hallsensors.de/Hall-Vane.htm), bei dem kein rotierender Magnet benötigt wird. Als Signalgeber stelle ich mir eine halbmondförmige Scheibe aus magentischem Material (Eisenblech) vor, die auf die Nockenwelle montiert wird. Wenn der erste Zylinder im unteren Totpunkt steht, gleitet der Halbmond über den Sensor, so dass das Magnetfeld abgeschirmt wird, was als "falling edge" vom Arduino gemessen wird. Wenn dann der zweite Zylinder den unteren Totpunkt erreicht (nach einer halben Umdrehung der Nockenwelle), steigt das Magnetfeld wieder ("rising edge"), da die Abschirmung des Magnetfeldes durch die Halbmondscheibe wegfällt. So kann man genau zwischen erstem und zweiten Zylinder unterscheiden.
Ich würde mich freuen, wenn mich jemand bei diesem Punkt unterstützen könnte. Ich verfüge nämlich nicht über die notwendigen feinmechanischen Möglichkeiten und Fähigkeiten.
Wer also Interesse hat, kann sich gerne bei mir per PM melden.