www.blafusel.de

  Home  |   Privat  |   Impressum  |   Bücher  |   Computer  |   Mikrocontroller  |   Misc  |   OBD  |   Forum

OBD-2 Adapter mit ELM 323

Inhalt

Einführung
Die Schaltung
Software
Fazit

Einführung

Bereits vor einem Jahr habe ich angefangen, mich mit OBD-2 zu beschäftigen. Damals habe ich den häufig (aus meiner Sicht zu unrecht) kritisierten Adapter von Jeff Noxon nachgebaut und dokumentiert. Ein Grund war, daß ich selbst einen VW fahre und deshalb mit diesem Gerät arbeiten kann. Inzwischen hat sich unser "Fuhrpark" aber um einen Fiat erweitert und bei dem will ich auch mal in den Bordcomputer reinschauen können.

Für die wohl meisten Fahrzeuge mit OBD-2 bietet sich die relativ preiswerte Schaltung auf Basis eines Chips von ELM electronics an. Das IC übernimmt sämtliche Kommunikation zwischen Auto und PC, so daß mit einfachsten Mitteln Werte ausgelesen werden können. Mit ScanTool gibt es auch ein praktisches Freeware Programm, welches Fehlercodes auslesen, anzeigen und zurücksetzen kann. Ebenso können verschiedene Meßwerte angezeigt werden.

Wie immer bei OBD gibt es drei verschiedene Protokolle. Hier wird nur das verbreitete ISO9141-2 betrachtet. Welches Protokoll das Auto unterstützt kann anhand der Steckerbelegung oder der Liste erfolgreich gescannter Fahrzeuge festgestellt werden.

Die Schaltung

Der wesentliche Baustein ist der ELM 323. Die notwendige Schaltung um den Chip herum ist relativ simpel und beschränkt sich auf ein paar Bauteile. Die Zeitschrift Elektor hat in den Ausgaben 10-12/2002 eine Artikelserie dazu gebracht. Der wichtige Beitrag ist der in 11/02. Die dort vorgestellte Schaltung ist keine Eigenentwicklung, sondern lediglich eine Adaption der Entwürfe von ELM electronics aus deren Datenblatt. Etwas aufpoliert und schon mit fertigem Platinenentwurf findet man das ganze auch bei ScanTool als ElmScanISO. Die Schaltung von Elektor hat nur den Vorteil, daß einige Bauteile der Originalentwürfe in Deutschland schwer beschaffbar sind und deshalb bereits durch äquivalente Ersatztypen ausgetauscht wurden.

Die Bauteile sind alle handelsüblich und bei den einschlägigen Händlern für unter € 10,- verfügbar. Diesmal wollte ich mir auch einen OBD-2-Stecker gönnen. Meine Bastelversion täte es zwar auch, aber so ist es schon stabiler. Außerdem kann ich den Stecker über einen Pfostenverbinder an beide Schaltungen anstöpseln. Für ein € 10,- teures Gehäuse war ich dann doch zu geizig - Heißkleber ist eine tolle Sache.

Original OBD-2-Stecker

Bauteilersatzliste:
Kennung Original Ersatz Bemerkung
T1, T2 2N 3904 BC 547B  
T3, T4 2N 3906 BC 557B  
Q1 3,579545MHz   Bei Elektor wird der mit 32pF angegeben. Erhältlich ist irgendwas zwischen 18pF (Reichelt) und 30pF (Conrad). Lediglich die LP-Version bei Segor weist 32pF auf. Ich habe einen mit angeblich 18pF verbaut und es läuft.
R1, R5, R6 (Elektor: R14, R8, R9) 220Ω, 220Ω, 220Ω 680Ω, 330Ω, 330Ω Die Werte beim ElmScanISO sind ein wenig niedrig (LEDs leuchten hell). Besser die konservativen Werte wie beim ELM Datenblatt (750Ω und 330Ω) benutzen oder die E12er aus Elektor
R2, R4 (Elektor: R1, R3) 510Ω 560Ω 510Ω als Widerstand sind üblich, nur nicht aus der beim Bastler vorhandenen E12er Reihe. Ich habe 560Ω eingebaut und alles läuft.

Elektor hat außerdem bereits eine etwas üblichere 9-polige SUB-D-Buchse verbaut. Die Originale verwenden eine 25-polige. Soll ein vorhandenes 9-poliges Datenkabel benutzt werden, müssen Sie die Anschlüsse ändern und bei einer 9-poligen Verbindung die Pins 2 (RxD), 5 (SG) und 3 (TxD) verwenden und 7 und 8 verbinden. Wird das Kabel noch gekauft, können Sie auch ein 25- zu 9-poliges benutzen und die Originalschaltung beibehalten. Zum PC wird ein 1:1 Datenkabel und kein Nullmodem-Kabel benutzt!

Mit der Anleitung zur Herstellung von Platinen sollte der Nachbau jedem Bastler gelingen. Die Platine liefert Elektor aber auch für ca. € 14,-.

ELM 323

Software

