Forum: Mikrocontroller und Digitale Elektronik Segment LCD mit Raspberry Pi auslesen


von Kevin (Gast)


Lesenswert?

Hallo,

ich besitze  eine Lüftungsanlage mit einem Segment-LCD Display. Auf dem 
Display gibt es feste Segmente und vier 7-Segmentanzeigen. Das Display 
zeigt die aktuelle Lüfterstufe, Filterwechselhinweis, 
Lüftungsprogrammnummer usw. Da die Lüftungsanlage in einer Zwischendecke 
hängt bringt mir das Display nichts. Ich möchte einige der Segmente 
auslesen, um diese auf meiner Hausautomatisierung anzuzeigen. Das 
Display selbst besitzt 48 Pins und wird von folgendem Controller 
angesteuert: NXP PCF8576CT. Ich konnte bereits dekodieren, welcher Pin 
am Display welches der für mich relevanten Segmente ansteuert. Wenn 
zwischen Pin und Ground 5V Wechselspannung anliegen leuchtet 
entsprechend das Segment.

Um die Signale vom Display zum Raspberry Pi zu bekommen, auf welchem 
meine Hausautomation läuft habe ich folgende Idee.

- an Signalpin und Ground einen Gleichrichter und Spannungsteiler um aus 
den 5V AC ca. 3,3 V DC zu machen --> mit dem Signal dann auf einen GPIO 
eines Raspberry Pis --> wenn das Segment angesteuert wird, dann geht 
entsprechend der Eingang am Pi auf High --> das Signal lässt sich dann 
wiederum per SSH über WLAN an den Pi mit der Hausautomatisierung 
übertragen

Sobald das Signal am Pi detektiert wird funktioniert die Übertragung. 
Bis dahin fehlt mir leider das Fachwissen und das Geld zum probieren, 
denn die Platine mit Display und Controller habe ich nur einmal.

Ist meine Idee so umsetzbar oder habe ich einen Denkfehler? "Verkraftet" 
der Controller die zusätzliche Last der Gleichrichter, Spannungsteiler, 
Pi, usw. Gibt es vielleicht einen einfacheren Weg?

Danke für eure Hilfe,
Kevin

von TestX (Gast)


Lesenswert?

Die 7 Segment-Anzeige wird mir sicherheit mit Gleichstrom funktionieren 
und nicht Wechselstrom...

Wenn das Modul nicht mit einer potentialfteien Spannungsversorgung 
ausgestattet ist bekommst du ggf Probleme.

Bei den vielen IOs benötigst du auf jedenfall Multiplexer in Form von 
Schieberegistern o.ä.

von Kai F. (k-ozz)


Lesenswert?

Anstatt die Backplane- und Segmentausgänge des PCF8576 auszuwerten, 
sollte es deutlich einfacher sein, wenn du die per I²C in den PCF8576 
geschriebenen Werte mitliest und entsprechend auswertest.
Der PCF besitzt intern nur 40x4 Bit RAM, die irgendwie den 
Displayelementen zugeordnet sind. Wenn du die Schreibzugriffe auf diesen 
RAM auswertest, dann kannst du die Darstellung rekonstruieren.

von Peter D. (peda)


Lesenswert?

Kevin schrieb:
> Wenn
> zwischen Pin und Ground 5V Wechselspannung anliegen leuchtet
> entsprechend das Segment.

Nö. Das Segment kriegt immer AC. Es leuchtet, wenn sie zur Backplane 
gegenphasig ist. Bei mehreren Backplanes wird es noch komplexer.

Der Chip ist doch I2C, da kann man doch leicht mitlauschen. Könnte 
allerdings nen RasPi überfordern. Dann könnte man z.B. nen ATtiny2313 
als I2C zu RS-232 Umsetzer programmieren.

von Manfred (Gast)


Lesenswert?

TestX schrieb:
> Die 7 Segment-Anzeige wird mir sicherheit mit Gleichstrom funktionieren
> und nicht Wechselstrom...
Dein Text enthält jedes Menge Verbesserungspotential!

