OBD2 mit Arduino und MCP2515

OBD2 mit Arduino und MCP2515

menu
Badenser
folder Sa 18. Mai 2019, 19:40
Hallo allerseits,

ich würde gerne mit einem MCP2515 Modul und einem Arduino über die OBD2 Schnittstelle Werte abfragen. Zum Initialisieren der OBD2/CAN Libraries muss ich einen Takt und eine Datenrate einstellen. Weiss zufällig jemand, wie diese Werte beim IONIQ eingestellt werden müssen? Ich habe ausgiebig gesucht, aber leider nix gefunden.

Als ich mit den Defaultwerten das Modul an meine alte ZOE angeschlossen habe, ging auf dem Armaturenbrett die Lichtorgel an und jede edenkliche Fehlermeldung wurde angezeigt. Einige gingen auch nicht wieder weg...da hab ich doch ein wenig Panik geschoben...zum Glück war nach dem Einschlafen des Autos alles wieder normal. Die Defaultwerte scheinen also nicht richtig zu sein und ich würde mir dieses Erlebnis an meinem IONIQ wenn möglich ersparen.
Analoge Ladesteuerung - einfach, günstig, zuverlässig
Platinen und Bausätze: http://www.analogevse.xyz
Anzeige

Re: OBD2 mit Arduino und MCP2515

menu
ITStromer
    Beiträge: 271
    Registriert: Fr 10. Mär 2017, 21:58
    Danke erhalten: 7 Mal
folder So 19. Mai 2019, 10:55
Der Ioniq spricht auf dem OBD2 ein ISO 15765-CAN Protokoll mit 11bit und 500k Baudate.
Hyundai IONIQ Elektro Premium in Polar White bestellt: 15.2.17 produziert: 14.09.17 verschifft: 15.9.17 Ankunft beim Händler: 10.11.17 16.8. 22.6. 15.5. rumstromern seit: 16.11.17

Re: OBD2 mit Arduino und MCP2515

menu
Benutzeravatar
    noradtux
    Beiträge: 413
    Registriert: Mi 30. Nov 2016, 19:21
    Wohnort: Rellingen
    Hat sich bedankt: 5 Mal
    Danke erhalten: 11 Mal
folder So 19. Mai 2019, 12:28
ISO 15765-2 (ISO-TP) ist hierbei die Herrausforderung. Ich versuche das gleiche gerade mit 'nem RasPi und PiCAN2-Board.
Seit 7.7.2017 nach 8 Monaten warten mit dem Ioniq Electric unterwegs :)

Re: OBD2 mit Arduino und MCP2515

menu
Badenser
folder So 19. Mai 2019, 16:53
Danke für die Infos, das hilft mir schon mal weiter. Für die 11 bit/500k Baud gibts eine Konstante in der Bibliothek. Aber man muss auch noch eine Frequenz angeben (16MHz, 8MHz, 4MHz..) und da bin ich mir nicht sicher. Ist das die Frequenz vom Oszillator? Auf meinem Board sitzt ein 8MHz Quarz, da wären das dann 8MHz...

Gibts OBD2 Protokollvarianten? Davon hab ich bis jetzt noch nichts gehört. Wo liegt denn die Herausforderung?
Analoge Ladesteuerung - einfach, günstig, zuverlässig
Platinen und Bausätze: http://www.analogevse.xyz

Re: OBD2 mit Arduino und MCP2515

menu
g4rb4g3
    Beiträge: 97
    Registriert: Do 4. Okt 2018, 20:43
    Hat sich bedankt: 4 Mal
    Danke erhalten: 27 Mal
folder So 19. Mai 2019, 19:44
Badenser hat geschrieben:
So 19. Mai 2019, 16:53
Danke für die Infos, das hilft mir schon mal weiter. Für die 11 bit/500k Baud gibts eine Konstante in der Bibliothek. Aber man muss auch noch eine Frequenz angeben (16MHz, 8MHz, 4MHz..) und da bin ich mir nicht sicher. Ist das die Frequenz vom Oszillator? Auf meinem Board sitzt ein 8MHz Quarz, da wären das dann 8MHz...

Gibts OBD2 Protokollvarianten? Davon hab ich bis jetzt noch nichts gehört. Wo liegt denn die Herausforderung?
Keine Ahnung welche Bibliothek du verwendest aber üblicherweise ist die Geschwindigkeit des Arduinos gemeint.

Re: OBD2 mit Arduino und MCP2515

menu
emega
    Beiträge: 123
    Registriert: Sa 28. Jul 2018, 18:40
    Hat sich bedankt: 2 Mal
    Danke erhalten: 2 Mal
folder So 19. Mai 2019, 19:58
Wenn wir wüssten, welche Lib Du verwendest könnten wir ja mal rein schauen. Sollte sogar in der Doku stehen. Der MCP2515 hat auch einen Listen-Only Mode. In diesem Modus höhrt der Chip einfach nur zu. Um die Datenrate heraus zu finde kann man sie in diesem Modus solange verändern, bis gültige Nachrichten rein kommen.

Ich schätze mal, die MHz-Angabe bezieht sich auf den Takt des MCPs. Wie schnell der Arduino läuft interessiert eher weniger. Der MCP kann 10 MHz SPI verarbeiten. Der Arduino müsste dann auf 20 MHz laufen, was mit den meisten nicht geht. Das ist jetzt aber nur geraten.