Für ELM-Schaltungen gibt es zahlreiche kostenlose Programme. Einfach aber doch vollständig ist ScanTool, welches es auch in einer deutschen Version gibt. Interessant ist aber aus meiner Sicht vor allem die Möglichkeit, direkt mit dem ELM zu kommunizieren. Das Datenblatt zeigt ausführlich, wie das geht. Im wesentlichen ist das:
  1. PC und Auto an ELM anschließen, Zündung ein
  2. Terminalprogramm (Windows Hyperterminal) starten
  3. Standardverbindung: 9600Bd, 8N1, kein Handshake
  4. Jetzt können ELM-Befehle eingegeben werden: "ATZ" für Reset, woraufhin sich der ELM meldet: "ELM323 v2.0"
  5. "01 00" gibt einen Zahlencode zurück, welche Werte (PIDs) ausgelesen werden können (zwischen den beiden Zahlen kann, muß aber nicht ein Leerzeichen eingegeben werden)
  6. Mit "01 20", "01 40","01 60","01 80" wird die Verfügbarkeit der höheren PIDs nach PID 32 ermittelt. Werden diese nicht Unterstützt (bei mir leider der Fall), wird "NO DATA" zurückgeliefert.
  7. "01 01" Anzahl der gespeicherten Fehlercodes
  8. u. v. m.
Die einzelnen Meßwerte sind PIDs (Parameter Identifier) zugeordnet. Nicht alle PIDs werden stets unterstützt. Mehr Infos dazu im Beitrag zu den PIDs.

Die zurückgelieferten Hexadezimal-Werte sind oft mit einem Offset versehen, der subtrahiert werden muß oder sie müssen in anderer Form umgerechnet werden. Ebenfalls sehr aufschlußreich ist ein Blick in den Source-Code von ScanTool (speziell die Datei sensors.c). Für die Fehlercodes gibt es eine englische Liste der meisten Fehler. Inzwischen gibt es auch bei mir eine Zusammenstellung der DTCs.

Die Abfrage läuft relativ einfach ab:

  1. Die Eingabe von "01 00" im Terminalprogramm wird mit einigen Bytes beantwortet, welche die unterstützten PIDs symbolisieren. Z. B. 41 00 98 3F 80 10 bei meinem T4.
  2. Gemäß dem ELM323 Handbuch sind die zwei ersten Bytes uninteressant, da sie nur angeben, daß es sich um eine Antwort auf ein 00 Kommando handelt.
  3. Die restlichen Bytes sind in hexadezimaler schreibweise. Der Windows Taschenrechner kann diese in der wissenschaftlichen Ansicht in binäre Zahlen umrechnen. Hintereinander geschrieben (und immer auf 8 Stellen Länge getrimmt durch einzufügende führende Nullen) ergibt sich dann: 10011000 00111111 10000000 00010000.
  4. Von links nach rechts gelesen, werden die Bits den PIDs zugeordnet. Eine 1 bedeutet, daß das jeweilige PID unterstützt wird. Begonnen wird beim PID mit der Nummer 1, denn das PID 0 lieferte ja diese Antwort, mit den verfügbaren PIDs.
  5. Mein Bus kann also:

    PID Bezeichnung engl. Bezeichnung dt. Anmerkung Berechnung
    1 System tests status System Status MIL-Status, Anzahl Fehlercodes, Überwachungsstatus >128 bedeutet, daß die MIL an ist, Nach Abzug dieses Offsets verbleibt die Anzahl der Fehlercodes. Es können auch Fehler auftreten, die nicht zum aufleuchten der MIL führen.
    4 Calculated Load Value berechneter Lastwert   0-100%, x*100/255
    5 Engine Coolant Temperature Motor-Kühlmitteltemperatur siehe Besonderheiten -40-215°C, x-40 (1° pro Bit, Offset von 40)
    11 Intake Manifold Pressure Absolutdruck Einlaßkanal   0-255 kPa, x (1 kPa pro Bit)
    12 Engine RPM Motor-Umdrehungen   0 min-1-16383,75 min-1, x/4 (0,25 U/min pro Bit)
    13 Vehicle Speed Geschwindigkeit siehe Besonderheiten 0 km/h-255 km/h, x (1 km/h pro Bit)
    14 Ignition Timing Advance Zündvoreilung   -64°-63,5°, (x-128)/2, (0,5° mit 0° bei 128)
    15 Air Intake Temperature Einlaß-Lufttemperatur   -40-215°C, x-40, (1° pro Bit, Offset von 40)
    16 Air Flow Rate from Mass-Air-Flow (MAF) Luftdurchfluß über Luftmassenmesser (LMM)   0g/s-655,35g/s, x*0,01, (0,01g/s pro Bit)
    17 Absolute Throttle Position Absolute Drosselklappenstellung   0-100%, x*100/255
    28 OBD standard OBD Kompatibilität   01=OBD-2 (California ARB/CARB), 02=OBD (Federal EPA), 03=OBD und OBD-2, 04=OBD-1, 05=kein OBD, 06=EOBD (Europa)

  6. Will man nun einen Meßwert abfragen, gibt man "01 xx" ein, wobei xx für den (zweistelligen) hexadezimalen Wert des gewünschten PIDs steht. "01 0D" liefert z. B. die Motorumdrehung.
  7. Die Antwort kann eine aus mehreren Bytes bestehende Zahl sein, die entsprechend umzurechnen ist.

Fazit

Für mich war enttäuschend, daß ich mit dem ELM wesentlich weniger Daten auslesen kann, als via VAG-COM mit der anderen OBD-2-Schaltung. Dies liegt aber sicherlich daran, daß VAG-COM eben speziell auf VW/Audi zugschnitten ist. Wichtige Meßwerte sind aber auch mit dem ELM erfaßbar und vor allem die Fehlercodes lassen sich auslesen und zurücksetzen (löschen der MIL-Anzeige (malfunction indicator lamp) - bzw. "Check Engine"). Was aber gänzlich fehlt ist die Möglichkeit, Werte in den Steuerungsgeräten zu ändern, um so die zahlreichen Anpassungen vorzunehmen, die bei VAG-COM möglich sind.

MIL


Nutze das Diskussionsforum!