Ändern der Helligkeit auf einem Hitachi HD44780 LCD-Bildschirm

11

Ich beende ein Projekt - einen LED-Spielwecker. Da dies eine Uhr ist, muss ich einen Weg finden, um Energie zu sparen, was mein Uno R3 + gerade wie ein Politiker auffrisst. Meine Frage ist, wie kann ich den Bildschirm ausschalten oder die Hintergrundbeleuchtung mithilfe von Software nur auf einem Hitachi HD44780 16x2 LCD-Bildschirm ausschalten? Oder wie stelle ich einen Schlafmodus für eine Komponente ein? Ich habe vor, es auszuschalten, mit einem Ultraschall-Entfernungsmesser. Wenn ich näher komme, wird es auf dem Bildschirm eingeschaltet. Wenn etwas, das ich sage, keinen Sinn ergibt, bitten Sie mich um Klarstellung, ich bin in Eile.

Mr. Floppy
quelle
Ob dies überhaupt möglich ist, hängt ganz davon ab, wie Sie den LCD-Bildschirm angeschlossen haben. Der Befehlssatz HD44780 enthält keine Bestimmungen zur Steuerung der Hintergrundbeleuchtung. Sie müssten einen eigenen externen Mechanismus zur Steuerung der Hintergrundbeleuchtung hinzufügen.
Connor Wolf

Antworten:

8

Platzieren Sie einen Transistor in Reihe mit einem 33R-Widerstand zwischen dem LCD-Pin 16 (Hintergrundbeleuchtung) und GND und schalten Sie den Transistor mit einem digitalen Pin ein und aus. Auf diese Weise können Sie die Hintergrundbeleuchtung ein- und ausschalten.

Sie können die Helligkeit feiner steuern, wenn Sie einen PWM-Impuls an diesen Pin anlegen. Rufen Sie einfach an, analogWrite(D3, value)wo valuedie gewünschte Helligkeit ist.

Das Schema ist unten. Es ist von Freetronics 16x2 LCD SHield .

LCD-Helligkeitsregelung

Ricardo
quelle
+1 für den Schaltplan, obwohl ich nicht sicher bin, warum es zwei Widerstände gibt (R7 & R8).
Madivad
1
@ Madivad - Ich vermute, es geht darum, die maximale Verlustleistung zu erhöhen, die die Widerstände aufnehmen können. Die zwei parallelen 68R-Widerstände führen zu einem äquivalenten 34R-Widerstand, verdoppeln jedoch die maximale Leistung, die über einen einzelnen Widerstand abgeführt werden kann. Ich erinnere mich nicht, welche Widerstände von Freetronics empfohlen wurden, aber in meinem Fall habe ich zwei 1 / 4W 68R-Widerstände verwendet und die Platine funktioniert einwandfrei. Ich nehme auch an, dass 68R-Widerstände häufiger sind. Das gilt sicherlich für mich, da ich viele 68R-Widerstände in meinen Behältern habe und keine 33R-Widerstände.
Ricardo
Ich weiß, dass dies "alt" ist, aber ich hoffe, jemand wird dies bemerken ... Ich habe Probleme zu verstehen, wie der Transistor verbunden ist (da ich mit dem obigen Symbol für den Transistor nicht vertraut bin), wo das E, B, C verbinden mit?
Warath-Coder
@wara - Das ist ein Feldeffekttransistor (FET), kein BJT. Sie werden also versuchen, Drain, Source und Gate miteinander zu verbinden. In jedem Fall erhalten Sie bessere Hilfe, indem Sie eine separate Frage stellen, die mit dieser verknüpft ist.
Ricardo
5

Anstatt die Hintergrundbeleuchtung direkt an V + und GND zu binden, schließen Sie sie an einen PWM-Pin an (möglicherweise müssen Sie einen separaten Treiber verwenden, wenn der Pin nicht genügend Strom liefern / senken kann). Auf diese Weise können Sie die Helligkeit über steuern analogWrite().

Schalten Sie das LCD-Display aus ( LiquidCrystal::noDisplay()), wenn Sie es nicht aktiv verwenden. Der Inhalt bleibt im Speicher, aber die LCD-Segmente werden nicht angesteuert.

Setzen Sie die verschiedenen Bits im PRRRegister, um alle nicht verwendeten Peripheriegeräte zu deaktivieren.

Und vergessen Sie nicht, die CPU in den Ruhezustand zu versetzen, wenn sie nicht ausgeführt werden muss . Weitere Informationen hierzu und zum PRRRegister sowie die <avr/sleep.h>Dokumentation zu AVR Libc finden Sie im Abschnitt " Energieverwaltung und Schlafmodus" des Datenblattes .

Ignacio Vazquez-Abrams
quelle
3
Das Schlafen der MCU ist sinnlos, da der Rest der Teile eines gemeinsamen Uno so viel Strom verbraucht, dass der Gesamtverbrauch nicht wesentlich reduziert wird.
Connor Wolf
2
Wirklich, wenn Sie tatsächlich möchten, dass ein Arduino stromsparend ist, benötigen Sie ein Arduino Pro (oder ein anderes Board ohne integrierte USB-Serie), und dann müssen Sie einen Regler mit einer anständig niedrigen Stromaufnahme im Ruhezustand einsetzen darauf. Es ist ein bisschen involviert.
Connor Wolf
Absolut. Jemand, der bis zum letzten bisschen Energie sparen möchte, wird sein eigenes Board entwerfen und seine Komponenten entsprechend spezifizieren.
Ignacio Vazquez-Abrams
Ja, aber mein Punkt ist, dass Sie auf den meisten Arduino-Boards nicht einmal eine sinnvoll relevante Energieeinsparung erzielen können, da selbst ihre Vregs einen schrecklichen Ruhestrom haben (2 ma +, IIRC). Dann gibt es den FTDI / ATmega16U2, den Sie nicht ausschalten können, etc ....
Connor Wolf
@ Mr.Floppy: IOW, such dir etwas anderes aus. Etwas mit weniger Stücken.
Ignacio Vazquez-Abrams