I2c 2004 auf Oled

Hallo,

Ich habe in meinem Seat Leon von 2001 eine Haldexsperre welche aus einem Steuergerät besteht und mit einem i2c 2004 LCD Display den Zustand des Steuergerätes anzeigt, die erste Zeile zeigt immer „Haldex V 3.8“
Die zweite Zeile zeigt „Strasse“ oder „Rennen“
Die dritte den Sperrgrad in Prozent und die vierte den Ladedruck,
Das Steuergerät ist Vergossen und greift in den Can Bus ein, Jetzt Stört mich das das Fette Display das ganze Lüftungsgitter Verbaut, im Tacho ist exakt Platz für ein 128x32 Oled Display, und ich würde gerne das LCD ersetztn, daher die Frage, ist es Möglich den i2c Bus auszulesen, eventuell kann ich das LCD Display irgendwo versteckt platziert lassen wenn es nötig ist, ich weiß auch nicht ob das LCD im Störfall noch etwas anderes anzeigt.

Danke für eure antworten

Du könntest einen I2C Slave bauen, der den LCD immitiert.
Der gibt nämlich ggfls. auch einige Dinge zurück.

Mit den empfangenen Daten könnte man dann einen Umsetzer bauen und einen anderen Display ansteuern...

Kannst du mal ein paar Fotos von dem Display machen?

Von vorne mit Text, von hinten, von dem Anschluss, ...

Edit: Warum auch immer die Forensoftware das als Antwort auf Deinen Beitrag markiert - ich weiß es nicht. Gedacht war #1.

Ja, z.B. mit so einem kleinen Analysator (Beispiel-Link) und der Logic 2-Software von Saleae.

Wenn Du das originale Display nicht abklemmen kannst, wird es m.E. schwierig (*). Das Steuergerät kennt nur ein Display auf einer bestimmten Adresse, ein zweites mit derselben Adresse parallel wird nicht funktionieren; es kann nur ein Gerät die Übertragung bestätigen (ACK).

(*) Vielleicht ginge da was mit einem FPGA-Board, das nur horcht und die Display-Kommandos auf eine zweite I2C spiegelt. Wäre für mich ein interessantes Ruhestandsprojekt - "dat kriegen wir später" (frei zitiert nach Feuerzangenbowle).

Hier sind ein paar fotos


Ich möchte das originale display schon abklemmen aber ist es dann noch möglich zu erkennen was es anzeigt da ich vermute dass es im störfall oä dann etwas anzeigt dass ich jetzt nicht sehe und auslesen kann

Ich geh mal von einem HD44780 kompatiblen LCD Controller aus. Der wird per Bitbanging über ein I2C IO-Expander mit Daten versorgt.

Ich denke du hast 2 Möglichkeiten:

  1. Den Arduino als I2C Slave laufen zu lassen und das Bitbanging zu dekodieren
  2. Den Arduino parallel zum LCD interface anzuschliessen.

Im Datenblatt zum Controller sieht man unter Interfacing to the MPU wie E, R/W und RS gesetzt werden müssen um mit dem Controller zu reden. Das müsstest du im Arduino abbilden. Darauf aufbauend dann noch die Register und Text RAM.

Wenn das durch ist, kannst du dir Gedanken machen, wie das wieder ausgegeben werden soll.

1 Like

Nimm Dir eine LCD-Lib und schau Dir an, was da auf dem I2C-Bus passiert.
Dann kannst Du daraus die jeweiligen Funktionen nehmen und anstelle von schreiben einfach lesen.

Mit den empfangenen Daten beschreibst Du einen anderen Display.

Ist das Display steckbar? Frage erübrigt sich - hab das Bild vergrößert :wink:
Dann besorg Dir einen Connector, wie er auf dem Board ist, damit Du einen Adapter bauen kannst.

Alternativ: Nimm einen 8574, und decodiere dann das Signal was da parallel raus kommt. Das wird vermutlich sogar einfacher sein, da Du die gesamte Kommunikation nicht beackern musst und Dir damit auch die Möglichkeit bleibt, den eigenen I2C als sender zu verwenden.

Wie würde ich das jetzt machen?

Ein Aufbau mit 2 Arduinos und einem "Standard" Arduino I2C LCD.
Und dazu noch ein Logikanalyzer. Die Saleae Nachbauten sind nicht so teuer...

Aufbau nach 2. (Arduino parallel zum LCD)

Dann erstmal die Bus Kommunikation implementieren.

Also wie wird aus dem Pin Pegel ein Aufruf zu:

data = lcd.readRegister();
data = lcd.readData();
lcd.writeRegister(data);
lcd.writeData(data);

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.