Hallo an alle. Also ich würde gerne, Echtzeitdaten (Geschwindigkeit, Drehzahl) aus einem Hyundai Tiburon (Bj 2005) auslesen. Ich hab mir gedacht, dies würde über die OBD2 Schnittstelle am elegantesten gelöst werden. Mein Problem ist, dass ich mit dem Projekt nicht genügend Zeit habe, um mich mit OBD zu beschäftigen. Ich würde also ein fertiges Interface benötigen welches die Daten über RS232 ausgibt. Die Daten würden dann mit einem AVR (welchen weiß ich noch nicht genau) eingelesen und weiterverarbeitet. Das Problem an der Sache ist, dass ich bis jetzt noch kein passendes Interface gefunden habe und auch nicht so recht weiß welches ich für den Hyundai brauche. Am besten wäre eines für so ziemlich die meisten Autos. Bei meiner Suche bin ich zwar schon auf einige interresante Interfaces gestoßen, jedoch wurden die meisten mit einem PC und dem dazugehörigen Programm angesteuert, wodurch diese für mich unbrauchbar sind. Oder liege ich da falsch??? Mittlerweile kenne ich mich überhaupt nicht mehr aus. Was würdet ihr mir vorschlagen? mfg ulmi
Die Funkamateur hat ein OBD2-Projekt gehabt. Einfach auf deren Seiten mal gucken.
Ich nehme das ELM-CAN seriell -Protokoll ist dokumentiert und die PC Software gibts dazu: http://www.obd-2.de/kabelec.html Das schöne daran: Es kann alle gängigen Protokolle: ISO,KWP,KWP fast und CAN. Ich schätze mal, das dein Hyundai genau wie mein Daewoo KWP benutzt. Ich hab mich nicht viel mit dem seriellen Protokoll beschäftigt, aber was ich davon gesehen habe, war easy aufm AVR zu machen. Grosses Display ist von Vorteil.
@Matthias Dankeschön für deine Schnelle Antwort. Leider kenne ich mich solchen Interfaces noch nicht so aus. Also sorry wenn das jetzt eine dzmme Frage ist. Wie kann ich bei dem Interface jetzt einstellen, welche Daten ich empfangen will?? Normalerweiße wird das ja über die PC-Software gesteuert, oder??? D.h. ich müsste die serielle Kommunikation vom PC-Programm zum Interface mitschneiden, damit ich später die richtigen Befehle vom AVR zum Interface senden kann. Sind meine Überlegungen soweit richtig?? mfg ulmi
Die Befehle sind bei einem OBD-2-konformen Auto genormt. Eigentlich musst Du nur wissen, welche Daten Du haben möchtest und kannst die PIDs hier raussuchen: http://en.wikipedia.org/wiki/OBD-II_PIDs Diese kann man dann einfach wie hier (http://www.blafusel.de/obd/obd2lcd.html) gezeigt an das ELM-Interface (oder ähnliches) senden. Ich habe für meine OBD2-Sachen für die Interfaces von Stange-Distribution gewählt, da dies die günstigsten waren, die ich finden konnte. Ausserdem gab es hier in Dortmund einen Wiederverkäufer, bei dem ich direkt vorbeifahren konnte. Gruß Jan
Wie ich schon sagte, ist das ELM Protokoll dokumentiert und es gibt schon einige Projekte, die mit selbstgebauten MCs das Interface ansteuern. Das Prinzip ist, soweit ich weiss ( Ich hab halt n Laptop im Auto) so: 1. Initialisiere das ELM I/F auf das gewünschte Protokoll. 2. Probiere mit der ECU zu kommunizieren. Wenns nicht klappt, nächstes Protokoll und zu 1. 3. Wenn die Verbindung steht, rufe den Frame der ECU ab, der dich interessiert. Frame 0 sind abgasrelevante, genormte Daten. Frame 1 sind, glaube ich, aktuelle Messwerte, weitere Frames enthalten herstellerspezifische Daten . Dann gibt es auch noch 'Freeze' Frames, indem Sensordaten beim Auftreten eines Fehlers gespeichert werden. Viele Autos (Von Volvo weiss ich das) speichern in den herstellerspezifischen Frames auch Infos von anderen Controllern im Auto, z.B. Automatikgetriebecontroller, Klimacontroller, Airbag- und ABSController, usw. Ist recht interessant, selbst bei meiner kleinen Nuckelpinne. Das Interface hat zwar 150 EUR gekostet, hat mir aber sofort ne 200 EUR Reparatur erspart und sein Geld rausgeholt. Die mitgelieferte Software schreibt auch Logs und läuft auf nem alten Notebook recht gut. Ahh, siehe da, buskind hat da ja schon was mit gebaut. Nachzutragen ist nur noch, das der aktuelle ELM Chip der ELM327 ist - nach meinen Infos.
Danke erstmal für die ganzen Infos, also das um 150€ ist auf jedenfall zu teuer, da es später fix eingebaut ist. Kann ich dieses http://www.obd-shop.com/danila/product_details.php?id=358&lang=de auch verwenden? Oder sollte ich mich an den ELM327 kaufen und so eine Schaltung aufbauen? Zu welcher Variante würdet ihr mir raten? Oder kennt jemand ein günstiges fertiges Interface? mfg ulmi
Hallo! Mit dem DXM-Modul, welches ja der Hauptbestandteil ist, habe ich schon OBD2-daten ausgelesen. Theoretisch kannst Du auch nur das DXM-Modul kaufen (ca. 30 Euro) und ohne pegelwandler direkt an RXD und TXD eines AVR gehen. Die automatische Protokollerkennung funktionierte bei mir mit dem DXM-Modul nicht. Zu erkennen, ob das richtige Protokoll genutzt, ist aber recht einfach, da als Antwort auf den Befehl 0100 "No Data" kommt, wenn das Protokoll nicht richtig ist. Ansonsten kommt als als Antwort 41 00 xx xx, wobei man aus den Bytes xx auslesen kann, welche Messwerte vom Steuergerät unterstützt werden. Gruß buskind
Hi, als ersten Schritt solltest Du herausfinden, welcher Bus / Protokoll an deiner OBD II Schnittstelle anliegt. Wenn es sich um etwas anderes als CAN handelt, kannst du das Thema "Echtzeitdaten" direkt wieder vergessen. KWP2000 Z.b. kommuniziert mit 10,4kbaud. Das bedeutet, du kannst a) nicht besonders viele Daten abfragen da die Bandbreite zu gering ist und b) die Daten kommen merklich verzögert in deinem Gerät an. Falls du aber CAN hast, würde ich dir das DIAMEX DXM Modul empfehlen. Ich setzte das Modul für mein Drehzahlmesser Projekt ein, in Verbindung mit OBDII@CAN ist es gut nutzbar. Hier ein link zu dem Teil: http://www.srt-versand.de/rund-ums-auto/obd2-fahrzeugdiagnose/diamex-dxm-modul-dxm-platine.html
peterguy schrieb: > KWP2000 Z.b. kommuniziert mit 10,4kbaud. Das bedeutet, du kannst > a) nicht besonders viele Daten abfragen da die Bandbreite zu gering ist > und > b) die Daten kommen merklich verzögert in deinem Gerät an. Ich bekomme ca. jede halbe Sekunde einen neuen Datensatz bei KWP2000, mit ELM-SCAN im Realtime Mode. Hier ist natürlich der Overhead meines Notebooks mit drin.
Hallo! Ich habe in meiner Bachelor-Thesis Daten via KWP2000 ausgelesen und zusammen mit den zugehörigen NMEA-Datensätzen auf eine SD-Karte geschrieben. Mit KWP2000 kam ich auf 3 Datensätze pro Sekunde, die mir das Steuergerät zurückliefern konnte. Falls das Fahrzeug keine Diagnose via CAN-Bus unterstützt, könnte natürlich auch festlegen, bei welchen Daten es sich lohnt, sie häufiger bzw. seltener auszulesen. Die Motoröltemperatur verändert sich ja zum Beispiel relativ langsam, während die Motordrehzahl sich deutlich schneller ändert. Interessante Werte, die so häufig wie möglich ausgelesen werden sollten, sind für mich: -Drehzahl -Luftmasse (für die Berechnung der Motorlast und des Drehmoments) -Geschwindigkeit -Einspritzmenge oder kurzzeitiger Korrekturwert (PID 14 Byte 2) Gruß Jan
Danke nochmal für die ganze hilfe.Habe mich nun mit dem avr eingearbeitetkomme aber schonwieder nicht weiter. Wenn ich nun das obd auslesegerät an das auto anschließe, bekomme ich folgende daten welche auch stimmen 41 05 3a 4f (sind jetzt nur irgendwelche werte). Als string mit dem uart einlesen und wieder ausgeben ist kein problem, aber wie kann ich nun mit diesem string weiterarbeiten damit ich zum beispiel auch rpm oder so auswerten kann und if anweisungen mit den werten machen kann? Wie funktioniert das? Mfg
auf der wiki seite http://en.wikipedia.org/wiki/OBD-II_PIDs stehen in der rechten Spalte die Umrechnungsformeln :-) Mit denen kannst du die Hex-Werte in leserliche Werte umwandeln
Wo liegt dein Genaues Problem... ?!? Ich meine den CAN-Bus kannst ja abfragen,Also sollte die Programmtechnische verarbeitung eines Strings doch keine Probleme bereiten. Oder weisst du nicht wie welche Daten vom Steuergerät kommen ? (Wahrscheinlicher) Marcus
Nein CAN technisch ist alles in Ordnung da kenn ich mich aus. So peinlich es auch ist, momentan steh ich mit der Weiterverarbeitung des Strings an. Ich kann zwar den String einlesen, nur weiß ich einfach nicht wie ich jetzt damit weiterarbeiten soll. Zum beispiel wie ich mit einem "if" einen Wert überfrüfen soll. Der String der eingelesen wird, sieht ja in etwa so aus: 41 05 1C 59 Was jetzt die einzelenen Werte bedeuten weiß ich schon und die Formeln um an die richtigen Werte zu kommen sind mir auch bekannt. Ich weiß einfach nicht wie ich jetzt dem Controller sagen kann damit er nur den hinteren Teil also die 1C 59 als richtige Zahl erkennt (Also als 16 bit Zahl)? Ist wahrscheinlich für euch kein problem, aber das ist momentan mein problem. mfg
Billiger als ELM: STN1110 Idealer Einstieg: http://www.elektor.de/products/books/computer/fahrzeugdiagnose-mit-obd.12452.lynkx Webseite des Autors: http://www.blafusel.de/obd/obd.html
Nein, mit OBD komm ich schon zurecht, nur die Serielle Übertragung und die Weiterverarbeitung der Daten macht mir etwas kopfzerbrechen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.