LC-Displays dürfen keine Gleichspannung bekommen, weil sie sich sonst 
zerlegen, Elektrolyse. Das bekommt man hin, in dem man Segmente und 
Backplane umpolt.

von holger (Gast)


Lesenswert?

Einfach ne Webcam vor das Display packen.

von Patrick J. (ho-bit-hun-ter)


Lesenswert?

Hi

Finde den I²C-Ansatz interessant.
Wenn die WebCam eine IP-Cam wird, brauchst Du nur noch einen Browser, um 
auf das Display zu schauen - was allerdings Deiner Hausautomatisierung 
nicht zuträglich ist.

Zum Mitschneiden des I²C-Bus wäre ein LogicAnalyser keine schlechte 
Investition - habe selber einen Billigen aus chinesischer Herkunft, echt 
nett, das Teil.
z.B.:
eBay:200983620192
Kommt bei mir aber nur auf 8MHz, für I²C reicht Das aber trotzdem :)
Damit kannst Du 'mitschreiben', was dem Display geschickt wurde - unter 
Anderem z.B. die Display-Adresse - man muß ja wissen, welche Daten man 
vor sich hat.

MfG

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?


von Kevin (Gast)


Lesenswert?

OK, gesetzt dem Fall ich bekomme es hin den I2C Bus mitzuloggen, was 
mache ich mit den Daten?

Habe ich es soweit richtig verstanden, dass ich dann den Bus loggen 
muss, wenn die von mir benötigten Segmente angesteuert werden. Wenn ich 
das dann entsprechend dekodiert habe, kann ich bei wiederkehrender 
"Zeichenkette" eine Aktion auslösen?!

Kann ein Sniffer bzw. Logic Analyzer eine Aktion auslösen?

MfG

von Patrick J. (ho-bit-hun-ter)


Lesenswert?

Hi

Nein

Der LA schneidet 'nur' den Bus mit.
Als Schmankerl kann ein Protokoll aufgeschlüsselt werden.
Dort kannst Du dann z.B. die ID des I²C-Baustein sehen und, was zu 
Diesem geschickt wird.
Dabei kommen aber sehr viele Daten zusammen!
Nur um ein einzelnes 'A' an ein LCD-Display über einen I²C-Adapter zu 
übertragen, sind

-Start
- ID
- vorderes Nibble + Steuerbits
-Stop
-Start
- ID
- hinteres Nibble + Steuerbits
-Stop

nötig (zumindest steuert so auch ein Arduino ein I²C-Display an).
Davor wird das Display noch initialisiert, was ebenfalls 'einen Haufen' 
Befehle entspricht.

Aber: Man kann so an die erforderlichen Informationen kommen, Die man 
braucht.
So musst Du z.B. nur auf Pakete mit der ID des Display achten.
Klar, wenn das Display der einzige I²C-Teilnehmer ist, hast Du Nichts 
gewonnen dadurch.
Dann brauchst Du die Steuerbits nicht (damit werden E, RS, RW sowie die 
Hintergrundbeleuchtung erschlagen).
Du kannst bei Deinem Sniffer also schon die beiden Nibble wieder 
'zusammenkleben', wodurch die Datenflut schon auf ein Viertel sinkt.

MfG

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Patrick J. schrieb:
> Nur um ein einzelnes 'A' an ein LCD-Display über einen I²C-Adapter zu
> übertragen

Der PCF8576 ist ein Segment-Controller, der bis zu 160 Segmente eines 
Displays ansteuern kann.

Was Du beschreibst, ist das Ansteuern eines HD44780-Displays im 
4-Bit-Mode, das hat mit diesem Controller hier rein gar nichts zu tun.


Wenn man herausfinden will, was auf dem Display der Lüftungsanlage 
angezeigt wird, muss man herausfinden, welche Segmente des Displays 
angesteuert werden. Das geht am einfachsten durch Mithören der 
Aktivitäten auf dem I2C-Bus, denn da wird dem PCF8576 mitgeteilt, welche 
Segmente er ein- und welcher er ausschalten soll.

Das Protokoll ist im Datenblatt beschrieben:

http://www.nxp.com/documents/data_sheet/PCF8576C.pdf

Welche Bedeutung diese Segmente haben muss man durch Analyse der 
Schaltung herausfinden (Displayglas sehr genau ansehen, 
Anschlussbelegung 'rausklingeln).

Daß sich eine "7" ergibt, wenn die Segmente A, B und C angesteuert 
werden, das ergibt sich dann.

von Michael B. (laberkopp)


Lesenswert?

Kevin schrieb:
> Ich konnte bereits dekodieren, welcher Pin
> am Display welches der für mich relevanten Segmente ansteuert. Wenn
> zwischen Pin und Ground 5V Wechselspannung anliegen leuchtet
> entsprechend das Segment.

Der PCF8576CT ist ein Multiplexcontroller mit 4 Backplanes.

Der steuert die Segmente nicht mit LO/HI an, sondern mit 3 oder 4 
Spannungen die nur analog erfasst werden können.

Vergiss deinen Ansatz mit dem rPi.

Versuche, die Eingangsleitungen des PCF8576CT zu erfassen. SDA und SCL 
sind einfacher als 40 Segmente und 4 Backplanes.

von Joe F. (easylife)


Lesenswert?

Kevin schrieb:
> Habe ich es soweit richtig verstanden, dass ich dann den Bus loggen
> muss, wenn die von mir benötigten Segmente angesteuert werden. Wenn ich
> das dann entsprechend dekodiert habe, kann ich bei wiederkehrender
> "Zeichenkette" eine Aktion auslösen?!

Besser wäre das Protokoll dann auch komplett zu decodieren, so dass man 
direkt die angezeigten Ziffern rekonstruieren kann.

> Kann ein Sniffer bzw. Logic Analyzer eine Aktion auslösen?

Die sehr teuren Modelle: ja.
Meistens funktionieren die Logicanalyzer aber nur mit angeschlossenem 
Rechner etc.
In erster Linie dient dir (auch ein einfacher Logicanalyzer) dazu die 
Daten mal aufzuzeichnen, um sie dann in Ruhe analysieren zu können.
Sehr vorteilhaft ist es, sich zu den mitgeschnittenen Daten den 
angezeigten Display-Wert zu notieren... ;-)

Für deine geplante Anwendung würdest du dann im 2. Schritt einen 
Mikrokontroller so programmieren, dass er die I2C Daten "mitschneidet", 
und mit der gewonnenen Erkenntnis über das Protokoll die Anzeigedaten 
rekonstruiert.
Ab da hast du einfach eine Zahl von 0...9999

Als 3. Schritt wird dieser Controller dann mit der Hausautomation 
verbunden um den Anzeigewert weiterzugeben.

: Bearbeitet durch User
von Horst (Gast)


Lesenswert?

[OT]
Peter D. schrieb:
> Beitrag "I2C (TWI) Sniffer mit AVR"
Das Ding war goldwert beim Recyceln von LCDs aus Fujitsu Computern, auf 
diesem Weg mal Danke für die Arbeit
[/OT]

von Kevin (Gast)


Angehängte Dateien:

Lesenswert?

Ich bin nach langer Zeit endlich einmal dazu gekommen, die 
Lüftungsanlage so zu erweitern, dass ich den I2C Bus über einen 
Logicanalyzer aufnehmen kann.
Eine Abfolge habe ich euch angehängt. Kann mir bitte einer von euch 
erklären, was diese Abfolge bedeutet? Welcher Teil der Adresse 
entspricht, für welche die nachfolgenden Informationen gedacht sind und 
welche "Werte" an diese Adresse übergeben werden?

Danke!

von Olaf (Gast)


Lesenswert?

> Kann mir bitte einer von euch erklären, was diese Abfolge bedeutet?

Das hat NXP schon gemacht. Sie nennen es Datenblatt zum PCF8576. Es ist 
an dir das zu lesen.

Olaf

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.