Forum: Mikrocontroller und Digitale Elektronik Sparkfun OBD-II Uart


von Filth _. (filth)


Lesenswert?

Hallo,

kennt jemand das Interface?

https://www.sparkfun.com/products/9555

Konkrete Frage:
Es unterstützt ja mehrere Protokolle (CAN, K-Line etc). Wie ist das 
Verhalten von dem Teil:

Wenn das Ding zB am J-2234 und K-Line ( ISO9141 ) hängt und ich via AT 
IDs lesen will - welches Protokoll wird vom Interface dann gesprochen? 
Wird es über beide Transceiver verschickt oder nur eins? Wie wählt man, 
was gesprochen werden soll?

Danke

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Filth __ schrieb:
> Wenn das Ding zB am J-2234 und K-Line ( ISO9141 ) hängt und ich via AT
> IDs lesen will - welches Protokoll wird vom Interface dann gesprochen?

Der ELM 327 wird vom Steuerprogramm auf ein Protokoll eingestellt und 
dann wird versucht, eine Verbindung herzustellen. Bei meinem Scan 
Programm (ELM-Scan) werden bei 'Autobetrieb' einfach nacheinander alle 
Protokolle durchgeklingelt, bis die ECU antwortet.
Der ELM327 Befehlssatz ist aber recht gut dokumentiert:
http://www.sparkfun.com/datasheets/Widgets/ELM327_AT_Commands.pdf
Das z.B. CAN andere Leitungen benutzt als ISO, wird vom ELM selber 
erledigt.

von Filth _. (filth)


Lesenswert?

Danke, jetzt verstehe ich das Prinzip.

Eine Frage noch:
Der MCP2551 kann doch max 1mbps sprechen. Warum wird beim ELM327 max 
500mbps für ISO 15765-4 angegeben?

Quelle: http://en.wikipedia.org/wiki/ELM327

von Norbert T. (atos)


Lesenswert?

Ich sehe auf der Wiki-Seite 500 aber KILObit....

von Filth _. (filth)


Lesenswert?

Oh gar nicht drauf geachtet - aber macht die Beschreibung trotzdem nicht 
besser ;)

500kilobit = 62 kilobyte , würde heißen, der würde kaum mit einem 
Fahrzeug kommunizieren, wenn die meistes 500kbps verwenden ?!

: Bearbeitet durch User
von Norbert T. (atos)


Lesenswert?

Ich verstehe jetzt dich nicht ganz... Auf der Wiki Seite des ELM werden 
Protokole angegeben, die der ELM mit der für ihn maximalen 
Geschwindigkeit unterstützt, d. h. ELM327 beherscht z. B. das Protokoll 
ISO 15765-4 CAN mit einer geschwindigkeit bis zu 500 500 kbit/s. Der 
angesprochene CAN Transceiver MCP 2551 schafft die doppelte 
Geschwindigkeit => 1000 kbit/s. Insofern sehe ich hier keine Probleme...

von Filth _. (filth)


Lesenswert?

Ich glaube ich stehe auf der Leitung.

Beispiel:
Ich habe den Fall, dass die ECU vom Fahrzeug 1000mbps redet. Der MCP2551 
könnte jetzt die Geschwindigkeit unterstützen, aber das ELM327 nicht, 
also dürfte es nicht klappen - zumindest nach meinem Verständnis.

Irgendwas kapiere ich da falsch

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Filth __ schrieb:
> Ich habe den Fall, dass die ECU vom Fahrzeug 1000mbps redet.

Du verwechselt übrigens immer noch kbps mit mbps. Hast du nun wirklich 
den Fall oder denkst du den hier gerade nur aus?

von Filth _. (filth)


Lesenswert?

Arrgh ja, ich habs wieder verwechselt.

Die ECU, um die es geht, spricht 1000kpbs, 29Bit Header.

Viele Grüße
Alex

von Fragezeichen (Gast)


Lesenswert?

1000kbit würden mich etwas wundern. Datenraten >=500kbit kommen 
eigentlich nur auf dem Antriebs-CAN vor. Selbst bei diesen ECUs 
geschieht die Diagnose, für die die ELMxxx vorgesehen sind, nur über ein 
Gateway. Ein direktes Ansprechen dieser Steuergeräte würde ich aus 
Sicherheitsgründen lieber bleiben lassen.

von Filth _. (filth)


Lesenswert?

Es ist laut Doku so:


CAN Stream Specification DTA S 40Pro
General

CAN bus Baud Rate 1 MBd
Identifiers All 29Bit
6 Data Packets All 8 Bytes Ea.
Send Frequency 10Hz
All Data Values Signed 16 bit sent LSB first (little endian)
Data Packets
Identifier Data1 Data2 Data3 Data4
0x2000 RPM TPS % Water Temp C Air Temp C
0x2001 MAP Kpa Lambda x 1000 KPH x 10 Oil P Kpa
0x2002 Fuel P Kpa Oil Temp C Volts x 10 Fuel Con. L/Hr x 10
0x2003 Gear Advance Deg x 10 Injection ms x 100 Fuel Con L/100Km x 10

From V62.01 the items below were added.
0x2004 Ana1 mV Ana2 mV Ana3 mV Cam Advance x 10
0x2005 Cam Targ x 10 Cam PWM x 10 Crank Errors Cam Errors

von Fragezeichen (Gast)


Lesenswert?

Ah - nix für Serienautos. Auf dem CAN findet offenbar gar kein Protokoll 
statt. Du brauchst einen einfachen CAN-Konverter wie z.B. ein PEAK-USB 
oder so. Falls Du selber etwas bauen möchtest schaue Dir mal die Boards 
unter www.kreatives-chaos.com an.

von Filth (Gast)


Lesenswert?

Klappt es mit dem can- shield von sparkfun auch?

