<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Felixbrb</id>
	<title>Mikrocontroller.net - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Felixbrb"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/Felixbrb"/>
	<updated>2026-04-21T08:03:10Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Kategorie_Diskussion:L%C3%B6schkandidaten/Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=107335</id>
		<title>Kategorie Diskussion:Löschkandidaten/Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Kategorie_Diskussion:L%C3%B6schkandidaten/Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=107335"/>
		<updated>2025-03-10T12:46:23Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: Die Seite wurde neu angelegt: „Moin,  ich habe diesen alten Beitrag zur Löschung vorgeschlagen. Ich habe das Projekt vor 11 Jahren für einen Wettbewerb hier dokumentiert. Das Projekt habe ich aber irgendwann aus Zeitmangel abgebrochen. Wenn ich das Projekt heute noch mal anfangen würde, würde ich wohl sehr Vieles ganz anders machen. Tatsächlich wirkt manches aus meiner heutigen Sicht unprofessionell daran.  Viele Grüße, Felix“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Moin,&lt;br /&gt;
&lt;br /&gt;
ich habe diesen alten Beitrag zur Löschung vorgeschlagen. Ich habe das Projekt vor 11 Jahren für einen Wettbewerb hier dokumentiert. Das Projekt habe ich aber irgendwann aus Zeitmangel abgebrochen. Wenn ich das Projekt heute noch mal anfangen würde, würde ich wohl sehr Vieles ganz anders machen. Tatsächlich wirkt manches aus meiner heutigen Sicht unprofessionell daran.&lt;br /&gt;
&lt;br /&gt;
Viele Grüße, Felix&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=107334</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=107334"/>
		<updated>2025-03-10T12:43:32Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Löschen|Ich habe vor 11 Jahren im Rahmen des XMC Design Contest diesen Wikibeitrag von meinem privaten Bastelprojekt erstellt. Das Projekt ist im Sande verlaufen und ich würde heute alles ganz anders machen - man kennt das ja. Ich hätte nun gern, dass die Seite gelöscht wird.}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;von Felix Ahlborg&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&#039;&#039;Dieser Artikel nimmt am Artikelwettbewerb [http://www.mikrocontroller.net/topic/infineon-xmc-design-contest-2014 Infineon XMC Design Contest 2014] teil.&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Stand der Technik ==&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Ein in Abhängigkeit von Drehzahl und Last angepasster Zündwinkel könnte das Laufverhalten wie die Effizienz des Motors bedeutsam verbessern.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit diesen Kauflösungen niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
== Zielsetzung ==&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
=== Version 1 ===&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die &#039;&#039;&#039;Drehzahl&#039;&#039;&#039; benötigt. Weiterhin muss der &#039;&#039;&#039;Last&#039;&#039;&#039;zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird. Also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der &#039;&#039;&#039;Restsauerstoffgehalt&#039;&#039;&#039; im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
=== Version 2 ===&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Zusatzluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Ideen ===&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Microcontroller ===&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Spannungsversorgung ===&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den hier [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen einen Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
==== Anschluss des XMC4500 Relax Board ====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil des XMC4500 Relax Kit wurde von Infineon ein Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V sollen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind dann aber die 3,3 V Leitungen beider Boards verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu einfach Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung der Drehzahl ===&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe der Zündwinkel ===&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden. Frühere Zündwinkel bedürfen dann entweder einer Frühverstellung des Gebers oder etwas mehr Hirnschmalz.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (NPN Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, so über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass die Zündanlage wieder original beschaltet ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung des Restsauerstoffgehaltes ===&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Durch die große Öffnung daneben strömt im eingebauten Zustand die Restluft aus dem Kühlluftgehäuse des Motors um im Vorschalldämpfermantel für die Innenraumheizung aufgewärmt zu werden. Der noch größere Anschluss unten rechts liefert dann die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung der Luftmasse ===&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
==== Beobachtungen ====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen. Wenn ich diese über einen Spannungsteiler auf 3,3 V teile, bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 die Eingangsspannung von 14,4 V um ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um ~16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
==== Messwert ====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung der Ansaugtemperatur ===&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrierten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
==== Berechnung der Widerstände ====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj und Out regelt wären das R1 = 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich für diesen ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 50° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen. Im Notfall muss die Messgröße per Software entstört werden - Temperaturen ändern sich ja eh vergleichsweise langsam.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung des Anlassersignals ===&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
=== Anzeige im Fahrzeug ===&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint), ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX. Dieses sollte sich leicht im Fahrzeug verlegen lassen.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
==== Firmware Steuergerät ====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
==== Firmware Anzeige ====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
==== PC Software ====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
== Validierung des Steuergerätes ==&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
=== Konzept ===&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
=== Aufbau ===&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignalen erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die simulierten Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
=== Ergebnisse ===&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Wenig überraschend ist auch, dass zwischen Eingangs- und Ausgangssignal eine konstante aber nur sehr kurze Verzögerungszeit existiert. Praktisch:  ich konnte damit auch endlich mal alle meine gelagerten Zündgeräte auf korrekte Funktion prüfen. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 20° und 22° eingestellt werden. Bei diesem großen Toleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennlinien-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Die drei Kennlinien Leerlauf, Teillast und Volllast unterscheidet diese Zündanlage, indem sie den Lastzustand des Motors mit einem elektromechanischen Sensor direkt aus der Drosselklappenstellung ableitet. Um die drei Kennlinien auszulesen, habe ich den ausgebauten Sensor manuell in diese Stellungen gebracht.&lt;br /&gt;
&lt;br /&gt;
Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringer Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet diese Kennlinie bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
== Aktueller Stand ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben links ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
== Ausblick ==&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
== Das Wichtigste zum Schluss ==&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Der eine oder andere wird wohl auch meine Schaltungen stümperhaft finden. Das bekomme ich irgendwann sicher alles noch besser hin. Ich freue mich ganz ehrlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Verbrennungsmotoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warnung:&#039;&#039;&#039; Nachbau auf eigene Gefahr! Mit Modifikationen dieser Art erlischt die Betriebserlaubnis eines Fahrzeugs.&lt;br /&gt;
&lt;br /&gt;
== Update vom 20.07.2014 ==&lt;br /&gt;
&lt;br /&gt;
Es funktioniert! Ich habe mich für den Einsendeschluss nochmal richtig in&#039;s Zeug gelegt. Was ich noch geschafft habe:&lt;br /&gt;
&lt;br /&gt;
* Bestückungsplan gemacht&lt;br /&gt;
* Hauptplatine für Zündsteuerung und Lambdasonde bestückt&lt;br /&gt;
* Kabelbaum für Zündsteuerung gefertigt&lt;br /&gt;
* Erstinbetriebnahme auf dem Schreibtisch&lt;br /&gt;
* Verifizierung, der ausgegebenen Zündwinkel&lt;br /&gt;
* Alles in&#039;s Fahrzeug eingebaut&lt;br /&gt;
* Probefahrt gemacht&lt;br /&gt;
* Tierisch gefreut!&lt;br /&gt;
&lt;br /&gt;
Hier noch zwei Bilder vom Steuergerät im Fahrzeug:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090707.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090708.jpg]]&lt;br /&gt;
&lt;br /&gt;
Bitte nicht über die Tupperdose lachen. Das eigentlich dafür vorgesehene Gehäuse war einfach zu klein. Was Besseres war gerade nicht griffbereit. Auch die Bildqualität lässt zu wünschen übrig - das tut mir leid. Leider hatte ich heute nicht viel Zeit und die Bilder habe ich noch fix in der Tiefgarage geschossen. Wie auch immer, ich bin sehr zufrieden, dass die erste Probefahrt ohne Zwischenfälle verlief. :)&lt;br /&gt;
&lt;br /&gt;
Das Steuergerät erfasst nun die Kurbelwellengebersignale und gibt sie unverändert weiter an die Transistorzündung. Der Motor startet damit problemlos und läuft unauffällig wie immer - keine Aussetzer etc. Das heißt, sowohl Spannungsversorgung, als auch Kurbelwellengebersignalerfassung und Zündwinkelausgabe funktionieren. Die Ausgabe der Drehzahl über USB funktioniert auch, ist aber relativ instabil. Das konnte ich auf dem Schreibtisch nie beobachten. Da muss ich mir noch etwas einfallen lassen. Ich werde morgen versuchen den Hochspannungsteil der Zündung abzuschirmen. Das wurde früher beim Trabant auch gemacht um einen störungsfreien Radioempfang zu ermöglichen. Danach wird die Lambdasonde in Betrieb genommen, dann der Luftmassenmesser ... Es gibt noch viel zu tun!&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Diskussion:Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=84737</id>
		<title>Diskussion:Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Diskussion:Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=84737"/>
		<updated>2014-09-01T19:16:25Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Klasse Projekt!&lt;br /&gt;
Endlich mal keine CNC Steuerung oder Wordclock.&lt;br /&gt;
&lt;br /&gt;
Ich schließe mich dem Vorredner an, tolles Projekt - sowas in der Art wollte ich für meine Yamaha XT 600 Bj. 90 auch schonmal angehen. Bis jetzt hab ich die Einschweißmuffe für die Lamdbasonde ... mehr noch nicht :(&lt;br /&gt;
Aber was mich hauptsächlich interessiert: Wofür brauchst Du die angesaugte Luftmasse? Meiner Meinung nach ist das nur für Einspritzer relevant, weil die aus der Luftmasse und der Temperatur die Einspritzmenge herleiten. Beim Vergaser, den der Trabbi ja nunmal hat, bringt Dir der Messwert doch eigentlich nix - oder willst Du auf Einspritzer umbauen? Wenn ja, kennst Du &amp;quot;Megasquirt&amp;quot;? Eine Alternative zum Luftmassenmesser fällt mir noch ein: der MAP-Sensor - damit wird über den Saugrohrunterdruck die Luftmenge errechnet - oftmals günstiger zu haben, als ein LMM.&lt;br /&gt;
&lt;br /&gt;
== Weitere Ideen / Anmerkungen ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Motorbremse:&#039;&#039;&#039;&lt;br /&gt;
Eine Schubabschaltung läßt sich relativ leicht bewerkstelligen, wenn ein Drosselklappenpotentiometer und ein Leerlaufabschaltventil vorhanden ist, was aber bei diesem Vergaser fehlt...&lt;br /&gt;
Du kannst ja die Zündung in der Schubphase abschalten, wenn Dich das Knallen bei Erreichen der Leerlaufdrehzahl nicht stört ;-) Haben wir bei der Armee dazumals manchmal gemacht, beim Ural hats dann manchmal den Schalldämpfer zerlegt... &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zündung:&#039;&#039;&#039; &lt;br /&gt;
Warum Schließwinkelregelung? Warum nicht eine Hochfrequenzzündung a la Daimler / Bosch? Mit Kontaktabständen von 2-3 mm an den Zündkerzen, um magere Gemische sicher zünden zu können (oder E85 ???) oder das Kaltstartverhalten dahingehend zu verändern, den Choke nur wenig oder garnicht zu benötigen. Verrusste Zündkerzen sind kein Problem mehr etc. Also zur Abwechlung mal was Modernes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Öldosierung:&#039;&#039;&#039; &lt;br /&gt;
Wäre möglich, um das lästige Blaurauchverhalten einzuschränken. Da sehe ich auch ein Problem der Lambdamessung per Sonde. Es soll wohl nachteilig sein, die Sondenkeramik mit Öldämpfen zu bearbeiten... &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klopfsensor:&#039;&#039;&#039;&lt;br /&gt;
Wozu? Das Signal ist aufwendig zu filtern und auszuwerten. Lausche mal mit einem Schraubenzieher hinter dem Ohr auf den Motorlauf eines Trabanten! Klappern der Drehschieber, Geräusche von Lüfter und Lichtmaschine etc -&amp;gt; das mußt Du alles sauber wegfiltern um ein Klopfereignis sicher erkennen zu können. Sinvoller ist aus meiner Sicht der Ansatz Klopferkennung per Ionenstrommessung -&amp;gt; geht auch per HF-Zündung. Geschickt ausgewertet, spart Dir eine Ionenstrommessung auch die Lasterfassung und die Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just my 2 Cents...&lt;br /&gt;
&lt;br /&gt;
MfG&lt;br /&gt;
Elux&lt;br /&gt;
&lt;br /&gt;
Hallo Duselbaer,&lt;br /&gt;
&lt;br /&gt;
danke für die Blumen. Beim Wettbewerb hat es trotzdem nur für Platz 10 von 12 Teilnehmern gereicht. Na was solls. Ich mach trotzdem weiter. :P&lt;br /&gt;
&lt;br /&gt;
Den Luftmassenmesser habe ich vorgesehen, weil mich das einfach mal interessiert hat. Und ja, ich schließe nicht aus, mich auch mal mit dem Thema Einspritzung zu beschäftigen (steht auch im Artikel). Es ist ja naheliegend, wenn man schon ein tolles Steuergerät im Auto hat und sich mit der ganzen Thematik auseinander setzt, dann auch noch den Vergaser ganz durch eine schöne Einspritzsteuerung zu ersetzen. Aber das ist noch etwas zu weit in die Zukunft gegriffen. Ich muss mich dem Thema langsam annähern, sonst ist der Frustfaktor zu hoch. ;)&lt;br /&gt;
&lt;br /&gt;
Die Megasquirt ist mir durchaus ein Begriff. Ich habe im Netz auch einen Forumsbeitrag gefunden, wo jemand damit eine Einspritzung für den Trabant realisiert hat. Aber wie im Projekt beschrieben ist nicht mein Ziel das ganze möglichst simpel und einfach zu erreichen, sondern alles selbst zu machen und viel bei zu lernen. Ist eben ein Hobby und ich tobe mich da etwas aus. Ist halt einfach zu spannend, als dass ich mich mit einer Fertiglösung zufrieden geben könnte. Saugrohrunterdrucksensor steht definitiv schon auf meiner Liste - wie im Artikel erwähnt. Das will ich auch mal ausprobieren.&lt;br /&gt;
&lt;br /&gt;
Ich freue mich, dass hier scheinbar eine kleine Diskussion entsteht und begrüße jeden konstruktiven Beitrag. :)&lt;br /&gt;
&lt;br /&gt;
Gruß, Felix&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hallo Elux,&lt;br /&gt;
&lt;br /&gt;
vielen Dank für deine Ideen und Anregungen. Vieles davon ging mir auch schon durch den Kopf. Deine Idee der Motorbremse war mal in einer alten &amp;quot;Kraftfahrzeugtechnik&amp;quot;-Zeitschrift beschrieben. Das funktionierte wohl sehr gut. Solange ich aber noch den H1-1 Vergaser als Basis für die Gemischaufbereitung benutze, wird das wohl nix. Dieser Vergaser hat eben keinen Leerlaufvergaser den man einfach so abschalten kann. Da bleibt dann wirklich nurnoch die Zündung abzuschalten. Der Kraftstoff und damit die Schmierung sollte ja tunlichst weiterfließen. Das will ich zumindest mal ausprobieren. Ich denke, das Knallen beim wieder Zünden wird sich in Grenzen halten - aber das wird man nur ausprobieren können.&lt;br /&gt;
&lt;br /&gt;
Langfristig wäre natürlich eine eigene Gemischaufbereitung toll. Dann kann man auch vorsehen die Drosselklappe komplett zu schließen. Das wäre dann wohl eine sehr schöne Motorbremse.&lt;br /&gt;
&lt;br /&gt;
Zündung: Schließwinkelregelung? Soweit ich mich entsinne, habe ich nur was von variablen Ladezeiten der Zündspulen geschrieben. Einen Schließwinkel gibt es ja dank Hall-Geber garnicht mehr. Die sache mit der Mehrfachzündung ist sicher auch interessant, aber das lässt sich mit dem aktuellen Aufbau nicht realisieren. Dazu muss ich zunächst einen eigenen Hochspannungsteil bauen, bei dem sich beide Zündspulen getrennt steuern lassen. Das ist auch für variablen Ladezeiten notwendig. Das wird wohl noch etwas dauern - immerhin bin ich eigentlich kein Elektroniker. Aber ja, die Idee geisterte mir auch schon durch den Kopf. :)&lt;br /&gt;
&lt;br /&gt;
Gruß, Felix&lt;br /&gt;
&lt;br /&gt;
== Schließwinkel ==&lt;br /&gt;
&lt;br /&gt;
Hallo Felix,&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Soweit ich mich entsinne, habe ich nur was von variablen Ladezeiten der Zündspulen geschrieben...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Der Schließwinkel ist &amp;quot;sozusagen&amp;quot; die Ladezeit. Ich schätze, Du meinst den Zündwinkel...&amp;lt;br /&amp;gt;&lt;br /&gt;
Wenn der Schließwinkel konstant ist (z.B. bei der Kontaktzündung), ist die Ladezeit variabel und umgedreht. &lt;br /&gt;
Die (Lade-) Schließzeit muss zu den Züdspulen passen: ist sie zu klein, wird die Hochspannung weniger; ist sie zu groß wird die Zündspule zu heiß. Daher hat jede moderne Zündspule &amp;quot;ihre persönliche Ladezeit&amp;quot;.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ja klar brauchst Du also einen eigenen Hochspannungsteil - so oder so. &amp;lt;br /&amp;gt;&lt;br /&gt;
Es gibt (z.B. bei älteren Japanern) fertige Zündendstufen, die den erheblich höheren Primärstrom moderner Zündspulen problemslos schalten können, für den Einsatz im Auto (und an einem µC!) konzipiert sind und &amp;quot;fürn Schmalen&amp;quot; entweder im Zubehör oder auf dem Schrott zu haben sind. &amp;lt;br /&amp;gt;&lt;br /&gt;
Eine andere Schiene wären (keine Ahnung, ob der Platz reicht...) Stabzündspulen aus der gleichen Quelle mit eingebauten Endstufen...&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Ich denke, das Knallen beim wieder Zünden wird sich in Grenzen halten...&amp;quot;&lt;br /&gt;
Naja - hast ja einen Edelstahlauspuff...;-) &lt;br /&gt;
Ich denke, das ist Murks und wird Dir recht schnell &amp;quot;auf den Zünder gehen&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
MfG&lt;br /&gt;
Elux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hallo Elux,&lt;br /&gt;
&lt;br /&gt;
Nix für Ungut, aber der Unterschied zwischen Ladezeit, Schließwinkel und Zündwinkel ist mir durchaus bewusst. Ein klein Wenig habe ich mich mit dem Thema ja schon auseinander gesetzt. ;)&lt;br /&gt;
&lt;br /&gt;
Du hast schon recht, dass man auf der Zündungsseite noch richtig viel machen kann, wenn man die Schaltzeiten für die Zündspulen völlig frei wählen könnte. Das würde ich auch liebend gern sofort anpacken. Aber auch wenn es einfach klingt ein fertiges Zündmodul o.ä. zu benutzen zeigt mir meine Erfahrung, dass man mit jedem neuen Bauteil das man anfässt eben doch eine riesen Baustelle aufmacht. Es ist nunmal so, dass ich das Projekt als reines Hobby betreibe. Ich habe jede Woche ein paar Stunden dafür. Da muss man sich hier und da schon einschränken und kann nicht alles auf einmal machen. Ich habe viel darüber gelesen und ich habe auch ein paar Kompacktzündmodule und sogar welche von den erwähnten Stabzündspulen, die einfach oben auf die Kerzen gesteckt werden, im Keller liegen. Alles tolle Sachen, die ich auch sicher irgendwann mal ausprobiere. Aber Datenblätter dazu liegen auch nicht gerade vor meiner Haustür rum. Tatsächlich ist es sogar so, dass es meiner Erfahrung nach verdammt schwer ist, für solche Teile brauchbare Informationen zusammen zu tragen. Daher war mein erster Ansatz wie beschrieben einfach das Signal der originalen Zündung nach Bedarf zu verzögern. Dadurch bleibt der Kurbelwellenwinkel über den die Zündspulen geladen werden (bei Unterbrechern wäre das der Schließwinkel, bei einer kontaktlosen Zündung würde ich das eben nicht so nennen) eben mehr oder weniger konstant bei 180°. Je nach Drehzahl variiert dadurch die Ladezeit. Das ist sicher alles andere als ideal, aber wie gesagt habe ich diese Variante ganz bewusst als erste Realisierungsstufe gewählt. Die originalen Zündspulen kommen damit ja durchaus zurecht.&lt;br /&gt;
&lt;br /&gt;
 Ich wollte noch auf deine anderen beiden Anregungen eingehen:&lt;br /&gt;
