

Hier eine kurze Auflistung der Änderungen:
-Verbessertes Handling der Spulen-Ladezeit bei hohen Umdrehungszahlen (Ladezeit wird autom.reduziert, damit der gesamte Zündvorgang in die Zeit zwischen den beiden Signalen des Hall-Sensors passt)
-Verbessertes Handling bei sehr geringen Drehzahlen (z.B. beim Anlassen per Kickstarter)
-Berücksichtigung der Zeit (ca. 40 µs), die die für die jeweilige Berechnung des Zündzeitpunktes benötigt wird (diese muss für ein korrektes Ergebnis von der Warte- bzw. Ladezeit abgezogen werden).
Für die Tests hab ich dann noch einen einfachen Signalgenerator für einen Arduino Uno geschrieben, der das Signal simuliert, das normalerweise vom Hall-Sensor auf der Nockenwelle geliefert wird. Früher hab ich das über ein PC-Programm gemacht. Dessen Signal wurde dann über den PC-Kopfhörerausgang und einen kleinen Verstärker auf den Arduino Pro Mini geleitet. Das waren mir aber zuviele Zwischenschritte, die jetzige Lösung mit dem Arduino Uno als "Nockenwellen-Simulator" ist viel direkter. Hier ein Bild der Testumgebung (links: Arduino Uno, rechts oben: Platine mit Arduino Pro Mini). Die drei Leitungen (schwarz, rot, grün) gehen zum Line-In-Eingang des PC, von dort zum Oszilloskop-Programm.
Hier mal zwei Beispiele (180°-Twin, d.h. asymetrisches Zündverhalten), grün ist das Signal von der Nockenwelle, rot das vom Arduino berechnete Signal, das auf die Zündpule gegeben wird (steigende Flanke: Spule wird geladen, abfallende Flanke: Spule zündet).
Beispiel 1: RPM=4000 Beispiel 2: RPM=9000 Deutlich wird das "Wandern" der der roten Kurve nach links (wegen größerer Frühzündung) und die Reduzierung der Ladezeit ("Plateau" der roten Kurve), die notwendig ist, weil sonst die Zündung nicht innerhalb des Zeitfensters erfolgen würde.
Die nächsten Tage werde ich mal einige Tests mit einer Signalaufnahme an der Kurbelwelle machen. Ein Forumsmitglied (goob) hat mich nämlich darauf hingewiesen, dass u.U. nur eine Konstante im Programm geändert werden muss, um es auch für eine solche Konstellation nutzen zu können.