HowTo: CAN Datendisplay im DIY

  • In diesem Thread will ich in mehreren Schritten den Selbstbau eines vergleichsweise günstigen Displays für allerlei Motor- und Fahrzeugdaten beschreiben.
    Um die Anleitung möglichst kompakt zu halten, werde ich nach Bedarf die weiteren Schritte und Updates im 1. Posting einfügen.


    Es geht nicht darum, Werbung für einzelne Anbieter oder Hersteller zu machen. Verwendete Bauteile oder angegebene Bezugsquellen sind nur beispielhaft angegeben.


    Des Weiteren übernehme ich keine Haftung für Schäden oder Folgeschäden, die durch den Bauvorschlag oder die Verwendung am Fahrzeug entstehen.


    Inhalt:
    1. Teil - Übersicht
    2. Teil - Löten
    3. Teil - SW
    4. Teil - Verkabelung im Auto


    1. Teil - Übersicht


    Was kann es?

    • es kann bei einem E61 530d LCI SAT (und vielen anderen Modellen) die Kühlwasser- und Motoröltemperatur, sowie das Drehmoment und den gewählten Gang anzeigen.
    • es passt die Helligkeit der Anzeige automatisch an den Helligkeitsregler (und den Fahrlichtstatus) an
    • wird am PT-CAN angeschlossen
    • auf Anfrage: wer das RDC nachgerüstet hat (e6x oder RDC lowcost) kann sich die Reifendrücke anzeigen lassen

    Warum ausgerechnet diese Hardware?

    • Der Prozessor - PSoC 5L - ist ein ARM Cortex M3 mit bis zu 80MHz, 256kB Flash, 64kB RAM und sehr flexibel konfigurierbarer Peripherie.
      Er besitzt einen integrierten CAN Controller und ist daher sehr einfach und kostengünstig mit dem CAN zu verbinden.
      Zudem startet das System sehr schnell und kann jederzeit problemlos abgeschaltet werden.
    • Der TJA1043 ist ein High Speed CAN Transceiver mit Automotive Zertifizierung, der auch von BMW verwendet wird. Alternativ wären auch TJA1041 oder TJA1042 einsetzbar.
      Hiermit sind keinerlei Störungen am CAN zu befürchten, vor allem, da er kompatibel zu den im e6x eingesetzten Transceivern ist (meist TJA104x).
    • Das Nextion Display erlaubt eine Trennung von Display Design und Datenerfassung. Das "Steuergerät" erfasst die Daten am CAN und bereitet sie für das Display auf.
      Das Display empfängt die "Variablen" über die TTL-RS232 Leitung und kümmert sich um die Darstellung. Diese Darstellung kann über ein Tool frei konfiguriert und programmiert werden.
    • Spannungsversorgung USB: Damit der Aufbau möglichst einfach ist und niemand befürchten muss, dass die FZG-Batterie leer gesaugt wird, wird ein KFZ-USB-Netzteil verwendet. Viele setzen für ihr Handy sowieso schon ein entsprechendes 5V USB Netzteil im FZG ein. Die Steckdosen im e6x werden über die Zündung geschaltet und somit wird das Steuergerät komplett von der Batterie getrennt.

    Was kostet es und welche Teile brauche ich?

    • 1x CY8CKIT-059 - PSoC5 Eval-Board ~15EUR (Enthält den Debugger als "USB-Finger")
    • 1x TJA1043T/1J - HS CAN Transceiver ~2EUR
    • 1x Nextion Display je nach Vorliebe - Enhanced Modell empfohlen z.B. 3.2" Enhanced gibt es auch bei Amazon ~25EUR aufwärts
    • 1x microSD Karte - zur Konfiguration des Displays
    • USB Auto-Steckdosen-Adapter + USB Verlängerung
    • Eine Experimentierplatine, Stiftleisten und eine SOIC14 auf DIP Adapterplatine ~10EUR
    • Kabel, Kabeldiebe, Stecker, Kuplungen etc. - nach Vorliebe
    • ca. 1-2h Löten
    • Für die Steckverbindungen auf der Platine

    Beistellung von mir

    • Schaltplan
    • SW - es gibt ein Demo Projekt, das man über die kostenlose Cypress IDE per (enthaltenem) USB-Debugger auf den Controller flashen kann. Es kann die angegebenen Werte Darstellen.
      Download ist noch zu klären, z.B. GitHub oder Forum?
    • Display Konfiguration - es gibt eine Demo Konfiguration, die über die SD-Karte auf das Display gespielt wird (Demo siehe Bild)
      Es ist individuell vom Nutzer über das frei erhältliche Konfigurationstool anpassbar. Download ist noch zu klären, z.B. GitHub oder Forum?

    Was von "Euch" kommen kann/sollte

    • ein Gehäuse für den bevorzugten Einbauort des Displays


    Das fertige Display nach Bauvorschlag könnte so aussehen. (Die Kabellängen sind nur beispielhaft und werden im FZG sicherlich länger sein.)
    komplett.JPGAnzeige.JPG


    Die verwendeten Buchsen und Stecker sind optional. Damit wird es sehr zuverlässig und ein SW Update (abstecken, im Haus flaschen, anstecken) sehr einfach:
    Platine_mit_Verbindern.JPG


    Die Lötarbeiten halten sich in Grenzen:
    Schritt1.JPGLötseite.jpg


    2. Teil - Löten


    In diesem Teil wird das Steuergerät zusammen gelötet. Grundlegende Löterfahrung ist leider erforderlich. Wer noch keine Erfahrung hat, findet auf YouTube sehr viele sehr lehrreiche Videos.


    Anfangen würde ich damit, den CAN Transceiver TJA1043 auf die SO14-DIP Adapterplatine zu löten. Dies ist auch das einzige SMD Bauteil. Richtung beachten: Pin 1 ist links, wenn der Text normal lesbar ist.
    IC ausrichten, ein Beinchen fixieren (anlöten), dann Flußmittel auf die Beinchen und Pads, mit reichlich Lötzinn am Lötkolben über die Beinchen samt Pads streichen und schon sind sie angelötet.
    CAN_Transceiver.jpg
    Dann noch die Pfostenverbinder anlöten. Lötstellen reinigen, alles immer auf Lötbrücken etc. prüfen und notfalls nacharbeiten.


    Als nächstes die Pfostenverbinder an das CY8CKIT-59 Board löten. Hier haben auf meiner Experimentierplatine nicht alle Pins Platz gehabt, daher blieben 2 Pins pro Seite offen.
    Für die Funktion werden nur die Pins 19 bis 26 von J1 (rechte Seite des Boards, oben, wenn der USB-Finger oben ist) benötig. Wer will, kann auch nur diese 8 Pins und vereinzelt ein paar Stützstellen anlöten.


    Schaltplan_C0.JPG


    Nun einen Platz für die Teile auf der Experimentierplatine finden, aufstecken und anlöten. Für die Verbindungen zu Display und Fahrzeug können auch Pfostenverbinder verwendet werden. Wie oben dargestellt habe ich hier TE/AMP Automotive Stecker und Buchsen verwendet (Teilenummern im Schaltplan bzw. oben).


    Dann alle Verbindungen gemäß Schaltplan ausführen und schon ist das Board fertig.


    3. Teil - SW (noch in Bearbeitung)


    Eine genaue Anleitung folgt noch.


    3.1 Steuergerät = PSoC 5



    Zuerst sollte man sich die aktuelle IDE für den PSoC 5 und das Board bei Cypress herunter laden.
    Es werden zusätzlich die Dokumentation, Samples und Projektvorgaben zum CY8KIT-059 installieren. Wer mehr mit dem PSoC Board machen will, findet hier alle notwendigen Informationen.


    Ich habe das Hex-File für den PSoC 5 angehängt. Das gibt Kühlwasser- und Motoröltemperatur, Drehmoment, Gang und RDC aus.


    Das Hex File kann sehr einfach über den "PSoC Programmer", der bei der IDE dabei ist, programmiert werden:


    PSoC5 in den USB-Port -> Hexfile auswählen und flashen.

    3.2 Display


    Die Nextion Displays sind "intelligente" Displays. D.h. sie können Kommandos autark abarbeiten und sogar Code am Display ausführen.
    Text und Grafik wird also vom Display erzeugt, das Steuergerät überträgt nur neue Werte für die Anzeigen.


    Um die Umsetzung am Display möglichst unabhängig vom Steuergerät zu machen, werden vom Steuergerät Variablen im Display "beschrieben", die entweder direkt dargestellt werden können, oder von Programmcode im Display in die Textfelder oder in Grafik "übersetzt" werden.


    Auch hierfür existiert eine IDE des Herstellers, die die Anpassung


    Angehängt ist ein Demo-Projekt, welches die in den Bildern genannten Ausgaben erzeugt.


    Die Tabelle zeigt die (momentan) übertragenen Variablennamen mit Inhalt


    Variablen.JPG


    4. Teil - Verkabelung im Auto (noch in Bearbeitung)


    Eine genaue Anleitung folgt noch.


    Schon mal ein paar Tipps für die Verkabelung:

    • Der PSoC benötigt eine 5V Spannungsversorgung, welche über den "USB-Finger" angeschlossen werden kann. Hierfür eignet sich eine USB-Verlängerung, die über ein USB Ladeadapter an einer Fahrzeugsteckdose, z.B. Fußraum Beifahrerseite, angeschlossen wird.
    • Es wird der PT-CAN (-2005/08, ab 2005/09) benötigt.

      • Je nach Verbauort von Display und Steuergerät (und BJ/Ausstattung) bietet sich hinter dem Handschuhfach das KGM (PIN 30 CAN_L, Rot und PIN 29 CAN_H, Blau-Rot) bzw. SGM (PIN 34 CAN_L, Rot und PIN 32 CAN_H, Blau-Rot) an.
      • Oder alternativ, wenn LCI und Kurvenlicht vorhanden ist, hinter dem kleinen Ablagefach links das Lichtmodul (PIN 72 CAN_L, Rot und PIN 71 CAN_H, Blau-Rot).
    • Masse (GND) und 12V können direkt von einer der Steckdosen genommen werden.
    • Für das Display werden 4 Adern benötigt:
      Pin 1: 5V <-> 5V
      Pin 2: Rx <-> Tx
      Pin 3: Tx <-> Rx
      Pin 4: GND <-> GND

    Für die Verbindungen zum FZG kann man Stromdiebe (BMW 61138364566) verwenden (oder man macht sich mit Stecker/Buchse-Kombinationen ein Y-Kabel und pinnt entsprechend um).

  • jupp, guter Job ;)
    Passt es denn mit Gehäuse in den Aschenbecher?^^

  • Die Software kommt woher? Komplett selbst geschrieben?

    Ja, Cypress Library und eigener Code. Mini Scheduler, CAN-Nachricht empfangen und RS232-Nachricht senden.

    Könntest du den Softwarepart noch genauer beschreiben ?

    Die SW kommt noch ;)


    Wird erst mal ein Hex-File, dass man einfach mit der IDE flashen kann. Für die Schnellen hänge ich es am WE an. Eine Anleitung zum Aufspielen der SW ist in Arbeit :)

  • Sehr gute Anleitung! spiele schon länger mit dem Gedanken so etwas ähnliches zu bauen.
    Allerdings mit etwas mehr Funktionalität, wie z.B MP3 Player von SD Karte, eingespeist in den AUX vom CCC/CIC


    Als Boards finde ich sind diese varianten recht passend:
    32F746GDISCOVERY (Etwas schlechteres Display) ca. 50€ (Mouser)
    32F469IDISCOVERY (Kleine abmaße aber auch weniger IOs) ca. 55€ (farnell)
    32F769IDISCOVERY (Viele IOs aber auch deutlich größere basis Platine) ca. 71€ (Mouser/Digikey)


    Bitte nicht als Werbung verstehen da alles vom selben Hersteller ist, finde nur man kriegt ordentliche hardware zum fairen preis.


    Die Preise für die Displays sind zwar etwas höher man braucht dann kein eval board mehr und hat ein paar mehr Möglichkeiten, je nach model ein Kamera/video Eingang, wifi, usb...
    Allerdings ist das keine plug & play Lösung und erfordert einiges an Programmierarbeit.

  • Das 3.2" mit RDC-Option und Getriebetemperatur, das 2.4" im Aschenbecherfach (die Spiegelungen sieht man normalerweise nicht; der Airbag ist deutlich oberhalb des Displays.)


    Aschenbecher.JPG

    Sehr gut. Jetzt müsstest du nur noch aufzeigen, wo du das Kabel verlegt hast, oder wie man die Verkabelung am Besten umsetzt.

  • @saft6luck: Kann es sein dass auf dem Schaltplan ein kleiner Fehler ist? Am Stecker müssten doch die 5V anliegen und nicht 12V!?


    Am Einsatz für den Aschenbecher bin ich gerade dran, das Modell sollte ich dieses WE fertig bekommen, der erste 3D-Druck muss noch ein bisschen warten, da ich grade noch auf Ersatzteile für den Drucker warte... :|

  • @saft6luck: Kann es sein dass auf dem Schaltplan ein kleiner Fehler ist? Am Stecker müssten doch die 5V anliegen und nicht 12V!?


    Am Einsatz für den Aschenbecher bin ich gerade dran, das Modell sollte ich dieses WE fertig bekommen, der erste 3D-Druck muss noch ein bisschen warten, da ich grade noch auf Ersatzteile für den Drucker warte... :|

    Du meinst am großen Stecker? Das sind die 12V für Vbat vom CAN, damit der ordentlich läuft.


    Das Modell kannst du mir gerne schicken (PM wegen Email), dann drucke ich es aus und teste es. So geht es recht gut.

  • Das gezeigte Gehäuse für den Einbau links anstelle der orginalen Defrosterdüse ist in sogut wie fertig. Die Funktion der Düse bleibt dabei größtmöglich erhalten. Die Größe des Gehäuses und damit auch des Displays kann bis 3,2" betragen. Das Displaykabel wird durch die Defrosterdüse in den Lüftungskanal geführt und hinter dem Kombi dann aus dem Lüftungskanal bis zur CAN-Elektronik.
    Download ist noch zu klären, z.B. GitHub oder Forum?

  • Bitte im Forum hochladen, sonst ist es in einigen Monaten möglicherweise bei externen Hoster weg.
    So fänd ich es besser.

  • Klar und möglichst auf noch 10 weiteren Plattformen, nur um jeden gerecht zu werden. Leute Leute :blablabla:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!