&lt;br /&gt;
Öldosierung: Das Thema ist besser bekannt als Getrenntschmierung. Es mag Hersteller geben, die dieses Verfahren sauber umgesetzt bekommen haben, aber ich will da lieber die Finger von lassen. Wenn da etwas schief geht, ist relativ unmittelbar der Motor hinüber. Man müsste daher sehr zuverlässig sicherstellen, dass jederzeit die richtige Menge Öl beigemischt wird. Wenn da nur einmal die entscheidende Düse verstopft ist, kann es das innerhalb von wenigen Kilometern gewesen sein. Und wie will man das jederzeit sicher erkennen? Auf der anderen Seite ist es so, dass bei korrekt vorgemischtem Benzin die Ölschmierung immer ausreichen müsste, solange der Motor noch läuft. Das Risiko ist hier deutlich niedriger. Aber wenn du da eine geniale Idee hast, dann immer her damit. &lt;br /&gt;
&lt;br /&gt;
Im Übrigen ist es so, dass man bei gut eingestelltem Vergaser und dynamischen Zündzeitpunkt meiner Meinung nach fast nichts mehr von der blauen Fahne sieht. Klar nebelt der Motor ein klein wenig direkt nach dem Kaltstart. Das hat aber nix mit dem Öl zu tun und ist bei 4-Taktern auch nicht anders. Das Öl auf der Lambdasonde ist sicher nicht ideal, andere 2-Takter fahren aber auch problemlos mit Lambdasonden umher. Wir werden sehen.&lt;br /&gt;
&lt;br /&gt;
Klopfsensor: Das mit der Ionenstrommessung habe ich auch mal gelesen. Aber ob das so viel einfacher ist, wage ich zu bezweifeln. Insgesamt ist das Thema Klopferkennung (egal welches Verfahren) ganz sicher nicht simpel. Bis ich den Luxus habe, mir darüber konkrete Gedanken machen zu können, vergehen aber sicher noch einige Monate. Erstmal müssen andere viel grundlegendere Sachen sauber funktionieren. ;)&lt;br /&gt;
&lt;br /&gt;
Gruß, Felix&lt;br /&gt;
&lt;br /&gt;
Hallo Felix,&lt;br /&gt;
&lt;br /&gt;
Verstehe ;-)&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Aber Datenblätter dazu liegen auch nicht gerade vor meiner Haustür rum. Tatsächlich ist es sogar so, dass es meiner Erfahrung nach verdammt schwer ist, für solche Teile brauchbare Informationen zusammen zu tragen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
entschuldige, manchmal vergesse ich, wie schwer es für Leute außerhalb der Kfz-Branche ist an Daten zu kommen (Datenblätter habe ich i.d.R. aber auch nicht). Bezüglich z.B. der Zündspulen würde ich mir die gesuchten Daten einfach an einem OE Fahrzeug ausmessen...&lt;br /&gt;
&lt;br /&gt;
Vergiss das mit der Öldosierung: Du hast recht, wenn Du bei Schubabschaltung längere Zeit fährst (z.B. länge Zeit bergab) geht der Motor fest mangels Schmierung.&lt;br /&gt;
Ich denke, das Einzige, was man Kraftstoffseitig machen kann wäre: Vergaser fett einstellen und über ein Luftbypassventil i.V. mit den aktuellen Lambdawerten das Gemisch auf Lambda 1 halten, bei Bedarf (Beschleunigung etc) anfetten (also die Zusatzluft verringern). Cool ist, daß Du ja keinen KAT hast und das Gemisch also nicht pendeln muss.&lt;br /&gt;
&lt;br /&gt;
Zündung: Ich denke, Du solltest dem Rat von Duselbaer folgen und auf einen Saugrohrdrucksensor ausweichen (da Du den HFM 5 ja schon hast: nimm doch mal die Signale bei verschiedenen Lastzuständen auf; ob man die wegen der geringeren Luftmasse sinnvoll auswerten kann?). &lt;br /&gt;
Bezüglich Ionenstrommessung: sie Dir mal http://www.fahrzeug-elektrik.de/Ecce.htm an, da wird zumindest das Grundprizip erklärt. Die Schaltung an der Zündspule dazu ist einfach.&lt;br /&gt;
Ich könnte mir das folgendermassen vorstellen: Zylinder A kommt in den (über Drehzahl und Last ermittelten) Zündzeitpunkt und ein Pin löst die Zündung aus. Danach startest Du einen ADC und sampelst den Ionenstrom mit. Das Flammfrontsignal schmeißt Du (zunächst) weg und der nächste Spitzenwert ist der Beginn des Klopfsignals. Ausgehend vom Spitzenwert können nur noch fallende Werte kommen; andernfalls hast Du eine klopfende Verbrennung und mußt drauf reagieren (üblicherweise 4 Grad später zünden). Bei einer erkannten klopenden Verbrennung startest Du außerdem einen Zähler der nach 50...100 klopffreien Verbrennungen den ZZP wieder nach vorn verschiebt (üblicherweise in 0,3...0,6 Grad Schritten). Das ginge dann in Richtung einer &amp;quot;adaptiven Klopfregelung&amp;quot;...&lt;br /&gt;
Interessant wäre aber auch die Frage, ob der Trabantmotor aufgrund seiner ziemlich geringen Verdichtung überhaupt zum Klopfen neigt. &lt;br /&gt;
Zum akustischen Klopfsensor: Es gibt bei Bosch extra einen Chip zur Auswertung des Signals... und https://www.mdt.tu-berlin.de/menue/forschung/abgeschlossene_forschungsprojekte/klopferkennung/&lt;br /&gt;
Bei der IAV gibts auch noch was über Klopferkennung...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wie gesagt: Just my 2 Cents... ;-)&lt;br /&gt;
&lt;br /&gt;
Grß Elux&lt;br /&gt;
&lt;br /&gt;
PS: Die orginalen ZS des Trabant waren meiner Erinnerung nach bei Kontakt- und elektronischer Zündung gleich (die &amp;quot;Dicken&amp;quot;). Sie sind also primärseitig&lt;br /&gt;
ziemlich hochohmig. Daher ist der Primärstrom relativ gering, mit alles daraus resultierenden Folgen...&lt;br /&gt;
&lt;br /&gt;
Gruß Elux&lt;br /&gt;
&lt;br /&gt;
Hallo Elux,&lt;br /&gt;
&lt;br /&gt;
schau doch mal in meinen Artikel unter Zielsetzung Version 2. Da beschreibe ich genau dieses Konzept des fett eingestellten Vergasers mit geregeltem Bypass. Das wäre bei dem Vergaser wohl die einfachste Variante und man kann erstmal viel lernen. Das Thema Einspritzung kommt für mich erst in Frage, wenn das erfolgreich funktioniert. Wie gesagt, ich will kleine überschaubare Häppchen machen. :)&lt;br /&gt;
&lt;br /&gt;
Saugrohrdrucksensor: Naja, ganz so weit bin ich eben noch nicht. Der HFM5 liegt hier und liefert schon ein paar Werte, aber ich muss ihn noch ins Fahrzeug einbauen und den Kabelbaum dafür basteln. Nen Saugrohrdrucksensor habe ich allerdings auch schon da. Ich will auf jeden Fall beides ausprobieren und mal sehen, womit man mehr anfangen kann. :)&lt;br /&gt;
&lt;br /&gt;
Ionenstrommessung: Vielen Dank für den Link. Werde ich mir auf jeden Fall anschauen. :) Das klingt auch alles sehr vielversprechend und ich werde mich da auch rantasten. Allerdings bezweifle ich, dass die Signalauswertung so einfach ist, wie sie bei dir klingt. Rein theoretisch und vom Grundprinzip her wirst du schon recht haben. Die Praxis sieht aber vermutlich so aus, dass man mit dem ADC vom XMC (habs jetzt nicht nachgerechnet) garnicht so schnell sampeln kann, wie es für diese Auswertung notwendig wäre. Man hat außerdem auf jedem analogen Messwert ein Rauschen drauf. Aus beruflicher Erfahrung weiß ich, dass analoge Messwerte so gut wie immer Probleme verstecken, die man bei der oberflächlichen Betrachtung um Großenordnungen unterschätzt. Ich bin da äußerst vorsichtig mit dem Wort &amp;quot;einfach&amp;quot; geworden. :D Algorithmen, die auf solchen Daten richtig zuverlässig arbeiten sind zumeist garnicht so simpel. Das soll jetzt aber nicht so klingen, als ob ich deinen Beitrag nicht zu schätzen weiß, oder schlechtreden will. Im Gegenteil finde ich das Thema äußerst spannend und ich will mich damit auf jeden Fall beschäftigen. Also danke nochmal für den Hinweis und den Link.&lt;br /&gt;
&lt;br /&gt;
Zunächst halte ich aber an meiner alten Agenda fest und will erstmal HFM5, Lambdasonde und Drehzahlerfassung sauber zum Laufen bringen. Das ganze will ich auch gut aufzeichnen können. Dann kann ich erstmal ein paar Erkenntnisse gewinnen, bevor ich mir die nächsten Ziele setze.&lt;br /&gt;
&lt;br /&gt;
Klopfen: Ein sauber eingestellter Motor der völlig original ist, neigt nicht unbedingt zum Klopfen. Es gab aber hohe Fertigungstolleranzen. Wenn man Pech hat neigt so ein Trabantmotor unter Volllast im Leistungsoptimum etwas zum Klingeln (Klopfen beim 2-Takter). Nicht selten höhrt man auch Lastabwurfklingeln (Klingeln beim spontanen Schließen der Drosselklappe im Volllastbereich. Mein Motor leider darunter auch ein wenig.&lt;br /&gt;
&lt;br /&gt;
Gruß, Felix&lt;br /&gt;
&lt;br /&gt;
Hallo Felix&lt;br /&gt;
&lt;br /&gt;
das ist schon OK, Stück für Stück vorzugehen und erst einmal Daten zu sammeln und (ich nenne das so :) ) Technologietests zu machen.&lt;br /&gt;
&lt;br /&gt;
Saugrohrdrucksensor: (oder besser HFM5) für den Kabelbaumstecker am HFM würde ich zum Schott wandern und mir einen passenden Stecker irgendwo abknipsen, solltest Du Dir einen Neuen kaufen wollen, nimm eine Sauerstofflasche mit ;-) Die Belegung weißt Du ja schon (der 4 Kabel), der 5. unbelegte Pin ist zum Kalibrieren: wenn Du die 12V zum Heizen anlegst (bei aufgesteckten Deckeln) und an den 5.Pin genau 5,000 V, dann solltest Du am Signalausgang genau 1,000V messen können, andernfalls ist er beschädigt, verschmutzt oder einfach nur defekt. &lt;br /&gt;
Wenn Du mir die Bosch-Nr. von dem HFM verrätst, sehe ich mal nach, welche Pins Du brauchst, die Dinger gibt es bei Würth, H&amp;amp;B oder so für ein paar Cents -&amp;gt; nichts ist frustender, als Wackelkontakte an Kabeln beim Erproben... ;-)&lt;br /&gt;
&lt;br /&gt;
Ionenstrommessung: sieh mal hier nach, vielleicht interessiert das: www.kartinfos-forum.de/attachment.php?aid=5071 , auch wenn das noch in der Zukunft liegt. Ja, Algos sind so eine Sache, da hast Du aber wirklich recht. ;-)&lt;br /&gt;
Ob die ADCs das mitmachen kann ich nicht beurteilen, kenne den/die XMCs nicht...Für &amp;quot;Kleinigkeiten&amp;quot; nehme ich i.d.R. Atmels, für andere Anwendungen größere &amp;quot;Boliden&amp;quot; ;-) (OT: daher werkelt in meinem Handy ja auch ein 8-Kerner...)&lt;br /&gt;
Sieh mal hier: http://www.maf-map-engineering.de/downloads/Ecu481_Handbuch.pdf , der macht das alles in einem Mega2560.&lt;br /&gt;
Das Handbuch ist auch ohne Anlage ganz lesenswert, finde ich.&lt;br /&gt;
&lt;br /&gt;
MfG&lt;br /&gt;
Elux&lt;br /&gt;
&lt;br /&gt;
Hallo Elux,&lt;br /&gt;
&lt;br /&gt;
danke für die Informationen zu dem Stecker. Ich habe genau so einen Stecker vom Schrott - passt super. :) Die Bosch Nummer von meinem Sensor lautet: 0 280 218 119&lt;br /&gt;
&lt;br /&gt;
Das mit dem Kalibrieren wusste ich noch garnicht. Das ist echt gut zu wissen. Muss ich unbedingt an meinen Sensoren mal austesten.&lt;br /&gt;
&lt;br /&gt;
Gruß, Felix&lt;br /&gt;
&lt;br /&gt;
Zu &amp;quot;Beim Wettbewerb hat es trotzdem nur für Platz 10 von 12 Teilnehmern gereicht.&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
Die Artikel 2-12 1 wurden in der Gewinnankündigung alphabetisch geordnet, nicht nach Jury-Bewertung, da sie sowieso alle den selben Preis bekommen haben.&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Andreas|andreas]] ([[Benutzer Diskussion:Andreas|Diskussion]]) 23:50, 31. Aug. 2014 (CEST)&lt;br /&gt;
&lt;br /&gt;
Hallo Andreas,&lt;br /&gt;
&lt;br /&gt;
dass die Gewinnankündigung auf eurer Seite alphabetisch war, habe ich schon gelesen - würde ja auch mit dem 10. Platz nicht hinkommen. Allerdings hat mir Infineon Folgendes geschrieben: &lt;br /&gt;
&lt;br /&gt;
8&amp;lt;------------&lt;br /&gt;
&lt;br /&gt;
Hallo Felix,&lt;br /&gt;
&lt;br /&gt;
vielen Dank für deine Teilnahme an unserem XMC2GO Design Contest auf mikrocontroller.net. Die Jury hat entschieden und dein super Trabi-Projekt auf den 10. Platz gewählt. Dein Preis ist eines unserer XMC Kits - du kannst dich entscheiden, welches du lieber magst (siehe unten). Und natürlich bräuchte ich auch noch deine Adresse für den Versand. Sobald ich weiß, welches Kit es sein soll und deine Adresse habe, veranlasse ich alles weitere.&lt;br /&gt;
&lt;br /&gt;
XMC4400 Motor Control Kit&lt;br /&gt;
Oder&lt;br /&gt;
XMC4500 Automation Kit#1&lt;br /&gt;
&lt;br /&gt;
http://www.infineon.com/cms/de/product/microcontroller/32-bit-industrial-microcontroller-based-on-arm-registered-cortex-tm-m/32-bit-xmc4000-industrial-microcontroller-arm-registered-cortex-tm-m4/xmc-development-tools-software-and-kits/xmc4000-application-kit/channel.html?channel=db3a30433580b3710135a07979ac3874&lt;br /&gt;
&lt;br /&gt;
Viele Grüße aus Neubiberg&lt;br /&gt;
&lt;br /&gt;
8&amp;lt;------------&lt;br /&gt;
&lt;br /&gt;
Gruß, Felix&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Diskussion:Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=84720</id>
		<title>Diskussion:Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Diskussion:Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=84720"/>
		<updated>2014-08-31T16:46:36Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: /* Schließwinkel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Klasse Projekt!&lt;br /&gt;
Endlich mal keine CNC Steuerung oder Wordclock.&lt;br /&gt;
&lt;br /&gt;
Ich schließe mich dem Vorredner an, tolles Projekt - sowas in der Art wollte ich für meine Yamaha XT 600 Bj. 90 auch schonmal angehen. Bis jetzt hab ich die Einschweißmuffe für die Lamdbasonde ... mehr noch nicht :(&lt;br /&gt;
Aber was mich hauptsächlich interessiert: Wofür brauchst Du die angesaugte Luftmasse? Meiner Meinung nach ist das nur für Einspritzer relevant, weil die aus der Luftmasse und der Temperatur die Einspritzmenge herleiten. Beim Vergaser, den der Trabbi ja nunmal hat, bringt Dir der Messwert doch eigentlich nix - oder willst Du auf Einspritzer umbauen? Wenn ja, kennst Du &amp;quot;Megasquirt&amp;quot;? Eine Alternative zum Luftmassenmesser fällt mir noch ein: der MAP-Sensor - damit wird über den Saugrohrunterdruck die Luftmenge errechnet - oftmals günstiger zu haben, als ein LMM.&lt;br /&gt;
&lt;br /&gt;
== Weitere Ideen / Anmerkungen ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Motorbremse:&#039;&#039;&#039;&lt;br /&gt;
Eine Schubabschaltung läßt sich relativ leicht bewerkstelligen, wenn ein Drosselklappenpotentiometer und ein Leerlaufabschaltventil vorhanden ist, was aber bei diesem Vergaser fehlt...&lt;br /&gt;
Du kannst ja die Zündung in der Schubphase abschalten, wenn Dich das Knallen bei Erreichen der Leerlaufdrehzahl nicht stört ;-) Haben wir bei der Armee dazumals manchmal gemacht, beim Ural hats dann manchmal den Schalldämpfer zerlegt... &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zündung:&#039;&#039;&#039; &lt;br /&gt;
Warum Schließwinkelregelung? Warum nicht eine Hochfrequenzzündung a la Daimler / Bosch? Mit Kontaktabständen von 2-3 mm an den Zündkerzen, um magere Gemische sicher zünden zu können (oder E85 ???) oder das Kaltstartverhalten dahingehend zu verändern, den Choke nur wenig oder garnicht zu benötigen. Verrusste Zündkerzen sind kein Problem mehr etc. Also zur Abwechlung mal was Modernes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Öldosierung:&#039;&#039;&#039; &lt;br /&gt;
Wäre möglich, um das lästige Blaurauchverhalten einzuschränken. Da sehe ich auch ein Problem der Lambdamessung per Sonde. Es soll wohl nachteilig sein, die Sondenkeramik mit Öldämpfen zu bearbeiten... &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klopfsensor:&#039;&#039;&#039;&lt;br /&gt;
Wozu? Das Signal ist aufwendig zu filtern und auszuwerten. Lausche mal mit einem Schraubenzieher hinter dem Ohr auf den Motorlauf eines Trabanten! Klappern der Drehschieber, Geräusche von Lüfter und Lichtmaschine etc -&amp;gt; das mußt Du alles sauber wegfiltern um ein Klopfereignis sicher erkennen zu können. Sinvoller ist aus meiner Sicht der Ansatz Klopferkennung per Ionenstrommessung -&amp;gt; geht auch per HF-Zündung. Geschickt ausgewertet, spart Dir eine Ionenstrommessung auch die Lasterfassung und die Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just my 2 Cents...&lt;br /&gt;
&lt;br /&gt;
MfG&lt;br /&gt;
Elux&lt;br /&gt;
&lt;br /&gt;
Hallo Duselbaer,&lt;br /&gt;
&lt;br /&gt;
 danke für die Blumen. Beim Wettbewerb hat es trotzdem nur für Platz 10 von 12 Teilnehmern gereicht. Na was solls. Ich mach trotzdem weiter. :P&lt;br /&gt;
&lt;br /&gt;
 Den Luftmassenmesser habe ich vorgesehen, weil mich das einfach mal interessiert hat. Und ja, ich schließe nicht aus, mich auch mal mit dem Thema Einspritzung zu beschäftigen (steht auch im Artikel). Es ist ja naheliegend, wenn man schon ein tolles Steuergerät im Auto hat und sich mit der ganzen Thematik auseinander setzt, dann auch noch den Vergaser ganz durch eine schöne Einspritzsteuerung zu ersetzen. Aber das ist noch etwas zu weit in die Zukunft gegriffen. Ich muss mich dem Thema langsam annähern, sonst ist der Frustfaktor zu hoch. ;)&lt;br /&gt;
&lt;br /&gt;
 Die Megasquirt ist mir durchaus ein Begriff. Ich habe im Netz auch einen Forumsbeitrag gefunden, wo jemand damit eine Einspritzung für den Trabant realisiert hat. Aber wie im Projekt beschrieben ist nicht mein Ziel das ganze möglichst simpel und einfach zu erreichen, sondern alles selbst zu machen und viel bei zu lernen. Ist eben ein Hobby und ich tobe mich da etwas aus. Ist halt einfach zu spannend, als dass ich mich mit einer Fertiglösung zufrieden geben könnte. Saugrohrunterdrucksensor steht definitiv schon auf meiner Liste - wie im Artikel erwähnt. Das will ich auch mal ausprobieren.&lt;br /&gt;
&lt;br /&gt;
 Ich freue mich, dass hier scheinbar eine kleine Diskussion entsteht und begrüße jeden konstruktiven Beitrag. :)&lt;br /&gt;
&lt;br /&gt;
Gruß, Felix&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hallo Elux,&lt;br /&gt;
&lt;br /&gt;
 vielen Dank für deine Ideen und Anregungen. Vieles davon ging mir auch schon durch den Kopf. Deine Idee der Motorbremse war mal in einer alten &amp;quot;Kraftfahrzeugtechnik&amp;quot;-Zeitschrift beschrieben. Das funktionierte wohl sehr gut. Solange ich aber noch den H1-1 Vergaser als Basis für die Gemischaufbereitung benutze, wird das wohl nix. Dieser Vergaser hat eben keinen Leerlaufvergaser den man einfach so abschalten kann. Da bleibt dann wirklich nurnoch die Zündung abzuschalten. Der Kraftstoff und damit die Schmierung sollte ja tunlichst weiterfließen. Das will ich zumindest mal ausprobieren. Ich denke, das Knallen beim wieder Zünden wird sich in Grenzen halten - aber das wird man nur ausprobieren können.&lt;br /&gt;
&lt;br /&gt;
 Langfristig wäre natürlich eine eigene Gemischaufbereitung toll. Dann kann man auch vorsehen die Drosselklappe komplett zu schließen. Das wäre dann wohl eine sehr schöne Motorbremse.&lt;br /&gt;
&lt;br /&gt;
 Zündung: Schließwinkelregelung? Soweit ich mich entsinne, habe ich nur was von variablen Ladezeiten der Zündspulen geschrieben. Einen Schließwinkel gibt es ja dank Hall-Geber garnicht mehr. Die sache mit der Mehrfachzündung ist sicher auch interessant, aber das lässt sich mit dem aktuellen Aufbau nicht realisieren. Dazu muss ich zunächst einen eigenen Hochspannungsteil bauen, bei dem sich beide Zündspulen getrennt steuern lassen. Das ist auch für variablen Ladezeiten notwendig. Das wird wohl noch etwas dauern - immerhin bin ich eigentlich kein Elektroniker. Aber ja, die Idee geisterte mir auch schon durch den Kopf. :)&lt;br /&gt;
&lt;br /&gt;
Gruß, Felix&lt;br /&gt;
&lt;br /&gt;
== Schließwinkel ==&lt;br /&gt;
&lt;br /&gt;
Hallo Felix,&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Soweit ich mich entsinne, habe ich nur was von variablen Ladezeiten der Zündspulen geschrieben...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Der Schließwinkel ist &amp;quot;sozusagen&amp;quot; die Ladezeit. Ich schätze, Du meinst den Zündwinkel...&amp;lt;br /&amp;gt;&lt;br /&gt;
Wenn der Schließwinkel konstant ist (z.B. bei der Kontaktzündung), ist die Ladezeit variabel und umgedreht. &lt;br /&gt;
Die (Lade-) Schließzeit muss zu den Züdspulen passen: ist sie zu klein, wird die Hochspannung weniger; ist sie zu groß wird die Zündspule zu heiß. Daher hat jede moderne Zündspule &amp;quot;ihre persönliche Ladezeit&amp;quot;.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ja klar brauchst Du also einen eigenen Hochspannungsteil - so oder so. &amp;lt;br /&amp;gt;&lt;br /&gt;
Es gibt (z.B. bei älteren Japanern) fertige Zündendstufen, die den erheblich höheren Primärstrom moderner Zündspulen problemslos schalten können, für den Einsatz im Auto (und an einem µC!) konzipiert sind und &amp;quot;fürn Schmalen&amp;quot; entweder im Zubehör oder auf dem Schrott zu haben sind. &amp;lt;br /&amp;gt;&lt;br /&gt;
Eine andere Schiene wären (keine Ahnung, ob der Platz reicht...) Stabzündspulen aus der gleichen Quelle mit eingebauten Endstufen...&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Ich denke, das Knallen beim wieder Zünden wird sich in Grenzen halten...&amp;quot;&lt;br /&gt;
Naja - hast ja einen Edelstahlauspuff...;-) &lt;br /&gt;
Ich denke, das ist Murks und wird Dir recht schnell &amp;quot;auf den Zünder gehen&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
MfG&lt;br /&gt;
Elux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hallo Elux,&lt;br /&gt;
&lt;br /&gt;
 Nix für Ungut, aber der Unterschied zwischen Ladezeit, Schließwinkel und Zündwinkel ist mir durchaus bewusst. Ein klein Wenig habe ich mich mit dem Thema ja schon auseinander gesetzt. ;)&lt;br /&gt;
&lt;br /&gt;
 Du hast schon recht, dass man auf der Zündungsseite noch richtig viel machen kann, wenn man die Schaltzeiten für die Zündspulen völlig frei wählen könnte. Das würde ich auch liebend gern sofort anpacken. Aber auch wenn es einfach klingt ein fertiges Zündmodul o.ä. zu benutzen zeigt mir meine Erfahrung, dass man mit jedem neuen Bauteil das man anfässt eben doch eine riesen Baustelle aufmacht. Es ist nunmal so, dass ich das Projekt als reines Hobby betreibe. Ich habe jede Woche ein paar Stunden dafür. Da muss man sich hier und da schon einschränken und kann nicht alles auf einmal machen. Ich habe viel darüber gelesen und ich habe auch ein paar Kompacktzündmodule und sogar welche von den erwähnten Stabzündspulen, die einfach oben auf die Kerzen gesteckt werden, im Keller liegen. Alles tolle Sachen, die ich auch sicher irgendwann mal ausprobiere. Aber Datenblätter dazu liegen auch nicht gerade vor meiner Haustür rum. Tatsächlich ist es sogar so, dass es meiner Erfahrung nach verdammt schwer ist, für solche Teile brauchbare Informationen zusammen zu tragen. Daher war mein erster Ansatz wie beschrieben einfach das Signal der originalen Zündung nach Bedarf zu verzögern. Dadurch bleibt der Kurbelwellenwinkel über den die Zündspulen geladen werden (bei Unterbrechern wäre das der Schließwinkel, bei einer kontaktlosen Zündung würde ich das eben nicht so nennen) eben mehr oder weniger konstant bei 180°. Je nach Drehzahl variiert dadurch die Ladezeit. Das ist sicher alles andere als ideal, aber wie gesagt habe ich diese Variante ganz bewusst als erste Realisierungsstufe gewählt. Die originalen Zündspulen kommen damit ja durchaus zurecht.&lt;br /&gt;
&lt;br /&gt;
 Ich wollte noch auf deine anderen beiden Anregungen eingehen:&lt;br /&gt;
&lt;br /&gt;
 Öldosierung: Das Thema ist besser bekannt als Getrenntschmierung. Es mag Hersteller geben, die dieses Verfahren sauber umgesetzt bekommen haben, aber ich will da lieber die Finger von lassen. Wenn da etwas schief geht, ist relativ unmittelbar der Motor hinüber. Man müsste daher sehr zuverlässig sicherstellen, dass jederzeit die richtige Menge Öl beigemischt wird. Wenn da nur einmal die entscheidende Düse verstopft ist, kann es das innerhalb von wenigen Kilometern gewesen sein. Und wie will man das jederzeit sicher erkennen? Auf der anderen Seite ist es so, dass bei korrekt vorgemischtem Benzin die Ölschmierung immer ausreichen müsste, solange der Motor noch läuft. Das Risiko ist hier deutlich niedriger. Aber wenn du da eine geniale Idee hast, dann immer her damit. &lt;br /&gt;
&lt;br /&gt;
 Im Übrigen ist es so, dass man bei gut eingestelltem Vergaser und dynamischen Zündzeitpunkt meiner Meinung nach fast nichts mehr von der blauen Fahne sieht. Klar nebelt der Motor ein klein wenig direkt nach dem Kaltstart. Das hat aber nix mit dem Öl zu tun und ist bei 4-Taktern auch nicht anders. Das Öl auf der Lambdasonde ist sicher nicht ideal, andere 2-Takter fahren aber auch problemlos mit Lambdasonden umher. Wir werden sehen.&lt;br /&gt;
&lt;br /&gt;
 Klopfsensor: Das mit der Ionenstrommessung habe ich auch mal gelesen. Aber ob das so viel einfacher ist, wage ich zu bezweifeln. Insgesamt ist das Thema Klopferkennung (egal welches Verfahren) ganz sicher nicht simpel. Bis ich den Luxus habe, mir darüber konkrete Gedanken machen zu können, vergehen aber sicher noch einige Monate. Erstmal müssen andere viel grundlegendere Sachen sauber funktionieren. ;)&lt;br /&gt;
&lt;br /&gt;
Gruß, Felix&lt;br /&gt;
&lt;br /&gt;
Hallo Felix,&lt;br /&gt;
&lt;br /&gt;
Verstehe ;-)&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Aber Datenblätter dazu liegen auch nicht gerade vor meiner Haustür rum. Tatsächlich ist es sogar so, dass es meiner Erfahrung nach verdammt schwer ist, für solche Teile brauchbare Informationen zusammen zu tragen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
entschuldige, manchmal vergesse ich, wie schwer es für Leute außerhalb der Kfz-Branche ist an Daten zu kommen (Datenblätter habe ich i.d.R. aber auch nicht). Bezüglich z.B. der Zündspulen würde ich mir die gesuchten Daten einfach an einem OE Fahrzeug ausmessen...&lt;br /&gt;
&lt;br /&gt;
Vergiss das mit der Öldosierung: Du hast recht, wenn Du bei Schubabschaltung längere Zeit fährst (z.B. länge Zeit bergab) geht der Motor fest mangels Schmierung.&lt;br /&gt;
Ich denke, das Einzige, was man Kraftstoffseitig machen kann wäre: Vergaser fett einstellen und über ein Luftbypassventil i.V. mit den aktuellen Lambdawerten das Gemisch auf Lambda 1 halten, bei Bedarf (Beschleunigung etc) anfetten (also die Zusatzluft verringern). Cool ist, daß Du ja keinen KAT hast und das Gemisch also nicht pendeln muss.&lt;br /&gt;
&lt;br /&gt;
Zündung: Ich denke, Du solltest dem Rat von Duselbaer folgen und auf einen Saugrohrdrucksensor ausweichen (da Du den HFM 5 ja schon hast: nimm doch mal die Signale bei verschiedenen Lastzuständen auf; ob man die wegen der geringeren Luftmasse sinnvoll auswerten kann?). &lt;br /&gt;
Bezüglich Ionenstrommessung: sie Dir mal http://www.fahrzeug-elektrik.de/Ecce.htm an, da wird zumindest das Grundprizip erklärt. Die Schaltung an der Zündspule dazu ist einfach.&lt;br /&gt;
Ich könnte mir das folgendermassen vorstellen: Zylinder A kommt in den (über Drehzahl und Last ermittelten) Zündzeitpunkt und ein Pin löst die Zündung aus. Danach startest Du einen ADC und sampelst den Ionenstrom mit. Das Flammfrontsignal schmeißt Du (zunächst) weg und der nächste Spitzenwert ist der Beginn des Klopfsignals. Ausgehend vom Spitzenwert können nur noch fallende Werte kommen; andernfalls hast Du eine klopfende Verbrennung und mußt drauf reagieren (üblicherweise 4 Grad später zünden). Bei einer erkannten klopenden Verbrennung startest Du außerdem einen Zähler der nach 50...100 klopffreien Verbrennungen den ZZP wieder nach vorn verschiebt (üblicherweise in 0,3...0,6 Grad Schritten). Das ginge dann in Richtung einer &amp;quot;adaptiven Klopfregelung&amp;quot;...&lt;br /&gt;
Interessant wäre aber auch die Frage, ob der Trabantmotor aufgrund seiner ziemlich geringen Verdichtung überhaupt zum Klopfen neigt. &lt;br /&gt;
Zum akustischen Klopfsensor: Es gibt bei Bosch extra einen Chip zur Auswertung des Signals... und https://www.mdt.tu-berlin.de/menue/forschung/abgeschlossene_forschungsprojekte/klopferkennung/&lt;br /&gt;
Bei der IAV gibts auch noch was über Klopferkennung...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wie gesagt: Just my 2 Cents... ;-)&lt;br /&gt;
&lt;br /&gt;
Grß Elux&lt;br /&gt;
&lt;br /&gt;
PS: Die orginalen ZS des Trabant waren meiner Erinnerung nach bei Kontakt- und elektronischer Zündung gleich (die &amp;quot;Dicken&amp;quot;). Sie sind also primärseitig&lt;br /&gt;
ziemlich hochohmig. Daher ist der Primärstrom relativ gering, mit alles daraus resultierenden Folgen...&lt;br /&gt;
&lt;br /&gt;
Gruß Elux&lt;br /&gt;
&lt;br /&gt;
Hallo Elux,&lt;br /&gt;
&lt;br /&gt;
 schau doch mal in meinen Artikel unter Zielsetzung Version 2. Da beschreibe ich genau dieses Konzept des fett eingestellten Vergasers mit geregeltem Bypass. Das wäre bei dem Vergaser wohl die einfachste Variante und man kann erstmal viel lernen. Das Thema Einspritzung kommt für mich erst in Frage, wenn das erfolgreich funktioniert. Wie gesagt, ich will kleine überschaubare Häppchen machen. :)&lt;br /&gt;
&lt;br /&gt;
 Saugrohrdrucksensor: Naja, ganz so weit bin ich eben noch nicht. Der HFM5 liegt hier und liefert schon ein paar Werte, aber ich muss ihn noch ins Fahrzeug einbauen und den Kabelbaum dafür basteln. Nen Saugrohrdrucksensor habe ich allerdings auch schon da. Ich will auf jeden Fall beides ausprobieren und mal sehen, womit man mehr anfangen kann. :)&lt;br /&gt;
&lt;br /&gt;
 Ionenstrommessung: Vielen Dank für den Link. Werde ich mir auf jeden Fall anschauen. :) Das klingt auch alles sehr vielversprechend und ich werde mich da auch rantasten. Allerdings bezweifle ich, dass die Signalauswertung so einfach ist, wie sie bei dir klingt. Rein theoretisch und vom Grundprinzip her wirst du schon recht haben. Die Praxis sieht aber vermutlich so aus, dass man mit dem ADC vom XMC (habs jetzt nicht nachgerechnet) garnicht so schnell sampeln kann, wie es für diese Auswertung notwendig wäre. Man hat außerdem auf jedem analogen Messwert ein Rauschen drauf. Aus beruflicher Erfahrung weiß ich, dass analoge Messwerte so gut wie immer Probleme verstecken, die man bei der oberflächlichen Betrachtung um Großenordnungen unterschätzt. Ich bin da äußerst vorsichtig mit dem Wort &amp;quot;einfach&amp;quot; geworden. :D Algorithmen, die auf solchen Daten richtig zuverlässig arbeiten sind zumeist garnicht so simpel. Das soll jetzt aber nicht so klingen, als ob ich deinen Beitrag nicht zu schätzen weiß, oder schlechtreden will. Im Gegenteil finde ich das Thema äußerst spannend und ich will mich damit auf jeden Fall beschäftigen. Also danke nochmal für den Hinweis und den Link.&lt;br /&gt;
&lt;br /&gt;
 Zunächst halte ich aber an meiner alten Agenda fest und will erstmal HFM5, Lambdasonde und Drehzahlerfassung sauber zum Laufen bringen. Das ganze will ich auch gut aufzeichnen können. Dann kann ich erstmal ein paar Erkenntnisse gewinnen, bevor ich mir die nächsten Ziele setze.&lt;br /&gt;
&lt;br /&gt;
 Klopfen: Ein sauber eingestellter Motor der völlig original ist, neigt nicht unbedingt zum Klopfen. Es gab aber hohe Fertigungstolleranzen. Wenn man Pech hat neigt so ein Trabantmotor unter Volllast im Leistungsoptimum etwas zum Klingeln (Klopfen beim 2-Takter). Nicht selten höhrt man auch Lastabwurfklingeln (Klingeln beim spontanen Schließen der Drosselklappe im Volllastbereich. Mein Motor leider darunter auch ein wenig.&lt;br /&gt;
&lt;br /&gt;
Gruß, Felix&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Diskussion:Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=84677</id>
		<title>Diskussion:Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Diskussion:Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=84677"/>
		<updated>2014-08-28T19:58:57Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Klasse Projekt!&lt;br /&gt;
Endlich mal keine CNC Steuerung oder Wordclock.&lt;br /&gt;
&lt;br /&gt;
Ich schließe mich dem Vorredner an, tolles Projekt - sowas in der Art wollte ich für meine Yamaha XT 600 Bj. 90 auch schonmal angehen. Bis jetzt hab ich die Einschweißmuffe für die Lamdbasonde ... mehr noch nicht :(&lt;br /&gt;
Aber was mich hauptsächlich interessiert: Wofür brauchst Du die angesaugte Luftmasse? Meiner Meinung nach ist das nur für Einspritzer relevant, weil die aus der Luftmasse und der Temperatur die Einspritzmenge herleiten. Beim Vergaser, den der Trabbi ja nunmal hat, bringt Dir der Messwert doch eigentlich nix - oder willst Du auf Einspritzer umbauen? Wenn ja, kennst Du &amp;quot;Megasquirt&amp;quot;? Eine Alternative zum Luftmassenmesser fällt mir noch ein: der MAP-Sensor - damit wird über den Saugrohrunterdruck die Luftmenge errechnet - oftmals günstiger zu haben, als ein LMM.&lt;br /&gt;
&lt;br /&gt;
== Weitere Ideen / Anmerkungen ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Motorbremse:&#039;&#039;&#039;&lt;br /&gt;
Eine Schubabschaltung läßt sich relativ leicht bewerkstelligen, wenn ein Drosselklappenpotentiometer und ein Leerlaufabschaltventil vorhanden ist, was aber bei diesem Vergaser fehlt...&lt;br /&gt;
Du kannst ja die Zündung in der Schubphase abschalten, wenn Dich das Knallen bei Erreichen der Leerlaufdrehzahl nicht stört ;-) Haben wir bei der Armee dazumals manchmal gemacht, beim Ural hats dann manchmal den Schalldämpfer zerlegt... &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zündung:&#039;&#039;&#039; &lt;br /&gt;
Warum Schließwinkelregelung? Warum nicht eine Hochfrequenzzündung a la Daimler / Bosch? Mit Kontaktabständen von 2-3 mm an den Zündkerzen, um magere Gemische sicher zünden zu können (oder E85 ???) oder das Kaltstartverhalten dahingehend zu verändern, den Choke nur wenig oder garnicht zu benötigen. Verrusste Zündkerzen sind kein Problem mehr etc. Also zur Abwechlung mal was Modernes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Öldosierung:&#039;&#039;&#039; &lt;br /&gt;
Wäre möglich, um das lästige Blaurauchverhalten einzuschränken. Da sehe ich auch ein Problem der Lambdamessung per Sonde. Es soll wohl nachteilig sein, die Sondenkeramik mit Öldämpfen zu bearbeiten... &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klopfsensor:&#039;&#039;&#039;&lt;br /&gt;
Wozu? Das Signal ist aufwendig zu filtern und auszuwerten. Lausche mal mit einem Schraubenzieher hinter dem Ohr auf den Motorlauf eines Trabanten! Klappern der Drehschieber, Geräusche von Lüfter und Lichtmaschine etc -&amp;gt; das mußt Du alles sauber wegfiltern um ein Klopfereignis sicher erkennen zu können. Sinvoller ist aus meiner Sicht der Ansatz Klopferkennung per Ionenstrommessung -&amp;gt; geht auch per HF-Zündung. Geschickt ausgewertet, spart Dir eine Ionenstrommessung auch die Lasterfassung und die Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just my 2 Cents...&lt;br /&gt;
&lt;br /&gt;
MfG&lt;br /&gt;
Elux&lt;br /&gt;
&lt;br /&gt;
Hallo Duselbaer,&lt;br /&gt;
&lt;br /&gt;
 danke für die Blumen. Beim Wettbewerb hat es trotzdem nur für Platz 10 von 12 Teilnehmern gereicht. Na was solls. Ich mach trotzdem weiter. :P&lt;br /&gt;
&lt;br /&gt;
 Den Luftmassenmesser habe ich vorgesehen, weil mich das einfach mal interessiert hat. Und ja, ich schließe nicht aus, mich auch mal mit dem Thema Einspritzung zu beschäftigen (steht auch im Artikel). Es ist ja naheliegend, wenn man schon ein tolles Steuergerät im Auto hat und sich mit der ganzen Thematik auseinander setzt, dann auch noch den Vergaser ganz durch eine schöne Einspritzsteuerung zu ersetzen. Aber das ist noch etwas zu weit in die Zukunft gegriffen. Ich muss mich dem Thema langsam annähern, sonst ist der Frustfaktor zu hoch. ;)&lt;br /&gt;
&lt;br /&gt;
 Die Megasquirt ist mir durchaus ein Begriff. Ich habe im Netz auch einen Forumsbeitrag gefunden, wo jemand damit eine Einspritzung für den Trabant realisiert hat. Aber wie im Projekt beschrieben ist nicht mein Ziel das ganze möglichst simpel und einfach zu erreichen, sondern alles selbst zu machen und viel bei zu lernen. Ist eben ein Hobby und ich tobe mich da etwas aus. Ist halt einfach zu spannend, als dass ich mich mit einer Fertiglösung zufrieden geben könnte. Saugrohrunterdrucksensor steht definitiv schon auf meiner Liste - wie im Artikel erwähnt. Das will ich auch mal ausprobieren.&lt;br /&gt;
&lt;br /&gt;
 Ich freue mich, dass hier scheinbar eine kleine Diskussion entsteht und begrüße jeden konstruktiven Beitrag. :)&lt;br /&gt;
&lt;br /&gt;
Gruß, Felix&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hallo Elux,&lt;br /&gt;
&lt;br /&gt;
 vielen Dank für deine Ideen und Anregungen. Vieles davon ging mir auch schon durch den Kopf. Deine Idee der Motorbremse war mal in einer alten &amp;quot;Kraftfahrzeugtechnik&amp;quot;-Zeitschrift beschrieben. Das funktionierte wohl sehr gut. Solange ich aber noch den H1-1 Vergaser als Basis für die Gemischaufbereitung benutze, wird das wohl nix. Dieser Vergaser hat eben keinen Leerlaufvergaser den man einfach so abschalten kann. Da bleibt dann wirklich nurnoch die Zündung abzuschalten. Der Kraftstoff und damit die Schmierung sollte ja tunlichst weiterfließen. Das will ich zumindest mal ausprobieren. Ich denke, das Knallen beim wieder Zünden wird sich in Grenzen halten - aber das wird man nur ausprobieren können.&lt;br /&gt;
&lt;br /&gt;
 Langfristig wäre natürlich eine eigene Gemischaufbereitung toll. Dann kann man auch vorsehen die Drosselklappe komplett zu schließen. Das wäre dann wohl eine sehr schöne Motorbremse.&lt;br /&gt;
&lt;br /&gt;
 Zündung: Schließwinkelregelung? Soweit ich mich entsinne, habe ich nur was von variablen Ladezeiten der Zündspulen geschrieben. Einen Schließwinkel gibt es ja dank Hall-Geber garnicht mehr. Die sache mit der Mehrfachzündung ist sicher auch interessant, aber das lässt sich mit dem aktuellen Aufbau nicht realisieren. Dazu muss ich zunächst einen eigenen Hochspannungsteil bauen, bei dem sich beide Zündspulen getrennt steuern lassen. Das ist auch für variablen Ladezeiten notwendig. Das wird wohl noch etwas dauern - immerhin bin ich eigentlich kein Elektroniker. Aber ja, die Idee geisterte mir auch schon durch den Kopf. :)&lt;br /&gt;
&lt;br /&gt;
Gruß, Felix&lt;br /&gt;
&lt;br /&gt;
== Schließwinkel ==&lt;br /&gt;
&lt;br /&gt;
Hallo Felix,&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Soweit ich mich entsinne, habe ich nur was von variablen Ladezeiten der Zündspulen geschrieben...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Der Schließwinkel ist &amp;quot;sozusagen&amp;quot; die Ladezeit. Ich schätze, Du meinst den Zündwinkel...&amp;lt;br /&amp;gt;&lt;br /&gt;
Wenn der Schließwinkel konstant ist (z.B. bei der Kontaktzündung), ist die Ladezeit variabel und umgedreht. &lt;br /&gt;
Die (Lade-) Schließzeit muss zu den Züdspulen passen: ist sie zu klein, wird die Hochspannung weniger; ist sie zu groß wird die Zündspule zu heiß. Daher hat jede moderne Zündspule &amp;quot;ihre persönliche Ladezeit&amp;quot;.&amp;lt;br /&amp;gt;&lt;br /&gt;
Ja klar brauchst Du also einen eigenen Hochspannungsteil - so oder so. &amp;lt;br /&amp;gt;&lt;br /&gt;
Es gibt (z.B. bei älteren Japanern) fertige Zündendstufen, die den erheblich höheren Primärstrom moderner Zündspulen problemslos schalten können, für den Einsatz im Auto (und an einem µC!) konzipiert sind und &amp;quot;fürn Schmalen&amp;quot; entweder im Zubehör oder auf dem Schrott zu haben sind. &amp;lt;br /&amp;gt;&lt;br /&gt;
Eine andere Schiene wären (keine Ahnung, ob der Platz reicht...) Stabzündspulen aus der gleichen Quelle mit eingebauten Endstufen...&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Ich denke, das Knallen beim wieder Zünden wird sich in Grenzen halten...&amp;quot;&lt;br /&gt;
Naja - hast ja einen Edelstahlauspuff...;-) &lt;br /&gt;
Ich denke, das ist Murks und wird Dir recht schnell &amp;quot;auf den Zünder gehen&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
MfG&lt;br /&gt;
Elux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hallo Elux,&lt;br /&gt;
&lt;br /&gt;
 Nix für Ungut, aber der Unterschied zwischen Ladezeit, Schließwinkel und Zündwinkel ist mir durchaus bewusst. Ein klein Wenig habe ich mich mit dem Thema ja schon auseinander gesetzt. ;)&lt;br /&gt;
&lt;br /&gt;
 Du hast schon recht, dass man auf der Zündungsseite noch richtig viel machen kann, wenn man die Schaltzeiten für die Zündspulen völlig frei wählen könnte. Das würde ich auch liebend gern sofort anpacken. Aber auch wenn es einfach klingt ein fertiges Zündmodul o.ä. zu benutzen zeigt mir meine Erfahrung, dass man mit jedem neuen Bauteil das man anfässt eben doch eine riesen Baustelle aufmacht. Es ist nunmal so, dass ich das Projekt als reines Hobby betreibe. Ich habe jede Woche ein paar Stunden dafür. Da muss man sich hier und da schon einschränken und kann nicht alles auf einmal machen. Ich habe viel darüber gelesen und ich habe auch ein paar Kompacktzündmodule und sogar welche von den erwähnten Stabzündspulen, die einfach oben auf die Kerzen gesteckt werden, im Keller liegen. Alles tolle Sachen, die ich auch sicher irgendwann mal ausprobiere. Aber Datenblätter dazu liegen auch nicht gerade vor meiner Haustür rum. Tatsächlich ist es sogar so, dass es meiner Erfahrung nach verdammt schwer ist, für solche Teile brauchbare Informationen zusammen zu tragen. Daher war mein erster Ansatz wie beschrieben einfach das Signal der originalen Zündung nach Bedarf zu verzögern. Dadurch bleibt der Kurbelwellenwinkel über den die Zündspulen geladen werden (bei Unterbrechern wäre das der Schließwinkel, bei einer kontaktlosen Zündung würde ich das eben nicht so nennen) eben mehr oder weniger konstant bei 180°. Je nach Drehzahl variiert dadurch die Ladezeit. Das ist sicher alles andere als ideal, aber wie gesagt habe ich diese Variante ganz bewusst als erste Realisierungsstufe gewählt. Die originalen Zündspulen kommen damit ja durchaus zurecht.&lt;br /&gt;
&lt;br /&gt;
 Ich wollte noch auf deine anderen beiden Anregungen eingehen:&lt;br /&gt;
&lt;br /&gt;
 Öldosierung: Das Thema ist besser bekannt als Getrenntschmierung. Es mag Hersteller geben, die dieses Verfahren sauber umgesetzt bekommen haben, aber ich will da lieber die Finger von lassen. Wenn da etwas schief geht, ist relativ unmittelbar der Motor hinüber. Man müsste daher sehr zuverlässig sicherstellen, dass jederzeit die richtige Menge Öl beigemischt wird. Wenn da nur einmal die entscheidende Düse verstopft ist, kann es das innerhalb von wenigen Kilometern gewesen sein. Und wie will man das jederzeit sicher erkennen? Auf der anderen Seite ist es so, dass bei korrekt vorgemischtem Benzin die Ölschmierung immer ausreichen müsste, solange der Motor noch läuft. Das Risiko ist hier deutlich niedriger. Aber wenn du da eine geniale Idee hast, dann immer her damit. &lt;br /&gt;
&lt;br /&gt;
 Im Übrigen ist es so, dass man bei gut eingestelltem Vergaser und dynamischen Zündzeitpunkt meiner Meinung nach fast nichts mehr von der blauen Fahne sieht. Klar nebelt der Motor ein klein wenig direkt nach dem Kaltstart. Das hat aber nix mit dem Öl zu tun und ist bei 4-Taktern auch nicht anders. Das Öl auf der Lambdasonde ist sicher nicht ideal, andere 2-Takter fahren aber auch problemlos mit Lambdasonden umher. Wir werden sehen.&lt;br /&gt;
&lt;br /&gt;
 Klopfsensor: Das mit der Ionenstrommessung habe ich auch mal gelesen. Aber ob das so viel einfacher ist, wage ich zu bezweifeln. Insgesamt ist das Thema Klopferkennung (egal welches Verfahren) ganz sicher nicht simpel. Bis ich den Luxus habe, mir darüber konkrete Gedanken machen zu können, vergehen aber sicher noch einige Monate. Erstmal müssen andere viel grundlegendere Sachen sauber funktionieren. ;)&lt;br /&gt;
&lt;br /&gt;
Gruß, Felix&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Diskussion:Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=84659</id>
		<title>Diskussion:Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Diskussion:Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=84659"/>
		<updated>2014-08-27T16:28:45Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Klasse Projekt!&lt;br /&gt;
Endlich mal keine CNC Steuerung oder Wordclock.&lt;br /&gt;
&lt;br /&gt;
Ich schließe mich dem Vorredner an, tolles Projekt - sowas in der Art wollte ich für meine Yamaha XT 600 Bj. 90 auch schonmal angehen. Bis jetzt hab ich die Einschweißmuffe für die Lamdbasonde ... mehr noch nicht :(&lt;br /&gt;
Aber was mich hauptsächlich interessiert: Wofür brauchst Du die angesaugte Luftmasse? Meiner Meinung nach ist das nur für Einspritzer relevant, weil die aus der Luftmasse und der Temperatur die Einspritzmenge herleiten. Beim Vergaser, den der Trabbi ja nunmal hat, bringt Dir der Messwert doch eigentlich nix - oder willst Du auf Einspritzer umbauen? Wenn ja, kennst Du &amp;quot;Megasquirt&amp;quot;? Eine Alternative zum Luftmassenmesser fällt mir noch ein: der MAP-Sensor - damit wird über den Saugrohrunterdruck die Luftmenge errechnet - oftmals günstiger zu haben, als ein LMM.&lt;br /&gt;
&lt;br /&gt;
== Weitere Ideen / Anmerkungen ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Motorbremse:&#039;&#039;&#039;&lt;br /&gt;
Eine Schubabschaltung läßt sich relativ leicht bewerkstelligen, wenn ein Drosselklappenpotentiometer und ein Leerlaufabschaltventil vorhanden ist, was aber bei diesem Vergaser fehlt...&lt;br /&gt;
Du kannst ja die Zündung in der Schubphase abschalten, wenn Dich das Knallen bei Erreichen der Leerlaufdrehzahl nicht stört ;-) Haben wir bei der Armee dazumals manchmal gemacht, beim Ural hats dann manchmal den Schalldämpfer zerlegt... &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zündung:&#039;&#039;&#039; &lt;br /&gt;
Warum Schließwinkelregelung? Warum nicht eine Hochfrequenzzündung a la Daimler / Bosch? Mit Kontaktabständen von 2-3 mm an den Zündkerzen, um magere Gemische sicher zünden zu können (oder E85 ???) oder das Kaltstartverhalten dahingehend zu verändern, den Choke nur wenig oder garnicht zu benötigen. Verrusste Zündkerzen sind kein Problem mehr etc. Also zur Abwechlung mal was Modernes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Öldosierung:&#039;&#039;&#039; &lt;br /&gt;
Wäre möglich, um das lästige Blaurauchverhalten einzuschränken. Da sehe ich auch ein Problem der Lambdamessung per Sonde. Es soll wohl nachteilig sein, die Sondenkeramik mit Öldämpfen zu bearbeiten... &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Klopfsensor:&#039;&#039;&#039;&lt;br /&gt;
Wozu? Das Signal ist aufwendig zu filtern und auszuwerten. Lausche mal mit einem Schraubenzieher hinter dem Ohr auf den Motorlauf eines Trabanten! Klappern der Drehschieber, Geräusche von Lüfter und Lichtmaschine etc -&amp;gt; das mußt Du alles sauber wegfiltern um ein Klopfereignis sicher erkennen zu können. Sinvoller ist aus meiner Sicht der Ansatz Klopferkennung per Ionenstrommessung -&amp;gt; geht auch per HF-Zündung. Geschickt ausgewertet, spart Dir eine Ionenstrommessung auch die Lasterfassung und die Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just my 2 Cents...&lt;br /&gt;
&lt;br /&gt;
MfG&lt;br /&gt;
Elux&lt;br /&gt;
&lt;br /&gt;
Hallo Duselbaer,&lt;br /&gt;
&lt;br /&gt;
 danke für die Blumen. Beim Wettbewerb hat es trotzdem nur für Platz 10 von 12 Teilnehmern gereicht. Na was solls. Ich mach trotzdem weiter. :P&lt;br /&gt;
&lt;br /&gt;
 Den Luftmassenmesser habe ich vorgesehen, weil mich das einfach mal interessiert hat. Und ja, ich schließe nicht aus, mich auch mal mit dem Thema Einspritzung zu beschäftigen (steht auch im Artikel). Es ist ja naheliegend, wenn man schon ein tolles Steuergerät im Auto hat und sich mit der ganzen Thematik auseinander setzt, dann auch noch den Vergaser ganz durch eine schöne Einspritzsteuerung zu ersetzen. Aber das ist noch etwas zu weit in die Zukunft gegriffen. Ich muss mich dem Thema langsam annähern, sonst ist der Frustfaktor zu hoch. ;)&lt;br /&gt;
&lt;br /&gt;
 Die Megasquirt ist mir durchaus ein Begriff. Ich habe im Netz auch einen Forumsbeitrag gefunden, wo jemand damit eine Einspritzung für den Trabant realisiert hat. Aber wie im Projekt beschrieben ist nicht mein Ziel das ganze möglichst simpel und einfach zu erreichen, sondern alles selbst zu machen und viel bei zu lernen. Ist eben ein Hobby und ich tobe mich da etwas aus. Ist halt einfach zu spannend, als dass ich mich mit einer Fertiglösung zufrieden geben könnte. Saugrohrunterdrucksensor steht definitiv schon auf meiner Liste - wie im Artikel erwähnt. Das will ich auch mal ausprobieren.&lt;br /&gt;
&lt;br /&gt;
 Ich freue mich, dass hier scheinbar eine kleine Diskussion entsteht und begrüße jeden konstruktiven Beitrag. :)&lt;br /&gt;
&lt;br /&gt;
Gruß, Felix&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hallo Elux,&lt;br /&gt;
&lt;br /&gt;
 vielen Dank für deine Ideen und Anregungen. Vieles davon ging mir auch schon durch den Kopf. Deine Idee der Motorbremse war mal in einer alten &amp;quot;Kraftfahrzeugtechnik&amp;quot;-Zeitschrift beschrieben. Das funktionierte wohl sehr gut. Solange ich aber noch den H1-1 Vergaser als Basis für die Gemischaufbereitung benutze, wird das wohl nix. Dieser Vergaser hat eben keinen Leerlaufvergaser den man einfach so abschalten kann. Da bleibt dann wirklich nurnoch die Zündung abzuschalten. Der Kraftstoff und damit die Schmierung sollte ja tunlichst weiterfließen. Das will ich zumindest mal ausprobieren. Ich denke, das Knallen beim wieder Zünden wird sich in Grenzen halten - aber das wird man nur ausprobieren können.&lt;br /&gt;
&lt;br /&gt;
 Langfristig wäre natürlich eine eigene Gemischaufbereitung toll. Dann kann man auch vorsehen die Drosselklappe komplett zu schließen. Das wäre dann wohl eine sehr schöne Motorbremse.&lt;br /&gt;
&lt;br /&gt;
 Zündung: Schließwinkelregelung? Soweit ich mich entsinne, habe ich nur was von variablen Ladezeiten der Zündspulen geschrieben. Einen Schließwinkel gibt es ja dank Hall-Geber garnicht mehr. Die sache mit der Mehrfachzündung ist sicher auch interessant, aber das lässt sich mit dem aktuellen Aufbau nicht realisieren. Dazu muss ich zunächst einen eigenen Hochspannungsteil bauen, bei dem sich beide Zündspulen getrennt steuern lassen. Das ist auch für variablen Ladezeiten notwendig. Das wird wohl noch etwas dauern - immerhin bin ich eigentlich kein Elektroniker. Aber ja, die Idee geisterte mir auch schon durch den Kopf. :)&lt;br /&gt;
&lt;br /&gt;
Gruß, Felix&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=84055</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=84055"/>
		<updated>2014-07-20T19:25:01Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: /* Update vom 20.07.2014 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;von Felix Ahlborg&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&#039;&#039;Dieser Artikel nimmt am Artikelwettbewerb [http://www.mikrocontroller.net/topic/infineon-xmc-design-contest-2014 Infineon XMC Design Contest 2014] teil.&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Stand der Technik ==&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Ein in Abhängigkeit von Drehzahl und Last angepasster Zündwinkel könnte das Laufverhalten wie die Effizienz des Motors bedeutsam verbessern.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit diesen Kauflösungen niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
== Zielsetzung ==&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
=== Version 1 ===&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die &#039;&#039;&#039;Drehzahl&#039;&#039;&#039; benötigt. Weiterhin muss der &#039;&#039;&#039;Last&#039;&#039;&#039;zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird. Also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der &#039;&#039;&#039;Restsauerstoffgehalt&#039;&#039;&#039; im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
=== Version 2 ===&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Zusatzluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Ideen ===&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Microcontroller ===&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Spannungsversorgung ===&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den hier [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen einen Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
==== Anschluss des XMC4500 Relax Board ====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil des XMC4500 Relax Kit wurde von Infineon ein Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V sollen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind dann aber die 3,3 V Leitungen beider Boards verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu einfach Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung der Drehzahl ===&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe der Zündwinkel ===&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden. Frühere Zündwinkel bedürfen dann entweder einer Frühverstellung des Gebers oder etwas mehr Hirnschmalz.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (NPN Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, so über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass die Zündanlage wieder original beschaltet ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung des Restsauerstoffgehaltes ===&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung der Luftmasse ===&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
==== Beobachtungen ====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen. Wenn ich diese über einen Spannungsteiler auf 3,3 V teile, bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 die Eingangsspannung von 14,4 V um ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um ~16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
==== Messwert ====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung der Ansaugtemperatur ===&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrierten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
==== Berechnung der Widerstände ====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj und Out regelt wären das R1 = 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich für diesen ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 50° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen. Im Notfall muss die Messgröße per Software entstört werden - Temperaturen ändern sich ja eh vergleichsweise langsam.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung des Anlassersignals ===&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
=== Anzeige im Fahrzeug ===&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint), ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX. Dieses sollte sich leicht im Fahrzeug verlegen lassen.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
==== Firmware Steuergerät ====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
==== Firmware Anzeige ====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
==== PC Software ====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
== Validierung des Steuergerätes ==&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
=== Konzept ===&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
=== Aufbau ===&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignalen erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die simulierten Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
=== Ergebnisse ===&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Wenig überraschend ist auch, dass zwischen Eingangs- und Ausgangssignal eine konstante aber nur sehr kurze Verzögerungszeit existiert. Praktisch:  ich konnte damit auch endlich mal alle meine gelagerten Zündgeräte auf korrekte Funktion prüfen. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 20° und 22° eingestellt werden. Bei diesem großen Toleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennlinien-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Die drei Kennlinien Leerlauf, Teillast und Volllast unterscheidet diese Zündanlage, indem sie den Lastzustand des Motors mit einem elektromechanischen Sensor direkt aus der Drosselklappenstellung ableitet. Um die drei Kennlinien auszulesen, habe ich den ausgebauten Sensor manuell in diese Stellungen gebracht.&lt;br /&gt;
&lt;br /&gt;
Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringer Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet diese Kennlinie bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
== Aktueller Stand ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben links ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
== Ausblick ==&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
== Das Wichtigste zum Schluss ==&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Der eine oder andere wird wohl auch meine Schaltungen stümperhaft finden. Das bekomme ich irgendwann sicher alles noch besser hin. Ich freue mich ganz ehrlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Verbrennungsmotoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warnung:&#039;&#039;&#039; Nachbau auf eigene Gefahr! Mit Modifikationen dieser Art erlischt die Betriebserlaubnis eines Fahrzeugs.&lt;br /&gt;
&lt;br /&gt;
== Update vom 20.07.2014 ==&lt;br /&gt;
&lt;br /&gt;
Es funktioniert! Ich habe mich für den Einsendeschluss nochmal richtig in&#039;s Zeug gelegt. Was ich noch geschafft habe:&lt;br /&gt;
&lt;br /&gt;
* Bestückungsplan gemacht&lt;br /&gt;
* Hauptplatine für Zündsteuerung und Lambdasonde bestückt&lt;br /&gt;
* Kabelbaum für Zündsteuerung gefertigt&lt;br /&gt;
* Erstinbetriebnahme auf dem Schreibtisch&lt;br /&gt;
* Verifizierung, der ausgegebenen Zündwinkel&lt;br /&gt;
* Alles in&#039;s Fahrzeug eingebaut&lt;br /&gt;
* Probefahrt gemacht&lt;br /&gt;
* Tierisch gefreut!&lt;br /&gt;
&lt;br /&gt;
Hier noch zwei Bilder vom Steuergerät im Fahrzeug:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090707.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090708.jpg]]&lt;br /&gt;
&lt;br /&gt;
Bitte nicht über die Tupperdose lachen. Das eigentlich dafür vorgesehene Gehäuse war einfach zu klein. Was Besseres war gerade nicht griffbereit. Auch die Bildqualität lässt zu wünschen übrig - das tut mir leid. Leider hatte ich heute nicht viel Zeit und die Bilder habe ich noch fix in der Tiefgarage geschossen. Wie auch immer, ich bin sehr zufrieden, dass die erste Probefahrt ohne Zwischenfälle verlief. :)&lt;br /&gt;
&lt;br /&gt;
Das Steuergerät erfasst nun die Kurbelwellengebersignale und gibt sie unverändert weiter an die Transistorzündung. Der Motor startet damit problemlos und läuft unauffällig wie immer - keine Aussetzer etc. Das heißt, sowohl Spannungsversorgung, als auch Kurbelwellengebersignalerfassung und Zündwinkelausgabe funktionieren. Die Ausgabe der Drehzahl über USB funktioniert auch, ist aber relativ instabil. Das konnte ich auf dem Schreibtisch nie beobachten. Da muss ich mir noch etwas einfallen lassen. Ich werde morgen versuchen den Hochspannungsteil der Zündung abzuschirmen. Das wurde früher beim Trabant auch gemacht um einen störungsfreien Radioempfang zu ermöglichen. Danach wird die Lambdasonde in Betrieb genommen, dann der Luftmassenmesser ... Es gibt noch viel zu tun!&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83983</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83983"/>
		<updated>2014-07-20T12:32:26Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: /* Update vom 20.07.2014 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;von Felix Ahlborg&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&#039;&#039;Dieser Artikel nimmt am Artikelwettbewerb [http://www.mikrocontroller.net/topic/infineon-xmc-design-contest-2014 Infineon XMC Design Contest 2014] teil.&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Stand der Technik ==&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Ein in Abhängigkeit von Drehzahl und Last angepasster Zündwinkel könnte das Laufverhalten wie die Effizienz des Motors bedeutsam verbessern.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit diesen Kauflösungen niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
== Zielsetzung ==&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
=== Version 1 ===&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die &#039;&#039;&#039;Drehzahl&#039;&#039;&#039; benötigt. Weiterhin muss der &#039;&#039;&#039;Last&#039;&#039;&#039;zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird. Also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der &#039;&#039;&#039;Restsauerstoffgehalt&#039;&#039;&#039; im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
=== Version 2 ===&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Zusatzluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Ideen ===&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Microcontroller ===&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Spannungsversorgung ===&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den hier [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen einen Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
==== Anschluss des XMC4500 Relax Board ====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil des XMC4500 Relax Kit wurde von Infineon ein Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V sollen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind dann aber die 3,3 V Leitungen beider Boards verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu einfach Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung der Drehzahl ===&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe der Zündwinkel ===&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden. Frühere Zündwinkel bedürfen dann entweder einer Frühverstellung des Gebers oder etwas mehr Hirnschmalz.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (NPN Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, so über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass die Zündanlage wieder original beschaltet ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung des Restsauerstoffgehaltes ===&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung der Luftmasse ===&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
==== Beobachtungen ====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen. Wenn ich diese über einen Spannungsteiler auf 3,3 V teile, bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 die Eingangsspannung von 14,4 V um ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um ~16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
==== Messwert ====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung der Ansaugtemperatur ===&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrierten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
==== Berechnung der Widerstände ====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj und Out regelt wären das R1 = 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich für diesen ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 50° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen. Im Notfall muss die Messgröße per Software entstört werden - Temperaturen ändern sich ja eh vergleichsweise langsam.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung des Anlassersignals ===&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
=== Anzeige im Fahrzeug ===&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint), ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX. Dieses sollte sich leicht im Fahrzeug verlegen lassen.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
==== Firmware Steuergerät ====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
==== Firmware Anzeige ====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
==== PC Software ====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
== Validierung des Steuergerätes ==&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
=== Konzept ===&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
=== Aufbau ===&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignalen erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die simulierten Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
=== Ergebnisse ===&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Wenig überraschend ist auch, dass zwischen Eingangs- und Ausgangssignal eine konstante aber nur sehr kurze Verzögerungszeit existiert. Praktisch:  ich konnte damit auch endlich mal alle meine gelagerten Zündgeräte auf korrekte Funktion prüfen. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 20° und 22° eingestellt werden. Bei diesem großen Toleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennlinien-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Die drei Kennlinien Leerlauf, Teillast und Volllast unterscheidet diese Zündanlage, indem sie den Lastzustand des Motors mit einem elektromechanischen Sensor direkt aus der Drosselklappenstellung ableitet. Um die drei Kennlinien auszulesen, habe ich den ausgebauten Sensor manuell in diese Stellungen gebracht.&lt;br /&gt;
&lt;br /&gt;
Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringer Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet diese Kennlinie bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
== Aktueller Stand ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben links ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
== Ausblick ==&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
== Das Wichtigste zum Schluss ==&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Der eine oder andere wird wohl auch meine Schaltungen stümperhaft finden. Das bekomme ich irgendwann sicher alles noch besser hin. Ich freue mich ganz ehrlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Verbrennungsmotoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warnung:&#039;&#039;&#039; Nachbau auf eigene Gefahr! Mit Modifikationen dieser Art erlischt die Betriebserlaubnis eines Fahrzeugs.&lt;br /&gt;
&lt;br /&gt;
== Update vom 20.07.2014 ==&lt;br /&gt;
&lt;br /&gt;
Es funktioniert! Ich habe mich für den Einsendeschluss nochmal richtig ins Zeug gelegt. Was ich noch geschafft habe:&lt;br /&gt;
&lt;br /&gt;
* Bestückungsplan gemacht&lt;br /&gt;
* Hauptplatine für Zündsteuerung und Lambdasonde bestückt&lt;br /&gt;
* Kabelbaum für Zündsteuerung gefertigt&lt;br /&gt;
* Erstinbetriebnahme auf dem Schreibtisch&lt;br /&gt;
* Verifizierung, der ausgegeben Zündwinkel&lt;br /&gt;
* Alles ins Fahrzeug eingebaut&lt;br /&gt;
* Probefahrt gemacht&lt;br /&gt;
* Tierisch gefreut!&lt;br /&gt;
&lt;br /&gt;
Hier noch zwei Bilder vom Steuergerät im Fahrzeug:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090707.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090708.jpg]]&lt;br /&gt;
&lt;br /&gt;
Bitte nicht über die Tupperdose lachen, das eigentlich vorgesehene Gehäuse war einfach zu klein. Was Bessere war gerade nicht griffbereit. Auch die Bildqualität lässt zu wünschen übrig - das tut mir sehr leid. Leider hatte ich heute nicht viel Zeit und die Bilder habe ich noch fix in der Tiefgarage geschossen. Aber wie auch immer, ich bin sehr zufrieden, dass die erste Probefahrt ohne Zwischenfälle lief. :)&lt;br /&gt;
&lt;br /&gt;
Das Steuergerät erfasst die Kurbelwellengebersignale und gibt sie weiter an die Transistorzündung. Die Ausgabe der Drehzahl über USB funktioniert, ist aber relativ stark gestört. Da muss ich mich noch was einfallen lassen.&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:P1090708.jpg&amp;diff=83977</id>
		<title>Datei:P1090708.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:P1090708.jpg&amp;diff=83977"/>
		<updated>2014-07-20T12:20:26Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: Felixbrb lud eine neue Version von „Datei:P1090708.jpg“ hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:P1090708.jpg&amp;diff=83969</id>
		<title>Datei:P1090708.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:P1090708.jpg&amp;diff=83969"/>
		<updated>2014-07-20T12:15:57Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:P1090707.jpg&amp;diff=83968</id>
		<title>Datei:P1090707.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:P1090707.jpg&amp;diff=83968"/>
		<updated>2014-07-20T12:15:41Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83967</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83967"/>
		<updated>2014-07-20T12:15:16Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;von Felix Ahlborg&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&#039;&#039;Dieser Artikel nimmt am Artikelwettbewerb [http://www.mikrocontroller.net/topic/infineon-xmc-design-contest-2014 Infineon XMC Design Contest 2014] teil.&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Stand der Technik ==&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Ein in Abhängigkeit von Drehzahl und Last angepasster Zündwinkel könnte das Laufverhalten wie die Effizienz des Motors bedeutsam verbessern.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit diesen Kauflösungen niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
== Zielsetzung ==&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
=== Version 1 ===&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die &#039;&#039;&#039;Drehzahl&#039;&#039;&#039; benötigt. Weiterhin muss der &#039;&#039;&#039;Last&#039;&#039;&#039;zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird. Also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der &#039;&#039;&#039;Restsauerstoffgehalt&#039;&#039;&#039; im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
=== Version 2 ===&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Zusatzluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Ideen ===&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Microcontroller ===&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Spannungsversorgung ===&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den hier [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen einen Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
==== Anschluss des XMC4500 Relax Board ====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil des XMC4500 Relax Kit wurde von Infineon ein Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V sollen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind dann aber die 3,3 V Leitungen beider Boards verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu einfach Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung der Drehzahl ===&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe der Zündwinkel ===&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden. Frühere Zündwinkel bedürfen dann entweder einer Frühverstellung des Gebers oder etwas mehr Hirnschmalz.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (NPN Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, so über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass die Zündanlage wieder original beschaltet ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung des Restsauerstoffgehaltes ===&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung der Luftmasse ===&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
==== Beobachtungen ====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen. Wenn ich diese über einen Spannungsteiler auf 3,3 V teile, bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 die Eingangsspannung von 14,4 V um ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um ~16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
==== Messwert ====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung der Ansaugtemperatur ===&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrierten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
==== Berechnung der Widerstände ====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj und Out regelt wären das R1 = 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich für diesen ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 50° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen. Im Notfall muss die Messgröße per Software entstört werden - Temperaturen ändern sich ja eh vergleichsweise langsam.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung des Anlassersignals ===&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
=== Anzeige im Fahrzeug ===&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint), ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX. Dieses sollte sich leicht im Fahrzeug verlegen lassen.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
==== Firmware Steuergerät ====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
==== Firmware Anzeige ====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
==== PC Software ====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
== Validierung des Steuergerätes ==&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
=== Konzept ===&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
=== Aufbau ===&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignalen erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die simulierten Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
=== Ergebnisse ===&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Wenig überraschend ist auch, dass zwischen Eingangs- und Ausgangssignal eine konstante aber nur sehr kurze Verzögerungszeit existiert. Praktisch:  ich konnte damit auch endlich mal alle meine gelagerten Zündgeräte auf korrekte Funktion prüfen. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 20° und 22° eingestellt werden. Bei diesem großen Toleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennlinien-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Die drei Kennlinien Leerlauf, Teillast und Volllast unterscheidet diese Zündanlage, indem sie den Lastzustand des Motors mit einem elektromechanischen Sensor direkt aus der Drosselklappenstellung ableitet. Um die drei Kennlinien auszulesen, habe ich den ausgebauten Sensor manuell in diese Stellungen gebracht.&lt;br /&gt;
&lt;br /&gt;
Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringer Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet diese Kennlinie bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
== Aktueller Stand ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben links ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
== Ausblick ==&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
== Das Wichtigste zum Schluss ==&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Der eine oder andere wird wohl auch meine Schaltungen stümperhaft finden. Das bekomme ich irgendwann sicher alles noch besser hin. Ich freue mich ganz ehrlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Verbrennungsmotoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warnung:&#039;&#039;&#039; Nachbau auf eigene Gefahr! Mit Modifikationen dieser Art erlischt die Betriebserlaubnis eines Fahrzeugs.&lt;br /&gt;
&lt;br /&gt;
== Update vom 20.07.2014 ==&lt;br /&gt;
&lt;br /&gt;
Es funktioniert! Ich habe mich für den Einsendeschluss nochmal richtig ins Zeug gelegt. Was ich noch geschafft habe:&lt;br /&gt;
&lt;br /&gt;
* Bestückungsplan gemacht&lt;br /&gt;
* Hauptplatine für Zündsteuerung und Lambdasonde bestückt&lt;br /&gt;
* Kabelbaum für Zündsteuerung gefertigt&lt;br /&gt;
* Erstinbetriebnahme auf dem Schreibtisch&lt;br /&gt;
* Verifizierung, der ausgegeben Zündwinkel&lt;br /&gt;
* Alles ins Fahrzeug eingebaut&lt;br /&gt;
* Probefahrt gemacht&lt;br /&gt;
* Tierisch gefreut!&lt;br /&gt;
&lt;br /&gt;
Hier noch zwei Bilder vom Steuergerät im Fahrzeug:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090707.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090708.jpg]]&lt;br /&gt;
&lt;br /&gt;
Bitte nicht über die Tupperdose lachen, das eigentlich vorgesehene Gehäuse war einfach zu klein. Auch die Bildqualität lässt zu wünschen übrig. Leider hatte ich heute nicht viel Zeit und die Bilder sind fix in der Tiefgarage geschossen. Aber wie auch immer, ich bin sehr zufrieden, dass die erste Probefahrt ohne Zwischenfälle lief. :)&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83965</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83965"/>
		<updated>2014-07-20T12:14:28Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: /* Das Wichtigste zum Schluss */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;von Felix Ahlborg&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&#039;&#039;Dieser Artikel nimmt am Artikelwettbewerb [http://www.mikrocontroller.net/topic/infineon-xmc-design-contest-2014 Infineon XMC Design Contest 2014] teil.&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Stand der Technik ==&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Ein in Abhängigkeit von Drehzahl und Last angepasster Zündwinkel könnte das Laufverhalten wie die Effizienz des Motors bedeutsam verbessern.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit diesen Kauflösungen niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
