Hallo zusammen,
bei meinen Basteleien bin ich auf einen Punkt gestoßen den ich Euch nicht vorenthalten möchte.
Ich verwende sehr häufig LCD-Displays von electronic assembly vom Type EA DOG-M xxx. Egal ob 081 oder 162 oder 163. Wie im beigefügten Bild verwende ich die Standardbeschaltung bei einer Betriebsspannung von 5V im 4-Bit-Modus.
Nun kam ich auf die Idee, im Betrieb um Strom zu sparen das LCD-Display "hart" abzuschalten. Dies wollte ich über eine Transistorstufe realisieren welche mir den Pin(26) VDD schaltet. Dabei stellte ich - wie kann es auch anders sein - BackPowering fest da sich das Modul die notwendige Spannung "fast" gänzlich über andere Wege "organisiert".
Folgendes habe ich durch Tests herausgefunden welches auch durch electronic assembly so bestätigt wurde:
VDD, VIN, VOUT, PSB, D0..D3, RESET müssen komplett an die über Transistor geschaltete Versorgungsspannung angeschlossen werden und zusätzlich muss sichergestellt werden, das D4..D7 auf VSS liegen.
So einfach wars dann doch nicht Wie üblich halt
Um nicht kampflos aufzugeben habe ich aus meiner Schaltung gleich die Transistorstufe rausgeschmissen. Somit spare ich zwar keinen Strom aber Geld. Darüber hinaus habe ich die Display-Off-Funktion des LCD-Controllers umgesetzt.
Das EADOGMxxx geht dabei in eine Art Ruhestrommodus / Schlafmodus und verbraucht dadurch weniger Strom. Vorteil dieser Lösung ist, dass das Display sein Gedächtnis behält und nach erneutem Einschalten den korrekten Display-Inhalt wieder anzeigt. Somit ist keine Reinitialisierung nach Abschalten notwendig. Auch nicht schlecht, gell.
Jetzt wird's zwar für Das Forum Elektronik-Bauelemente OffTopic aber zur Vollständigkeit hänge ich den relevanten BASCOM-Code hier noch an.
CodeBox Bascom
Achtung: Häufig findet man die Kommunikatiom mit dem LCD auch über die Routine "rCall _Lcd_control" umgesetzt. Dabei kann man sich selber "ins Knie schießen"
rCall sollte durch Call ersetzen werden. rCall ist ein relavtiver Sprung welcher nur über 2kByte Zeilen geht. Bei größerem Code z.B. bei ATmega64 oder ATmega128 usw. kann es sein, dass die LCD-Lib Aufgrund der Code-Größe außerhalb des Bereichs liegt und deshalb nicht mehr angesprungen werden kann.
BASCOM liefert dann den Fehler: Error 220: Forward jump out of range
Also besser gleich Call und dann ist man auf der sicheren Seite!
Grüße,
Markus
bei meinen Basteleien bin ich auf einen Punkt gestoßen den ich Euch nicht vorenthalten möchte.
Ich verwende sehr häufig LCD-Displays von electronic assembly vom Type EA DOG-M xxx. Egal ob 081 oder 162 oder 163. Wie im beigefügten Bild verwende ich die Standardbeschaltung bei einer Betriebsspannung von 5V im 4-Bit-Modus.
Nun kam ich auf die Idee, im Betrieb um Strom zu sparen das LCD-Display "hart" abzuschalten. Dies wollte ich über eine Transistorstufe realisieren welche mir den Pin(26) VDD schaltet. Dabei stellte ich - wie kann es auch anders sein - BackPowering fest da sich das Modul die notwendige Spannung "fast" gänzlich über andere Wege "organisiert".
Folgendes habe ich durch Tests herausgefunden welches auch durch electronic assembly so bestätigt wurde:
VDD, VIN, VOUT, PSB, D0..D3, RESET müssen komplett an die über Transistor geschaltete Versorgungsspannung angeschlossen werden und zusätzlich muss sichergestellt werden, das D4..D7 auf VSS liegen.
So einfach wars dann doch nicht Wie üblich halt
Um nicht kampflos aufzugeben habe ich aus meiner Schaltung gleich die Transistorstufe rausgeschmissen. Somit spare ich zwar keinen Strom aber Geld. Darüber hinaus habe ich die Display-Off-Funktion des LCD-Controllers umgesetzt.
Das EADOGMxxx geht dabei in eine Art Ruhestrommodus / Schlafmodus und verbraucht dadurch weniger Strom. Vorteil dieser Lösung ist, dass das Display sein Gedächtnis behält und nach erneutem Einschalten den korrekten Display-Inhalt wieder anzeigt. Somit ist keine Reinitialisierung nach Abschalten notwendig. Auch nicht schlecht, gell.
Jetzt wird's zwar für Das Forum Elektronik-Bauelemente OffTopic aber zur Vollständigkeit hänge ich den relevanten BASCOM-Code hier noch an.
CodeBox Bascom
'---------------------------------------------------------------------
' LCD - Gosub-Routine: Lcd_display_ein
' Routine schaltet das gesamte Display ein
'---------------------------------------------------------------------
Lcd_display_on:
' Instruction Display ON/OFF gemäß LCD Befehlskatalog
_temp1 = &B00001100
!Call _Lcd_control
Return
'-- End Lcd_display_ein ----------------------------------------------
'--------------------------------------------------------------------
' LCD - Gosub-Routine: Lcd_display_aus
' Routine schaltet das gesamte Display aus
'--------------------------------------------------------------------
Lcd_display_off:
' Instruction Display ON/OFF gemäß LCD Befehlskatalog
_temp1 = &B00001000
!Call _Lcd_control
Return
'-- End Lcd_display_ein -----------------------------------------------
Achtung: Häufig findet man die Kommunikatiom mit dem LCD auch über die Routine "rCall _Lcd_control" umgesetzt. Dabei kann man sich selber "ins Knie schießen"
rCall sollte durch Call ersetzen werden. rCall ist ein relavtiver Sprung welcher nur über 2kByte Zeilen geht. Bei größerem Code z.B. bei ATmega64 oder ATmega128 usw. kann es sein, dass die LCD-Lib Aufgrund der Code-Größe außerhalb des Bereichs liegt und deshalb nicht mehr angesprungen werden kann.
BASCOM liefert dann den Fehler: Error 220: Forward jump out of range
Also besser gleich Call und dann ist man auf der sicheren Seite!
Grüße,
Markus