Seite 1 von 18

Elektronische Zündung auf Arduino-Basis

Verfasst: 8. Sep 2017
von Emil1957
Hallo,

ich beschäftige mich schon seit einiger Zeit mit der Entwicklung einer elektronischen Zündung auf Arduino-Basis. Ich hab dazu auch schon im allgemeinen Arduino-Thread (viewtopic.php?f=43&t=7451&hilit=arduino&start=130) einige Informationen und Testergebnisse gepostet. Seit dem hat sich lange nichts getan (wegen Schrauberei), aber da das Wetter schlechter und die Tage kürzer werden, braucht man ja eine andere Beschäftigung und da habe ich mich mal wieder dranbegeben und angefangen, eine Platine zu entwerfen. Das ist nun relativ weit fortgeschritten, so dass ich es für sinnvoll betrachte, dazu einen eigenen Thread aufzumachen.

Für diejenigen, die die Beiträge im Arduino-Thread nicht alle lesen wollen, hier nochmal eine kurze Zusammenfassung:

-Hallsensor und geeignete Steuerscheibe (Geometrie hängt von Motortyp ab (1- oder 2-Zylinder, Gegen- oder Gleichläufer)) an Nockenwelle
-Aus den Hallsignalen wird die Umdrehungszeit der Nockenwelle berechnet
-Damit wird in einer gespeicherten Zündkurven-Tabelle die Vorzündungszeit berechnet
-Über einen programmierten Timer wird dann die Vorzündungszeit minus "Dwell time" abgewartet (nach Hallsignal)
-Dann wird die Zündspule "geladen" (mit definierter "dwell time" von 1500 oder 1000 µs, hängt von Umdrehungszahl ab)
-Am Ende der dwell time wird gezündet
-Der Ladevorgang für die Spulen wird durch IRGBs (INSULATED GATE BIPOLAR TRANSISTOR) vom Typ IRGB14C40L gesteuert
-Die Berechnungen finden natürlich im Arduino statt, aus Geschwindigkeitsgründen ist alles in Integer-Arithmetik umgesetzt
-Über einen Taster kann eine von mehreren hinterlegten Zündkurven ausgewählt werden.

Wenn jemand die Schaltung nachbauen möchte: Ich stelle alle Unterlagen (Platinenlayout, Programmcode) gerne zur Verfügung, schickt mir einfach ne PN.

Den unten gezeigten Platinen-Entwurf habe ich mit der Fritzing-Sofware gemacht, leicht zu bedienen und für die Zwecke reichts. Ich muss dazu sagen, dass das mein erster Versuch ist, möglichwerweise ist das Design daher nicht optimal, manche Details sind allerdings gewissen Notwendigkeiten geschuldet (s.u.)

Hier nun eine kurze Beschreibung:

-Der Arduino-Teil und die beiden Endstufen (mit den beiden IRGBs) sind galvanisch durch Optokoppler (PC817) getrennt

-Auf der rechten Platinenseite befinden sich mehrerer Schraubklemmen (5 mm), die wie folgt belegt sind
Oben: -12V
Mitte: Leitungen zum Laden der beiden Zündspulen
Unten: Stromversorgung und Signalleitung für den Hallsensor sowie +12V

-Auf der linken Platinenseite befinden sich zwei Schraubklemmen (3,5 mm), an der unteren kann optional ein Taster (zur Auswahl der Zündkurve) und ein LCD (zur Anzeige, welche Kurve ausgewählt ist und der RPM) angeschlossen werden, an der oberen alternativ eine RGB-LED, an der man über die Farbe die ausgewählte Zündkurve erkennen kann.
Das LCD muss allerdings eines mit UART-Schnittstelle sein, die billigeren mit I2C haben sich in meinen Versuchen als nicht geeignet herausgestellt.

-Die beide LEDs oben links dienen zur Kalibrierung der Steuerscheiben-Position, sie sollen dann aufleuchten, wenn sich der betreffende Zylinder am UT zum Beginn des Verdichtungstaktes befindet.

-Nicht gezeigt ist eine (fertig gekauftes und vergossenes) Step-Down-Modul, das die 12V Bordspannung auf stabile 5V für den Arduino bringt. Das Teil wird später auf den Arduino draufgesetzt. Die beiden Lötpunkte oberhalb der unteren Schraubklemmen versorgen diese Modul mit 12V, an den beiden mit +5V und -5V beschrifteten Lötstellen wird dann die heruntergeregelte Spannung in den Arduino-Kreis eingeleitet.

-Da die beim Laden der Spulen fließenden Ströme für die dünnen Leitungen der Platine gefährlich werden können, werden für die entspechenden Leitungen (die dicken schwarzen Linien) separate Kabel verwendet, die an Pads (die größeren orangenen Flächen) an die Platine gelötet werden.

