LIN Ansteuerung der Klima via Mikrocontroller

  • Normalerweise stört die LED nicht wenn du den PIN als Input nutzt, die ist auf den Arduinos entkoppelt durch nen Mosfet/Transistor.. das stört also nicht.

    Als "Profisoftware" kannst du BUSMASTER mal anschauen - ist zwar länger nicht weiter entwickelt, aber OpenSource und unterstützt viele Interfaces.


    Ich arbeite auch an einem CAN-Analyse-Tool. Das ist leider noch nicht fertig :) Die Software braucht noch ein bisschen code ;)

  • Besten Dank Souko! Ich werde es also nochmals versuchen, hatte früher Probleme mit Pin 13, weiss aber jetzt nicht mehr so genau welche ...... Werde also Pin 13 im Sketch aktivieren und den Switch SL mit einem Befehl belegen. Werde hier gerne berichten, wenn es etwas Neues gibt.


    Busmaster: Werde mich darin vertiefen, ist für mich reichlich kompliziert.

  • Ich habe gesehen, das es den UNO Version R3 dazu braucht, da ist die LED entkoppelt, bei den älteren Versionen nicht.

    Verwende jetzt einen neuen R3 (SMD), Leider funktioniert PIN 13 aber weiterhin nicht. Es scheint, dass PIN 13 dauerhaft auf Ground gezogen ist. Beim Einschalten läuft der auf diesem Pin vorgesehene Ablauf 1 x, also so wie wenn der Switch betätigt wurde, dann geht hier aber nichts mehr. Konfigurieren als INPUT kann man den Pin nicht, da gibt es eine Fehleranzeige wegen doppelter Konfiguration.


    Frage: Kann man eigentlich den Pin 10 auch verwenden? Da liegt doch der CS vom Shield drauf? Oder gibt das Komplikationen?


    Vielen Dank im Voraus für eure Hilfe!

  • Nein, 10 kannst du nicht nutzen, wie du richtig Erkannt hast, liegt der CS des Shield drauf. Da darf nix anderes drauf.

    Das PIN 13 auf GND gezogen wird ist seltsam. Hast du da irgendwas anderen dran ? Pullup vergessen ? Und magst du mal deinen aktuellen Sketch teilen!? Weil doppelte konfiguration wundert mich gerade..

  • OK, ich verwende deinen Sketch mit ganz wenigen Änderungen. So habe ich z.B. das SEND INTERVAL von 100 auf 150 ms erhöht, weil sonst der Encoder "knobleft" bzw. der Controller manchmal Schritte verliert. Alle 3 Encoders haben Pullups, alle sind gleich verdrahtet.

    Die Fehlermeldung kommt vom ezButton.h, denke ich.

    Hier der Sketch:

    Peugeot_308_Climacontrol_24.07.25.ino

  • AH, also alle mit externem Pullup !?


    hm, dann sollte das so eigentlich laufen. Zur Sicherheit mach mal diesen beim Button-Konstruktor:


    ezButton buttonSR(6, EXTERNAL_PULLUP);

    ezButton buttonSM(9, EXTERNAL_PULLUP);

    ezButton buttonSL(13, EXTERNAL_PULLUP);


    also EXTERNAL_PULLUP anhängen. Der Standard ist, das wenn man das weglässt, aktiviert er intern den PULLUP...

  • OK, habe ich so gemacht. Leider kein Erfolg.

    Ich hätte schon früher darauf kommen sollen, mal die Spannung am fraglichen Pin 13 (und allen weiteren) zu messen. Also, ich drücke und halte den Reset-Taster = Spannung 5 V, dann lasse ich los = Spannung 0,01 Volt, und so bleibt es auch. Der Sketch geht also richtigerweise davon aus, dass der Switch dauernd geschlossen ist. Bei den anderen Pins ist das natürlich nicht so. Scheint nicht beeinflussbar zu sein!?


    Wieder eine Anfänger-Frage: Ist es richtig, dass die Pins 0-3 für meine Anwendung tabu sind? Sonst könnte ich ja z.B. Pin 3 nehmen.

  • also 2 und 3 sollten gehen. Auf 0 und 1 liegen TX und RX für deine serielle schnittstelle.

  • Habe ich versucht. Pin 3 geht offenbar, Pin 2 nicht, liegt immer an Ground. Verstehe diese Interrupt-Pin Sache nicht so ganz, aber wenn's so läuft ist das Problem gelöst.


    Ganz vielen Dank für deine Hilfe. :red_heart:

  • Die Anlage läuft prima, hat sich sehr bewährt, und wir benutzen sie bei jeder Fahrt.

    Nun wäre es interessant, herauszufinden, ob das selbe auch via OBD-Stecker gemacht werden könnte (Anstelle dem Eingriff auf das CAN-INFO-DIV Netzwerk). Zuerst mit Draht-Verbindung, später Wireless.

    Funktioniert leider erst einmal nicht, offenbar braucht es eine andere Adressierung, oder die Klimaanlage lässt sich überhaupt nicht auf diesem Weg ansteuern. Ziel wäre eine kleine Fernsteuerung zu bauen, die alle möglichen Funktionen ansteuern könnte. Just for Fun!


    Weiss hier Jemand genauer Bescheid?

  • Über die Onbord Diagnostic (500kbps Pin 3+8) kannste die Klima und alles andere direkt ansteuern.


    Ansonsten wäre es m.E. nur möglich, wenn du zwischen BSI und der Klimasteuerung gehst, da das BSI ja als Gateway dient und nicht alles durchlässt.

    Was anderes würde mir jetzt nicht einfallen.

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

  • Über die Onbord Diagnostic (500kbps Pin 3+8) kannste die Klima und alles andere direkt ansteuern.

    Danke, Mittns!

    OK, habe ich versucht, das System nimmt die Message ( 0x364 6 0x08 0x00 0x1E 0x78 0x00 0x00 für Fan Up) entgegen (quittiert sie), aber null Reaktion. Das mit und ohne vorauseilendem 0x752 3 02 10 03.

    Es scheint, man kann doch nicht alles via ODB ansteuern? Oder aber es braucht eine andere Adressierung, oder so etwas.


    Nachtrag: Ich habe da noch eine grundsätzliche Frage: Auf Grund von was entscheidet eigentlich das BSI, wohin (zu welchem Steuergerät) eine Message geleitet wird. Ist es nur die reine ID, oder doch noch etwas wie ein Kontrollzeichen oder sonst etwas??

  • Das mit und ohne vorauseilendem 0x752 3 02 10 03.

    Das muss vorausgeschickt werden, denn ohne Diagnosemodus (10 03) wird es aus Sicherheitsgründen sehr wahrscheinlich nicht funktionieren.

    Probier das mal aus.


    Nachtrag: Ich habe da noch eine grundsätzliche Frage: Auf Grund von was entscheidet eigentlich das BSI, wohin (zu welchem Steuergerät) eine Message geleitet wird. Ist es nur die reine ID, oder doch noch etwas wie ein Kontrollzeichen oder sonst etwas??

    Nur anhand der RX und TX ID.

    Jedes Steuergerät hat ja extra eine eigene eindeutige ID dafür.

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

  • Ich habe jetzt verschiedene Varianten probiert, leider ohne jeden Erfolg. Dabei habe ich auch berücksichtigt, was du im Post #42 beschrieben hast, also dass der 1. Byte bei PSA quasi nochmals den Wert des dlc wiederholt. Alle Inputs werden vom System gelesen und quittiert, aber weiter regt sich nichts.

    Jetzt frage ich mich, ob es überhaupt vorgesehen ist, das Klima via ODB 3+8 beeinflussen zu können. Who knows? Oder aber die erforderliche ID ist anders als 364.

    Ok, das Ganze läuft ja prima via CAN-INFO-DIV.

  • Jetzt frage ich mich, ob es überhaupt vorgesehen ist, das Klima via ODB 3+8 beeinflussen zu können. Who knows? Oder aber die erforderliche ID ist anders als 364.

    Ok, das Ganze läuft ja prima via CAN-INFO-DIV.

    Eigentlich ja, denn über Diagbox kann man Stellgliedtests machen, da müssen die Steuergerät drauf reagieren.

    Was aber sein kann ist, dass die Befehle für dieselbe Funktion über OBD anders sind.


    Hattest Du Diagbox da?

    Wenn ja, da kannst du die Steuergeräte ansteuern und mit nem anderen Mikrocontroller "lauschen". ^_^

    So mache ich das immer.

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

  • Diagbox habe ich leider nicht, ich weiss auch nicht, welche ich genau brauche und wo ich sie kaufen soll, für einen genauen Hinweis bin ich sehr dankbar!

    Im Moment muss ich das mal ruhen lassen, wie gesagt es läuft ja prima via internem CAN.

    Ich suche auch immer noch nach der Möglichkeit, die EInparkautomatik direkt mit einer Taste zu aktivieren und so die 3 nötigen Schritte auf der Touchscreen zu umgehen bzw. zu vereinfachen.

  • Ich suche auch immer noch nach der Möglichkeit, die EInparkautomatik direkt mit einer Taste zu aktivieren und so die 3 nötigen Schritte auf der Touchscreen zu umgehen bzw. zu vereinfachen.

    Hast du links neben dem Lenkrad nicht die Taste?

    Bei den früheren Modellen war zumindest neben der Eco Taste auch eine für die Einparkautomatik.

    Ich weiß jetzt nur nicht, ob das sofort funktioniert oder ob man dennoch am Touchscreen bestätigen muss.


    Aber!

    Wenn Du am Touchscreen bestätigst, wird ja auch eine Can Nachricht an das Steuergerät geschickt, lies doch einfach die mal per Arduino aus und sende diese Nachricht per Arduino direkt an das Steuergerät.

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

  • Hast du links neben dem Lenkrad nicht die Taste?

    Ja, so war es bei meinem 308SW von 2014. Auf dem Display kam dann direkt die Auswahlseite, wo man wählen konnte, welches Manöver gemacht werden soll. Von der Taste ging direkt eine Leitung auf einen Pin des BSI.

    Wenn Du am Touchscreen bestätigst, wird ja auch eine Can Nachricht an das Steuergerät geschickt, lies doch einfach die mal per Arduino aus und sende diese Nachricht per Arduino direkt an das Steuergerät.

    Werde ich so machen, man muss halt jeden der X möglichen Frames einzeln überwachen ob sich ein Wert ändert wenn man das Einparksystem anwählt. Also eine Stecknadel im Heuhaufen suchen ... :/

    Bericht folgt wenn erfolgreich.

  • Wenn ich mein Windows Tool mal fertig machen würde, wäre es einfach.

    Ich hab eine Filter-Funktion gebaut, die alle Nachrichten auf den Bus filtert.

    Das war mal gedacht, um Tastenbefehle zuordnen zu können und hat ganz gut funktioniert.


    Aber ich will ja keine halbgaren Tools veröffentlichen.

    Da schreit mein Monk. XDD


    Aber ggf. gibt's ja noch gleichwertige Tools im Netz.

    Ansonsten fiele mir noch ein, dass Du einfach den Bus vom Navi trennst und dann vom Touchscreen aus bestätigst, dann sollten sich die Nachrichten ja in Grenzen halten.

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

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.