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
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.ä.
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.
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.
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.
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
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
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
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.
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.
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.
[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]
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!
> 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