forum logo image
caferacer-forum.de - Das Forum für Petrolheads, Garagenschrauber, Ölfinger, Frickelracer und Alteisentreiber

Elektronische Zündung auf Arduino-Basis

Technische Fragen und Antworten, Tipps und Tricks für Profis und Bastler
Benutzeravatar
Emil1957
Beiträge: 1121
Registriert: 23. Mär 2016
Motorrad:: Honda CB 350K4 Bj. 1973, Jawonda-Gespann (Jawa mit CB450N-Motor und anderen Japan-Teilen), Honda CB250K im Laverda 750SFC Stil (im Aufbau)
Wohnort: Köln

Elektronische Zündung auf Arduino-Basis

Beitrag 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.
Du musst registriert und eingeloggt sein, um die Dateianhänge dieses Beitrags sehen zu können.
Grüße

Emil

Der Worte sind genug gewechselt,
Laßt mich auch endlich Taten sehn!
Indes ihr Komplimente drechselt,
Kann etwas Nützliches geschehn.

(Johann Wolfgang von Goethe: Faust: Eine Tragödie)

Benutzeravatar
NyFAZ
Beiträge: 288
Registriert: 2. Nov 2016
Motorrad::  
BMW R80
KTM LC400 Mil
Wohnort: Braunschweig

Re: Elektronische Zündung auf Arduino-Basis

Beitrag 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

Benutzeravatar
Emil1957
Beiträge: 1121
Registriert: 23. Mär 2016
Motorrad:: Honda CB 350K4 Bj. 1973, Jawonda-Gespann (Jawa mit CB450N-Motor und anderen Japan-Teilen), Honda CB250K im Laverda 750SFC Stil (im Aufbau)
Wohnort: Köln

Re: Elektronische Zündung auf Arduino-Basis

Beitrag 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
Du musst registriert und eingeloggt sein, um die Dateianhänge dieses Beitrags sehen zu können.
Grüße

Emil

Der Worte sind genug gewechselt,
Laßt mich auch endlich Taten sehn!
Indes ihr Komplimente drechselt,
Kann etwas Nützliches geschehn.

(Johann Wolfgang von Goethe: Faust: Eine Tragödie)

Benutzeravatar
kramer
Beiträge: 740
Registriert: 9. Sep 2014
Motorrad:: Moto Guzzi LM3, Bj 1984
Wohnort: Wurmannsquick

Re: Elektronische Zündung auf Arduino-Basis

Beitrag 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

Benutzeravatar
Emil1957
Beiträge: 1121
Registriert: 23. Mär 2016
Motorrad:: Honda CB 350K4 Bj. 1973, Jawonda-Gespann (Jawa mit CB450N-Motor und anderen Japan-Teilen), Honda CB250K im Laverda 750SFC Stil (im Aufbau)
Wohnort: Köln

Re: Elektronische Zündung auf Arduino-Basis

Beitrag 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.
Grüße

Emil

Der Worte sind genug gewechselt,
Laßt mich auch endlich Taten sehn!
Indes ihr Komplimente drechselt,
Kann etwas Nützliches geschehn.

(Johann Wolfgang von Goethe: Faust: Eine Tragödie)

Online
Benutzeravatar
nanno
Beiträge: 3026
Registriert: 11. Feb 2016
Motorrad:: Yamaha TR1.1 Tractor
Yamaha TR1.1 Turbo/Supercharged
Yamaha SR 500 w. (modified) Velorex 562
Yamaha XT600 Dre-XT-Stück
Kontaktdaten:

Re: Elektronische Zündung auf Arduino-Basis

Beitrag 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!
Frei ist, wer frei denkt.

http://greasygreg.blogspot.com

Benutzeravatar
NyFAZ
Beiträge: 288
Registriert: 2. Nov 2016
Motorrad::  
BMW R80
KTM LC400 Mil
Wohnort: Braunschweig

Re: Elektronische Zündung auf Arduino-Basis

Beitrag 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)

Benutzeravatar
Emil1957
Beiträge: 1121
Registriert: 23. Mär 2016
Motorrad:: Honda CB 350K4 Bj. 1973, Jawonda-Gespann (Jawa mit CB450N-Motor und anderen Japan-Teilen), Honda CB250K im Laverda 750SFC Stil (im Aufbau)
Wohnort: Köln

Re: Elektronische Zündung auf Arduino-Basis

Beitrag 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.
Grüße

Emil

Der Worte sind genug gewechselt,
Laßt mich auch endlich Taten sehn!
Indes ihr Komplimente drechselt,
Kann etwas Nützliches geschehn.

(Johann Wolfgang von Goethe: Faust: Eine Tragödie)

Benutzeravatar
Eumel
Beiträge: 186
Registriert: 28. Aug 2017
Motorrad:: Buell XB12R Firebolt 2004
Honda CBF1000 (SC58) 2006
Honda CB450S (PC17) 1988
Kawasaki Z650SR
Verkauft: Honda NTV 650 Revere (RC33) 1989
Wohnort: Stuttgart

Re: Elektronische Zündung auf Arduino-Basis

Beitrag 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
:!: Hier könnte Ihre Werbung stehen :!:

Benutzeravatar
brummbaehr
Beiträge: 938
Registriert: 27. Sep 2016
Motorrad:: Honda CX 500/650
Wohnort: 41836 Hückelhoven
Kontaktdaten:

Re: Elektronische Zündung auf Arduino-Basis

Beitrag 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.

Antworten

Zurück zu „Elektrik/Beleuchtung“

Kickstarter Classics