LIN Ansteuerung der Klima via Mikrocontroller

  • Hallo! Ein sehr interessantes Thema! Wenn ich es richtig verstehe, funktioniert das z. B. für die Klimasteuerung so:

    Ich möchte die Venti-Drehzahl erhöhen und drücke den entsprechenden Pfeil auf dem Bildschirm. Das NAC sendet daraufhin über die low-speed CAN-Info-Div. Schnittstelle bei jedem Drücken des Pfeils den passenden Datensatz an das BSI.

    Das BSI wandelt den Befehl um und sendet ihn via LIN-Netz an das Heizungs-Steuergerät. Dieses führt die Aktion aus und meldet auf demselben Weg zurück, dass die Drehzahl nun soundso ist, was auf dem Bildschirm mit den Flügelsymbolen angezeigt wird.

    Frage 1: Stimmt das so??

    Frage 2: Wo kann man das CAN-Netzwerk am besten abgreifen, ohne das NAC auszubauen. Wo geht das Kabel vom NAC genau hin? (Ich finde mich in dem unglaublichen Gewirr von Kabeln und Steckern nicht zurecht.)

    Frage 3: Kann man irgendwo die passenden Datensätze finden?

    Warum das Ganze? Ich möchte die Klimaanalage statt über den Screen mittels Drehknöpfen regulieren und dazu ein Blackböxli bauen.

    Vielen Dank für eure Hilfe.

  • Frage 1: Stimmt das so??

    Korrekt.

    Wobei nicht jedes Steuergerät über LIN angebunden ist, manche sind auch direkt am Low Bus.


    Wo geht das Kabel vom NAC genau hin?

    Zum BSI über 2 Drähte (Can High und Can Low) mit 125Kbps.

    Die zugehörigen Pins hängen natürlich von BSI ab, es gibt mehrere Versionen und auch Revisionen.

    Hier hab ich beispielsweise vom BSI2010 die Pins gelistet.

    Beim BSI2017 dürfte es wieder anders sein.


    Man kann sich quasi an jedes Steuergerät hängen, welches über den Low Bus mit dem BSI verbunden ist.

    Und wenn das Gateway im BSI nicht gerade Nachrichten blockiert, sollten die auch durchkommen.


    Frage 3: Kann man irgendwo die passenden Datensätze finden?

    Es gibt hier ein paar Datensätze, allerdings von der älteren Generation, da kann ich nicht genau sagen, ob die Befehle gleich geblieben sind.


    Ich bastel derzeitig an nem Sketch, den ich später veröffentliche, womit man den Bus leichter auslesen kann.

    Ich will mir nämlich auch sowas ähnliches bauen, um ein paar selbstgebaute Funktionen hinzuzufügen.

    Ich hänge dann später meinen Mikrokontroller dran und der soll bei entsprechenden Nachrichten reagieren.


    Ich hab da ein paar Ideen bzgl. Beleuchtung, Diagnose, Schaltkontakte und Co.

    308 GTi (╯°□°)╯︵ ┻━┻

  • SUPER! Da haben wir doch sehr ähnliche Projekte vor! Ich habe neulich einen e-C4 probe gefahren, der hatte wieder Drehregler für die Temperatur und das Gebläse. Viel praktischer!

    Man kann sich quasi an jedes Steuergerät hängen, welches über den Low Bus mit dem BSI verbunden ist.

    Und wenn das Gateway im BSI nicht gerade Nachrichten blockiert, sollten die auch durchkommen.

    Ich habe versucht, am Controller für die Parksensoren (hinten links, Klappe im Kofferraum) die Daten abzufangen und zu analysieren. Ich habe aber nicht den Eindruck, dass dort Datensätze für's Klima ankommen. Da müsste man doch trotzt der immensen Flut von Infos feststellen können, wenn eine Taste z.B. 3 x gedrückt wird, dass dann 3 x ein spezieller Datensatz ankommt. Ich denke also, das BSI leitet nicht alles durch.


    Ich hänge mal 1 Dateien an, die mit PcanView ist zu gross (3MB), aber die mit CANHacker erzeugte sollte gehen. Ich werde daraus nicht schlau.


    Für eine dauerhafte CAN-Verbindung muss man sowieso eine Connection unter dem Dashboard finden, denke ich.


    test2.trc.txt


    OK, habe die Datei gekürzt. Hier ist sie:


    test3mod.trc.txt

  • Ich habe versucht, am Controller für die Parksensoren (hinten links, Klappe im Kofferraum) die Daten abzufangen und zu analysieren. Ich habe aber nicht den Eindruck, dass dort Datensätze für's Klima ankommen.

    Schade, dann könnte es sein, dass das Gateway wohl nicht alles durchlässt.

    Gerade mal die Textdatei durchforstet.


    Man muss natürlich beachten, dass nicht überall eine permanente Kommunikation stattfindet, sondern bei manchen Steuergeräten nur nach Bestätigung/Anforderung.


    Hattest Du mal über Touch probiert, die Lüftung zu ändern?


    Das Klima Steuergerät hat, glaube ich, die 0x76D und 0x66D.

    Man schickt den Befehl an 0x76D und die Antwort kommt von 0x66D.


    Da müsste man doch trotzt der immensen Flut von Infos feststellen können, wenn eine Taste z.B. 3 x gedrückt wird, dass dann 3 x ein spezieller Datensatz ankommt.

    Programmtechnisch wäre das relativ leicht zu lösen, indem man auf eine bestimmte ID wartet und innerhalb eines gewissen Zeitraums den Datensatz zählt.

    Kommt drauf an, womit man programmiert.

    C++ nutze ich, da Arduino und andere Controller halt mit C++ programmiert werden.



    Bzgl. Anschluss, Am optimalsten wäre dann halt der Infotainment Anschluss, wenn es nicht über das Gateway funktioniert.

    Ist auch sicherer, als am OBD, weil man über OBD auch Fehler reinhauen kann, die sich ggf. bei der Fahrt negativ auswirken kann.




    Ich splitte das Thema mal, damit wir weiter diskutieren können, weil wir sonst zu sehr vom eigentlichen Thema abdriften.

    308 GTi (╯°□°)╯︵ ┻━┻

  • Schade, dann könnte es sein, dass das Gateway wohl nicht alles durchlässt.

    Ja, scheint so zu sein. Es kommt definitiv kein Frame mit dem Header 0x76D oder so. Es hört bei 0x5XX auf. 0x7XX wäre ja dann unterste Priorität?

    Programmtechnisch wäre das relativ leicht zu lösen, indem man auf eine bestimmte ID wartet und innerhalb eines gewissen Zeitraums den Datensatz zählt.

    OK, mit CANHacker ist das leicht zu lösen. Habe ich eben am Schreibtisch geübt. Ein Arduino sendet mir laufend 4 gleichbleibende Frames. Gleiche Frames werden nur gezählt, erzeugen aber keinen neuen Line Feed. Auf Knopfdruck sendet der Arduino dann nur noch einen Frame, mit gleichem Header aber mit leicht geänderten Daten. Dieser Frame wird separat an 5. Stelle aufgelistet! So kann man unter einem regen Traffic seltene Frames prima herausfischen. C++ kann ich leider nicht, bin mit programmieren und mit dieser ganzen neuen Technik leider ein Greenhorn.

    Hattest Du mal über Touch probiert, die Lüftung zu ändern?

    Ja klar, aber no result! Mit obiger Methode hätte ich den entsprechend generierten Frame sehen müssen.


    Fazit: NAC ausbauen? Habe nochmals in das Kabelgewirr geschaut.... schlimm.


    PS: Verwende ein Interface von Peak mit galvanischer Trennung und würde nie ein bestimmtes Frame senden ohne dass ich dieses Frame schon im System selber zirkulieren sah. OBD schliesse ich aus verschiedenen Gründen aus.

  • Ja, scheint so zu sein. Es kommt definitiv kein Frame mit dem Header 0x76D oder so. Es hört bei 0x5XX auf. 0x7XX wäre ja dann unterste Priorität?

    Kommt immer drauf an, jedes Steuergerät hat ein TX und RX.

    Also eine Adresse, zu dieser man sendet und eine, von der man dann eine Antwort bekommt.


    C++ kann ich leider nicht, bin mit programmieren und mit dieser ganzen neuen Technik leider ein Greenhorn.

    Welchen Microcontroller möchtest Du denn eigentlich verwenden?

    Du musst ja auch die Can Frames senden können.

    Mit C++ kann ich hier ggf. weiterhelfen.


    Fazit: NAC ausbauen? Habe nochmals in das Kabelgewirr geschaut.... schlimm.

    Optimalerweise direkt am Quadlock, die Pins habe ich hier aufgelistet.


    PS: Verwende ein Interface von Peak mit galvanischer Trennung und würde nie ein bestimmtes Frame senden ohne dass ich dieses Frame schon im System selber zirkulieren sah. OBD schliesse ich aus verschiedenen Gründen aus.

    Eine falsche Konfiguration (Bitrate/Speed) des Can Adapters reicht auch schon aus, um die Motorkontrollleuchte zum klingeln zu bringen, habs getestet. XDD

    308 GTi (╯°□°)╯︵ ┻━┻

  • Welchen Microcontroller möchtest Du denn eigentlich verwenden?

    Du musst ja auch die Can Frames senden können.

    Mit C++ kann ich hier ggf. weiterhelfen.

    Ich habe 2 Arduino Uno mit 2 Can-Shield hier. Ein passendes Programm habe ich gefunden und es erweitert, damit es verschiedene Frames senden kann. Soweit kam ich schon, aber für mehr komme ich sehr gerne auf deine Hilfe zurück. Kann mir aber auch ein Lehrbuch für C kaufen, dauert halt einfach lange bis ich es kapiert haben werde.....


    Der nächste Schritt ist also nun eine gute Anzapfstelle für das CAN zu erstellen, dann geht es weiter. Werde meinen Garagisten bitten, das NAC mit mir auszubauen, habe nicht die passenden Werkzeuge und will keinen Schaden anrichten.

    Ich melde mich wieder wenn ich weiter bin. Wird aber eine Weile dauern.


    Ganz vielen Dank für deine Hilfe, du hast mir bereits sehr geholfen!! Überhaupt eine tolle Sache, dein Forum! Thanks a lot!

  • Soweit kam ich schon, aber für mehr komme ich sehr gerne auf deine Hilfe zurück. Kann mir aber auch ein Lehrbuch für C kaufen, dauert halt einfach lange bis ich es kapiert haben werde.....

    Wem sagste das, ich bin seit ca. 2021 dran, da ich noch mehr Projekte mache, als nur Canbus. ^_^

    Macht einfach Spaß.


    Der nächste Schritt ist also nun eine gute Anzapfstelle für das CAN zu erstellen, dann geht es weiter. Werde meinen Garagisten bitten, das NAC mit mir auszubauen, habe nicht die passenden Werkzeuge und will keinen Schaden anrichten.

    Ich melde mich wieder wenn ich weiter bin. Wird aber eine Weile dauern.

    Eilt ja nicht. 8)

    Also wenn's für Deinen 308 II ist, dann gibt's von mir auch hier eine Anleitung.


    Ganz vielen Dank für deine Hilfe, du hast mir bereits sehr geholfen!! Überhaupt eine tolle Sache, dein Forum! Thanks a lot!

    Kein Problem.

    Ich hege ja die Hoffnung, dass mehr Leute herfinden, die Bock auf solchr Spielereien und Umbauten haben. :)

    308 GTi (╯°□°)╯︵ ┻━┻

  • Hallo Mittns , hope you are well and happy!

    Frage: Bist Du hier weitergekommen und interessiert Dich das Thema immer noch?

    Ich habe wieder mal einen Anlauf genommen und versucht, aus der Flut von Daten etwas punkto Heizungssteuerung herauszufiltern. Ich habe einen Zwischenstecker gebaut, den ich an der Multifunktions-Bedieneinheit unten zwischengeschaltet habe. Es sieht aber nicht so aus, als ob auf diesem CAN-Bus (CAN Info Div) etwas in der Richtung Klima läuft.

    Vielleicht sollte man es an den Anschlüssen des Touchscreen versuchen. Hast Du da die Pin-Outs?

    Greetings from Zurich

  • Vielleicht sollte man es an den Anschlüssen des Touchscreen versuchen. Hast Du da die Pin-Outs?

    Schau hier:


    Von dort aus solltest du die Klima steuern können, da es über das Infotainment auch funktioniert.


    Das BSI dient u.a. als Gateway und lässt nur bestimmte Nachrichten an bestimmten Strängen durch, wo sie auch Sinn machen, um den Datenverkehr auf der Busleitung zu reduzieren.


    Auf Info Div laufen die Klima Nachrichten, glaub ich, nicht, die müssten auf dem LIN Bus sein.


    Kannst ja nach ID filtern.

    76D und 66D müsste für die Klima sein.

    Damit kannste den Traffic im Arduino ein wenig eingrenzen.

    308 GTi (╯°□°)╯︵ ┻━┻

  • OK, danke! 76D und 66D kommen da nicht vor, es hört bei 5xx auf. Die Busanschlüsse am NAC sind dasselbe wie die Busanschlüsse der unteren Bedieneinheit, CAN Info Div eben.

    Ich meinte die Anschlüsse oben am Touchscreen. Da müsste man doch alle vom Screen ausgehenden Befehle abfangen können?

  • Ich meinte die Anschlüsse oben am Touchscreen. Da müsste man doch alle vom Screen ausgehenden Befehle abfangen können?

    Der Touchscreen hat keine separaten Busleitungen, das geht alles über den LVDS Stecker.


    Der schwarze Stecker des Touchscreens hat:

    1 = +CAN Versorgung

    2 = LIN

    3 = GND


    Die Klima wird auch nicht permanent was senden/empfangen, da musste schon im Touchscreen die Klima ansteuern, dann wirste auch Nachrichten sehen können.

    308 GTi (╯°□°)╯︵ ┻━┻

    Edited once, last by Mittns ().

  • Der Touchscreen hat keine separaten Busleitungen, das geht alles über den LVDS Stecker.

    Ich habe den Screen noch nie selber ausgebaut, weiss aber von einem Youtube Film, dass da ein schwarzer und ein brauner Stecker neben dem weissen Stecker existiert. Hat da Jemand die Belegung??

    Die Klima wird auch nicht permanent was senden/empfangen, da musste schon im Touchscreen die Klima ansteuern, dann wirste auch Nachrichten sehen können.

    Das habe ich versucht, aber nichts punkto Klima entdeckt. Wenn ich das Gebläse um eine Stufe höher stelle, müsste doch ein einzelnes Datenpaket mit eben diesem Befehl auftreten. Ich glaube also definitiv nicht, dass auf diesem Bus etwas für das Klima läuft.

  • Ich habe den Screen noch nie selber ausgebaut, weiss aber von einem Youtube Film, dass da ein schwarzer und ein brauner Stecker neben dem weissen Stecker existiert. Hat da Jemand die Belegung??

    Bei den Smegs ist noch der Braune Stecker dabei, da werden die Touch Buttons u.a. mit gesteuert, war glaub ich auch LIN.

    Bei den neuen kapazitiven Touchscreens ist nur noch der schwarze Stecker dran für die Spannungsversorgung und der LVDS für das Videosignal und Bus.


    Der schwarze ist für Bus, siehe oben.




    Das habe ich versucht, aber nichts punkto Klima entdeckt. Wenn ich das Gebläse um eine Stufe höher stelle, müsste doch ein einzelnes Datenpaket mit eben diesem Befehl auftreten. Ich glaube also definitiv nicht, dass auf diesem Bus etwas für das Klima läuft.

    Am Infotainment hinten schon, sonst könnte man die Klima ja nicht regeln.

    Möglicherweise falsches ID Paar?

    Ansonsten mal alles loggen und währenddessen schalten.

    308 GTi (╯°□°)╯︵ ┻━┻

    Edited once, last by Mittns ().

  • OK, danke!

    Ansonsten mal alles loggen und währenddessen schalten.

    Habe ich schon einige Male gemacht, aber nichts isolieren können.

    Es könnte ja auch so sein, dass ein andauerndes "ping-pong" stattfindet, also z.B. jede Sekunde der Befehl neu gesendet wird. Etwa so: Anforderung: "Ventilator Soll = Stufe 5" , Antwort: "Ventilator ist auf Stufe 5", 1 Sec. später: "Ventilator Soll = Stufe 5" , Antwort: "Ventilator ist auf Stufe 5", usw. Nun schalte ich eine Stufe höher, dann ändert sich irgendwo 1 Bit oder Byte, und es läuft weiter so mit dem Wert 6. Alles in Hex natürlich....

    Fast alles, was ich auf dem Bus sehen kann, und das ist eine Menge, wiederholt sich in regelmässigen kurzen Abständen von 1 Sec. oder kürzer. Ohne zu wissen, welche ID das nun betrifft, ist es schwierig.


    Falls ich irgendwann weiterkomme, poste ich es hier. Im Moment lasse ich es ruhen.

    Bis hierhin mein bester Dank an Dich für Deine Mühe!

  • "Es könnte ja auch so sein, dass ein andauerndes "ping-pong" stattfindet, also z.B. jede Sekunde der Befehl neu gesendet wird. Etwa so: Anforderung: "Ventilator Soll = Stufe 5" , Antwort: "Ventilator ist auf Stufe 5", 1 Sec. später: "Ventilator Soll = Stufe 5" , Antwort: "Ventilator ist auf Stufe 5", usw. Nun schalte ich eine Stufe höher, dann ändert sich irgendwo 1 Bit oder Byte, und es läuft weiter so mit dem Wert 6. Alles in Hex natürlich.... "


    Das wäre, m. E., aus programmiertechnischer Sicht völliger Unsinn. Auch eine dauernde Abfrage ist nicht sinnvoll.

    An dieses Ping-Pong glaube ich nicht.

    Nur meine Meinung.

  • Eine andere Möglichkeit wäre, alle aktiven Can Frames zu filtern, bis nichts mehr da ist.

    Dann über Touchscreen die Klima ansteuern.


    Geht übrigens mit meinem Sketch:

    Siehe 'AUTO-Filter'.


    Sofern die Klima nicht permanent sendet, sollte bei Filterung die nicht mit gefiltert werden.

    Wenn der Filter dann deaktiviert wird, kann man die Klima mal ansteuern und dann sollte man was sehen können.


    Man kann auch manuell die Can ID's zur Filterliste hinzufügen und nach und nach die ganzen Nachrichten reduzieren.


    Probiers mal aus.

    308 GTi (╯°□°)╯︵ ┻━┻

  • Das wäre, m. E., aus programmiertechnischer Sicht völliger Unsinn. Auch eine dauernde Abfrage ist nicht sinnvoll.

    Oh doch, das macht durchaus Sinn. Damit kann überprüft werden, ob alle Komponenten in einem CAN-Netz korrekt angeschlossen sind und funktionieren. Bei medizinischen Hightechgeräten, die ich mal betreut habe, machte man das so. Fällt eine Komponente aus, gibt's eine Fehlermeldung. Jede Sekunde wurde so abgefragt: Controller X, bist du da? Ja, ich bin da. Stellglied Y, bist du da? Ja, ich bin da, usw. Also etwa so, wie man es im Funkverkehr gemacht hat, alle Stationen fragen ob sie ready sind.


    In der Zwischenzeit bin ich nun doch etwas weitergekommen und habe die relevanten Messages gefunden, die das Gebläse auf- und ab regeln:

    Gebläse stärker: 364 6 04 00 1E 78 00 00, 1x pro Tastendruck am Screen

    Gebläse schwächer: 364 6 08 00 1E 78 00 00, dito

    Gebläse keine Änderung: 364 6 00 00 1E 78 00 00, dieses wird laufend wiederholt wenn man nichts macht.


    Dies ist alles mal provisorisch, muss alles noch genauer getestet werden. Wie gesagt, dies läuft auf dem CAN INFO DIV Bus, nicht über den Diagnoseanschluss.


    Den tollen Sketch von Mittns probiere ich gerne mal aus, sieht super aus! DANKE!


    Melde mich wieder wenn ich weitergekommen bin.

  • Das ist schon auch im Automobilbereich üblich, die gleichen PDUs über CAN oder Ethernet alle x Millisekunden zu wiederholen, auch wenn sich der Inhalt nicht geändert hat.

    Damit wird eben genau der Ausfall der Leitung oder des Partnersteuergeräts erkannt.

    Als Maßnahme kann dann ein Ersatzwert angenommen werden, eine Fehlermeldung angezeigt werden, ein DTC gespeichert oder die Funktion abgeworfen werden.


    In diesen Fall ist dieses Ping-Pong wohl unnötig und findet nicht statt.

    Peugeot e-208 GT Pack in blau, bestellt 03/2022, geliefert 12/2022, neuer Motor&Getriebe 12/2025
    Überschussladen mit evcc

  • In diesen Fall ist dieses Ping-Pong wohl unnötig und findet nicht statt.

    Eben doch, diese Message wird genau alle 1000 mSec. wiederholt:

    Gebläse keine Änderung: 364 6 00 00 1E 78 00 00, dieses wird laufend wiederholt wenn man nichts macht.

    Ich war auch etwas erstaunt, aber so ist es. Fast alles, was auf diesem CAN-Bus läuft, wiederholt sich laufend. Das macht es etwas schwieriger, den wirklich relevanten Datensatz zu finden.

    Übrigens, mit der ID 350 wird das Display geupdatet, wie es scheint. Da kann man die Werte ändern, diese werden kurz angezeigt und dann gleich wieder zurück korrigiert.


    Sorry, die korrekte ID ist 364, nicht 346!! Habe ich korrigiert.

    Hier mal ein Screenshot, der die Zykluszeiten zeigt.


    Edited 3 times, last by Traction15x6: Ein Beitrag von Traction15x6 mit diesem Beitrag zusammengefügt. ().

Participate now!

Hey, it looks like you like this exchange, but you haven't created an account yet. With an account you can be informed about new answers, upload photos to our gallery, use our tools, thank others with a "Like" or help others yourself. Together we can help make this community something bigger.