== Zielsetzung ==&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
=== Version 1 ===&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die &#039;&#039;&#039;Drehzahl&#039;&#039;&#039; benötigt. Weiterhin muss der &#039;&#039;&#039;Last&#039;&#039;&#039;zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird. Also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der &#039;&#039;&#039;Restsauerstoffgehalt&#039;&#039;&#039; im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
=== Version 2 ===&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Zusatzluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Ideen ===&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Microcontroller ===&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Spannungsversorgung ===&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den hier [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen einen Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
==== Anschluss des XMC4500 Relax Board ====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil des XMC4500 Relax Kit wurde von Infineon ein Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V sollen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind dann aber die 3,3 V Leitungen beider Boards verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu einfach Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung der Drehzahl ===&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe der Zündwinkel ===&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden. Frühere Zündwinkel bedürfen dann entweder einer Frühverstellung des Gebers oder etwas mehr Hirnschmalz.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (NPN Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, so über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass die Zündanlage wieder original beschaltet ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung des Restsauerstoffgehaltes ===&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung der Luftmasse ===&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
==== Beobachtungen ====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen. Wenn ich diese über einen Spannungsteiler auf 3,3 V teile, bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 die Eingangsspannung von 14,4 V um ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um ~16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
==== Messwert ====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung der Ansaugtemperatur ===&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrierten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
==== Berechnung der Widerstände ====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj und Out regelt wären das R1 = 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich für diesen ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 50° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen. Im Notfall muss die Messgröße per Software entstört werden - Temperaturen ändern sich ja eh vergleichsweise langsam.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung des Anlassersignals ===&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
=== Anzeige im Fahrzeug ===&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint), ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX. Dieses sollte sich leicht im Fahrzeug verlegen lassen.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
==== Firmware Steuergerät ====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
==== Firmware Anzeige ====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
==== PC Software ====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
== Validierung des Steuergerätes ==&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
=== Konzept ===&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
=== Aufbau ===&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignalen erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die simulierten Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
=== Ergebnisse ===&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Wenig überraschend ist auch, dass zwischen Eingangs- und Ausgangssignal eine konstante aber nur sehr kurze Verzögerungszeit existiert. Praktisch:  ich konnte damit auch endlich mal alle meine gelagerten Zündgeräte auf korrekte Funktion prüfen. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 20° und 22° eingestellt werden. Bei diesem großen Toleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennlinien-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Die drei Kennlinien Leerlauf, Teillast und Volllast unterscheidet diese Zündanlage, indem sie den Lastzustand des Motors mit einem elektromechanischen Sensor direkt aus der Drosselklappenstellung ableitet. Um die drei Kennlinien auszulesen, habe ich den ausgebauten Sensor manuell in diese Stellungen gebracht.&lt;br /&gt;
&lt;br /&gt;
Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringer Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet diese Kennlinie bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
== Aktueller Stand ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben links ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
== Ausblick ==&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
== Das Wichtigste zum Schluss ==&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Der eine oder andere wird wohl auch meine Schaltungen stümperhaft finden. Das bekomme ich irgendwann sicher alles noch besser hin. Ich freue mich ganz ehrlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Verbrennungsmotoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warnung:&#039;&#039;&#039; Nachbau auf eigene Gefahr! Mit Modifikationen dieser Art erlischt die Betriebserlaubnis eines Fahrzeugs.&lt;br /&gt;
&lt;br /&gt;
== Update vom 20.07.2014 ==&lt;br /&gt;
&lt;br /&gt;
Es funktioniert! Ich habe mich für den Einsendeschluss nochmal richtig ins Zeug gelegt. Was ich noch geschafft habe:&lt;br /&gt;
&lt;br /&gt;
* Bestückungsplan gemacht&lt;br /&gt;
* Hauptplatine für Zündsteuerung und Lambdasonde bestückt&lt;br /&gt;
* Kabelbaum für Zündsteuerung gefertigt&lt;br /&gt;
* Erstinbetriebnahme auf dem Schreibtisch&lt;br /&gt;
* Verifizierung, der ausgegeben Zündwinkel&lt;br /&gt;
* Alles ins Fahrzeug eingebaut&lt;br /&gt;
* Probefahrt gemacht&lt;br /&gt;
* Tierisch gefreut!&lt;br /&gt;
&lt;br /&gt;
Hier noch zwei Bilder vom Steuergerät im Fahrzeug:&lt;br /&gt;
&lt;br /&gt;
Bitte nicht über die Tupperdose lachen, das eigentlich vorgesehene Gehäuse war einfach zu klein. Auch die Bildqualität lässt zu wünschen übrig. Leider hatte ich heute nicht viel Zeit und die Bilder sind fix in der Tiefgarage geschossen. Aber wie auch immer, ich bin sehr zufrieden, dass die erste Probefahrt ohne Zwischenfälle lief. :)&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Schaltplanluftmassenmesser.png&amp;diff=83813</id>
		<title>Datei:Schaltplanluftmassenmesser.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Schaltplanluftmassenmesser.png&amp;diff=83813"/>
		<updated>2014-07-18T14:20:51Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: Felixbrb lud eine neue Version von „Datei:Schaltplanluftmassenmesser.png“ hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Schaltplanansaugtemperatur.png&amp;diff=83812</id>
		<title>Datei:Schaltplanansaugtemperatur.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Schaltplanansaugtemperatur.png&amp;diff=83812"/>
		<updated>2014-07-18T14:19:21Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: Felixbrb lud eine neue Version von „Datei:Schaltplanansaugtemperatur.png“ hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Schaltplanansaugtemperatur.png&amp;diff=83811</id>
		<title>Datei:Schaltplanansaugtemperatur.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Schaltplanansaugtemperatur.png&amp;diff=83811"/>
		<updated>2014-07-18T14:18:35Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: Felixbrb lud eine neue Version von „Datei:Schaltplanansaugtemperatur.png“ hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Schaltplanansaugtemperatur.png&amp;diff=83810</id>
		<title>Datei:Schaltplanansaugtemperatur.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Schaltplanansaugtemperatur.png&amp;diff=83810"/>
		<updated>2014-07-18T14:16:26Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: Felixbrb lud eine neue Version von „Datei:Schaltplanansaugtemperatur.png“ hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Schaltplanansaugtemperatur.png&amp;diff=83809</id>
		<title>Datei:Schaltplanansaugtemperatur.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Schaltplanansaugtemperatur.png&amp;diff=83809"/>
		<updated>2014-07-18T14:16:12Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: Felixbrb lud eine neue Version von „Datei:Schaltplanansaugtemperatur.png“ hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Schaltplansignalumschaltung.png&amp;diff=83808</id>
		<title>Datei:Schaltplansignalumschaltung.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Schaltplansignalumschaltung.png&amp;diff=83808"/>
		<updated>2014-07-18T14:15:20Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: Felixbrb lud eine neue Version von „Datei:Schaltplansignalumschaltung.png“ hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83723</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83723"/>
		<updated>2014-07-16T15:27:48Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: /* Ergebnisse */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;von Felix Ahlborg&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&#039;&#039;Dieser Artikel nimmt am Artikelwettbewerb [http://www.mikrocontroller.net/topic/infineon-xmc-design-contest-2014 Infineon XMC Design Contest 2014] teil.&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Stand der Technik ==&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Ein in Abhängigkeit von Drehzahl und Last angepasster Zündwinkel könnte das Laufverhalten wie die Effizienz des Motors bedeutsam verbessern.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit diesen Kauflösungen niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
