CAN Bus- KLine, PT und OBD2 - Arduino Projekt

  • Guten Abend zusammen,
    aus Interesse habe ich heute probiert mich in das Thema Can Bus etwas einzuarbeiten. Mein Ziel ist es mit einem Mikrocontroller Can Bus Messages zu empfangen und zu verarbeiten.
    Mir geht es um gewisse Werte wie z.B. Ladedruck ist/Soll, Motortemp. usw
    Mit I**** & T***32 lassen sich ja gewisse Werte anzeigen.
    Genauso habe ich einen Bluetooth Interface welches mit der App "Deep OBD for BMW" von Ulrich Holeschak mir die gesuchten Werte ausspuckt.


    Meine Frage ist: Was muss ich Senden um die gewünschte Antwort zu bekommen?
    Mein Auto ist ein 330D, wenn ich einen Wert von der DDE haben will muss ich mit der SGBD D73N57B0.prg in der App arbeiten. Soweit so gut aber was macht die App/EDIABAS damit daraus ein CAN Frame wird und wie kann ich mir das zu nutzen machen?


    Ich habe auch schon in die SGBD rein geschaut aber in den 55022 Zeilen habe ich nichts gefunden, mir fehlt das Verständnis wie sich die Nachrichten genau Zusammen setzen...


    Heute habe ich ein USBtin (CANtoUSB) an PIN6 (Can-H) und PIN7 (Can-L) gehangen und erstaunlich wenig gelesen. Dann habe ich probiert die K-Line anzuschließen und wusste nicht ob er als eindraht Bus genutzt wird und habe garnichts lesen können.






    Vielleicht kann mir jemand bei meinem etwas spezielleren Problem helfen?
    Gruß,
    Rado






    UPDATE 13.09.2017:


    Dank der netten Hilfe von approximate ist es mir gelungen einen ersten funktionsfähigen Prototypen zusammen zu löten.

    [Blockierte Grafik: http://fs5.directupload.net/images/170913/3czvmfb5.jpg]

    Das ganze besteht aktuell aus einem Arduino Nano, einem 16x2 LCD und einem MCP2515. Da das Ding nicht schön genung ist um fest im Auto zu bleiben, hab ich momentan einen OBD Stecker an einem alten Netzwerkkabel. Das Netztwerkkabel bietet sich wegen des "twistet-pair" an.


    Ich muss noch viel programmieren denn momentan kann ich mir nur die Motortemperatur anzeigen lassen.
    Mal schauen wie es weiter geht...

  • Konkretes kann ich dir nicht sagen, da ich selbst noch nicht dazu gekommen bin etwas in der Richtung zu unternehmen. Ich hab mir aber mal vor längerer Zeit diesen Link (http://www.loopybunny.co.uk/CarPC/k_can.html) aus einer ähnlichen Motivation heraus abgespeichert. Vielleicht hilfts dir ja. Wenn du weiter kommst, würde ich mich über geteilte Codes und Hardware freuen.

  • Vielen Dank, die Seite kenn ich schon.


    Aber wie ich jetzt nochmal sehe sind das alles die Nachrichten auf Kcan1 und Kcan2 zu finden sind. Aber was davon ist welcher Pin im OBD Stecker? Und was Can-H/Can-L?


    Fragen über fragen...


    Hardware ist jetzt für die ersten Gehversuche ein USBtin von Thomas Fischl und der erste Prototyp wird mit Atmega, MPC2515 und einfachem LCD Display.

  • am obd port hängt kein kcan, sondern ab märz 2007 der dcan.


    wenn du mit bekannten programmen eine anfrage ans steuergerät sendest, dann horch doch einfach auf dem bus mit (0x6F1).


    der radio hängt zb am kcan, die dde am ptcan.


    anzapfen kannst du den bus überall.

    2007 E92 325i | SPACE GREY | INDIVIDUAL MERINO COHIBABROWN | BBS CH-R BLACK 9x20 - 10.5x20
    KW VARIANT II | E9x M3 SUSPENSION PARTS | E93 M3 FRONT ANTI-SWAY BAR | CDV DELETE
    CIC RETROFIT | COMBOX RETROFIT | JBBFE III (D-CAN) RETROFIT
    DIAGNOSE BLOCKER | iDRIVE DATA DISPLAY

  • erstmal viel Dank an approximate der mir einen ganz guten Tipp gab.
    Und ich mache langsame Fortschritte...
    Ich habe mir einen Adapter zusammengelötet damit ich mein Interface benutzen kann und gleichzeitig den D-Bus mitlesen kann.


    Bei einem ersten Test habe ich eine Diagnosenachricht (stat_Motordrehzahl_wert) mittels Interface gesendet und alles mitgeloggt:


    [Blockierte Grafik: http://www.bilder-upload.eu/thumb/ea6105-1504462022.png]


    Wenn ich mir den Tracefile anschaue denke ich das Interface sendet:

    Code
    t6f1812042c1018810000


    und als Antwort bekomme ich von der DDE:

    Code
    t6128f1046c100000ffff


    was ja 0 min^-1 enstpricht


    wenn ich aber

    Code
    t6128f1046c10059effff

    in eine Drehzahl umrechnen möchte bekomme ich 10113,25 min^-1 raus was nicht stimmen kann.?


    vorgegangen bin ich wie folgt:
    ((Byte[6]*256)+Byte[5])/4
    ((158*256)+5)/4 = 10113,25


    Die Umrechnung ist von der Website http://www.loopybunny.co.uk/CarPC/can/0AA.html

  • falsche vorgehensweise!
    bytes sind hier nicht identisch...


    machs mit den messwertblöcken.

    2007 E92 325i | SPACE GREY | INDIVIDUAL MERINO COHIBABROWN | BBS CH-R BLACK 9x20 - 10.5x20
    KW VARIANT II | E9x M3 SUSPENSION PARTS | E93 M3 FRONT ANTI-SWAY BAR | CDV DELETE
    CIC RETROFIT | COMBOX RETROFIT | JBBFE III (D-CAN) RETROFIT
    DIAGNOSE BLOCKER | iDRIVE DATA DISPLAY

  • Kannst du mir bitte etwas genauer erklären was du meinst? Wie komme ich an die Blöcke und wie muss ich diese dann verarbeiten?

  • stehen alle in der sgbd, sogar die formel dazu...

    2007 E92 325i | SPACE GREY | INDIVIDUAL MERINO COHIBABROWN | BBS CH-R BLACK 9x20 - 10.5x20
    KW VARIANT II | E9x M3 SUSPENSION PARTS | E93 M3 FRONT ANTI-SWAY BAR | CDV DELETE
    CIC RETROFIT | COMBOX RETROFIT | JBBFE III (D-CAN) RETROFIT
    DIAGNOSE BLOCKER | iDRIVE DATA DISPLAY

  • Also ich hab gestern Nacht nochmal die komplette .prg Datei für meine DDE durchgegangen und hab nichts gefunden.
    Allerdings habe ich eine Dokumentation für EDIABAS auf meinem PC gefunden.


    Die Formel für den Analogwert ist:


    Realwert = ((Analogwert * MUL)/DIV)+ADD


    MUL = 0,5
    DIV = 1
    ADD = 0


    Was mir eine Drehzahl von ca 730min^-1 gibt. Könnte passen...


    Kann ich via .... eine Leerlaufdrehzahl festlegen und dann alles nochmals messen? Oder kann jemand die Formel bestätigen?

  • ich schreib dir morgen bzw. morgen mal ne pn.

    2007 E92 325i | SPACE GREY | INDIVIDUAL MERINO COHIBABROWN | BBS CH-R BLACK 9x20 - 10.5x20
    KW VARIANT II | E9x M3 SUSPENSION PARTS | E93 M3 FRONT ANTI-SWAY BAR | CDV DELETE
    CIC RETROFIT | COMBOX RETROFIT | JBBFE III (D-CAN) RETROFIT
    DIAGNOSE BLOCKER | iDRIVE DATA DISPLAY