Lambdaanzeige

Anzeige des aktuellen Gemischzustands

Bild der Platine

Warum und wozu überhaupt?

Im Rahmen der Umrüstung eines Autos mit Ottomotor auf E85 - oder auch nur der Beimischung - ist wohl das größte Problem der Gemischzustand. Egal ob man über den Benzindruck, über andere Einspritzdüsen oder über eine Anpassungselektronik versucht, das Gemisch wieder auf λ=1 zu bringen - man sollte das Gemisch irgendwie überwachen.

Netterweise haben eigentlich alle aktuellen Autos bereits ein solches Überwachungsinstrument eingebaut: Die Lambdasonde. Wie sie funktioniert, soll nicht Gegenstand dieses Artikels sein - wem hier die Informationen fehlen, der schaue zum Beispiel bei NGK, einem der größten Hersteller von Lambdasonden, nach. Leider wird einem im Auto das Signal nie direkt angezeigt, und auch die Warnungen, dass der Motor zu fett oder zu mager läuft, kommen - wenn überhaupt - viel zu spät.

Ziel dieses Projekts ist nun, das Signal der Lambdasonde auszuwerten und damit in einfach erkennbarer Form darzustellen, ob das Gemisch fett, mager oder in Ordnung ist. In meinem Auto schwankt die Sondenspannung normalerweise mit einer Frequenz von ca. 1Hz zwischen ca. 0,2V und 0,8V - mit Multimeter oder Oszilloskop kann man das leicht selbst prüfen. Wenn das Gemisch zu mager ist - zum Beispiel während der Schubabschaltung oder wegen zu viel Ethanol für das Steuergerät - bleibt die Spannung auf 0V kleben, bei zu fettem Gemisch - während der Volllastanreicherung bei Vollgas ist das gewünscht - bleibt sie nahe bei 1V stehen.

Schaltplan

Schaltplan

Der Schaltplan der Schaltung (klicken zum Vergrößern)
Hier gibts den Schaltplan als Eagle-Datei.
Hier gibts einen Platinenentwurf von mir als Eagle-Datei. Weitere Entwürfe werde ich nicht selbst machen, freue mich aber, wenn einer von euch seinen Entwurf gerne hier verlinken lassen möchte.

Für die Auswertung setze ich einen kleinen 8-Bit-Mikrocontroller von Atmel ein, der einen 10Bit-A/D-Wandler hat, an den ich das Signal von der Lambdasonde direkt über einen Widerstand von 100kΩ (zur Entkopplung) anlege. Der Mikrocontroller - ein AVR ATTiny 25 - steuert dann auch die LEDs an. Weitere Bauteile im Schaltplan dienen der Stromversorgung der Schaltung (mit Verpolungsschutz durch D1) und der Programmierung des Mikrocontrollers.

Firmware bzw. Software

So ein Mikrocontroller macht nichts, ohne dass er programmiert wird. Dazu ist in dieser Schaltung der 2x6-polige Anschluss vorgesehen - Pinbelegung: GND ist auf der Platine gekennzeichnet, dann in der Reihenfolge GND-MOSI-MISO-SCK-RESET-VCC - passend zu meinem Programmiergerät für AVRs, das ich demnächst™ auch hier vorstellen werde, aber auch andere AVR-Programmierer mit passender Software sollten sich darauf anpassen lassen. Wichtig dabei: Es ist nur die Stiftleiste belegt, die zum Prozessor zeigt - die Reihe zu den LEDs ist nur an die LEDs angeschlossen. Wer tiefer in die Programmierung einsteigen möchte, dem empfehle ich die Webseite www.mikrocontroller.net, die sich nicht nur, aber auch mit AVRs auseinandersetzt. Die Herstellerfirma Atmel hat ebenfalls einige interessante Datenblätter, die beim Verständnis der Firmware sicherlich helfen.

Kommen wir nun zur Firmware: Hier findet ihr den gesamten Quelltext zur Kompilierung mit avr-gcc 3.4.6 (Fehler- und Erfolgsmeldungen mit anderen Versionen nehme ich gerne hier auf!) und hier eine Hex-Datei für die ganz eiligen, die der Quelltext nicht interessiert. WICHTIG: Nicht vergessen, die Fuse Bytes zu setzen, siehe unten!

Was macht denn aber nun die Firmware? Nun, der Mikrocontroller enthält neben dem AD-Wandler noch einen Timer, der hier alle 40.96ms einen Overflow-IRQ generiert. Durch diesen Overflow wird jeweils einmal der AD-Wandler gestartet, der nach der Wandlung sein Ergebnis (die aktuelle Spannung an der Lambdasonde) in das Array lambda_table schreibt.

Wenn dieses Array voll ist, wird ein Flag gesetzt, das das Hauptprogramm veranlasst, das Array auszuwerten. Dabei werden die Werte unter 0.5V, die Werte zwischen 0.5V und 1V sowie die Werte über 1V gezählt. Wenn mehr als ein Viertel der standardmäßig 64 Werte über 1V liegen, schaltet der Mikrocontroller die rote und die gelbe LED an, denn dann kann etwas nicht stimmen. Ansonsten wird das Verhältnis von Werten unter und Werten über 0.5V geprüft - ist es zwischen 0.25 und 4, so geht der Controller davon aus, dass das Gemisch in Ordnung ist, andernfalls läuft der Motor wohl zu fett (wenn weniger als ein Viertel der brauchbaren Werte unter 0.5V liegen) bzw. zu mager (wenn weniger als ein Viertel der brauchbaren Werte über 0.5V liegen). Bei fettem Gemisch - was nicht unmittelbar schädlich für den Motor ist, aber nicht gut für Kat und Abgaswerte - geht die gelbe LED an, bei magerem Gemisch die rote LED, die die Gefahr zu heißer Verbrennung signalisiert.

Aufbau

Ich kann und will hier keine Anleitung zum Löten geben, daher nur ein paar kurze Anmerkungen:

Zusammenfassung meiner Dateien zu dem Projekt:

Links

Einige interessante Seiten sind mir bei der Recherche und dem Aufbau begegnet und sehr hilfreich gewesen, andere empfehle ich Interessierten zur tiefer gehenden Lektüre oder es gibt dort Software zu diesem Projekt:

FAQs, Nutzerkommentare

Ich freue mich natürlich über Rückmeldungen zu diesem Projekt. Bei häufiger auftretenden Fragen werde ich diese hier auch aufnehmen. Bitte berücksichtigt aber, dass ich diese Seite in meiner Freizeit pflege und in der Regel keine Zeit habe, grundlegende Löt- oder Programmierkenntnisse o.a. zu vermitteln - dafür gibt es andere Seiten im Netz.