== Zielsetzung ==&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
=== Version 1 ===&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die &#039;&#039;&#039;Drehzahl&#039;&#039;&#039; benötigt. Weiterhin muss der &#039;&#039;&#039;Last&#039;&#039;&#039;zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird. Also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der &#039;&#039;&#039;Restsauerstoffgehalt&#039;&#039;&#039; im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
=== Version 2 ===&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Zusatzluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Ideen ===&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Microcontroller ===&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Spannungsversorgung ===&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den hier [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen einen Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
==== Anschluss des XMC4500 Relax Board ====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil des XMC4500 Relax Kit wurde von Infineon ein Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V sollen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind dann aber die 3,3 V Leitungen beider Boards verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu einfach Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung der Drehzahl ===&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe der Zündwinkel ===&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden. Frühere Zündwinkel bedürfen dann entweder einer Frühverstellung des Gebers oder etwas mehr Hirnschmalz.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (NPN Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, so über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass die Zündanlage wieder original beschaltet ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung des Restsauerstoffgehaltes ===&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung der Luftmasse ===&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
==== Beobachtungen ====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen. Wenn ich diese über einen Spannungsteiler auf 3,3 V teile, bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 die Eingangsspannung von 14,4 V um ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um ~16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
==== Messwert ====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung der Ansaugtemperatur ===&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrierten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
==== Berechnung der Widerstände ====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj und Out regelt wären das R1 = 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich für diesen ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 50° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen. Im Notfall muss die Messgröße per Software entstört werden - Temperaturen ändern sich ja eh vergleichsweise langsam.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung des Anlassersignals ===&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
=== Anzeige im Fahrzeug ===&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint), ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX. Dieses sollte sich leicht im Fahrzeug verlegen lassen.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
==== Firmware Steuergerät ====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
==== Firmware Anzeige ====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
==== PC Software ====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
== Validierung des Steuergerätes ==&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
=== Konzept ===&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
=== Aufbau ===&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignalen erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die simulierten Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
=== Ergebnisse ===&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Wenig überraschend ist auch, dass zwischen Eingangs- und Ausgangssignal eine konstante aber nur sehr kurze Verzögerungszeit existiert. Praktisch:  ich konnte damit auch endlich mal alle meine gelagerten Zündgeräte auf korrekte Funktion prüfen. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 20° und 22° eingestellt werden. Bei diesem großen Toleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennlinien-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Die drei Kennlinien Leerlauf, Teillast und Volllast unterscheidet diese Zündanlage, indem sie den Lastzustand des Motors mit einem elektromechanischen Sensor direkt aus der Drosselklappenstellung ableitet. Um die drei Kennlinien auszulesen, habe ich den ausgebauten Sensor manuell in diese Stellungen gebracht.&lt;br /&gt;
&lt;br /&gt;
Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringer Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet diese Kennlinie bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
== Aktueller Stand ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben links ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
== Ausblick ==&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
== Das Wichtigste zum Schluss ==&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Der eine oder andere wird wohl auch meine Schaltungen stümperhaft finden. Das bekomme ich irgendwann sicher alles noch besser hin. Ich freue mich ganz ehrlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Verbrennungsmotoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warnung:&#039;&#039;&#039; Nachbau auf eigene Gefahr! Mit Modifikationen dieser Art erlischt die Betriebserlaubnis eines Fahrzeugs.&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Schaltplansignalumschaltung.png&amp;diff=83720</id>
		<title>Datei:Schaltplansignalumschaltung.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Schaltplansignalumschaltung.png&amp;diff=83720"/>
		<updated>2014-07-16T15:21:12Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: Felixbrb lud eine neue Version von „Datei:Schaltplansignalumschaltung.png“ hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83716</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83716"/>
		<updated>2014-07-16T15:16:30Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;von Felix Ahlborg&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&#039;&#039;Dieser Artikel nimmt am Artikelwettbewerb [http://www.mikrocontroller.net/topic/infineon-xmc-design-contest-2014 Infineon XMC Design Contest 2014] teil.&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Stand der Technik ==&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Ein in Abhängigkeit von Drehzahl und Last angepasster Zündwinkel könnte das Laufverhalten wie die Effizienz des Motors bedeutsam verbessern.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit diesen Kauflösungen niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
== Zielsetzung ==&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
=== Version 1 ===&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die &#039;&#039;&#039;Drehzahl&#039;&#039;&#039; benötigt. Weiterhin muss der &#039;&#039;&#039;Last&#039;&#039;&#039;zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird. Also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der &#039;&#039;&#039;Restsauerstoffgehalt&#039;&#039;&#039; im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
=== Version 2 ===&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Zusatzluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Ideen ===&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Microcontroller ===&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Spannungsversorgung ===&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den hier [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen einen Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
==== Anschluss des XMC4500 Relax Board ====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil des XMC4500 Relax Kit wurde von Infineon ein Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V sollen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind dann aber die 3,3 V Leitungen beider Boards verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu einfach Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung der Drehzahl ===&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe der Zündwinkel ===&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden. Frühere Zündwinkel bedürfen dann entweder einer Frühverstellung des Gebers oder etwas mehr Hirnschmalz.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (NPN Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, so über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass die Zündanlage wieder original beschaltet ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung des Restsauerstoffgehaltes ===&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung der Luftmasse ===&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
==== Beobachtungen ====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen. Wenn ich diese über einen Spannungsteiler auf 3,3 V teile, bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 die Eingangsspannung von 14,4 V um ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um ~16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
==== Messwert ====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung der Ansaugtemperatur ===&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrierten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
==== Berechnung der Widerstände ====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj und Out regelt wären das R1 = 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich für diesen ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 50° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen. Im Notfall muss die Messgröße per Software entstört werden - Temperaturen ändern sich ja eh vergleichsweise langsam.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung des Anlassersignals ===&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
=== Anzeige im Fahrzeug ===&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint), ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX. Dieses sollte sich leicht im Fahrzeug verlegen lassen.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
==== Firmware Steuergerät ====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
==== Firmware Anzeige ====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
==== PC Software ====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
== Validierung des Steuergerätes ==&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
=== Konzept ===&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
=== Aufbau ===&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignalen erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die simulierten Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
=== Ergebnisse ===&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Wenig überraschend ist auch, dass zwischen Eingangs- und Ausgangssignal eine konstante aber nur sehr kurze Verzögerungszeit existiert. Praktisch:  ich konnte damit auch endlich mal alle meine gelagerten Zündgeräte auf korrekte Funktion prüfen. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 20° und 22° eingestellt werden. Bei diesem großen Toleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennlinien-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringen Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet dieses Kennfeld bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
== Aktueller Stand ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben links ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
== Ausblick ==&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
== Das Wichtigste zum Schluss ==&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Der eine oder andere wird wohl auch meine Schaltungen stümperhaft finden. Das bekomme ich irgendwann sicher alles noch besser hin. Ich freue mich ganz ehrlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Verbrennungsmotoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warnung:&#039;&#039;&#039; Nachbau auf eigene Gefahr! Mit Modifikationen dieser Art erlischt die Betriebserlaubnis eines Fahrzeugs.&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83679</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83679"/>
		<updated>2014-07-16T04:44:20Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;von Felix Ahlborg&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&#039;&#039;Dieser Artikel nimmt am Artikelwettbewerb [http://www.mikrocontroller.net/topic/infineon-xmc-design-contest-2014 Infineon XMC Design Contest 2014] teil.&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Stand der Technik ==&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Je nach abgefragter Motorlast und aktueller Drehzahl wäre es im Sinne einer maximalen Leistungsausbeute sinnvoll das Gemisch früher oder später zu entzünden.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit diesen Kauflösungen niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
== Zielsetzung ==&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
=== Version 1 ===&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die &#039;&#039;&#039;Drehzahl&#039;&#039;&#039; benötigt. Weiterhin muss der &#039;&#039;&#039;Last&#039;&#039;&#039;zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird. Also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der &#039;&#039;&#039;Restsauerstoffgehalt&#039;&#039;&#039; im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
=== Version 2 ===&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Nebenluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Ideen ===&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
== Umsetzung ==&lt;br /&gt;
&lt;br /&gt;
=== Microcontroller ===&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Spannungsversorgung ===&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den hier [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen einen Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
==== Anschluss des XMC4500 Relax Board ====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil des XMC4500 Relax Kit wurde von Infineon ein Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V sollen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind dann aber die 3,3 V Leitungen beider Boards verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu einfach Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung der Drehzahl ===&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe der Zündwinkel ===&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden. Frühere Zündwinkel bedürfen dann entweder einer Frühverstellung des Gebers oder etwas mehr Hirnschmalz.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (NPN Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, so über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass die Zündanlage wieder original beschaltet ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung des Restsauerstoffgehaltes ===&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung der Luftmasse ===&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
==== Beobachtungen ====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen. Wenn ich diese über einen Spannungsteiler auf 3,3 V teile, bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung zu stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 die Eingangsspannung von 14,4 V um ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um ~16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
==== Messwert ====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung der Ansaugtemperatur ===&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrieten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
==== Berechnung der Widerstände ====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj und Out regelt wären das R1 = 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich für diesen ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 50° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen. Im Notfall muss die Messgröße per Software entstört werden - Temperaturen ändern sich ja eh vergleichsweise langsam.&lt;br /&gt;
&lt;br /&gt;
=== Erfassung des Anlassersignals ===&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
=== Anzeige im Fahrzeug ===&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint), ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX. Dieses sollte sich leicht im Fahrzeug verlegen lassen.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
==== Firmware Steuergerät ====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
==== Firmware Anzeige ====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
==== PC Software ====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
== Validierung des Steuergerätes ==&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
=== Konzept ===&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
=== Aufbau ===&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignalen erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die simulierten Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
=== Ergebnisse ===&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Wenig überraschend ist auch, dass zwischen Eingangs- und Ausgangssignal eine konstante aber nur sehr kurze Verzögerungszeit existiert. Praktisch:  ich konnte mit damit auch endlich mal alle meine gelagerten Zündungen auf korrekte Funktion prüfen. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 20° und 22° eingestellt werden. Bei diesem großen Tolleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennfeld-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringen Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet dieses Kennfeld bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
== Aktueller Stand ==&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben links ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
== Ausblick ==&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
== Das Wichtigste zum Schluss ==&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Der eine oder andere wird wohl auch meine Schaltungen stümpferhaft finden. Das bekomme ich irgendwann sicher alles noch besser hin. Ich freue mich ganz ehrlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Verbrennungsmotoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warnung:&#039;&#039;&#039; Nachbau auf eigene Gefahr! Mit Modifikationen dieser Art erlischt die Betriebserlaubnis eines Fahrzeugs.&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83676</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83676"/>
		<updated>2014-07-15T20:38:41Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;von Felix Ahlborg&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&#039;&#039;Dieser Artikel nimmt am Artikelwettbewerb [http://www.mikrocontroller.net/topic/infineon-xmc-design-contest-2014 Infineon XMC Design Contest 2014] teil.&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
== Entwicklung eines Motorsteuergerätes für den Trabant ==&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Stand der Technik ===&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Je nach abgefragter Motorlast und aktueller Drehzahl wäre es im Sinne einer maximalen Leistungsausbeute sinnvoll das Gemisch früher oder später zu entzünden.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
=== Motivation ===&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit diesen Kauflösungen niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung ===&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
==== Version 1 ====&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die &#039;&#039;&#039;Drehzahl&#039;&#039;&#039; benötigt. Weiterhin muss der &#039;&#039;&#039;Last&#039;&#039;&#039;zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird. Also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der &#039;&#039;&#039;Restsauerstoffgehalt&#039;&#039;&#039; im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
==== Version 2 ====&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Nebenluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
==== Weitere Ideen ====&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
=== Umsetzung ===&lt;br /&gt;
&lt;br /&gt;
==== Microcontroller ====&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den hier [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen einen Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
===== Anschluss des XMC4500 Relax Board =====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil des XMC4500 Relax Kit wurde von Infineon ein Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V sollen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind dann aber die 3,3 V Leitungen beider Boards verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu einfach Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Drehzahl ====&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe der Zündwinkel ====&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden. Frühere Zündwinkel bedürfen dann entweder einer Frühverstellung des Gebers oder etwas mehr Hirnschmalz.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (NPN Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, so über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass die Zündanlage wieder original beschaltet ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Restsauerstoffgehaltes ====&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Luftmasse ====&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
===== Beobachtungen =====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen. Wenn ich diese über einen Spannungsteiler auf 3,3 V teile, bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
===== Spannungsversorgung =====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung zu stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 die Eingangsspannung von 14,4 V um ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um ~16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
===== Messwert =====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Ansaugtemperatur ====&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrieten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
===== Berechnung der Widerstände =====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj und Out regelt wären das R1 = 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich für diesen ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 50° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen. Im Notfall muss die Messgröße per Software entstört werden - Temperaturen ändern sich ja eh vergleichsweise langsam.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Anlassersignals ====&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
==== Anzeige im Fahrzeug ====&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint), ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX. Dieses sollte sich leicht im Fahrzeug verlegen lassen.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Steuergerät =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Anzeige =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
===== PC Software =====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
=== Validierung des Steuergerätes ===&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
==== Konzept ====&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
==== Aufbau ====&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignalen erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die simulierten Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
==== Ergebnisse ====&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Wenig überraschend ist auch, dass zwischen Eingangs- und Ausgangssignal eine konstante aber nur sehr kurze Verzögerungszeit existiert. Praktisch:  ich konnte mit damit auch endlich mal alle meine gelagerten Zündungen auf korrekte Funktion prüfen. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 20° und 22° eingestellt werden. Bei diesem großen Tolleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennfeld-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringen Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet dieses Kennfeld bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
=== Aktueller Stand ===&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben links ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
=== Ausblick ===&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
=== Das Wichtigste zum Schluss ===&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Der eine oder andere wird wohl auch meine Schaltungen stümpferhaft finden. Das bekomme ich irgendwann sicher alles noch besser hin. Ich freue mich ganz ehrlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Verbrennungsmotoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warnung:&#039;&#039;&#039; Nachbau auf eigene Gefahr! Mit Modifikationen dieser Art erlischt die Betriebserlaubnis eines Fahrzeugs.&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83675</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83675"/>
		<updated>2014-07-15T20:36:29Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;von Felix Ahlborg&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;center&amp;gt;&#039;&#039;Dieser Artikel nimmt am Artikelwettbewerb [http://www.mikrocontroller.net/topic/infineon-xmc-design-contest-2014 Infineon XMC Design Contest 2014] teil.&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
== Entwicklung eines Motorsteuergerätes für den Trabant ==&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Stand der Technik ===&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Je nach abgefragter Motorlast und aktueller Drehzahl wäre es im Sinne einer maximalen Leistungsausbeute sinnvoll das Gemisch früher oder später zu entzünden.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
=== Motivation ===&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit diesen Kauflösungen niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung ===&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
==== Version 1 ====&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die &#039;&#039;&#039;Drehzahl&#039;&#039;&#039; benötigt. Weiterhin muss der &#039;&#039;&#039;Last&#039;&#039;&#039;zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird. Also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der &#039;&#039;&#039;Restsauerstoffgehalt&#039;&#039;&#039; im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
==== Version 2 ====&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Nebenluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
==== Weitere Ideen ====&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
=== Umsetzung ===&lt;br /&gt;
&lt;br /&gt;
==== Microcontroller ====&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den hier [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen einen Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
===== Anschluss des XMC4500 Relax Board =====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil des XMC4500 Relax Kit wurde von Infineon ein Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V sollen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind dann aber die 3,3 V Leitungen beider Boards verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu einfach Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Drehzahl ====&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe der Zündwinkel ====&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden. Frühere Zündwinkel bedürfen dann entweder einer Frühverstellung des Gebers oder etwas mehr Hirnschmalz.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (NPN Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, so über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass die Zündanlage wieder original beschaltet ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Restsauerstoffgehaltes ====&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Luftmasse ====&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
===== Beobachtungen =====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen. Wenn ich diese über einen Spannungsteiler auf 3,3 V teile, bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
===== Spannungsversorgung =====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung zu stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 die Eingangsspannung von 14,4 V um ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um ~16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
===== Messwert =====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Ansaugtemperatur ====&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrieten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
===== Berechnung der Widerstände =====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj und Out regelt wären das R1 = 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich für diesen ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 50° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen. Im Notfall muss die Messgröße per Software entstört werden - Temperaturen ändern sich ja eh vergleichsweise langsam.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Anlassersignals ====&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
==== Anzeige im Fahrzeug ====&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint), ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX. Dieses sollte sich leicht im Fahrzeug verlegen lassen.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Steuergerät =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Anzeige =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
===== PC Software =====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
=== Validierung des Steuergerätes ===&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
==== Konzept ====&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
==== Aufbau ====&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignalen erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die simulierten Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
==== Ergebnisse ====&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Wenig überraschend ist auch, dass zwischen Eingangs- und Ausgangssignal eine konstante aber nur sehr kurze Verzögerungszeit existiert. Praktisch:  ich konnte mit damit auch endlich mal alle meine gelagerten Zündungen auf korrekte Funktion prüfen. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 20° und 22° eingestellt werden. Bei diesem großen Tolleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennfeld-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringen Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet dieses Kennfeld bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
=== Aktueller Stand ===&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben links ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
=== Ausblick ===&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
=== Das Wichtigste zum Schluss ===&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Der eine oder andere wird wohl auch meine Schaltungen stümpferhaft finden. Das bekomme ich irgendwann sicher alles noch besser hin. Ich freue mich ganz ehrlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Verbrennungsmotoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83673</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83673"/>
		<updated>2014-07-15T20:12:52Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: /* Das Wichtigste zum Schluss */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
== Entwicklung eines Motorsteuergerätes für den Trabant ==&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Stand der Technik ===&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Je nach abgefragter Motorlast und aktueller Drehzahl wäre es im Sinne einer maximalen Leistungsausbeute sinnvoll das Gemisch früher oder später zu entzünden.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
=== Motivation ===&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit diesen Kauflösungen niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung ===&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
==== Version 1 ====&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die &#039;&#039;&#039;Drehzahl&#039;&#039;&#039; benötigt. Weiterhin muss der &#039;&#039;&#039;Last&#039;&#039;&#039;zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird. Also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der &#039;&#039;&#039;Restsauerstoffgehalt&#039;&#039;&#039; im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
==== Version 2 ====&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Nebenluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
==== Weitere Ideen ====&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
=== Umsetzung ===&lt;br /&gt;
&lt;br /&gt;
==== Microcontroller ====&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den hier [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen einen Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
===== Anschluss des XMC4500 Relax Board =====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil des XMC4500 Relax Kit wurde von Infineon ein Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V sollen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind dann aber die 3,3 V Leitungen beider Boards verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu einfach Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Drehzahl ====&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe der Zündwinkel ====&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden. Frühere Zündwinkel bedürfen dann entweder einer Frühverstellung des Gebers oder etwas mehr Hirnschmalz.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (NPN Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, so über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass die Zündanlage wieder original beschaltet ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Restsauerstoffgehaltes ====&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Luftmasse ====&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
===== Beobachtungen =====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen. Wenn ich diese über einen Spannungsteiler auf 3,3 V teile, bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
===== Spannungsversorgung =====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung zu stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 die Eingangsspannung von 14,4 V um ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um ~16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
===== Messwert =====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Ansaugtemperatur ====&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrieten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
===== Berechnung der Widerstände =====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj und Out regelt wären das R1 = 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich für diesen ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 50° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen. Im Notfall muss die Messgröße per Software entstört werden - Temperaturen ändern sich ja eh vergleichsweise langsam.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Anlassersignals ====&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
==== Anzeige im Fahrzeug ====&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint), ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX. Dieses sollte sich leicht im Fahrzeug verlegen lassen.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Steuergerät =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Anzeige =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
===== PC Software =====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
=== Validierung des Steuergerätes ===&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
==== Konzept ====&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
==== Aufbau ====&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignalen erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die simulierten Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
==== Ergebnisse ====&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Wenig überraschend ist auch, dass zwischen Eingangs- und Ausgangssignal eine konstante aber nur sehr kurze Verzögerungszeit existiert. Praktisch:  ich konnte mit damit auch endlich mal alle meine gelagerten Zündungen auf korrekte Funktion prüfen. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 20° und 22° eingestellt werden. Bei diesem großen Tolleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennfeld-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringen Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet dieses Kennfeld bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
=== Aktueller Stand ===&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben links ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
=== Ausblick ===&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
=== Das Wichtigste zum Schluss ===&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Der eine oder andere wird wohl auch meine Schaltungen stümpferhaft finden. Das bekomme ich irgendwann sicher alles noch besser hin. Ich freue mich ganz ehrlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Verbrennungsmotoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83672</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83672"/>
		<updated>2014-07-15T20:08:24Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: /* Aktueller Stand */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
== Entwicklung eines Motorsteuergerätes für den Trabant ==&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Stand der Technik ===&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Je nach abgefragter Motorlast und aktueller Drehzahl wäre es im Sinne einer maximalen Leistungsausbeute sinnvoll das Gemisch früher oder später zu entzünden.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
=== Motivation ===&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit diesen Kauflösungen niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung ===&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
==== Version 1 ====&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die &#039;&#039;&#039;Drehzahl&#039;&#039;&#039; benötigt. Weiterhin muss der &#039;&#039;&#039;Last&#039;&#039;&#039;zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird. Also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der &#039;&#039;&#039;Restsauerstoffgehalt&#039;&#039;&#039; im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
==== Version 2 ====&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Nebenluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
==== Weitere Ideen ====&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
=== Umsetzung ===&lt;br /&gt;
&lt;br /&gt;
==== Microcontroller ====&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den hier [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen einen Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
===== Anschluss des XMC4500 Relax Board =====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil des XMC4500 Relax Kit wurde von Infineon ein Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V sollen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind dann aber die 3,3 V Leitungen beider Boards verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu einfach Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Drehzahl ====&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe der Zündwinkel ====&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden. Frühere Zündwinkel bedürfen dann entweder einer Frühverstellung des Gebers oder etwas mehr Hirnschmalz.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (NPN Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, so über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass die Zündanlage wieder original beschaltet ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Restsauerstoffgehaltes ====&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Luftmasse ====&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
===== Beobachtungen =====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen. Wenn ich diese über einen Spannungsteiler auf 3,3 V teile, bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
===== Spannungsversorgung =====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung zu stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 die Eingangsspannung von 14,4 V um ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um ~16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
===== Messwert =====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Ansaugtemperatur ====&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrieten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
===== Berechnung der Widerstände =====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj und Out regelt wären das R1 = 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich für diesen ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 50° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen. Im Notfall muss die Messgröße per Software entstört werden - Temperaturen ändern sich ja eh vergleichsweise langsam.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Anlassersignals ====&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
==== Anzeige im Fahrzeug ====&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint), ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX. Dieses sollte sich leicht im Fahrzeug verlegen lassen.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Steuergerät =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Anzeige =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
===== PC Software =====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
=== Validierung des Steuergerätes ===&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
==== Konzept ====&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
==== Aufbau ====&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignalen erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die simulierten Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
==== Ergebnisse ====&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Wenig überraschend ist auch, dass zwischen Eingangs- und Ausgangssignal eine konstante aber nur sehr kurze Verzögerungszeit existiert. Praktisch:  ich konnte mit damit auch endlich mal alle meine gelagerten Zündungen auf korrekte Funktion prüfen. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 20° und 22° eingestellt werden. Bei diesem großen Tolleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennfeld-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringen Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet dieses Kennfeld bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
=== Aktueller Stand ===&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben links ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
=== Ausblick ===&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
=== Das Wichtigste zum Schluss ===&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Das bekomme ich irgendwann sicher auch noch hin. Ich freue mich selbstverständlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Motoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83671</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83671"/>
		<updated>2014-07-15T20:03:37Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: /* Ergebnisse */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
== Entwicklung eines Motorsteuergerätes für den Trabant ==&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Stand der Technik ===&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Je nach abgefragter Motorlast und aktueller Drehzahl wäre es im Sinne einer maximalen Leistungsausbeute sinnvoll das Gemisch früher oder später zu entzünden.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
=== Motivation ===&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit diesen Kauflösungen niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung ===&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
==== Version 1 ====&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die &#039;&#039;&#039;Drehzahl&#039;&#039;&#039; benötigt. Weiterhin muss der &#039;&#039;&#039;Last&#039;&#039;&#039;zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird. Also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der &#039;&#039;&#039;Restsauerstoffgehalt&#039;&#039;&#039; im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
==== Version 2 ====&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Nebenluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
==== Weitere Ideen ====&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
=== Umsetzung ===&lt;br /&gt;
&lt;br /&gt;
==== Microcontroller ====&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den hier [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen einen Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
===== Anschluss des XMC4500 Relax Board =====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil des XMC4500 Relax Kit wurde von Infineon ein Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V sollen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind dann aber die 3,3 V Leitungen beider Boards verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu einfach Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Drehzahl ====&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe der Zündwinkel ====&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden. Frühere Zündwinkel bedürfen dann entweder einer Frühverstellung des Gebers oder etwas mehr Hirnschmalz.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (NPN Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, so über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass die Zündanlage wieder original beschaltet ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Restsauerstoffgehaltes ====&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Luftmasse ====&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
===== Beobachtungen =====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen. Wenn ich diese über einen Spannungsteiler auf 3,3 V teile, bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
===== Spannungsversorgung =====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung zu stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 die Eingangsspannung von 14,4 V um ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um ~16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
===== Messwert =====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Ansaugtemperatur ====&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrieten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
===== Berechnung der Widerstände =====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj und Out regelt wären das R1 = 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich für diesen ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 50° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen. Im Notfall muss die Messgröße per Software entstört werden - Temperaturen ändern sich ja eh vergleichsweise langsam.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Anlassersignals ====&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
==== Anzeige im Fahrzeug ====&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint), ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX. Dieses sollte sich leicht im Fahrzeug verlegen lassen.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Steuergerät =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Anzeige =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
===== PC Software =====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
=== Validierung des Steuergerätes ===&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
==== Konzept ====&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
==== Aufbau ====&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignalen erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die simulierten Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
==== Ergebnisse ====&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Wenig überraschend ist auch, dass zwischen Eingangs- und Ausgangssignal eine konstante aber nur sehr kurze Verzögerungszeit existiert. Praktisch:  ich konnte mit damit auch endlich mal alle meine gelagerten Zündungen auf korrekte Funktion prüfen. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 20° und 22° eingestellt werden. Bei diesem großen Tolleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennfeld-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringen Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet dieses Kennfeld bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
=== Aktueller Stand ===&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben Recht ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
=== Ausblick ===&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
=== Das Wichtigste zum Schluss ===&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Das bekomme ich irgendwann sicher auch noch hin. Ich freue mich selbstverständlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Motoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83670</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83670"/>
		<updated>2014-07-15T20:02:46Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: /* Ergebnisse */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
== Entwicklung eines Motorsteuergerätes für den Trabant ==&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Stand der Technik ===&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Je nach abgefragter Motorlast und aktueller Drehzahl wäre es im Sinne einer maximalen Leistungsausbeute sinnvoll das Gemisch früher oder später zu entzünden.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
=== Motivation ===&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit diesen Kauflösungen niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung ===&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
==== Version 1 ====&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die &#039;&#039;&#039;Drehzahl&#039;&#039;&#039; benötigt. Weiterhin muss der &#039;&#039;&#039;Last&#039;&#039;&#039;zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird. Also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der &#039;&#039;&#039;Restsauerstoffgehalt&#039;&#039;&#039; im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
==== Version 2 ====&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Nebenluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
==== Weitere Ideen ====&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
=== Umsetzung ===&lt;br /&gt;
&lt;br /&gt;
==== Microcontroller ====&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den hier [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen einen Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
===== Anschluss des XMC4500 Relax Board =====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil des XMC4500 Relax Kit wurde von Infineon ein Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V sollen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind dann aber die 3,3 V Leitungen beider Boards verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu einfach Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Drehzahl ====&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe der Zündwinkel ====&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden. Frühere Zündwinkel bedürfen dann entweder einer Frühverstellung des Gebers oder etwas mehr Hirnschmalz.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (NPN Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, so über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass die Zündanlage wieder original beschaltet ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Restsauerstoffgehaltes ====&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Luftmasse ====&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
===== Beobachtungen =====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen. Wenn ich diese über einen Spannungsteiler auf 3,3 V teile, bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
===== Spannungsversorgung =====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung zu stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 die Eingangsspannung von 14,4 V um ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um ~16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
===== Messwert =====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Ansaugtemperatur ====&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrieten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
===== Berechnung der Widerstände =====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj und Out regelt wären das R1 = 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich für diesen ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 50° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen. Im Notfall muss die Messgröße per Software entstört werden - Temperaturen ändern sich ja eh vergleichsweise langsam.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Anlassersignals ====&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
==== Anzeige im Fahrzeug ====&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint), ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX. Dieses sollte sich leicht im Fahrzeug verlegen lassen.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Steuergerät =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Anzeige =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
===== PC Software =====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
=== Validierung des Steuergerätes ===&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
==== Konzept ====&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
==== Aufbau ====&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignalen erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die simulierten Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
==== Ergebnisse ====&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Wenig überraschend ist auch, dass zwischen Eingangs- und Ausgangssignal eine konstante aber nur sehr kurze Verzögerungszeit existiert. Praktisch:  ich konnte mit damit auch endlich mal alle meine gelagerten Zündungen auf korrekte Funktion prüfen. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 20° und 22° eingestellt werden. Bei diesem großen Tolleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennfeld-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien genau daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringen Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet dieses Kennfeld bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
=== Aktueller Stand ===&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben Recht ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
=== Ausblick ===&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
=== Das Wichtigste zum Schluss ===&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Das bekomme ich irgendwann sicher auch noch hin. Ich freue mich selbstverständlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Motoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83669</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83669"/>
		<updated>2014-07-15T19:58:45Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: /* Ergebnisse */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
== Entwicklung eines Motorsteuergerätes für den Trabant ==&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Stand der Technik ===&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Je nach abgefragter Motorlast und aktueller Drehzahl wäre es im Sinne einer maximalen Leistungsausbeute sinnvoll das Gemisch früher oder später zu entzünden.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
=== Motivation ===&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit diesen Kauflösungen niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung ===&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
==== Version 1 ====&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die &#039;&#039;&#039;Drehzahl&#039;&#039;&#039; benötigt. Weiterhin muss der &#039;&#039;&#039;Last&#039;&#039;&#039;zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird. Also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der &#039;&#039;&#039;Restsauerstoffgehalt&#039;&#039;&#039; im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
==== Version 2 ====&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Nebenluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
==== Weitere Ideen ====&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
=== Umsetzung ===&lt;br /&gt;
&lt;br /&gt;
==== Microcontroller ====&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den hier [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen einen Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
===== Anschluss des XMC4500 Relax Board =====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil des XMC4500 Relax Kit wurde von Infineon ein Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V sollen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind dann aber die 3,3 V Leitungen beider Boards verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu einfach Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Drehzahl ====&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe der Zündwinkel ====&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden. Frühere Zündwinkel bedürfen dann entweder einer Frühverstellung des Gebers oder etwas mehr Hirnschmalz.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (NPN Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, so über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass die Zündanlage wieder original beschaltet ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Restsauerstoffgehaltes ====&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Luftmasse ====&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
===== Beobachtungen =====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen. Wenn ich diese über einen Spannungsteiler auf 3,3 V teile, bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
===== Spannungsversorgung =====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung zu stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 die Eingangsspannung von 14,4 V um ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um ~16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
===== Messwert =====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Ansaugtemperatur ====&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrieten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
===== Berechnung der Widerstände =====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj und Out regelt wären das R1 = 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich für diesen ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 50° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen. Im Notfall muss die Messgröße per Software entstört werden - Temperaturen ändern sich ja eh vergleichsweise langsam.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Anlassersignals ====&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
==== Anzeige im Fahrzeug ====&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint), ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX. Dieses sollte sich leicht im Fahrzeug verlegen lassen.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Steuergerät =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Anzeige =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
===== PC Software =====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
=== Validierung des Steuergerätes ===&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
==== Konzept ====&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
==== Aufbau ====&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignalen erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die simulierten Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
==== Ergebnisse ====&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Wenig überraschend ist auch, dass zwischen Eingangs- und Ausgangssignal eine konstante aber nur sehr kurze Verzögerungszeit existiert. Praktisch:  ich konnte mit damit auch endlich mal alle meine gelagerten Zündungen auf korrekte Funktion prüfen. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 23,1° und 25,6° eingestellt werden. Bei diesem großen Tolleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennfeld-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien genau daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringen Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet dieses Kennfeld bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
=== Aktueller Stand ===&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben Recht ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
=== Ausblick ===&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
=== Das Wichtigste zum Schluss ===&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Das bekomme ich irgendwann sicher auch noch hin. Ich freue mich selbstverständlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Motoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83668</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83668"/>
		<updated>2014-07-15T19:53:13Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: /* Aufbau */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
== Entwicklung eines Motorsteuergerätes für den Trabant ==&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Stand der Technik ===&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Je nach abgefragter Motorlast und aktueller Drehzahl wäre es im Sinne einer maximalen Leistungsausbeute sinnvoll das Gemisch früher oder später zu entzünden.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
=== Motivation ===&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit diesen Kauflösungen niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung ===&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
==== Version 1 ====&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die &#039;&#039;&#039;Drehzahl&#039;&#039;&#039; benötigt. Weiterhin muss der &#039;&#039;&#039;Last&#039;&#039;&#039;zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird. Also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der &#039;&#039;&#039;Restsauerstoffgehalt&#039;&#039;&#039; im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
==== Version 2 ====&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Nebenluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
==== Weitere Ideen ====&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
=== Umsetzung ===&lt;br /&gt;
&lt;br /&gt;
==== Microcontroller ====&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den hier [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen einen Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
===== Anschluss des XMC4500 Relax Board =====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil des XMC4500 Relax Kit wurde von Infineon ein Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V sollen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind dann aber die 3,3 V Leitungen beider Boards verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu einfach Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Drehzahl ====&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe der Zündwinkel ====&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden. Frühere Zündwinkel bedürfen dann entweder einer Frühverstellung des Gebers oder etwas mehr Hirnschmalz.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (NPN Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, so über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass die Zündanlage wieder original beschaltet ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Restsauerstoffgehaltes ====&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Luftmasse ====&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
===== Beobachtungen =====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen. Wenn ich diese über einen Spannungsteiler auf 3,3 V teile, bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
===== Spannungsversorgung =====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung zu stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 die Eingangsspannung von 14,4 V um ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um ~16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
===== Messwert =====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Ansaugtemperatur ====&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrieten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
===== Berechnung der Widerstände =====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj und Out regelt wären das R1 = 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich für diesen ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 50° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen. Im Notfall muss die Messgröße per Software entstört werden - Temperaturen ändern sich ja eh vergleichsweise langsam.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Anlassersignals ====&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
==== Anzeige im Fahrzeug ====&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint), ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX. Dieses sollte sich leicht im Fahrzeug verlegen lassen.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Steuergerät =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Anzeige =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
===== PC Software =====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
=== Validierung des Steuergerätes ===&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
==== Konzept ====&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
==== Aufbau ====&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignalen erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die simulierten Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
==== Ergebnisse ====&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 23,1° und 25,6° eingestellt werden. Bei diesem großen Tolleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennfeld-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien genau daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringen Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet dieses Kennfeld bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
=== Aktueller Stand ===&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben Recht ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
=== Ausblick ===&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
=== Das Wichtigste zum Schluss ===&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Das bekomme ich irgendwann sicher auch noch hin. Ich freue mich selbstverständlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Motoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83667</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83667"/>
		<updated>2014-07-15T19:47:17Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: /* Anzeige im Fahrzeug */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
== Entwicklung eines Motorsteuergerätes für den Trabant ==&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Stand der Technik ===&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Je nach abgefragter Motorlast und aktueller Drehzahl wäre es im Sinne einer maximalen Leistungsausbeute sinnvoll das Gemisch früher oder später zu entzünden.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
=== Motivation ===&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit diesen Kauflösungen niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung ===&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
==== Version 1 ====&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die &#039;&#039;&#039;Drehzahl&#039;&#039;&#039; benötigt. Weiterhin muss der &#039;&#039;&#039;Last&#039;&#039;&#039;zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird. Also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der &#039;&#039;&#039;Restsauerstoffgehalt&#039;&#039;&#039; im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
==== Version 2 ====&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Nebenluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
==== Weitere Ideen ====&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
=== Umsetzung ===&lt;br /&gt;
&lt;br /&gt;
==== Microcontroller ====&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den hier [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen einen Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
===== Anschluss des XMC4500 Relax Board =====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil des XMC4500 Relax Kit wurde von Infineon ein Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V sollen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind dann aber die 3,3 V Leitungen beider Boards verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu einfach Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Drehzahl ====&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe der Zündwinkel ====&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden. Frühere Zündwinkel bedürfen dann entweder einer Frühverstellung des Gebers oder etwas mehr Hirnschmalz.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (NPN Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, so über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass die Zündanlage wieder original beschaltet ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Restsauerstoffgehaltes ====&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Luftmasse ====&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
===== Beobachtungen =====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen. Wenn ich diese über einen Spannungsteiler auf 3,3 V teile, bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
===== Spannungsversorgung =====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung zu stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 die Eingangsspannung von 14,4 V um ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um ~16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
===== Messwert =====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Ansaugtemperatur ====&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrieten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
===== Berechnung der Widerstände =====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj und Out regelt wären das R1 = 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich für diesen ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 50° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen. Im Notfall muss die Messgröße per Software entstört werden - Temperaturen ändern sich ja eh vergleichsweise langsam.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Anlassersignals ====&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
==== Anzeige im Fahrzeug ====&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint), ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX. Dieses sollte sich leicht im Fahrzeug verlegen lassen.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Steuergerät =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Anzeige =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
===== PC Software =====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
=== Validierung des Steuergerätes ===&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
==== Konzept ====&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
==== Aufbau ====&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignal erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
==== Ergebnisse ====&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 23,1° und 25,6° eingestellt werden. Bei diesem großen Tolleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennfeld-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien genau daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringen Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet dieses Kennfeld bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
=== Aktueller Stand ===&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben Recht ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
=== Ausblick ===&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
=== Das Wichtigste zum Schluss ===&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Das bekomme ich irgendwann sicher auch noch hin. Ich freue mich selbstverständlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Motoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83666</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83666"/>
		<updated>2014-07-15T19:43:50Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: /* Anzeige im Fahrzeug */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
== Entwicklung eines Motorsteuergerätes für den Trabant ==&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Stand der Technik ===&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Je nach abgefragter Motorlast und aktueller Drehzahl wäre es im Sinne einer maximalen Leistungsausbeute sinnvoll das Gemisch früher oder später zu entzünden.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
=== Motivation ===&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit diesen Kauflösungen niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung ===&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
==== Version 1 ====&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die &#039;&#039;&#039;Drehzahl&#039;&#039;&#039; benötigt. Weiterhin muss der &#039;&#039;&#039;Last&#039;&#039;&#039;zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird. Also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der &#039;&#039;&#039;Restsauerstoffgehalt&#039;&#039;&#039; im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
==== Version 2 ====&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Nebenluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
==== Weitere Ideen ====&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
=== Umsetzung ===&lt;br /&gt;
&lt;br /&gt;
==== Microcontroller ====&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den hier [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen einen Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
===== Anschluss des XMC4500 Relax Board =====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil des XMC4500 Relax Kit wurde von Infineon ein Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V sollen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind dann aber die 3,3 V Leitungen beider Boards verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu einfach Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Drehzahl ====&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe der Zündwinkel ====&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden. Frühere Zündwinkel bedürfen dann entweder einer Frühverstellung des Gebers oder etwas mehr Hirnschmalz.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (NPN Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, so über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass die Zündanlage wieder original beschaltet ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Restsauerstoffgehaltes ====&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Luftmasse ====&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
===== Beobachtungen =====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen. Wenn ich diese über einen Spannungsteiler auf 3,3 V teile, bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
===== Spannungsversorgung =====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung zu stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 die Eingangsspannung von 14,4 V um ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um ~16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
===== Messwert =====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Ansaugtemperatur ====&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrieten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
===== Berechnung der Widerstände =====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj und Out regelt wären das R1 = 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich für diesen ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 50° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen. Im Notfall muss die Messgröße per Software entstört werden - Temperaturen ändern sich ja eh vergleichsweise langsam.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Anlassersignals ====&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
==== Anzeige im Fahrzeug ====&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint), ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu einfach der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Steuergerät =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Anzeige =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
===== PC Software =====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
=== Validierung des Steuergerätes ===&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
==== Konzept ====&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
==== Aufbau ====&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignal erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
==== Ergebnisse ====&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 23,1° und 25,6° eingestellt werden. Bei diesem großen Tolleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennfeld-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien genau daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringen Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet dieses Kennfeld bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
=== Aktueller Stand ===&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben Recht ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
=== Ausblick ===&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
=== Das Wichtigste zum Schluss ===&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Das bekomme ich irgendwann sicher auch noch hin. Ich freue mich selbstverständlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Motoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83665</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83665"/>
		<updated>2014-07-15T19:41:27Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: /* Berechnung der Widerstände */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
== Entwicklung eines Motorsteuergerätes für den Trabant ==&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Stand der Technik ===&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Je nach abgefragter Motorlast und aktueller Drehzahl wäre es im Sinne einer maximalen Leistungsausbeute sinnvoll das Gemisch früher oder später zu entzünden.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
=== Motivation ===&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit diesen Kauflösungen niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung ===&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
==== Version 1 ====&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die &#039;&#039;&#039;Drehzahl&#039;&#039;&#039; benötigt. Weiterhin muss der &#039;&#039;&#039;Last&#039;&#039;&#039;zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird. Also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der &#039;&#039;&#039;Restsauerstoffgehalt&#039;&#039;&#039; im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
==== Version 2 ====&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Nebenluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
==== Weitere Ideen ====&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
=== Umsetzung ===&lt;br /&gt;
&lt;br /&gt;
==== Microcontroller ====&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den hier [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen einen Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
===== Anschluss des XMC4500 Relax Board =====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil des XMC4500 Relax Kit wurde von Infineon ein Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V sollen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind dann aber die 3,3 V Leitungen beider Boards verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu einfach Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Drehzahl ====&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe der Zündwinkel ====&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden. Frühere Zündwinkel bedürfen dann entweder einer Frühverstellung des Gebers oder etwas mehr Hirnschmalz.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (NPN Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, so über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass die Zündanlage wieder original beschaltet ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Restsauerstoffgehaltes ====&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Luftmasse ====&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
===== Beobachtungen =====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen. Wenn ich diese über einen Spannungsteiler auf 3,3 V teile, bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
===== Spannungsversorgung =====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung zu stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 die Eingangsspannung von 14,4 V um ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um ~16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
===== Messwert =====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Ansaugtemperatur ====&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrieten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
===== Berechnung der Widerstände =====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj und Out regelt wären das R1 = 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich für diesen ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 50° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen. Im Notfall muss die Messgröße per Software entstört werden - Temperaturen ändern sich ja eh vergleichsweise langsam.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Anlassersignals ====&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
==== Anzeige im Fahrzeug ====&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint, ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu einfach der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Steuergerät =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Anzeige =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
===== PC Software =====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
=== Validierung des Steuergerätes ===&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
==== Konzept ====&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
==== Aufbau ====&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignal erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
==== Ergebnisse ====&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 23,1° und 25,6° eingestellt werden. Bei diesem großen Tolleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennfeld-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien genau daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringen Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet dieses Kennfeld bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
=== Aktueller Stand ===&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben Recht ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
=== Ausblick ===&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
=== Das Wichtigste zum Schluss ===&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Das bekomme ich irgendwann sicher auch noch hin. Ich freue mich selbstverständlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Motoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83664</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83664"/>
		<updated>2014-07-15T19:39:23Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: /* Berechnung der Widerstände */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
== Entwicklung eines Motorsteuergerätes für den Trabant ==&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Stand der Technik ===&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Je nach abgefragter Motorlast und aktueller Drehzahl wäre es im Sinne einer maximalen Leistungsausbeute sinnvoll das Gemisch früher oder später zu entzünden.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
=== Motivation ===&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit diesen Kauflösungen niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung ===&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
==== Version 1 ====&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die &#039;&#039;&#039;Drehzahl&#039;&#039;&#039; benötigt. Weiterhin muss der &#039;&#039;&#039;Last&#039;&#039;&#039;zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird. Also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der &#039;&#039;&#039;Restsauerstoffgehalt&#039;&#039;&#039; im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
==== Version 2 ====&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Nebenluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
==== Weitere Ideen ====&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
=== Umsetzung ===&lt;br /&gt;
&lt;br /&gt;
==== Microcontroller ====&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den hier [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen einen Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
===== Anschluss des XMC4500 Relax Board =====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil des XMC4500 Relax Kit wurde von Infineon ein Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V sollen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind dann aber die 3,3 V Leitungen beider Boards verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu einfach Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Drehzahl ====&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe der Zündwinkel ====&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden. Frühere Zündwinkel bedürfen dann entweder einer Frühverstellung des Gebers oder etwas mehr Hirnschmalz.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (NPN Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, so über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass die Zündanlage wieder original beschaltet ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Restsauerstoffgehaltes ====&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Luftmasse ====&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
===== Beobachtungen =====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen. Wenn ich diese über einen Spannungsteiler auf 3,3 V teile, bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
===== Spannungsversorgung =====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung zu stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 die Eingangsspannung von 14,4 V um ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um ~16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
===== Messwert =====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Ansaugtemperatur ====&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrieten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
===== Berechnung der Widerstände =====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj und Out regelt wären das R1 = 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich für diesen ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 25° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Anlassersignals ====&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
==== Anzeige im Fahrzeug ====&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint, ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu einfach der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Steuergerät =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Anzeige =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
===== PC Software =====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
=== Validierung des Steuergerätes ===&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
==== Konzept ====&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
==== Aufbau ====&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignal erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
==== Ergebnisse ====&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 23,1° und 25,6° eingestellt werden. Bei diesem großen Tolleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennfeld-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien genau daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringen Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet dieses Kennfeld bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
=== Aktueller Stand ===&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben Recht ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
=== Ausblick ===&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
=== Das Wichtigste zum Schluss ===&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Das bekomme ich irgendwann sicher auch noch hin. Ich freue mich selbstverständlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Motoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83663</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83663"/>
		<updated>2014-07-15T19:34:38Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: /* Spannungsversorgung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
== Entwicklung eines Motorsteuergerätes für den Trabant ==&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Stand der Technik ===&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Je nach abgefragter Motorlast und aktueller Drehzahl wäre es im Sinne einer maximalen Leistungsausbeute sinnvoll das Gemisch früher oder später zu entzünden.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
=== Motivation ===&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit diesen Kauflösungen niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung ===&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
==== Version 1 ====&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die &#039;&#039;&#039;Drehzahl&#039;&#039;&#039; benötigt. Weiterhin muss der &#039;&#039;&#039;Last&#039;&#039;&#039;zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird. Also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der &#039;&#039;&#039;Restsauerstoffgehalt&#039;&#039;&#039; im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
==== Version 2 ====&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Nebenluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
==== Weitere Ideen ====&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
=== Umsetzung ===&lt;br /&gt;
&lt;br /&gt;
==== Microcontroller ====&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den hier [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen einen Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
===== Anschluss des XMC4500 Relax Board =====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil des XMC4500 Relax Kit wurde von Infineon ein Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V sollen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind dann aber die 3,3 V Leitungen beider Boards verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu einfach Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Drehzahl ====&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe der Zündwinkel ====&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden. Frühere Zündwinkel bedürfen dann entweder einer Frühverstellung des Gebers oder etwas mehr Hirnschmalz.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (NPN Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, so über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass die Zündanlage wieder original beschaltet ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Restsauerstoffgehaltes ====&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Luftmasse ====&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
===== Beobachtungen =====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen. Wenn ich diese über einen Spannungsteiler auf 3,3 V teile, bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
===== Spannungsversorgung =====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung zu stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 die Eingangsspannung von 14,4 V um ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um ~16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
===== Messwert =====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Ansaugtemperatur ====&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrieten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
===== Berechnung der Widerstände =====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj. und Out regelt wären das 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 25° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Anlassersignals ====&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
==== Anzeige im Fahrzeug ====&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint, ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu einfach der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Steuergerät =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Anzeige =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
===== PC Software =====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
=== Validierung des Steuergerätes ===&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
==== Konzept ====&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
==== Aufbau ====&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignal erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
==== Ergebnisse ====&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 23,1° und 25,6° eingestellt werden. Bei diesem großen Tolleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennfeld-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien genau daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringen Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet dieses Kennfeld bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
=== Aktueller Stand ===&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben Recht ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
=== Ausblick ===&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
=== Das Wichtigste zum Schluss ===&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Das bekomme ich irgendwann sicher auch noch hin. Ich freue mich selbstverständlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Motoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83662</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83662"/>
		<updated>2014-07-15T19:32:20Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: /* Beobachtungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
== Entwicklung eines Motorsteuergerätes für den Trabant ==&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Stand der Technik ===&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Je nach abgefragter Motorlast und aktueller Drehzahl wäre es im Sinne einer maximalen Leistungsausbeute sinnvoll das Gemisch früher oder später zu entzünden.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
=== Motivation ===&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit diesen Kauflösungen niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung ===&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
==== Version 1 ====&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die &#039;&#039;&#039;Drehzahl&#039;&#039;&#039; benötigt. Weiterhin muss der &#039;&#039;&#039;Last&#039;&#039;&#039;zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird. Also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der &#039;&#039;&#039;Restsauerstoffgehalt&#039;&#039;&#039; im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
==== Version 2 ====&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Nebenluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
==== Weitere Ideen ====&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
=== Umsetzung ===&lt;br /&gt;
&lt;br /&gt;
==== Microcontroller ====&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den hier [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen einen Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
===== Anschluss des XMC4500 Relax Board =====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil des XMC4500 Relax Kit wurde von Infineon ein Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V sollen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind dann aber die 3,3 V Leitungen beider Boards verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu einfach Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Drehzahl ====&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe der Zündwinkel ====&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden. Frühere Zündwinkel bedürfen dann entweder einer Frühverstellung des Gebers oder etwas mehr Hirnschmalz.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (NPN Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, so über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass die Zündanlage wieder original beschaltet ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Restsauerstoffgehaltes ====&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Luftmasse ====&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
===== Beobachtungen =====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen. Wenn ich diese über einen Spannungsteiler auf 3,3 V teile, bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
===== Spannungsversorgung =====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung zu stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um rund 16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
===== Messwert =====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Ansaugtemperatur ====&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrieten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
===== Berechnung der Widerstände =====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj. und Out regelt wären das 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 25° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Anlassersignals ====&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
==== Anzeige im Fahrzeug ====&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint, ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu einfach der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Steuergerät =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Anzeige =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
===== PC Software =====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
=== Validierung des Steuergerätes ===&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
==== Konzept ====&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
==== Aufbau ====&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignal erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
==== Ergebnisse ====&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 23,1° und 25,6° eingestellt werden. Bei diesem großen Tolleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennfeld-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien genau daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringen Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet dieses Kennfeld bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
=== Aktueller Stand ===&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben Recht ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
=== Ausblick ===&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
=== Das Wichtigste zum Schluss ===&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Das bekomme ich irgendwann sicher auch noch hin. Ich freue mich selbstverständlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Motoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83661</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83661"/>
		<updated>2014-07-15T19:30:28Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: /* Erfassung der Luftmasse */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
== Entwicklung eines Motorsteuergerätes für den Trabant ==&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Stand der Technik ===&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Je nach abgefragter Motorlast und aktueller Drehzahl wäre es im Sinne einer maximalen Leistungsausbeute sinnvoll das Gemisch früher oder später zu entzünden.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
=== Motivation ===&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit diesen Kauflösungen niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung ===&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
==== Version 1 ====&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die &#039;&#039;&#039;Drehzahl&#039;&#039;&#039; benötigt. Weiterhin muss der &#039;&#039;&#039;Last&#039;&#039;&#039;zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird. Also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der &#039;&#039;&#039;Restsauerstoffgehalt&#039;&#039;&#039; im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
==== Version 2 ====&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Nebenluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
==== Weitere Ideen ====&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
=== Umsetzung ===&lt;br /&gt;
&lt;br /&gt;
==== Microcontroller ====&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den hier [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen einen Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
===== Anschluss des XMC4500 Relax Board =====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil des XMC4500 Relax Kit wurde von Infineon ein Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V sollen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind dann aber die 3,3 V Leitungen beider Boards verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu einfach Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Drehzahl ====&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe der Zündwinkel ====&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden. Frühere Zündwinkel bedürfen dann entweder einer Frühverstellung des Gebers oder etwas mehr Hirnschmalz.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (NPN Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, so über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass die Zündanlage wieder original beschaltet ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Restsauerstoffgehaltes ====&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Luftmasse ====&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
===== Beobachtungen =====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen, wenn ich diese über einen Spannungsteiler auf 3,3 V teile bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
===== Spannungsversorgung =====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung zu stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um rund 16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
===== Messwert =====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Ansaugtemperatur ====&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrieten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
===== Berechnung der Widerstände =====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj. und Out regelt wären das 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 25° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Anlassersignals ====&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
==== Anzeige im Fahrzeug ====&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint, ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu einfach der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Steuergerät =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Anzeige =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
===== PC Software =====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
=== Validierung des Steuergerätes ===&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
==== Konzept ====&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
==== Aufbau ====&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignal erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
==== Ergebnisse ====&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 23,1° und 25,6° eingestellt werden. Bei diesem großen Tolleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennfeld-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien genau daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringen Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet dieses Kennfeld bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
=== Aktueller Stand ===&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben Recht ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
=== Ausblick ===&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
=== Das Wichtigste zum Schluss ===&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Das bekomme ich irgendwann sicher auch noch hin. Ich freue mich selbstverständlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Motoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83659</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83659"/>
		<updated>2014-07-15T19:27:12Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: /* Ausgabe der Zündwinkel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
== Entwicklung eines Motorsteuergerätes für den Trabant ==&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Stand der Technik ===&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Je nach abgefragter Motorlast und aktueller Drehzahl wäre es im Sinne einer maximalen Leistungsausbeute sinnvoll das Gemisch früher oder später zu entzünden.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
=== Motivation ===&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit diesen Kauflösungen niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung ===&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
==== Version 1 ====&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die &#039;&#039;&#039;Drehzahl&#039;&#039;&#039; benötigt. Weiterhin muss der &#039;&#039;&#039;Last&#039;&#039;&#039;zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird. Also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der &#039;&#039;&#039;Restsauerstoffgehalt&#039;&#039;&#039; im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
==== Version 2 ====&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Nebenluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
==== Weitere Ideen ====&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
=== Umsetzung ===&lt;br /&gt;
&lt;br /&gt;
==== Microcontroller ====&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den hier [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen einen Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
===== Anschluss des XMC4500 Relax Board =====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil des XMC4500 Relax Kit wurde von Infineon ein Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V sollen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind dann aber die 3,3 V Leitungen beider Boards verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu einfach Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Drehzahl ====&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe der Zündwinkel ====&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden. Frühere Zündwinkel bedürfen dann entweder einer Frühverstellung des Gebers oder etwas mehr Hirnschmalz.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (NPN Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, so über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass die Zündanlage wieder original beschaltet ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Restsauerstoffgehaltes ====&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Luftmasse ====&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man also am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
===== Beobachtungen =====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen, wenn ich diese über einen Spannungsteiler auf 3,3 V teile bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
===== Spannungsversorgung =====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung zu stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um rund 16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
===== Messwert =====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Ansaugtemperatur ====&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrieten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
===== Berechnung der Widerstände =====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj. und Out regelt wären das 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 25° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Anlassersignals ====&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
==== Anzeige im Fahrzeug ====&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint, ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu einfach der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Steuergerät =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Anzeige =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
===== PC Software =====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
=== Validierung des Steuergerätes ===&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
==== Konzept ====&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
==== Aufbau ====&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignal erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
==== Ergebnisse ====&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 23,1° und 25,6° eingestellt werden. Bei diesem großen Tolleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennfeld-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien genau daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringen Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet dieses Kennfeld bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
=== Aktueller Stand ===&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben Recht ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
=== Ausblick ===&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
=== Das Wichtigste zum Schluss ===&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Das bekomme ich irgendwann sicher auch noch hin. Ich freue mich selbstverständlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Motoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83658</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83658"/>
		<updated>2014-07-15T19:23:47Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: /* Ausgabe der Zündwinkel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
== Entwicklung eines Motorsteuergerätes für den Trabant ==&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Stand der Technik ===&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Je nach abgefragter Motorlast und aktueller Drehzahl wäre es im Sinne einer maximalen Leistungsausbeute sinnvoll das Gemisch früher oder später zu entzünden.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
=== Motivation ===&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit diesen Kauflösungen niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung ===&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
==== Version 1 ====&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die &#039;&#039;&#039;Drehzahl&#039;&#039;&#039; benötigt. Weiterhin muss der &#039;&#039;&#039;Last&#039;&#039;&#039;zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird. Also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der &#039;&#039;&#039;Restsauerstoffgehalt&#039;&#039;&#039; im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
==== Version 2 ====&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Nebenluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
==== Weitere Ideen ====&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
=== Umsetzung ===&lt;br /&gt;
&lt;br /&gt;
==== Microcontroller ====&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den hier [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen einen Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
===== Anschluss des XMC4500 Relax Board =====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil des XMC4500 Relax Kit wurde von Infineon ein Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V sollen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind dann aber die 3,3 V Leitungen beider Boards verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu einfach Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Drehzahl ====&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe der Zündwinkel ====&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden. Frühere Zündwinkel bedürfen dann entweder einer Frühverstellung des Gebers oder etwas mehr Hirnschmalz.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (npn Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass quasi alles original ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Restsauerstoffgehaltes ====&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Luftmasse ====&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man also am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
===== Beobachtungen =====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen, wenn ich diese über einen Spannungsteiler auf 3,3 V teile bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
===== Spannungsversorgung =====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung zu stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um rund 16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
===== Messwert =====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Ansaugtemperatur ====&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrieten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
===== Berechnung der Widerstände =====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj. und Out regelt wären das 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 25° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Anlassersignals ====&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
==== Anzeige im Fahrzeug ====&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint, ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu einfach der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Steuergerät =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Anzeige =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
===== PC Software =====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
=== Validierung des Steuergerätes ===&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
==== Konzept ====&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
==== Aufbau ====&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignal erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
==== Ergebnisse ====&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 23,1° und 25,6° eingestellt werden. Bei diesem großen Tolleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennfeld-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien genau daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringen Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet dieses Kennfeld bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
=== Aktueller Stand ===&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben Recht ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
=== Ausblick ===&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
=== Das Wichtigste zum Schluss ===&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Das bekomme ich irgendwann sicher auch noch hin. Ich freue mich selbstverständlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Motoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83657</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83657"/>
		<updated>2014-07-15T19:19:59Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: /* Anschluss des XMC4500 Relax Board */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
== Entwicklung eines Motorsteuergerätes für den Trabant ==&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Stand der Technik ===&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Je nach abgefragter Motorlast und aktueller Drehzahl wäre es im Sinne einer maximalen Leistungsausbeute sinnvoll das Gemisch früher oder später zu entzünden.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
=== Motivation ===&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit diesen Kauflösungen niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung ===&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
==== Version 1 ====&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die &#039;&#039;&#039;Drehzahl&#039;&#039;&#039; benötigt. Weiterhin muss der &#039;&#039;&#039;Last&#039;&#039;&#039;zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird. Also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der &#039;&#039;&#039;Restsauerstoffgehalt&#039;&#039;&#039; im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
==== Version 2 ====&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Nebenluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
==== Weitere Ideen ====&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
=== Umsetzung ===&lt;br /&gt;
&lt;br /&gt;
==== Microcontroller ====&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den hier [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen einen Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
===== Anschluss des XMC4500 Relax Board =====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil des XMC4500 Relax Kit wurde von Infineon ein Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V sollen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind dann aber die 3,3 V Leitungen beider Boards verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu einfach Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Drehzahl ====&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe der Zündwinkel ====&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (npn Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass quasi alles original ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Restsauerstoffgehaltes ====&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Luftmasse ====&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man also am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
===== Beobachtungen =====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen, wenn ich diese über einen Spannungsteiler auf 3,3 V teile bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
===== Spannungsversorgung =====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung zu stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um rund 16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
===== Messwert =====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Ansaugtemperatur ====&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrieten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
===== Berechnung der Widerstände =====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj. und Out regelt wären das 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 25° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Anlassersignals ====&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
==== Anzeige im Fahrzeug ====&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint, ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu einfach der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Steuergerät =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Anzeige =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
===== PC Software =====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
=== Validierung des Steuergerätes ===&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
==== Konzept ====&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
==== Aufbau ====&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignal erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
==== Ergebnisse ====&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 23,1° und 25,6° eingestellt werden. Bei diesem großen Tolleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennfeld-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien genau daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringen Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet dieses Kennfeld bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
=== Aktueller Stand ===&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben Recht ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
=== Ausblick ===&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
=== Das Wichtigste zum Schluss ===&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Das bekomme ich irgendwann sicher auch noch hin. Ich freue mich selbstverständlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Motoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83654</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83654"/>
		<updated>2014-07-15T19:17:09Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: /* Spannungsversorgung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
== Entwicklung eines Motorsteuergerätes für den Trabant ==&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Stand der Technik ===&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Je nach abgefragter Motorlast und aktueller Drehzahl wäre es im Sinne einer maximalen Leistungsausbeute sinnvoll das Gemisch früher oder später zu entzünden.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
=== Motivation ===&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit diesen Kauflösungen niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung ===&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
==== Version 1 ====&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die &#039;&#039;&#039;Drehzahl&#039;&#039;&#039; benötigt. Weiterhin muss der &#039;&#039;&#039;Last&#039;&#039;&#039;zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird. Also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der &#039;&#039;&#039;Restsauerstoffgehalt&#039;&#039;&#039; im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
==== Version 2 ====&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Nebenluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
==== Weitere Ideen ====&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
=== Umsetzung ===&lt;br /&gt;
&lt;br /&gt;
==== Microcontroller ====&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den hier [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen einen Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
===== Anschluss des XMC4500 Relax Board =====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil ist der Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V müssen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind die 3,3 V Leitungen beider Boards wieder verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Drehzahl ====&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe der Zündwinkel ====&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (npn Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass quasi alles original ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Restsauerstoffgehaltes ====&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Luftmasse ====&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man also am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
===== Beobachtungen =====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen, wenn ich diese über einen Spannungsteiler auf 3,3 V teile bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
===== Spannungsversorgung =====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung zu stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um rund 16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
===== Messwert =====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Ansaugtemperatur ====&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrieten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
===== Berechnung der Widerstände =====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj. und Out regelt wären das 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 25° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Anlassersignals ====&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
==== Anzeige im Fahrzeug ====&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint, ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu einfach der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Steuergerät =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Anzeige =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
===== PC Software =====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
=== Validierung des Steuergerätes ===&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
==== Konzept ====&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
==== Aufbau ====&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignal erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
==== Ergebnisse ====&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 23,1° und 25,6° eingestellt werden. Bei diesem großen Tolleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennfeld-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien genau daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringen Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet dieses Kennfeld bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
=== Aktueller Stand ===&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben Recht ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
=== Ausblick ===&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
=== Das Wichtigste zum Schluss ===&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Das bekomme ich irgendwann sicher auch noch hin. Ich freue mich selbstverständlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Motoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83653</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83653"/>
		<updated>2014-07-15T19:12:55Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: /* Version 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
== Entwicklung eines Motorsteuergerätes für den Trabant ==&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Stand der Technik ===&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Je nach abgefragter Motorlast und aktueller Drehzahl wäre es im Sinne einer maximalen Leistungsausbeute sinnvoll das Gemisch früher oder später zu entzünden.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
=== Motivation ===&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit diesen Kauflösungen niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung ===&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
==== Version 1 ====&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die &#039;&#039;&#039;Drehzahl&#039;&#039;&#039; benötigt. Weiterhin muss der &#039;&#039;&#039;Last&#039;&#039;&#039;zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird. Also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der &#039;&#039;&#039;Restsauerstoffgehalt&#039;&#039;&#039; im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
==== Version 2 ====&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Nebenluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
==== Weitere Ideen ====&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
=== Umsetzung ===&lt;br /&gt;
&lt;br /&gt;
==== Microcontroller ====&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden. Diese Seite [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] erläutert sehr gut, was alles beachtet werden muss, um eine stabile Spannungsversorgung im Fahrzeug zu realisieren.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen den Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
===== Anschluss des XMC4500 Relax Board =====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil ist der Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V müssen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind die 3,3 V Leitungen beider Boards wieder verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Drehzahl ====&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe der Zündwinkel ====&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (npn Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass quasi alles original ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Restsauerstoffgehaltes ====&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Luftmasse ====&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man also am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
===== Beobachtungen =====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen, wenn ich diese über einen Spannungsteiler auf 3,3 V teile bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
===== Spannungsversorgung =====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung zu stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um rund 16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
===== Messwert =====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Ansaugtemperatur ====&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrieten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
===== Berechnung der Widerstände =====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj. und Out regelt wären das 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 25° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Anlassersignals ====&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
==== Anzeige im Fahrzeug ====&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint, ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu einfach der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Steuergerät =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Anzeige =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
===== PC Software =====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
=== Validierung des Steuergerätes ===&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
==== Konzept ====&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
==== Aufbau ====&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignal erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
==== Ergebnisse ====&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 23,1° und 25,6° eingestellt werden. Bei diesem großen Tolleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennfeld-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien genau daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringen Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet dieses Kennfeld bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
=== Aktueller Stand ===&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben Recht ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
=== Ausblick ===&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
=== Das Wichtigste zum Schluss ===&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Das bekomme ich irgendwann sicher auch noch hin. Ich freue mich selbstverständlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Motoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83652</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83652"/>
		<updated>2014-07-15T19:10:51Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: /* Motivation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
== Entwicklung eines Motorsteuergerätes für den Trabant ==&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Stand der Technik ===&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Je nach abgefragter Motorlast und aktueller Drehzahl wäre es im Sinne einer maximalen Leistungsausbeute sinnvoll das Gemisch früher oder später zu entzünden.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
=== Motivation ===&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit diesen Kauflösungen niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung ===&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
==== Version 1 ====&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die **Drehzahl** benötigt. Weiterhin muss der **Last**zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird, also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der **Restsauerstoffgehalt** im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
==== Version 2 ====&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Nebenluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
==== Weitere Ideen ====&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
=== Umsetzung ===&lt;br /&gt;
&lt;br /&gt;
==== Microcontroller ====&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden. Diese Seite [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] erläutert sehr gut, was alles beachtet werden muss, um eine stabile Spannungsversorgung im Fahrzeug zu realisieren.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen den Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
===== Anschluss des XMC4500 Relax Board =====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil ist der Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V müssen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind die 3,3 V Leitungen beider Boards wieder verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Drehzahl ====&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe der Zündwinkel ====&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (npn Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass quasi alles original ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Restsauerstoffgehaltes ====&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Luftmasse ====&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man also am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
===== Beobachtungen =====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen, wenn ich diese über einen Spannungsteiler auf 3,3 V teile bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
===== Spannungsversorgung =====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung zu stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um rund 16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
===== Messwert =====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Ansaugtemperatur ====&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrieten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
===== Berechnung der Widerstände =====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj. und Out regelt wären das 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 25° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Anlassersignals ====&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
==== Anzeige im Fahrzeug ====&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint, ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu einfach der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Steuergerät =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Anzeige =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
===== PC Software =====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
=== Validierung des Steuergerätes ===&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
==== Konzept ====&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
==== Aufbau ====&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignal erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
==== Ergebnisse ====&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 23,1° und 25,6° eingestellt werden. Bei diesem großen Tolleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennfeld-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien genau daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringen Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet dieses Kennfeld bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
=== Aktueller Stand ===&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben Recht ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
=== Ausblick ===&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
=== Das Wichtigste zum Schluss ===&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Das bekomme ich irgendwann sicher auch noch hin. Ich freue mich selbstverständlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Motoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83651</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83651"/>
		<updated>2014-07-15T19:09:57Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: /* Motivation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
== Entwicklung eines Motorsteuergerätes für den Trabant ==&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Stand der Technik ===&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Je nach abgefragter Motorlast und aktueller Drehzahl wäre es im Sinne einer maximalen Leistungsausbeute sinnvoll das Gemisch früher oder später zu entzünden.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
=== Motivation ===&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren unter nicht gerade idealen Bedingungen entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit dieser Kauflösung niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung ===&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
==== Version 1 ====&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die **Drehzahl** benötigt. Weiterhin muss der **Last**zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird, also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der **Restsauerstoffgehalt** im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
==== Version 2 ====&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Nebenluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
==== Weitere Ideen ====&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
=== Umsetzung ===&lt;br /&gt;
&lt;br /&gt;
==== Microcontroller ====&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden. Diese Seite [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] erläutert sehr gut, was alles beachtet werden muss, um eine stabile Spannungsversorgung im Fahrzeug zu realisieren.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen den Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
===== Anschluss des XMC4500 Relax Board =====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil ist der Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V müssen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind die 3,3 V Leitungen beider Boards wieder verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Drehzahl ====&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe der Zündwinkel ====&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (npn Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass quasi alles original ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Restsauerstoffgehaltes ====&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Luftmasse ====&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man also am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
===== Beobachtungen =====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen, wenn ich diese über einen Spannungsteiler auf 3,3 V teile bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
===== Spannungsversorgung =====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung zu stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um rund 16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
===== Messwert =====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Ansaugtemperatur ====&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrieten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
===== Berechnung der Widerstände =====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj. und Out regelt wären das 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 25° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Anlassersignals ====&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
==== Anzeige im Fahrzeug ====&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint, ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu einfach der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Steuergerät =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Anzeige =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
===== PC Software =====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
=== Validierung des Steuergerätes ===&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
==== Konzept ====&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
==== Aufbau ====&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignal erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
==== Ergebnisse ====&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 23,1° und 25,6° eingestellt werden. Bei diesem großen Tolleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennfeld-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien genau daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringen Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet dieses Kennfeld bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
=== Aktueller Stand ===&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben Recht ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
=== Ausblick ===&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
=== Das Wichtigste zum Schluss ===&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Das bekomme ich irgendwann sicher auch noch hin. Ich freue mich selbstverständlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Motoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83650</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83650"/>
		<updated>2014-07-15T19:08:53Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: /* Stand der Technik */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
== Entwicklung eines Motorsteuergerätes für den Trabant ==&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Stand der Technik ===&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke bei jeder Umdrehung zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Je nach abgefragter Motorlast und aktueller Drehzahl wäre es im Sinne einer maximalen Leistungsausbeute sinnvoll das Gemisch früher oder später zu entzünden.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug arbeitet die letzte für den Trabant 2-Taktmotor entwickelte Vergasergeneration, der 28H1-1. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
=== Motivation ===&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit dieser Kauflösung niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung ===&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
==== Version 1 ====&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die **Drehzahl** benötigt. Weiterhin muss der **Last**zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird, also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der **Restsauerstoffgehalt** im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
==== Version 2 ====&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Nebenluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
==== Weitere Ideen ====&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
=== Umsetzung ===&lt;br /&gt;
&lt;br /&gt;
==== Microcontroller ====&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden. Diese Seite [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] erläutert sehr gut, was alles beachtet werden muss, um eine stabile Spannungsversorgung im Fahrzeug zu realisieren.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen den Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
===== Anschluss des XMC4500 Relax Board =====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil ist der Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V müssen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind die 3,3 V Leitungen beider Boards wieder verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Drehzahl ====&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe der Zündwinkel ====&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (npn Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass quasi alles original ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Restsauerstoffgehaltes ====&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Luftmasse ====&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man also am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
===== Beobachtungen =====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen, wenn ich diese über einen Spannungsteiler auf 3,3 V teile bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
===== Spannungsversorgung =====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung zu stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um rund 16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
===== Messwert =====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Ansaugtemperatur ====&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrieten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
===== Berechnung der Widerstände =====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj. und Out regelt wären das 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 25° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Anlassersignals ====&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
==== Anzeige im Fahrzeug ====&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint, ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu einfach der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Steuergerät =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Anzeige =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
===== PC Software =====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
=== Validierung des Steuergerätes ===&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
==== Konzept ====&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
==== Aufbau ====&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignal erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
==== Ergebnisse ====&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 23,1° und 25,6° eingestellt werden. Bei diesem großen Tolleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennfeld-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien genau daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringen Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet dieses Kennfeld bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
=== Aktueller Stand ===&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben Recht ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
=== Ausblick ===&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
=== Das Wichtigste zum Schluss ===&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Das bekomme ich irgendwann sicher auch noch hin. Ich freue mich selbstverständlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Motoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83648</id>
		<title>Entwicklung eines Motorsteuergerätes für den Trabant</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entwicklung_eines_Motorsteuerger%C3%A4tes_f%C3%BCr_den_Trabant&amp;diff=83648"/>
		<updated>2014-07-15T17:07:46Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;br /&gt;
&lt;br /&gt;
== Entwicklung eines Motorsteuergerätes für den Trabant ==&lt;br /&gt;
&lt;br /&gt;
Ich fahre ein sehr altes Auto. Meine Kollegen hänseln mich gern deswegen. Mir ist das aber ziemlich egal, denn ich habe sehr viel Freude an meinem Trabant 601, Baujahr 1988. Ich verbringe den Großteil meiner Freizeit damit dieses Auto zu warten, zu pflegen und hier und da auch zu modifizieren. In den letzten 2 Jahren habe ich mich beruflich und auch privat viel mit dem XMC 4500 von Infineon beschäftigt und Software in Dave3 entwickelt. Was liegt nun also näher, als diese beiden Interessen miteinander zu verknüpfen? Ich habe mir daher als Ziel gesetzt, ein eigenes Motorsteuergerät für meinen Trabant zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1030549.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Stand der Technik ===&lt;br /&gt;
&lt;br /&gt;
Die Zündanlage vom Trabant erlaubt nur einen statischen Zündzeitpunkt - das heißt, dass der Zündfunke immer zum gleichen Kurbelwellenwinkel an der Zündkerze überspringt, um das Gemisch im Brennraum zu entzünden. Das ist leider alles andere als ideal. Je nach abgefragter Motorlast und aktueller Drehzahl wäre es im Sinne einer maximalen Leistungsausbeute sinnvoll das Gemisch früher oder später zu entzünden.&lt;br /&gt;
&lt;br /&gt;
Mein Trabant fährt schon mit der moderneren Transistorzündanlage der letzten Generation. Auf [http://trabant-dachzelt.de/EBZA/EBZA2.jpg] findet man alles Wissenswerte darüber.&lt;br /&gt;
&lt;br /&gt;
Auch die Gemischaufbereitung dieses Motors bietet Verbesserungspotential. Es handelt sich um einen Vergasermotor mit den typischen Schwächen eines rein mechanischen Vergasers. Einen Vergaser muss man sich als Laie als ein relativ kompliziertes mechanisches System aus Röhren, Düsen, Kammern und ggf. Schwimmern, Nadeln und Druckdosen vorstellen. Auf der einen Seite wird Luft und Kraftstoff angeschlossen und auf der anderen Seite saugt der Motor. Für eine optimale Verbrennung muss der Motor ein ganz bestimmtes Verhältnis zwischen Luft und Kraftstoff ansaugen. Die Aufgabe des Vergasers ist es, dieses Verhältnis unter allen Bedingungen so gut wie möglich bereitzustellen - egal wie schnell und wie viel der Motor gerade ansaugt. Zu diesem Zweck hat der Vergaser allerhand raffinierte Mechanismen, um gewisse Umwelt- und Motorbedingungen auszugleichen. Der Trabantvergaser ist ein verhältnismäßig simples Exemplar, welches gut gewartet und eingestellt, seine Aufgabe zwar gut, aber bei weitem nicht ideal erledigt. Müller und Müller belegen das sehr anschaulich in ihrem Buch &amp;quot;Kraftfahrzeugvergaser und Benzineinspritzung&amp;quot;. Man findet dort Diagramme, die über den weiten Betriebsbereich des Trabantmotors die relativ große Streuung des Benzin-Luft Verhältnisses belegen.&lt;br /&gt;
&lt;br /&gt;
In meinem Fahrzeug ist die letzte Vergasergeneration die für den Trabant mit 2-Taktmotor entwickelt wurde verbaut. Mehr Details über diesen Vergaser finden sich hier: [http://trabitechnik.com/index.php?page=22&amp;amp;lang=de&amp;amp;page_number=60].&lt;br /&gt;
&lt;br /&gt;
=== Motivation ===&lt;br /&gt;
&lt;br /&gt;
Man muss bedenken, dass sowohl Vergaser als auch Zündung in meinem Trabant in den 80er Jahren entwickelt wurden. Mit einer modernen Mikrocontrollergesteuerten Zündanlage könnte man einige Defizite des Trabantantriebes reduzieren. Es gibt bereits ein paar mikrocontrollerbasierende Zündanlagen, welche eine dynamische Zündwinkelsteuerung für den Trabant realisieren. Es ist jedoch so, dass ich persönlich das eine oder andere technische Detail anders gelöst hätte. Weiterhin geistern mir Erweiterungen durch den Kopf, die ich mit dieser Kauflösung niemals umsetzen kann, da sowohl Software als auch Schaltpläne nicht frei verfügbar sind. Bei diesen Steuergeräten handelt es sich auch um reine Zündsteuergeräte, welche in die Gemischaufbereitung nicht eingreifen. Genau das möchte ich aber.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung ===&lt;br /&gt;
&lt;br /&gt;
Egal ob Dampfmaschine oder Flugzeug - Technik hat mich schon immer fasziniert. Mein oberstes Ziel ist es daher mein technisches Wissen zu erweitern. Es muss nicht unbedingt die beste, gern aber die interessanteste Lösung sein. ;)&lt;br /&gt;
&lt;br /&gt;
==== Version 1 ====&lt;br /&gt;
&lt;br /&gt;
Getreu diesem Grundsatz soll das erste Motorsteuergerät auch noch nicht mal unbedingt etwas steuern, sondern hauptsächlich Messwerte aufzeichnen. Kein Messwert macht Sinn, wenn man ihn nicht mit einem bestimmten Motorzustand in Verbindung bringen kann. Um den Motorzustand zu erfassen wird grundsätzlich erstmal die **Drehzahl** benötigt. Weiterhin muss der **Last**zustand bekannt sein. Damit ist gemeint, wieviel Leistung gerade vom Motor abgerufen wird, also ob man gerade auf dem Gaspedal steht, oder im Leerlauf an der Ampel wartet. Für&#039;s Erste soll das als Bezugsgrößen genügen. Die erste richtig interessante Messgröße ist der **Restsauerstoffgehalt** im Abgas. Diese Messgröße lässt Rückschlüsse auf die Qualität der Gemischaufbereitung zu. Später kommen sicher noch andere Messgrößen hinzu.&lt;br /&gt;
&lt;br /&gt;
Diese Messwerte möchte ich erfassen und in einem zeitlichen Verlauf aufzeichnen können. Ich verspreche mir davon, bei der Analyse der Diagramme viel über die Betriebszustände meines Motors und die Qualität der Gemischaufbereitung zu lernen. Im Idealfall schaffe ich es mit diesen Messmitteln, Vergaser und Zündung leistungs- und abgastechnisch besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
==== Version 2 ====&lt;br /&gt;
&lt;br /&gt;
Wenn die Ziele von Version 1 erreicht sind, möchte ich aktiv in das Motormangement eingreifen. Das bedeutet zum Einen, dynamische Zündwinkel je nach Drehzahl und Lastzustand zu implementieren. Zum Anderen bedeutet das, die Schwächen des Vergasers auszugleichen, indem die Gemischaufbereitung nachgeregelt wird. Man könnte zum Beispiel auf recht einfache Weise immer dann etwas Nebenluft beisteuern, wenn der Vergaser zu fett läuft.&lt;br /&gt;
&lt;br /&gt;
==== Weitere Ideen ====&lt;br /&gt;
&lt;br /&gt;
Mir schwirren noch viele weitere Ideen durch den Kopf. Es wäre zum Beispiel toll, wenn man auch beim Trabant eine echte Motorbremse hätte. Dazu müsste eine Schubabschaltung realisiert werden, wenn die Drehzahl hoch ist, aber der Fuss nicht auf dem Gaspedal steht. Auch eine Leerlaufstabilisierung hätte ihren Reiz. Konstante Ladezeiten für die Zündspulen würden den Abbrand der Zündkerzen reduzieren. Man könnte auch versuchen mit leistungsstärkeren Zündspulen grenzwertige Betriebszustände in den Griff zu bekommen ... usw.&lt;br /&gt;
&lt;br /&gt;
Zunächst will ich mich aber ausschließlich der Version 1 widmen.&lt;br /&gt;
&lt;br /&gt;
=== Umsetzung ===&lt;br /&gt;
&lt;br /&gt;
==== Microcontroller ====&lt;br /&gt;
&lt;br /&gt;
Da ich mich zunächst davor scheue eine eigene Platine mit Mikrocontroller zu entwickeln, habe ich als Basis für das Motorsteuergerät das XMC4500 Relax Lite Kit gewählt. Das Preis-Leistungsverhältnis finde ich hervorragend und der Formfaktor ist recht kompakt. Der Debuggerteil wurde vom Mikrocontrollerteil getrennt und die Pins an den Extention Headern mit Pfostensteckerleisten verlötet. So kann das Board mit entsprechenden Buchsenleisten einfach auf die Steuergeräteplatine aufgesteckt werden. Das ganze sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090697.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== Spannungsversorgung ====&lt;br /&gt;
&lt;br /&gt;
Die Spannungsversorgung im Fahrzeug ist nicht ganz simpel. Die Lichtmaschine liefert im Schnitt 14,4 V. Es kann aber gerade beim Anlassen auch zu relativ langen Spannungseinbrüchen kommen. Auch mit Überspannungen muss gerechnet werden. Diese Seite [http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23] erläutert sehr gut, was alles beachtet werden muss, um eine stabile Spannungsversorgung im Fahrzeug zu realisieren.&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Spannungsversorgung für mein Projekt lehnt sich stark an den vorgeschlagenen Entwurf an. Im Grunde wurde nur der Festspannungsregler gegen den Traco-Schaltregler ausgetauscht. Bei der Schutzdiode ist daher darauf zu achten, dass sie schon bei der geringeren maximale Eingangsspannung des Traco (32 V) die überschüssige Spannung ableitet (auch bei vollem Ableitstrom).&lt;br /&gt;
&lt;br /&gt;
Der Traco-Baustein wird mit den 2 Keramikkondensatoren zur Filterung hoher Frequenzen an Ein- und Ausgang noch etwas unterstützt. Laut Datenblatt ist das nicht notwendig, aber unter den rauhen Bedingungen im Fahrzeug kann es auch nicht schaden. Größere Spannungseinbrüche am Eingang sollen vom Elko als Puffer überbrückt werden. Damit sich dieser nicht über die Versorgungsspannung entläd, wurde eine Gleichrichterdiode vorgesehen. Diese verhindert auch Schlimmeres bei Verpolung der Schaltung. Vor dieser Schaltung ist eine Schutzdiode angeordnet, welche bei Überspannung durchlässig wird. Für den Traco-Baustein sind max. 32 V zulässsig, entsprechend muss die Schutzdiode und auch der Elko ausgewählt werden. Damit die Diode bei Überspannung nicht dauerhaft hohe Ströme ableiten muss, wird die Schaltung mit einer Sicherung abgesichert. Zur Entstörung ist eine Ringkerndrossel vorgesehen. Die Bauteile müssen so ausgwählt werden, dass sie dem maximalen Betriebsstrom von 1 A standhalten, wobei vorerst nur mit ~500 mA zu rechnen ist.&lt;br /&gt;
&lt;br /&gt;
[[Bild:spannungsversorgungsteuerteil.png]]&lt;br /&gt;
&lt;br /&gt;
===== Anschluss des XMC4500 Relax Board =====&lt;br /&gt;
&lt;br /&gt;
Auf dem Debuggerteil ist der Festspannungsregler plaziert. Dieser erzeugt aus der 5 V USB Spannung die benötigten 3,3 V für beide Controller. Trennt man den Debuggerteil vom restlichen Board, so werden sowohl die 5 V USB-Spannungsversorgung als auch die 3,3 V Spannungsversorgung getrennt. Die 5 V werden ausschließlich für den Festspannungsregler benutzt und müssen nicht bereitgestellt werden. Die 3,3 V müssen für das Mikrocontrollerboard über den ExtentionHeader von der Steuergeräteplatine bereitgestellt werden. Steckt man den Debugger mit einem passenden Flachbandkabel wieder zusammen, sind die 3,3 V Leitungen beider Boards wieder verbunden, was natürlich problematisch ist, wenn man im Fahrzeug etwas Debuggen will. Ich habe dazu Leitung 2 vom Debuggerkabel aufgetrennt.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Drehzahl ====&lt;br /&gt;
&lt;br /&gt;
Der Trabant hat ab Werk eine erstaunlich moderne Zündanlage - zumindest die letzten Baujahre. Auf der Kurbelwelle ist ein Ringmagnet angeflanscht und am Motorgehäuse ein dazu passender Hallsensor. Das daraus entstehende Gebersignal wird dazu benutzt, einer Transistorzündanlage die Schaltzeitpunkte für die Zündspulen mitzuteilen. Die nachfolgende Abbildung zeigt diesen Geber in ausgebautem Zustand:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090696.jpg]]&lt;br /&gt;
&lt;br /&gt;
Das Tolle ist, dass dieser Geber einen Open Collector Ausgang hat. Er zieht die Signalleitung über 180° der Kurbelwellenumdrehung auf das Massepotential und lässt die Leitung die anderen 180° einfach offen. Wenn das Motorsteuergerät diese Leitung mit einem PullUp auf High zieht, entstehen 2 Schaltflanken pro Umdrehung. Diese beiden Flanken markieren dann die Zündzeitpunkte für die beiden Zylinder. Man kann den Geber so im Kurbelgehäuse verdrehen, so dass man den gewünschten Zündzeitpunkt individuell für beide Zylinder anpassen kann. Die Signalleitung des Gebers habe ich direkt mit einem Eingang des Mikrocontrollers verbunden. Diesen Eingang habe ich in Dave3 als Eingang mit PullUp konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Im Leerlauf oder beim Anlassen wäre es beim Trabant schon interessant 300 U/Min noch erfassen zu können. Das entspricht einer Dauer von 200 ms für eine Umdrehung. Die Höchstdrehzahl des Trabant liegt je nach Motor irgendwo zwischen 5000 und 6000 Umdrehungen. Auch diese Drehzahlen sollen auf wenige Umdrehungen pro Sekunde genau erkannt werden. Es soll also noch zwischen 100 Hz und 99.92 Hz unterschieden werden, was einer Messauflösung von rund 8 µs entspricht.&lt;br /&gt;
&lt;br /&gt;
Dave3 bietet zum Vermessen von Eingangssignalen die App CAP001 an, welche ein Capture-Compare Register benutzt. Dieses Register zählt mit einem Referenztakt wie lang die Perioden des Eingangssignals sind. Diese App lässt sich leicht mit den hier berechneten Parametern konfigurieren.&lt;br /&gt;
&lt;br /&gt;
==== Ausgabe der Zündwinkel ====&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir für die ersten Versionen meines Steuergerätes recht einfach gemacht. Anstatt eine komplett eigene Zündanlage zu entwickeln, gebe ich einfach mit dem Mikrocontroller ein Schaltsignal an die originale Transistorzündanlage aus, welche dann für mich das Laden der Zündspulen übernimmt. In der ersten Version soll der Mikrocontroller sogar nur exakt das Eingangssignal des Gebers an die Transistorzündanlage weitergeben. Durch ein einfaches Softwareupdate kann der Aufbau dann später so erweitert werden, dass dieses Eingangssignal verzögert ausgegeben wird, um einen späteren Zündwinkel zu erhalten. So kann das Steuergerät ohne Hardwareänderung auch schon für eine dynamischen Zündwinkelausgabe genutzt werden.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang zur Transistorzündanlage kann nicht direkt mit dem Mikrocontroller verbunden werden, da diese das Gebersignal mit einem PullUp auf die KFZ-Bordnetzspannung zieht. Bei laufender Lichtmaschine beträgt diese Spannung 14,4 V. Das würde den Mikrocontrollereingang umgehend zerstören. Ich habe in meiner Bastelkiste noch einige BC547C (npn Bipolartransistoren) gefunden, welche für diesen Zweck geeignet sind. Sie vertragen kurzzeitig auch mal eine Kollektor-Emitter Spannung von 40 V. Kleine Spannungsspitzen im Bordnetz werden den Transistor also nicht gleich zerstören. Die Basis wurde über einen 4,7 kOhm Widerstand mit einem Mikrocontrollerausgang verbunden, so fließen am Mikrocontroller weniger als 1mA.&lt;br /&gt;
&lt;br /&gt;
Zur einfachen Weitergabe der Zündwinkel habe ich den selben Eingang, der bereits für die Drehzahlerfassung benutzt wurde, über die Event-Request-Unit des XMC so konfiguriert, dass sie das Signal invertiert an einem Ausgang wieder ausgibt. Dieser Mikrocontrollerausgang wurde in Dave3 als PushPull-Ausgang konfiguriert und treibt die schon beschriebene Transistorschaltung.&lt;br /&gt;
&lt;br /&gt;
Schaltet nun der Geber die Signalleitung auf Masse, wird am Eingang ein Low-Signal gemessen und über die Event-Request-Unit ein High-Signal auf den Ausgang gegeben. Dadurch schaltet der BC547C seine Kollektor-Emitter-Strecke durch und verbindet die Signalleitung der Transistorzündanlage ebenfalls mit Masse. Im umgekehrten Fall ist die Signalleitung durch den Geber offen und der PullUp zieht den Mikrocontrollereingang auf ein High-Signal, welches über die Event-Request-Unit als Low-Signal auf den Ausgang gelegt wird. Die Kollektor-Emitter-Strecke am Transistor ist dadurch gesperrt und die Signalleitung zur Transistorzündlage ist offen. Die Transistorzündanlage wiederum zieht diese Signalleitung durch einen internen PullUp-Widerstand auf ihr eigenes High-Signal.&lt;br /&gt;
&lt;br /&gt;
Die Event-Request-Unit habe ich mit den Dave3 Apps ERU001 und ERU002 konfiguriert.&lt;br /&gt;
&lt;br /&gt;
Für eventuelle Fehlerfälle habe ich zudem einen Notfallschalter eingeplant. Der Schalter soll es erlauben den Geber direkt auf die originale Transistorzündanlage zu schalten, so dass quasi alles original ist. Der Schaltplan für den Zündaufbau sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplansignalumschaltung.png]]&lt;br /&gt;
&lt;br /&gt;
EBZA bedeutet in diesem Schaltplan Elektronische Batteriezündanlage - so die original Werksbezeichnung.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Restsauerstoffgehaltes ====&lt;br /&gt;
&lt;br /&gt;
Den Restsauerstoffgehalt erfasst man in der Regel mit einer Lambdasonde direkt im Abgasstrom. Ich habe mich für meinen Aufbau dazu entschieden den Lambda-Messwandler [http://breitband-lambda.de/produkte.html] von Knödler Technologie zu benutzen. Diese Platine steuert die Lambdasonde an und gibt zum Beispiel über RS232 die Messwerte als Text aus. Das ist sicher nicht die preisgünstigste Variante die Messwerte zu erfassen. Aber es ist auf jeden Fall eine Variante, die sehr schnell umgesetzt ist. Der Lambda-Messwandler wird fix und fertig geliefert. Ich habe einfach eine gebrauchte Bosch LSU 4.9 Sonde besorgt, alles angeschlossen und schon konnte ich mit dem PC die ersten Messwerte auslesen.&lt;br /&gt;
&lt;br /&gt;
Da das XMC4500 Relax Lite Kit keine RS232 Pegel an seiner seriellen Schnittstelle bereitstellt, habe ich einen MAX3232 Chip eingesetzt, der die Umwandlung zwischen CMOS und RS232 Pegeln übernimmt. Dieser kann mit nur 5 externen Kondensatoren wie in der nachfolgenden Abbildung betrieben werden.&lt;br /&gt;
&lt;br /&gt;
[[Bild:rs3232.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Firmware benutze ich einfach die UART001 App von Dave3. Über diese Kommunikation kann ich die Messung mit dem Messwandler starten und die Messwerte empfangen. Zur weiteren Auswertung müssen nur die Zahlwerte aus dem Textstring extrahiert werden.&lt;br /&gt;
&lt;br /&gt;
Um die Sonde im Abgas des Motors platzieren zu können, habe ich mir einen Vorschalldämpfer für meinen Trabant umbauen lassen. Da ich es stilecht haben wollte, habe ich mir gleich eine komplett neue Auspuffanlage aus Edelstahl besorgt und mir den Lambdasondenanschluss direkt hinter dem Krümmer einschweißen lassen. Das Resultat kann sich sehen lassen. Vielen Dank nochmal an Peter für die tolle Schweißarbeit:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090706.jpg]]&lt;br /&gt;
&lt;br /&gt;
Als kleine Erklärung seien zu diesem Bild die Anschlüsse benannt. Ganz oben links sieht man den Anschluss an den Krümmer. Von dort kommt das Abgas aus dem Motor. Direkt unter diesem Kugelflansch ist der nachträglich eingebaute Lambdasondenanschluss zu sehen. Die große Öffnung daneben ist für den Anschluss der Krümmerheizung vorgesehen. Der noch größere Anschluss unten rechts liefert die warme Abluft zum Beheizen der Fahrgastzelle. Etwas versteckt dahinter ist der Anschluss für das Mittelrohr zu erkennen. Hier verlassen die Abgase den Vorschalldämpfer wieder.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Luftmasse ====&lt;br /&gt;
&lt;br /&gt;
Um das angesaugte Luftvolumen zu messen, werden im Fahrzeug sogenannte Luftmassenmesser verwendet. Einen gut verfügbaren Luftmassenmesser für so ein Projekt nimmt man also am besten von einem Serienfahrzeug mit ähnlichem Luftdurchsatz. Der Trabantmotor hat 600 ccm Hubraum, zündet aber doppelt so oft wie ein Viertakter, da er eben ein Zweitakter ist. Er muss daher auch doppelt so oft seinen Brennraum füllen, was dem Luftdurchsatz eines 1200 ccm Viertaktmotors entspricht. Ich habe mich für den HFM5 von Bosch entschieden, da sein offizielles Datenblatt verrät wie man ihn ansteuert und das zudem auch noch relativ einfach scheint. Der HFE 5 mit der Bosch Nummer 0 280 218 119 wird hauptsächlich in Viertaktmotoren von Opel eingesetzt, die einen Hubraum von 1200 ccm haben. Die entsprechende Bosch Seite: [http://rb-aa.bosch.com/boaasocs/index.jsp;jsessionid=B8566A8572EDFF4E521DD8ADDC8E7705.sundoro?ccat_id=72&amp;amp;prod_id=337]&lt;br /&gt;
&lt;br /&gt;
===== Beobachtungen =====&lt;br /&gt;
&lt;br /&gt;
Der Sensor soll laut Schaltbild ein VAREF bekommen, er liefert aber mit und ohne VAREF exakt die gleichen Werte. Am Referenzspannungsanschluss kann ich zudem eine 5 V Spannung messen, wenn ich diese über einen Spannungsteiler auf 3,3 V teile bricht diese Spannung zusammen. Der Sensor erzeugt sich scheinbar seine Referenzspannung intern selbst und man kann diese nicht extern erfassen. Es wird also die Betriebsspannung des XMC Relax Boards als Referenzspannung benutzt, auch wenn das nicht ideal ist. &lt;br /&gt;
&lt;br /&gt;
Allerdings ändert sich der Messwert antiproportional zur Betriebsspannung. Das könnte dem Messprinzip geschuldet sein (Platindraht wird heißer -&amp;gt; weniger Luftströmung gemessen). Zwischen 8 V und 17 V Versorgungsspannung verändert sich der Messwert um ca. 80 mV - unabhängig vom eigentlichen Messwert.&lt;br /&gt;
&lt;br /&gt;
===== Spannungsversorgung =====&lt;br /&gt;
&lt;br /&gt;
Wir müssen also eine stabilisierte Versorgungsspannung zur Verfügung zu stellen. Dazu kann ein LM317 in seiner Standardbeschaltung (siehe Datenblatt) genutzt werden, der hinter die Schutzbeschaltung der Hauptspannungsversorgung kommt. R1 wird mit den empfohlenen 240 Ohm bestückt und R2 kann z.B. mit 2 kOhm bestückt werden. Alle Kondensatoren und Schutzdioden werden nach dem Empfehlungen des Datenblattes bestückt. Dies ergibt eine Spannung von ~11,7 V, also genau innerhalb der Betriebsparameter des Sensors.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanluftmassenmesser.png]]&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung muss der LM317 ~2,7 V runterregeln und wird dabei vom Sensor durchschnittlich mit 100mA belastet. Die Verlustleistung beträgt also rund 270 mW, wodurch sich das Bauteil um rund 16° C über die Umgebungstemperatur erwärmt - auf einen Kühlkörper kann verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
===== Messwert =====&lt;br /&gt;
&lt;br /&gt;
Der Messwert muss mit einem Spannungsteiler am Messausgang von seinen maximalen 5 V auf 3,3 V runtergeteilt werden. Geeignet sind hier zum Beispiel 680 Ohm aus der E6 Reihe und 470 Ohm aus der E3 Reihe. So fließen an dieser Stelle 10,4 mA und am Messeingang liegen maximal 2,96 V an.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung der Ansaugtemperatur ====&lt;br /&gt;
&lt;br /&gt;
Der Luftmassenmesser HFM5 von Bosch hat einen integrieten Temperaturfühler. Es kann nicht schaden, diesen Messwert auch gleich zu erfassen. Der Sensor für die Ansaugtemperatur ist in den Luftmassenmesser integriert und wurde von Bosch leider als einfacher NTC ausgeführt. Diesen Temperaturwiderstand habe ich mit einer Konstantstromquelle versorgt und die über den Widerstand abfallende Spannung mit einem analogen Eingang am Microcontroller vermessen. Zur Rauschreduzierung wird ein 100 nF Keramikkondensator parallel zum NTC geschaltet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:schaltplanansaugtemperatur.png]]&lt;br /&gt;
&lt;br /&gt;
Der NTC hat laut Datenblatt einen Widerstandsbereich von 100 Ohm bei sehr hohen Temperaturen bis 40 kOhm bei sehr niedrigen Temperaturen. Die maximale Spannung am analogen Eingang darf 3,3 V nicht überschreiten. Für die Konstantstromquelle soll ein LM317 eingesetzt werden. Dieser muss am Ausgang mit mind. 10 mA belastet werden.&lt;br /&gt;
&lt;br /&gt;
===== Berechnung der Widerstände =====&lt;br /&gt;
&lt;br /&gt;
Da der NTC einen sehr dynamischen Widerstansbereich hat und die maximale darüber abfallende Spannung nur 3,3 V betragen darf, soll der Strom am LM317 möglichst niedrig eingestellt werden. Für die mindestens geforderten 10 mA und die 1,25 V die der LM317 zwischen Adj. und Out regelt wären das 125 Ohm. Ich habe mich für 120 Ohm entschieden, da es diese praktischerweise in der E12 Reihe gibt. Die so aufgebaute Konstantstromquelle liefert bei 120 Ohm ~10,4 mA und hat im schlimmsten Fall eine Verlustleistung von 150 mW, was einer Erwärmung des Bauteils von unter 10°C über Umgebungstemperatur entspricht. Auf einen Kühlkörper kann also verzichtet werden.&lt;br /&gt;
&lt;br /&gt;
Sollen bei 10,4 mA maximal 3,3 V am analogen Eingang anliegen, so darf der zu vermessende Widerstand 317 Ohm nicht überschreiten. Zu diesem Zweck wird ein Widerstand R2 parallel zum NTC geschaltet. Rechnerisch ergibt sich ein Maximalwert von knapp 320 Ohm. Es wurde sich für 270 Ohm aus der E12 Reihe entschieden. Neben der guten Verfügbarkeit bietet dieser Wert zudem noch einigen Spielraum, da sich auf Grund der Bauteiltolleranzen der Strom nicht so exakt einstellen lassen wird.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Bestückung ist dann laut Datenblatt des NTC mit folgenden Werten zu rechnen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Temperatur || NTC Widerstand || Gesamtwiderstand || Spannung am AD-Eingang&lt;br /&gt;
|-&lt;br /&gt;
| -40° C || 40 kOhm || 268 Ohm || 2,79 V&lt;br /&gt;
|-&lt;br /&gt;
| 0° C || 5 kOhm || 256 Ohm || 2,66 V&lt;br /&gt;
|-&lt;br /&gt;
| 25° C || 2 kOhm || 238 Ohm || 2,47 V&lt;br /&gt;
|-&lt;br /&gt;
| 50° C || 1 kOhm || 213 Ohm || 2,21 V&lt;br /&gt;
|-&lt;br /&gt;
| 120° C || 0,1 kOhm || 73 Ohm || 0,76 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier zeigt sich dann auch das Defizit der NTC Kennlinie. Im interessanten Bereich zwischen 0° C und 25° C ist die Messauflösung vergleichsweise gering und Störungen wirken sich auf den Messwert besonders stark aus. Aber dank der 12 Bit bzw. ~0,8 mV Auflösung des ADC, kann auch in diese Bereich noch hinreichend genau gemessen werden. Um später mal mit diesem Wert etwas zu regeln, dürfte ohnehin eine Auflösung von rund 2° C genügen.&lt;br /&gt;
&lt;br /&gt;
==== Erfassung des Anlassersignals ====&lt;br /&gt;
&lt;br /&gt;
Beim Entwickeln der ersten Hardware-Version hat sich herausgestellt, dass ein einfacher Aufbau zum Vermessen der Zündwinkel fast genauso aufwändig ist, wie der hier beschriebene Aufbau zum Messen und Ausgeben der Zündwinkel. Mit ein klein wenig Mehraufwand kann diese Technik dann auch dazu benutzt werden die Startwilligkeit des Motors durch Spätverstellung der Zündung zu unterstützen. Daher habe ich mich dazu entschlossen, den Aufbau so vorzubereiten, dass auf einfache Weise erfasst werden kann, ob der Anlasser gerade betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Das Anlassersignal kann beim Trabant am Zündschloss abgegriffen werden. In Stellung II (Anlassen) schaltet das Zündschloss Dauerplus auf Klemme 50a, welche direkt mit dem Magnetschalter des Anlassers verbunden ist. Ich habe mir den N-Kanal MOSFET Transistor ZVN4424A rausgesucht. Dieser verträgt eine Gate-Source-Spannung von bis zu 40 V. Damit dürfte der Transistor robust genug gegenüber Spannungsspitzen im KFZ-Boardnetz sein. Dennoch habe ich eine zusätzliche Zenerdiode wie schon bei der Spannungsversorgung vorgesehen. Diese ist in Sperrrichtung eingebaut und wird ab 22 V leitend. Der hohe Strom der dadurch im Überspannungsfall über die Diode fließt, wird unmittelbar die davorgeschaltete Sicherung durchbrennen lassen und die Überspannung kann den Aufbau nicht weiter schädigen. Da es sich um einen MOSFET handelt und die Geschwindigkeit dieses Signales eine untergeordnete Rolle spielt, ist die Auslegung des Vorwiderstandes nicht so entscheidend. Ich probiere es zunächst einmal mit 4,7 kOhm.&lt;br /&gt;
&lt;br /&gt;
==== Anzeige im Fahrzeug ====&lt;br /&gt;
&lt;br /&gt;
Um während der Fahrt nicht nur mit dem Laptop Messdaten aufzeichnen und für den Fahrer umständlich anzeigen zu können, möchte ich die Messwerte auch auf einem kleinen Display im Sichtbereich des Fahrers anzeigen. Ich habe mich für das DOGM204W-A Display von Electronic Assembly entschieden. Es ist preisgünstig, hat eine interne Temperaturkompensation (was mir im Fahrzeug wichtig erscheint, ist gut erhältlich und kann komplett mit 3,3 V versorgt werden.&lt;br /&gt;
&lt;br /&gt;
Da ich noch nicht genau weiß, welche Aufgaben ich später mal im Fahrbetrieb auf dem XMC4500 des Steuergerätes laufen lassen will, habe ich mich dazu entschlossen, die Ansteuerung des Displays von einem zweiten XMC Controller erledigen zu lassen. Da dieser Controller nicht viel Rechenleistung benötigt, ist es vollkommen ausreichend für diese Aufgabe auf das XMC2Go Board mit dem XMC1100 zurück zu greifen. Für eventuelle Eingaben habe ich auch noch ein paar Taster vorgesehen. Ich könnte mir vorstellen, das Display später auch mal durch ein hübsches Touch-Display mit grafischer Ausgabe zu ersetzen. Wenn ich dafür mal Zeit finden sollte, könnte ich mir vorstellen, dass daraus nochmal ein komplett eigenes Projekt wird. Man kann sich ja gerade in solchen Punkten beliebig weit verzetteln. Aber alles zu seiner Zeit.&lt;br /&gt;
&lt;br /&gt;
Das Display wird wie im Datenblatt empfohlen angeschlossen. Die Ein- und Ausgänge des Displays können direkt mit dem XMC2Go verbunden werden. Ich nutze für die Kommunikation mit dem Display den SPI-Bus, da mir das im Vergleich zu den anderen Anschlussmöglichkeiten einige Pins einspart, die vielleicht noch für Signal-LEDs o.ä. benutzt werden können.&lt;br /&gt;
&lt;br /&gt;
Für die Spannungsversorgung des Displays und des XMC2Go Boards sind nur 3,3 V notwendig, die bereits vom Motorsteuergerät bereitgestellt werden. Die 3,3 V können beim XMC2Go einfach an den 3,3 V Pin angeschlossen werden. Die Kommunikation mit dem Motorsteuergerät erfolgt über RS232. Auf dem Motorsteuergerät wird dazu einfach der zweite Kanal von dem eh schon aufgebauten MAX3232 Chip verwendet. Für die Anzeigeplatine mit dem XMC2Go habe ich einen zweiten RS3232 mit identischer Beschaltung vorgesehen. Zwischen den beiden Steuergeräten ist mit diesem Konzept nur ein 4-adriges Kabel notwendig: 3,3 V, Masse, RX, TX.&lt;br /&gt;
&lt;br /&gt;
Das Motorsteuergerät sendet permanent die aktuellsten Messdaten über seine zweite RS232-Schnittstelle. Der XMC2Go empfängt diese Daten und zeigt sie auf dem Display an. Er gibt die Daten zusätzlich permanent über USB aus, so dass auf einfache Weise Messdaten mit dem Laptop aufgezeichnet werden können. Ist die Displayplatine nicht angeschlossen, kann das Laptop auch direkt mit dem Steuergerät verbunden werden und die Daten wahlweise über RS232 oder USB abgeholt werden.&lt;br /&gt;
&lt;br /&gt;
Die XMC2Go Platine musste für diesen Aufbau noch ein wenig modifiziert werden. Der Festspannungsregler auf diesem Board erzeugt normalerweise aus den 5 V der USB-Schnittstelle wie beim Relax Lite Kit die 3,3 V für die beiden Controller (Debugger und XMC1100). Damit diese Spannungsversorgung bei Anschluss des Laptops nicht gegen die Spannungsversorgung des Steuergerätes arbeitet, muss die 3,3 V Leitung auf der Platine zwischen den beiden Controllern durchtrennt werden. Das hat auch den Vorteil, dass der Debugcontroller nicht permament mit Spannung versorgt wird, sondern nur wenn man ihn über USB anschließt und auch wirklich benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090699.jpg]]&lt;br /&gt;
&lt;br /&gt;
Wer genau hinsieht, erkennt rechts neben dem Quartz die nachträgliche Durchtrennung der Leiterbahn.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Vorweg: Ich halte es nicht für zielführend hier Source-Code zu posten. Zum Einen ist der aktuelle Softwarestand eh noch sehr rudimentär und zum Anderen denke ich, dass eine konzeptionelle Beschreibung dem Leser viel mehr von meinem Projekt vermittelt.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Steuergerät =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für die beiden XMC-Controller wird komplett mit Dave3 entwickelt. Als Programmiersprache verwende ich C++. Der Code wird komplett objektorientiert sein. Dave generiert zwar nur reinen C-Code, aber dieser kann gut durch Objekte gekapselt werden.&lt;br /&gt;
&lt;br /&gt;
Die Erfassung der Sensordaten habe ich bereits in den jeweiligen Abschnitten beschrieben. Zusätzlich gibt es einen Timerinterrupt, den ich mit der PWMSP001 App realsiert habe. Dieser Timerinterrupt sendet die gesammelten Daten in regelmäßgen Abständen wahlweise über die RS232- oder die USB-Schnittstelle an den XMC2Go oder den PC.&lt;br /&gt;
&lt;br /&gt;
===== Firmware Anzeige =====&lt;br /&gt;
&lt;br /&gt;
Die Firmware für den XMC2Go empfängt die Daten vom Motorsteuergerät, aktualisiert die Anzeige des Displays und sendet die empfangenen Daten über die USB-Schnittstelle weiter. Später werden dann noch Taster und Status-LEDs hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
===== PC Software =====&lt;br /&gt;
&lt;br /&gt;
Da ich mal wieder etwas anderes als C++ programmieren wollte, habe ich mich dazu entschlossen, die PC-Software in Java zu entwickeln. Es ist schön, mal wieder mit einer anderen Programmiersprache zu arbeiten. Die PC-Software empfängt zur Zeit nur die Daten, zeigt sie an und schreibt sie auf Wunsch auch in eine Datei. So können erste einfache Messfahrten realisiert werden. Für die serielle Kommunikation nutze ich das Projekt &amp;quot;Java simple serial connector&amp;quot; [http://code.google.com/p/java-simple-serial-connector/]. Für die grafischen Darstellungen habe ich mich zunächst für die Java-eigene Swing-Bibliothek entschieden. Ich will mich diesbezüglich aber noch nicht abschließend festlegen. Zur Zeit hat das Ganze auch nur den Charakter eines schnell zusammengeklickten Hilfsprogrammes - aber es tut seinen Dienst.&lt;br /&gt;
&lt;br /&gt;
=== Validierung des Steuergerätes ===&lt;br /&gt;
&lt;br /&gt;
Zur Validierung des Steuergerätes wäre eigentlich ein echter Motorprüfstand das Mittel der Wahl. Leider würde dies zur Zeit wirklich meine Möglichkeiten sprengen. Irgendjemand müsste das dann auch vor meiner Frau rechtfertigen ... neeee.&lt;br /&gt;
&lt;br /&gt;
Ich habe mir daher überlegt, dass ich zumindest die aktiven Eingriffe ins Motorgeschehen möglichst genau testen will, bevor ich das Steuergerät das erste Mal ins Fahrzeug einbaue. Aus dieser Überlegung ist quasi ein Projekt im Projekt entstanden. Ich möchte dieses Vorprojekt hier nur kurz beschreiben, da es nicht Hauptbestandteil dieses Artikels sein soll.&lt;br /&gt;
&lt;br /&gt;
==== Konzept ====&lt;br /&gt;
&lt;br /&gt;
Wie bereits beschrieben, möchte ich die Funktionsweise des Steuergerätes möglichst genau testen, ohne es direkt an einem Motor zu betreiben. Vorerst genügt es dabei die Zündsteuerung zu validieren, da die erste Steuergeräteversion eh noch nicht mehr Eingriffe in den Verbrennungsprozess beherrschen wird.&lt;br /&gt;
&lt;br /&gt;
Meine Idee war dabei für das Motorsteuergerät das eingehende Signal des Kurbelwellengebers zu simulieren und die ausgehenden Schaltsignale für die Zündspulen zu vermessen. Durch eingangsseitiges Anlegen einer bestimmten Frequenz, kann eine bestimmte Drehzahl simuliert werden. Aus der Verzögerungszeit zwischen der Geberschaltflanke und der Schaltflanke der Zündspulenleitung kann unter Berücksichtigung der aktuell simulierten Drehzahl der Kurbelwellenwinkel, der sich bei einer tatsächlich drehenden Kurbelwelle zwischen diesen beiden Signalen ergeben würde, berechnet werden. Da der Geber immer auf einen festen Winkel voreingestellt wird, kann so sogar der absolute Zündzeitpunkt zu jeder Drehzahl ermittelt werden.&lt;br /&gt;
&lt;br /&gt;
==== Aufbau ====&lt;br /&gt;
&lt;br /&gt;
Den Aufbau dieses Zündungsprüfstandes habe ich sehr ähnlich dem Motorsteuergerät gestaltet. Ich habe mich auch hierfür eines XMC4500 Relax Lite Kits bedient. Das Board habe ich über Pfostenstecker mit einer Lochrasterplatine verbunden. Die Spannungsversorgung genügt bei diesem Aufbau über die USB Schnittstelle der XMC Platine. Die Ausgabe von Gebersignalen und die Erfassung der Zündspulensignal erfolgt wie weiter oben schon für das Motorsteuergerät beschrieben. Das ist möglich, da die Transistorzündanlage wie zwei Open Collector Ausgänge arbeitet. Sie schaltet abwechselnd über zwei Leistungstransistoren die beiden Zündspulen auf Masse, so dass immer entweder die eine oder die andere Zündspule geladen wird. Fertig aufgebaut sieht der ganze Aufbau dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090701.jpg]]&lt;br /&gt;
&lt;br /&gt;
Oben links ist mein selbstentwickelter Zündungsprüfstand auf Basis des XMC4500 Relax Lite Kits zu sehen. Nach unten geht das Signalkabel, über dass die Kurbelwellengebersignale übertragen werden. Rechts sieht man die originale Transistorzündanlage (hier jedoch mit verkürztem Kabelbaum). Die Zündspulenanschlüsse (grün und weiß) sind ebenfalls an den Zündungsprüftstand angeschlossen. Die Kabel nach oben führen zu einem Labornetzteil, welches die Spannung für die Zündanlage liefert. Jetzt muss nur noch das USB-Kabel für die Übertragung der gemessenen Zündwinkel an den PC angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
==== Software ====&lt;br /&gt;
&lt;br /&gt;
Die Software für diesen Aufbau gestaltet sich dank der Dave3 Apps wieder relativ simpel. Das simulierte Gebersignal habe ich sehr einfach mit einer PWMSP001 App erzeugt, welche ein PWM-Signal mit einem Duty-Cycle von 50% ausgibt.&lt;br /&gt;
&lt;br /&gt;
Um die Schaltflanken der Zündspulen zu erfassen, habe ich die entsprechenden Eingangspins mit IO002 Apps modelliert, welche jeweils mit einer Event-Request-Unit (Dave Apps ERU001 und ERU002) verbunden wurden. Die Ausgänge der ERUs triggern dann jeweils eine NVIC002 App, also einen Interrupt. Dieser Weg ist nach meinem bisherigen Erkenntnisstand der einzige, um über eine Flanke an einem IO-Pin einen Interrupt zu triggern. Wie dem auch sei. Die ERUs sind so konfigurieren, dass sie immer im Abschaltmoment (also da wo das Feld der Zündspule zusammenbricht und an der Zündkerze eine hohe Zündspannung induziert) den Interrupt auslösen. Diese Interrupts lesen jeweils zuerst den aktuellen Zählerstand der PWMSP001 App aus und berechnen darüber bei welchem Kurbelwellenwinkel die &amp;quot;simulierte Kurbelwelle&amp;quot; gerade steht. Exakt dieser Winkel ist auch der gesuchte Zündwinkel.&lt;br /&gt;
&lt;br /&gt;
Die ermittelten Zündwinkel werden immer über den Zeitraum von 1 s ermittelt und der jeweils größte und kleinste Zündwinkel von jedem Zylinder und die aktuell simulierte Drehzahl über die USB-Schnittstelle an einen angeschlossenen PC ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Ich habe dazu zwei verschiedene Prüfprogramme implementiert. Ein Programm simuliert dauerhaft eine gewünschte Drehzahl und eines durchfährt den kompletten Drehzahlbereich des Trabantmotors.&lt;br /&gt;
&lt;br /&gt;
==== Ergebnisse ====&lt;br /&gt;
&lt;br /&gt;
Der Zündungsprüfstand hat mir bereits gute Dienste erwiesen. Ich habe damit die originale Transistorzündanlage vermessen, welche über den gesamten Drehzahlbereich erwartungsgemäß einen nahezu konstanten Zündwinkel hat. Ich habe im Anschluss den Steckbrettaufbau meines eigenen Steuergerätes vermessen. Ich konnte dabei validieren, dass bei maximaler Drehzahl der Zündverzug zwischen Gebersignal und Schaltflanke für die Zündspule gerademal 0,06° Kurbelwellenwinkel gegenüber dem direkten Ansteuern der Transistorzündanlage beträgt. Der Geber soll bei der originalen Zündanlage zwischen 23,1° und 25,6° eingestellt werden. Bei diesem großen Tolleranzbereich, erscheint die Abweichung durch die Zwischenschaltung meines Steuergerätes geradzu lächerlich.&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Erkenntnis hat das Vermessen eines kommerziell erhältlichen modernen Kennfeld-Zündsteuergerätes für den Trabant gebracht. Mit meinem Zündungsprüfstand war es sehr einfach möglich die einzelnen Kennlinien dieser Zündung zu ermitteln. Ich könnte mir durchaus vorstellen, meine ersten Kennlinien genau daran zu orientieren. Das war übrigens meine erste Erfahrung mit Reverse Engeneering. Den Produktnamen möchte ich daher lieber nicht veröffentlichen.&lt;br /&gt;
&lt;br /&gt;
Das folgende Diagramm zeigt das ausgelesene Kennfeld dieser Zündanlage.&lt;br /&gt;
&lt;br /&gt;
[[Bild:diagrammbzadigitalvermessen.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;°KW vor OT&amp;quot; bedeutet in diesem Zusammenhang &amp;quot;Grad Kurbelwellenwinkel vor oberen Totpunkt&amp;quot;. Gemeint ist damit der Winkel der Kurbelwelle, welchen sie in Drehrichtung vor dem Punkt steht, an dem der Kolben an seinem höchsten Punkt angekommen ist. Was kann man nun also aus diesem Diagramm ableiten? In Teillast und Volllast verschiebt sich der Zündwinkel mit zunehmender Drehzahl Richtung früh, bei geringen Drehzahl hingegen kann später gezündet werden. Wenn man bedenkt, dass zwischen Entzündung des Benzin-Luft Gemisches im Brennraum und der auf den Kolben wirkenden Druckwelle eine gewisse Zeit vergeht, klingt es logisch, den Entzündungszeitpunkt auf diese Weise abhängig von der Drehzahl zu verstellen.&lt;br /&gt;
&lt;br /&gt;
Höhere Drehzahlen bedeuten im Leerlauf, dass der Motor gerade am Abtouren oder im Schubbetrieb ist (Motorbremse). Dort wird ein später Zündwinkel gefahren, um wenig Leistung abzurufen. Das erklärt, warum diese Zündung mit deutlich reduziertem Schieberuckeln aufwartet. Im Leerlauf zündet dieses Kennfeld bei geringen Drehzahlen früh, was dafür sorgt, dass der Motor beim Einbrechen der Drehzahl im Leerlauf wieder mehr Kraft hat. Bei schwankender Leerlaufdrehzahl wird zudem die Leistung reduziert, wenn die Drehzahl zu hoch steigt. Dies realisiert eine simple Leerlaufstabilisierung.&lt;br /&gt;
&lt;br /&gt;
=== Aktueller Stand ===&lt;br /&gt;
&lt;br /&gt;
Nachdem ich die einzelnen Komponenten, die grundsätzlichen Überlegungen, sowie Konzeption von Hard- und Software beschrieben habe, möchte ich nochmal einen kurzen Überblick über den gesamten Aufbau geben.&lt;br /&gt;
&lt;br /&gt;
[[Bild:blockschaltbild.png]]&lt;br /&gt;
&lt;br /&gt;
Die Grafik zeigt den schematischen Aufbau der Displayplatine und des Motorsteuergerätes. Angeschlossen sind auch die Sensoren, sowie die Zündtechnik, optional auch ein Laptop zum Aufzeichnen von Daten. Die Kommunikation über RS232 ist ebenso wie die grundsätzliche Spannungsversorgung mit 3,3 V ersichtlich.&lt;br /&gt;
 &lt;br /&gt;
Mit dem Stand Mitte Juli 2014 ist folgendes realisiert: Alle Vorarbeiten sind abgeschlossen. Alle Schaltpläne sind fertig. Die Hardware inkl. aller Sensoren wurde einmal auf einem Steckbrett aufgebaut und ausführlich getestet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:p1090700.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Steckbrettaufbau auf dem Foto umfasst oben links den Zündungsprüfstand für die Validierung der Ergebnisse, oben in der Mitte die Transistorzündanlage und rechts den Luftmassenmesser. Auf dem Steckbrett ist unten links das XMC2Go Board zu sehen, welches später mal das Display ansteuern soll. Darüber befinden sich die beiden MAX3232 Chips zur Kommunikation zwischen den beiden Controllern. In der Mitte ist das XMC4500 Relax Lite Kit zu sehen (diesmal mit noch nicht abgetrenntem Debuggerteil). Oben Recht ist die Beschaltung für den Kurbelwellengebereingang und den Signalausgang zur Transistorzündanlage. Rechts auf dem Steckbrett befindet sich von oben nach unten die Spannungsstabilisierung für den Luftmassenmesser, die 3,3V Spannungsversorgung für die Controller und die ICs und ganz unten die Lambda-Messwandlerplatine ohne angeschlossene Lambdasonde.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin Software für alle Teilkomponenten geschrieben, um diese zu testen. Diese Software-Fragmente können mit geringem Aufwand zusammengefügt werden. Das Ergebnis wird eine Software sein, mit der ich erste Messfahrten machen kann.&lt;br /&gt;
&lt;br /&gt;
Es wurde weiterhin in einem vorbereitenden Projekt ein Prüfstand für die Zündsteuerung entwickelt. Damit wurde das Verhalten verschiedener Steuergeräte ausgetestet. Darunter die originale Transistorzündanlage, eine gekaufte Mikrocontrollerzündanlage und der selbstentwickelte Aufbau samt Firmware.&lt;br /&gt;
&lt;br /&gt;
Alle Hardwarekomponenten liegen bereit, um verlötet zu werden. Mir kribbelt es schon in den Fingern ...&lt;br /&gt;
&lt;br /&gt;
=== Ausblick ===&lt;br /&gt;
&lt;br /&gt;
Eigentlich fängt das Projekt jetzt erst richtig an. Nach vielen Vorarbeiten, die mir insbesondere dabei geholfen haben das notwendige Fachwissen aufzubauen, habe ich nun bald eine erste einbaufertige Version. Zunächst sollen, wie schon beschrieben, Messdaten aufgezeichnet werden, um weitere Erkenntnisse zu gewinnen und Vergaser und Zündung besser abzustimmen.&lt;br /&gt;
&lt;br /&gt;
Die Hardware ist auch schon für eine erste Implementierung einer dynamischen Zündwinkelanpassung vorbereitet. Das wird mein erster aktiver Eingriff ins Motormanagement sein. Dem soll eine elektronische Unterstützung der Gemischaufbereitung folgen.&lt;br /&gt;
&lt;br /&gt;
Wenn das gelingt, habe ich schon viel erreicht. Es könnten erste einfache Softwareimplementierungen folgen, die den Motor komfortabler und betriebssicherer fahren lassen. Ich denke hier zum Beispiel an eine Zündspulenabschaltung bei eingeschalteter Zündung und nicht drehendem Motor. Dies verhindert effektiv die thermische Zerstörung von Zündspulen und Transistorzündanlage durch eine versehentlich angelassene Zündung. Um den Abbrand der Zündkerzenelektroden zu verringern, wäre auch eine Begrenzung der Zündspulenladezeiten eine tolle Sache. Der Motorstart könnte sowohl mit einem späteren Zündwinkel, als auch mit einer Gemischanfettung unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Es könnte weiterhin hilfreich sein, die bisherige Sensoranbindung zu verbessern. Der Lambdamesswandler bietet zum Beispiel neben der Ausgabe der Lambdawerte über RS232 auch die Ausgabe als analoge Spannung. Darüber könnten die Messwerte ggf. zeitlich deutlich feiner aufgelöst werden. Ich könnte mir auch vorstellen noch mehr Sensoren zu verwenden. Es wäre zum Beispiel spannend den Druckverlauf im Saugrohr zu beobachten. Vielleicht kann man so auch eine &amp;quot;bessere&amp;quot; Lasterkennung realisieren.&lt;br /&gt;
&lt;br /&gt;
Besonders interessant wäre der Einbau eines Klopfsensors. Bei all den Experimenten mit dem Motor will man natürlich nichts beschädigen. Ein eingebauter Klopfsensor könnte helfen in Grenzbereichen automatisch den Zündwinkel Richtung spät zu regeln oder mehr Kraftstoff zur Motorkühlung hinzuzugeben.&lt;br /&gt;
&lt;br /&gt;
Ich möchte an dieser Stelle auch ganz vorsichtig das Wort Einspritzanlage in den Mund nehmen. Die Zerstäubung des Kraftstoffes hat einen ganz entscheidenden Einfluss auf die Qualität der Verbrennung. Die Einspritzdüse sollte dem Vergaser gegenüber klar im Vorteil sein.&lt;br /&gt;
&lt;br /&gt;
Ich denke, ich konnte zeigen, dass die Möglichkeiten sehr groß sind, wenn erstmal einige Grundlagen geschaffen sind. Die meisten Ideen lassen sich mit relativ kleinen Erweiterungen des Aufbaus realisieren. Da mein oberstes Ziel ist, möglichst viel dazu zu lernen, sehe ich der Zukunft dieses Projektes mit großer Vorfreude entgegen. Ich bin gespannt welche der angesprochenen Punkte ich wirklich ausprobieren werde und was dabei rauskommt.&lt;br /&gt;
&lt;br /&gt;
=== Das Wichtigste zum Schluss ===&lt;br /&gt;
&lt;br /&gt;
Ich habe zwar Informatik studiert, mir den Großteil meines Elektronikwissens allerdings selbst angeeignet. Auch mein Wissen über Verbrennungsmotoren und ggf. Maschinenbau basiert auf Erfahrungen, die ich über mein Hobby gesammelt habe. Daher sei mir bitte der eine oder andere fachliche Fehler verziehen. Ich weiß auch, dass zum Beispiel meine Schaltpläne und Platinen nicht professionell sind. Das bekomme ich irgendwann sicher auch noch hin. Ich freue mich selbstverständlich über alle Hinweise, Verbesserungsvorschläge, Anregungen, Korrekturen und Erweiterungsideen. &lt;br /&gt;
&lt;br /&gt;
Das gesamte Projekt ist in meiner knapp bemessenen Freizeit entstanden und ich arbeite nun schon fast 2 Jahre daran. Ich würde alles (und damit schließe ich diese Projektbeschreibung mit ein) gern viel professioneller und ausführlicher machen, aber dafür fehlt schlicht die Zeit. Irgendwann will man auch einfach mal Ergebnisse haben. Es ist ein imenser Aufwand, den ich hier kaum beschreiben kann. Meine Frau ist unendlich geduldig mit mir, dafür möchte ich mich an dieser Stelle herzlich bei ihr bedanken. Ein riesiger Dank gilt auch Siggi, der alle meine Elektronikfragen immer ausführlich und kompetent beantwortet. Und dann ist da noch Peter, der es kaum erwarten kann, die erste Version des Steuergerätes in seinen Trabi einzubauen. Er hat beruflich viel mit Motoren zu tun und teilt sein Fachwissen mit mir wo er kann. Er sprudelt auch vor Ideen und Lösungsvorschlägen und hat mir auch so manche konstruktive Arbeit abgenommen. Ohne Ihn hätte ich das Projekt nie gestartet und wäre auch längst nicht so weit.&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Blockschaltbild.png&amp;diff=83647</id>
		<title>Datei:Blockschaltbild.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Blockschaltbild.png&amp;diff=83647"/>
		<updated>2014-07-15T17:06:35Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Diagrammbzadigitalvermessen.png&amp;diff=83646</id>
		<title>Datei:Diagrammbzadigitalvermessen.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Diagrammbzadigitalvermessen.png&amp;diff=83646"/>
		<updated>2014-07-15T17:06:29Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:P1090701.jpg&amp;diff=83645</id>
		<title>Datei:P1090701.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:P1090701.jpg&amp;diff=83645"/>
		<updated>2014-07-15T17:06:08Z</updated>

		<summary type="html">&lt;p&gt;Felixbrb: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Felixbrb</name></author>
	</entry>
</feed>