Re: OBD2 mit Arduino und MCP2515

menu
Badenser
folder So 19. Mai 2019, 20:31
Im Moment benutze ich die OBD2 Library von Sandeep Mistry (https://github.com/sandeepmistry/arduino-OBD2), die wiederum dessen CAN Lib verwendet (https://github.com/sandeepmistry/arduino-CAN). Ich bin aber nicht darauf festgelegt. Das war nur die erste/beste/erstbeste die ich über die Arduino IDE bei den Bibliotheken gefunden habe. Mittlerweile habe ich auch noch eine ganze Reihe von anderen Bibliotheken auf Github gefunden, brauche aber immer für die Initialisierung den Takt und die Baudrate.

Edit: und noch eine Frage (wo wir schon dabei sind)...muss man an der OBD2 Schnittstelle nur die beiden Signalleitungen verbinden oder auch noch Masse dazu?
Analoge Ladesteuerung - einfach, günstig, zuverlässig
Platinen und Bausätze: http://www.analogevse.xyz

Re: OBD2 mit Arduino und MCP2515

menu
emega
    Beiträge: 123
    Registriert: Sa 28. Jul 2018, 18:40
    Hat sich bedankt: 2 Mal
    Danke erhalten: 2 Mal
folder So 19. Mai 2019, 21:45
Badenser hat geschrieben:
So 19. Mai 2019, 20:31
Im Moment benutze ich die OBD2 Library von Sandeep Mistry (https://github.com/sandeepmistry/arduino-OBD2), die wiederum dessen CAN Lib verwendet (https://github.com/sandeepmistry/arduino-CAN).
Hab jetzt keine Init-Funktion gefunden, die neben der Baudrate auch noch eine Taktrate braucht. Das einzige was ich gefunden hab war das: "#define MCP2515_DEFAULT_CLOCK_FREQUENCY 16e6" Das ist eindeutig die Frequenz des MCPs. Hier musst Du eventuell noch 8e6 rein schreiben. Kenne mich mit Arduino nicht so aus, ob man das so in der IDE machen kann. Komme aus der C-Ecke.
Badenser hat geschrieben:
So 19. Mai 2019, 20:31
Edit: und noch eine Frage (wo wir schon dabei sind)...muss man an der OBD2 Schnittstelle nur die beiden Signalleitungen verbinden oder auch noch Masse dazu?
Prinzipiell reichen die Datenleitungen. Bei den MCP2515 Modulen die ich verwende muss die Masse aber mit verbunden werden. Ist ja nicht schwer. Sollte im OBD-Stecker mit geführt sein. Die Versorgungsspannung kommt ja wahrscheinlich auch aus dem Stecker.

Re: OBD2 mit Arduino und MCP2515

menu
Badenser
folder So 19. Mai 2019, 22:47
Die unterliegende CAN Library hat eine Methode CAN.setClockFrequency bei der man die Frequenz angeben kann. Ich werde das mal mit 8E6 ausprobieren. Laut der Doku der Library scheint das tatsächlich die Taktfrequenz des MCP2515 zu sein.

Ich möchte meine Schaltung aus Akkus speisen (also nicht aus der OBD2 Schnittstelle) aber die Masse mit zu verbinden ist in der Tat keine Kunst.

Vielleicht noch eine kleine Erklärung, was ich eigentlich vorhabe... Ich möchte eine simple Alternative zu EVNotify haben, die ohne OBD-Dongle auskommt. Dazu habe ich eine Akku-betriebene Schaltung mit einem Arduino Nano, einem MCP2515 Modul und einem SIM800L GSM Modul gebaut. Ist das Auto an, wird der Akku geladen und die Schaltung schläft. Geht das Auto aus, läuft die Schaltung für einige Stunden aus dem Akku (Optimierung des Stromverbrauchs steht noch aus) und erfragt Lade-Parameter. Wenn das Auto lädt, überträgt es zyklisch ein paar Werte (SOC, Stromstärke, Ladeleistung und Restzeit) an einen Webservice, über den man dann die Werte auf dem Handy sehen kann. Die Kosten für alle Komponenten dürften im Bereich von etwa 20€ liegen und die 12V Batterie des Autos wird nicht belastet. Man könnte es also einbauen und vergessen.

Danke für Eure Tips und Hinweise!
Analoge Ladesteuerung - einfach, günstig, zuverlässig
Platinen und Bausätze: http://www.analogevse.xyz

Re: OBD2 mit Arduino und MCP2515

menu
Benutzeravatar
folder Mo 20. Mai 2019, 09:16
Hi Badenser,

klingt sehr interessant. Nutzt du dann auch eine Netzklub-SIM-Karte zur Datenübertragung?
Seit 08.08.18 im Ioniq unterwegs
PV-Anlage 3,51kWp, Fronius Primo WR
OpenWB, go-eCharger, und mehrere Ladekarten befüllen "Blue Angel"
ØVerbrauch 14,0 kW/h bei km-Stand 24000
Anzeige
Antwortenedit build arrow_drop_down

Zurück zu „IONIQ - Infotainment“

Gehe zu arrow_drop_down
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag