Forum: Mikrocontroller und Digitale Elektronik I2C Expander + LCD: Backlight auslesen


von FrickelFranz (Gast)


Angehängte Dateien:

Lesenswert?

Beim Chinamann gibt es ja nicht nur die billigen ks0066u kompatiblen 
1602 LCD Module, sondern auch passende Aufsteckboards um diese mittels 
eines PCF8574 an einen I2C Bus zu klemmen. Bei diesen Boards wird gerne 
auch eine Leitung des PCF8574 verwendet um die Hintergrundbeleuchtung 
des LCDs zu steuern. Mich hat dabei geärgert, dass ich zwar prima das 
Licht an/aus machen konnte, aber nicht abfragen konnte, ob es gerade an 
/ aus ist. Der Grund war, dass als Treibertransistor ein einfacher NPN 
verwendet wurde. So kann natürlich nie ein Pegel über der BE Spannung 
anliegen - man liest immer low.
1
   5V
2
    +------+
3
    |      |
4
   4.7k   LED
5
    |     /
6
i/o-+----|
7
          \
8
          GND

Ersetzt man jedoch den Bipolartransistor durch einen Mosfet (z.B. 
2N7002), dann funzt das prima. Passte auf meinem Adapterboard auch vom 
Pinout.
Problem solved.

: Bearbeitet durch Admin
von Karl M. (Gast)


Lesenswert?

Hallo FrickelFranz,

das verstehe ich nicht!
Wenn ich das BL einschalte weis ich es doch schon, warum sollte ich den 
Zustand zurück lesen wollen?

von FrickelFranz (Gast)


Lesenswert?

Du weißt es nur, wenn Du es Dir merkst. In bestimmt > 90% der 
Anwendungen wird es sicherlich einfacher sein sich dieses eine Bit 
irgendwo zu merken. Wenn man aber so wie ich die Designentscheidung 
trifft, die Zustände von 16 LCDs nicht im knappen Ram des µCs spiegeln 
zu wollen, dann kann man diesen einen Transistor austauschen und dieses 
eine Bit Ram durch ein paar Dutzend Bytes Code im Flash kompensieren. Je 
nach Aufgabenstellung schmeißt man da natürlich mit dem Schinken nach 
der Wurst.

von Peter D. (peda)


Lesenswert?

16 LCDs an einem MC und dabei die Beleuchtung getrennt schaltbar, ist 
schon ungewöhnlich.
Und ob das wirklich ein so kleiner MC schaftt, wo 2 Byte RAM schon 
zuviel sein können.

FrickelFranz schrieb:
> Je
> nach Aufgabenstellung schmeißt man da natürlich mit dem Schinken nach
> der Wurst.

Ja, der Overhead für das Rücklesen, Manipulieren und Schreiben dürfte 
recht hoch sein.

von FrickelFranz (Gast)


Lesenswert?

Och geht eigentlich - zumindest was den Code betrifft. Den Code für I2C 
und den PCF8574 braucht man sowieso. Und ob ich nun beim Verwalten des 
Backlight Status aufs Ram oder auf den PCF8574 zugreife macht nicht viel 
Unterschied. Bei der Lauf- und Antwortzeit sieht das dann natürlich ganz 
anders aus. Aber ob Beleuchtung einschalten nun 500ns oder 300ms dauert 
ist ziemlich wumpe. Helligkeitsreglung per PWM via I2C mach ich nicht, 
wäre ja auch eher ein fragwürdiges Unterfangen.

von Karl M. (Gast)


Lesenswert?

Danke FrickelFranz,

ich interessiere mich häufig für die Fragestellung und die gewonnene 
Lösung.
Danke für die ausführliche Darstellung !

Daumen hoch !

FrickelFranz schrieb:
> Du weißt es nur, wenn Du es Dir merkst. In bestimmt > 90% der
> Anwendungen wird es sicherlich einfacher sein sich dieses eine Bit
> irgendwo zu merken. Wenn man aber so wie ich die Designentscheidung
> trifft, die Zustände von 16 LCDs nicht im knappen Ram des µCs spiegeln
> zu wollen, dann kann man diesen einen Transistor austauschen und dieses
> eine Bit Ram durch ein paar Dutzend Bytes Code im Flash kompensieren. Je
> nach Aufgabenstellung schmeißt man da natürlich mit dem Schinken nach
> der Wurst.

von Joe F. (easylife)


Lesenswert?

Typische "Deutscheland-Mann" Verschlimmbesserungs-Lösung.

Wenn man schon unbedingt 2 Byte(!) RAM einsparen muss, und sich der 
ausgewählte I2C Expander die Output-Bits nicht merken kann, dann nimmt 
man eben einfach einen anderen, passenden Expander (z.B. TCA9534). Das 
kostet keinen Cent mehr und man muss nicht an fertigen Boards 
rumbasteln.

von FrickelFranz (Gast)


Lesenswert?

Joe F. schrieb:
> Typische "Deutscheland-Mann" Verschlimmbesserungs-Lösung.

Moa! Also Deine Nörlgelei hat viel mehr "typisch deutsch" im aller 
übelsten und negativsten Sinne als meine LÖSUNG! Du nörgelst erst mal 
rum, ganz offensichtlich ohne überhaupt ansatzweise das Problem 
begriffen zu haben. Sonst würdest Du schließlich nicht gleich von einen 
ganzen Expander-Tausch brabbeln, obwohl der überhaupt nichts mit den 
Problem zu tun hat. Genau das ist die Art von Deutschtum, für die man 
sich nur schämen kann.

Fail! Ungenügend! Setzen!

Nächster bitte.

von Joe F. (easylife)


Lesenswert?

FrickelFranz schrieb:
> ohne überhaupt ansatzweise das Problem
> begriffen zu haben

Guck dir die Unterschiede zwischen dem TCA9534 und dem PCF8574 erstmal 
an. Vor allem in Bezug auf die Möglichkeit den Ausgangsstatus 
rückzulesen...

FrickelFranz schrieb:
> Deutschtum, für die man
> sich nur schämen kann.

Apropos schämen, "Chinamann" kommt sehr rassistisch rüber.

: Bearbeitet durch User
Beitrag #5019035 wurde vom Autor gelöscht.
von Peter D. (peda)


Lesenswert?

An der Lösung gibt es natürlich nichts auszusetzen, auch wenn man das 
Register nicht zurück lesen will.
Ich setze vorzugsweise nur noch FETs zum Schalten von Lasten ein. Der 
Spannunsgabfall ist geringer und man braucht keinen Basisstrom.
Es gibt nur noch wenige Anwendungen, wo ein BJT Vorteile hat.

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.