-Die IRGBs werden wegen der Wärmeableitung am Gehäuse befestigt und ebenfalls über Kabel mit der Platine verbunden.

-Die orangenen Leitungen befinden sich auf der Platinen-Unterseite, die gelben (sind nur zwei) auf der Oberseite

-Die Platinengröße beträgt ca. 75x75 mm

Falls einem Elektronik-Spezialisten noch ein Konstruktionsfehler auffällt, bitte melden.

Re: Elektronische Zündung auf Arduino-Basis

Verfasst: 9. Sep 2017
von NyFAZ
Hallo Emil,

danke für die Veröffentlichung und wenn Du Hilfe beim Verkleinern der Platine brauchst, sag Bescheid.
Dann könnte ich mich mal versuchen, aber ohne Garantie ;).
Würde den Arduino durch einen Microcontroller ersetzen wollen.

LG Roland

Re: Elektronische Zündung auf Arduino-Basis

Verfasst: 9. Sep 2017
von Emil1957
Hallo Roland,

danke für das Angebot. Den Arduino Nano habe ich aus folgenden Gründen gewählt:
-Günstig zu haben
-Für mich als "Elektonik-Newbie" ohne großes Hintergrundwissen zu verwenden (eher auf die Hardware bezogen, nicht auf die Programmierung, da bin ich quasi Profi, verdiene meine Brötchen damit)

Wenn es sich noch kompakter umsetzen lässt, umso besser. Ich habe während meiner theoretischen Versuche auch schon mal mit einem Arduino Micro Pro experimentiert, der ist nochmal deutlich kleiner als der Nano. Hat auch ohne Probleme funktioniert. Schließendlich habe ich mich aber wegen der Verfügbarkeit und des Preises für den Nano entschieden.

Wenn man auf das Gimmick "Zündkurvenauswahl über Taster" verzichtet (das war eher ne Spielerei, weil es halt geht und den Programmierer-Ergeiz befriedig) und stattdessen eine Standard-Zündkurve verwendet (die natürlich über den Programmcode abgepasst werden kann), fallen die beiden Schraubklemmen auf der linken Seite weg. Damit und mit ein paar weiteren Optimierungen komme ich dann auf eine Platinengröße von 58x73 mm (siehe Abbildung). Bei Verwendung eines kleineren Microcontrollers ist das Einsparpotenzial m.E. dann nicht mehr besonders groß, da der Platz für die beiden Endstufen (die ja den meisten Platz benötigen) sich kaum wird reduzieren lassen.

Ich werde meinen Entwurf in den nächsten Tagen nochmal intensiv überdenken und mir anschleißen mal ein paar Testplatinen herstellen lassen.

Grüße
Emil

Re: Elektronische Zündung auf Arduino-Basis

Verfasst: 10. Sep 2017
von kramer
Emil1957 hat geschrieben: mit definierter "dwell time" von 1500 oder 1000 µs, hängt von Umdrehungszahl ab)
Weil bei höheren Drehzahlen die Zeit knapp wird, oder?

Peter

Re: Elektronische Zündung auf Arduino-Basis

Verfasst: 10. Sep 2017
von Emil1957
Ja. Der Vorgang ist ja wie folgt:
-Die Steuerscheibe wird so justiert, dass der Hallsensor bei Erreichen des UT (bei Beginn des Verdichtungstaktes) ein Siganl an den Arduino liefert, das definiert dann den "Zeitnullpunkt" für die Berechnung.
-Bei steigender Drehzahl rückt (wegen der Frühzundung) der Zeitpunkt für die Zündung immer näher an diesen Nullpunkt heran
-In dieser Zeit (also zwischen Zeitnullpunkt und Zeitpunkt der Zündung) muss aber noch die Spule geladen werden.
-Wenn daher die Zeitdifferenz kleiner wird als die Ladezeit der Spule, muss zwangsläufig die Ladezeit verkürzt werden.

Re: Elektronische Zündung auf Arduino-Basis

Verfasst: 10. Sep 2017
von nanno
Hab dir eine PN geschickt. Das klingt alles ziemlich spannend, für meine Zwecks müsste ich es ein bissl umstricken, aber es ist ein herrlich geradliniges Design!

Re: Elektronische Zündung auf Arduino-Basis

Verfasst: 10. Sep 2017
von NyFAZ
Hallo Emil,

man müsste mal die Ein-/Ausgänge anschauen. Mit dem ATTiny brauchst du 1/4 des Platzes, den ein Arduino Pro-Mini benötigt.
Habe eben mal beide aneinander gehalten. Das mit dem Newbie kenne ich, jedoch auf Hard- UND Software bezogen, wie Du dem el. Zündschloss hier im Forum entnehmen kannst. Ich denke bei dem Sketch wirst Du schockblind, weil Dir Deine Augen den Schmerz ersparen wollen ;).