von Fragezeichen (Gast)


Lesenswert?

Ja - das ist ein gangbarer Weg. Ob es für die Arduino-Umgebung eine 
fertige Library betreffend MCP2515 gibt kann ich nicht sagen. Für C gibt 
es eine im Kreativen-Chaos.

von Filth _. (filth)


Lesenswert?

Ja, da gibt es einiges.

Vielen Dank!

von Filth _. (filth)


Lesenswert?

Hmm doch noch eine Frage:

Wie kommt es eigentlich, dass der ELM327 die 1mbps nicht anbietet? Die 
Kommunikation auf dem CAN Bus läuft doch über den MCP2551 und der 
schafft 1mbps.

von Fragezeichen (Gast)


Lesenswert?

Es besteht zum einen keine Notwendigkeit und zum anderen wird es dann 
doch ziemlich eng mit dem Dekodieren der Protkolle. Es ist halt "nur" 
ein PIC.

von Filth _. (filth)


Lesenswert?

Wäre es nicht möglich den uC direkt mit dem MCP2551 zu verbinden und 
dann mittels lib direkt auf der CAN Leitung ohne ELM327 zu lesen -> das 
ist ja das, was in meinem Fall notwendig wäre (falls kein CAN-Shield 
sondern nur sowas hier vorhanden ist:

http://www.exp-tech.de/obd-ii-uart?___SID=U

?

von Fragezeichen (Gast)


Lesenswert?

Genau so! Das was Du willst hat nichts mit OBD zu tun

von Fragezeichen (Gast)


Lesenswert?

Nachtrag: das letzterwähnte ist auch nichts für dich

von Filth _. (filth)


Lesenswert?

Ich will das hier verwenden

http://www.exp-tech.de/obd-ii-uart?___SID=U

weil es die meisten Protokolle abdeckt. Jetzt gibt es aber noch den 
Sonderfall mit der DTA ECU - den möchte ich idealerweise mit der 
gleichen Hardware abdecken - das verlinkte Board steckt in meinem Fall 
sowieso auf einem Arduino UNO

Was mich irritiert: auf dem Schalplan von dem OBD Teil fehlt beim MCP 
der Quarz
https://www.sparkfun.com/datasheets/Widgets/OBD-II-UART-v13.pdf

Beim CAN Shield, ist aber dieser vorhanden:
https://www.sparkfun.com/datasheets/DevTools/Arduino/canbus_shield-v12.pdf

- Warum sind die beiden unterschiedlich verdrahtet?
- An welche Pins müsste ich am MCP mit dem Arduino dran, um diesen über 
die LIB nutzen zu können? (Bis jetzt hab ich das CAN Shield einfach 
aufgesteckt und losprogrammiert)

EDIT: Jetzt verstehe ich das Problem - bei dem OBD Teil ist nur ein CAN 
Transceiver drauf aber nicht der MCP wie beim CAN Shield.

: Bearbeitet durch User
von Thomas Forster (Gast)


Lesenswert?

OBD und CAN ist nicht dasselbe!
OBD kann über CAN kommunizieren. Aber ein OBD-2 Interface mit ELM-Chip 
kann nicht beliebig den CAN-Bus auslesen.

Um auf den CAN-Bus des von dir geschriebenen DTA S40 Steuergerätes 
zuzugreifen brauchst du ein reines CAN-Interface, nix OBD. Also z.B. ein 
PEAK-USB oder was vom kreativen-chaos, lawicel.
Oder wenn du selber programmieren willst ein CAN-Shield für den Arduino, 
aber da weiß ich nicht ob ein Arduino mit 1MBit/s noch mitkommt.

von Florian (Gast)


Lesenswert?

Das stimmt nicht ganz. Der ELM kann auch "rohe" CAN Botschaften senden.
Auf dem Sparkfun Board ist aber kein ELM! Der STN1110 ist ähnlich, 
teilw. besser, aber eben: anders. Alle (wirklich alle) ELM327 Angebote 
für weniger als 40 Euro sind übrigens China Clones, egal, welcher 
"namhafte" Hersteller da seinen Sticker draufklebt.

Aber mal grundsätzlich: OBD II hat halt zwei Modi vorgegeben, vier 
werden i. d. R. von den Controllern unterstützt. Alles andere ist nicht 
norm-gerecht. Da gibt es also auch keine Doku zu. Hier tummeln sich 
diejenigen, die am Auto rumspielen: http://www.canhack.de/ - was davon 
zu halten ist, CAN Botschaften zu senden, sei mal dahingestellt. Lesen 
ist aber kein Problem.

Mehr Infos: http://www.blafusel.de/obd/obd.html

von Filth _. (filth)


Lesenswert?

Hallo Florian,

mir geht es um das reine Lesen von Botschaften. Was mir aus deinem 
Posting nicht klar wird: Kann man mit dem STN1110 1mpbs CAN lesen?

Gruß
Alex

von Florian (Gast)


Lesenswert?

Dann lerne, wie Elektronik und Programmierung funktioniert (Arduino 
gehört in die Tonne), was ein Datenblatt ist (da steht nämlich drin, was 
der STN1110 kann) und nimm einen PCA 82C250/MCP 2551 und einen MCP 2515, 
Quarz, zwei Rs, vier Cs und gut ist. Kostet keine 3€.

von filth (Gast)


Lesenswert?

Das Datenblatt vom STN1110 habe ich mir schon angeguckt, da finde ich 
keine Angaben zu max Bitraten

https://www.sparkfun.com/datasheets/Widgets/stn1110-ds.pdf

Wie Programmierung funktioniert weiß ich, würde ich nach ca 10 Jahren 
Berufserfahrung (allerdings nicht im uC Umfeld) behaupten

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
Noch kein Account? Hier anmelden.