LG Roland
Emil1957 hat geschrieben:Hallo Roland,
.....
-Für mich als "Elektonik-Newbie" ohne großes Hintergrundwissen zu verwenden (eher auf die Hardware bezogen, nicht auf die Programmierung, da bin ich quasi Profi, verdiene meine Brötchen damit)

Re: Elektronische Zündung auf Arduino-Basis

Verfasst: 11. Sep 2017
von Emil1957
Der Vorschlag mit dem ATTiny ist interessant, folgende Punkte müssten aber geklärt werden:

-Der ATTiny läuft ja max. mit 8 MHz. Ich habe im Rahmen einer Simulation der Arduino (der ja mit 16MHz läuft) mit hohen Drehzahlen "gequält". Bis 30.000 prm hat er es klaglos mitgemach, danach hab ich aufgehört, weil unrealistisch. Bei einem 8 MHz Prozessor läge somit eine potentielle Grenze bei 15.000 rpm, was aber immer noch mehr als genug sein sollte. Nur mit 1 MHz sollte man den ATTiny nicht betreiben, es sein denn, man hat einen Motor mit der Charakteristik eines Lanz Bulldog (der so`n neumodischen Kram wegen seines Glühkopfmotors eh nicht braucht)

-Aus Geschwindigkeitsgründen verwende ich zum Lesen und Schreiben der Pins die "DigitalFast Library" (https://github.com/watterott/Arduino-Li ... lWriteFast), die mit LowLevel-Befehlen arbeitet. Meines Wissens ist die (noch?) nicht für den ATTiny verfügbar. Alternativ könnte man natürlich auch einen Atmega328 direkt (d.h. ohne "Arduiono-Überbau") verwenden, dann besteht das Problem nicht und man spart trotzdem Platz.

Re: Elektronische Zündung auf Arduino-Basis

Verfasst: 11. Sep 2017
von Eumel
Hi Emil,

Wie wäre es denn mit SMD Bauteilen? Damit wirst du wesentlich kleiner und jetzt nicht gleich Panik schieben. Widerstände und Kondensatoren in der Bauform 1206 bekommt man gut gelötet. Transistoren in SOT23 bekommt man auch gut hin wenn man schon mit THT Erfahrung hat.
Wenn du bei THT bleiben willst und noch etwas Platz raus holen willst kannst du die Widerstände auch stehen montieren. Siehe hier:
https://forum.kicad.info/t/3d-new-libra ... gn/1763/58

Ich würde auch eher zum aufgelöteten Microcontroller raten. Du willst den ja später eh nicht mehr für was anderes verwenden. Löte einfach für die Programmierschnittstelle und die UART Schnittstelle Pfostenstecker mit drauf dann kannst du den Controller mit Hilfe deines vorhandenen Arduinos mit der Arduino-Basisfirmware bespielen (da gibt's in der IDE nen fertigen Sketch) und dann über die UART Schnittstelle dein fertiges Board genau wie einen Arduino bespielen. (Nichts anderes ist beim Mini Pro gemacht)

Zum Layout hätte ich noch ein paar Verbesserungsvorschläge:
- Versuche keine schiefen Winkel zu verwenden. Das sollte man vermeiden um später Dinge wie ein aus versehen verrücktes Bauteil oder so etwas sofort zu erkennen.
- Keine 90 Grad Knicke sondern lieber zwei mal 45 Grad. Kommt zwar eher aus der Hochstrom/-frequenzecke aber ist eigentlich immer vernünftig. Stichwort: Strom/-Impedanzüberhöhung in den Ecken.
- Niemals zwei Leiterbahnen direkt kreuzen auch wenn sie das selbe Potential führen. Ist bei dir unter dem Hall Sensor Anschluss. Das macht dir nachher das Debuggen wirklich schwer weil du zwei aus versehen gekreuzte Leiterbahnen nicht von einer mit Absicht gekreuzten unterscheiden kannst.
Die Tipps sind mehr so als Hinweise zu verstehen wie es ein Profi (ohne jetzt den Schaltplan gesehen zu haben) machen würde.

Gruß,
Christian

Re: Elektronische Zündung auf Arduino-Basis

Verfasst: 11. Sep 2017
von brummbaehr
Ich habe echt keine Ahnung von Arduino's und sonstigen Verwanten (leider :cry: ).

Aber was ich nicht verstehe ist die 5V Versorgungsspannung für den Arduino.
Wo soll die herkommen?? Mir fehlt da ein gavanisch getrennter DC/DC-Wandler.