Forum: Mikrocontroller und Digitale Elektronik Mit µC ein LCD Display abschalten


von Benjamin K. (benkly)


Lesenswert?

Hallo,

für ein aktuelles Projekt habe ich eine Platine entworfen. Diese ist nun 
hier, bestückt und funktioniert grundsätzlich.

Nur mit einer Funktion habe ich ein Problem. Da die Platine mit einer 
Batterie betreibbar sein soll, und daher möglichst wenig Strom aufnehmen 
sollte, habe ich die 5V Stromversorgung des LCD Displays (16x2 Zeichen) 
auf einen IO des µC gelegt. Damit wollte ich dann das Display bei Bedarf 
an- bzw. abschalten.

Leider geht das nicht. Ich habe im Programm den entsprechenden Pin als 
Ausgang gesetzt und eingeschaltet. Aber wenn da nun das Display dran 
hängt dann sind es keine sauberen +5V mehr wie die Versorgungsspannung 
des µC sondern die Spannung bricht irgendwie zusammen und doch nicht 
(auf dem Oszi sieht es aus wie ein Höhenprofil beim Radfahren).

Hat da jemand Erfahrung dazu wo es da klemmen könnte? Zieht das Display 
beim Einschalten zu viel Strom? Eigentlich dachte ich das so ein Display 
kaum Strom zieht und die Hintergrundbeleuchtung wird über einen anderen 
Pin gesteuert.

Gruß, Benny.

von Joachim (Gast)


Lesenswert?

Hallo

Schau erstmal nach, wieviel Strom dein LCD braucht.
Und dann, was ein uC-Pin treiben kann.

Gruß
Joachim

von Manfred G. (magroma)


Lesenswert?

Du kannst das Display nicht einfach aus und einschalten, es muss dann 
immer wieder neu initialisiert werden. Das heist du müstest dein 
Programm nach jedem Einschalten wieder neu starten.

von Idauj (Gast)


Lesenswert?

> Aber wenn da nun das Display dran hängt dann sind es keine sauberen +5V
> mehr wie die Versorgungsspannung des µC sondern die Spannung bricht
> irgendwie zusammen und doch nicht (auf dem Oszi sieht es aus wie ein
> Höhenprofil beim Radfahren).

Geht es nicht genauer (Oszillogramm, Höhe der Spannung, etc.)?

von Karl H. (kbuchegg)


Lesenswert?

Manfred G. schrieb:
> Du kannst das Display nicht einfach aus und einschalten, es muss dann
> immer wieder neu initialisiert werden. Das heist du müstest dein
> Programm nach jedem Einschalten wieder neu starten.

Na ja.
Das nun wieder nicht.
Es heisst lediglich, dass nach einem Wiedereinschalten die 
Initialisierungssequenz erneut durchlaufen werden muss.

Mit ein bischen Codeorganisation ist das ein Funktionaufruf mehr
1
  if( .... ) {
2
    PORTx |= ( 1 << LCD_POWER );
3
    lcd_init();
4
  }

Das ist jetzt nicht wirklich Raketentechnik.

von Benjamin K. (benkly)


Lesenswert?

Hallo,

am µC wären 40mA pro Pin ok und max. 200mA gesamt. Da liegt das Display 
mit typ. 1,2mA darunter.

@Manfred
Wüsste nicht warum ich das Display nicht einfach aus- und einschalten 
können sollte. Das es neu initialisiert werden muss ist klar, aber dafür 
muss man nicht das Programm neu starten sondern einfach an gegebener 
Stelle "Initlcd" ausführen.

Ich denke ich hab gefunden wo der Hund begraben ist, ich habe folgende 
Timer Konfiguration:

Config Timer1 = Pwm , Pwm = 8 , Prescale = 8 , Compare B Pwm = Clear Up

Müsste so lauten:

Config Timer1 = Pwm , Pwm = 8 , Prescale = 8 , Compare A Pwm = Clear Up 
, Compare B Pwm = Disconnect

Werd ich heut Abend mal testen.

Gruß, Benny.

von Karl H. (kbuchegg)


Lesenswert?

Benjamin Klyeisen schrieb:

> Ich denke ich hab gefunden wo der Hund begraben ist, ich habe folgende
> Timer Konfiguration:
>
> Config Timer1 = Pwm , Pwm = 8 , Prescale = 8 , Compare B Pwm = Clear Up
>

Na das kann doch ein Blinder greifen, dass das nicht funktionieren kann!

>
> Müsste so lauten:
>
> Config Timer1 = Pwm , Pwm = 8 , Prescale = 8 , Compare A Pwm = Clear Up
> , Compare B Pwm = Disconnect

Yep. Genau so muss das sein. Ist doch völlig logisch. Seltsam, dass das 
hier keiner gesehen hat.
Auf jeden Fall danke für die Info.


Sarkasmus aus.

von Humorberater (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:

> Sarkasmus aus.

In Zukunft bitte weglassen. Ist ohne viel lustiger.

von Benjamin K. (benkly)


Lesenswert?

@Buchegger

Abwarten, es war zwar ein Fehler (Copy-Paste). Aber ich habe die PWM zu 
Anfang gleich mit 255 geladen, somit sollte es eigentlich ja doch 
gepasst haben. Naja, ich werds heut Abend sehen.

von thorsten (Gast)


Lesenswert?

ein LCD selber verbraucht in der Regel nicht viel, das meiste frisst die 
Hintergrundbeleuchtung.

Eventuell hilft es, wenn du nur die Hintergrundbeleuchtung 
abschaltest...

von Karl H. (kbuchegg)


Lesenswert?

Humorberater schrieb:
> Karl Heinz Buchegger schrieb:
>
>> Sarkasmus aus.
>
> In Zukunft bitte weglassen. Ist ohne viel lustiger.

Siehst du.
Er hat den Wink mit dem Zaunpfahl nicht verstanden.

von Klaus2 (Gast)


Lesenswert?

...da sind wieder die jungs, die zwar programmieren können (vll), aber 
null plan von elektronik an sich haben. auweia.

Klaus.

von Benjamin K. (benkly)


Lesenswert?

@Buchegger
Doch, wohl verstanden und ignoriert. Es gibt Dinge im Leben über die ich 
mir Gedanken mache und Leute deren Äußerungen ich einfach ignoriere.

@Klaus2
Es war einfach ein Copy-Paste Fehler, kommt beim proggen ab und zu vor 
und wenn ich sooooo schlecht wäre dann würde ich mit meinen Controllern 
kaum einen solchen Erfolg haben.
Aber ich lerne daraus, nach 3 Bier sollte man Abends keinen Prototypen 
mehr in Betrieb nehmen...

von Peter D. (peda)


Lesenswert?

Benjamin Klyeisen schrieb:
> Ich denke ich hab gefunden wo der Hund begraben ist, ich habe folgende
> Timer Konfiguration:
>
> Config Timer1 = Pwm , Pwm = 8 , Prescale = 8 , Compare B Pwm = Clear Up

Dem LCD ist der Timer doch völlig schnurz.

Bevor Du dem LCD die VCC klaust, mußt Du erstmal alle Ausgänge zum LCD 
auf 0 setzen. Ansonsten kannst Du ziemlich sicher ein neues LCD kaufen 
gehen.

von Benjamin K. (benkly)


Lesenswert?

Hallo Peter,

danke, solche Hinweise hatte ich eigentlich erwartet bzw. ob es da was 
grundsätzliches gegen die Idee gibt einfach VCC abzuklemmen.

Ich habe den Code nun angepasst und es funktioniert soweit. Da ein 
solches Display kaum was kostet und ich es eben wissen will habe ich 
eben die böse Situation erzeugt, VCC abgewürgt und weiter Daten 
gesendet. Display hats paar Stunden überlebt, nach welcher Zeit geht das 
dann kaputt? Oder gibt es da bei den Displays auch welche denen das egal 
ist?

Gruß, Benny.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Naja, peda hat ein wenig übertrieben, aber im Interesse des 
Stromverbrauches und der Belastung der Ausgänge sollest du schon 
zusehen, das die Pins zum LCD inaktiv werden (z.B. auf low oder als 
Inputs ohne Pullups). Sonst kann es passieren das entweder das LCD nicht 
ausgeht, weil es über Schutzdioden an den Pins weiter gespeist wird oder 
zumindest der Stromverbrauch durch das Abschalten nicht signifikant 
sinkt.

Allerdings verbraucht jede LED deutlich mehr Strom als ein LCD der 
HD44780 Klasse, so das es u.U. erstmal noch andere 
Einsparungsmöglichkeiten gibt.

von Benjamin K. (benkly)


Lesenswert?

Hi,

also ich hab das nun alles sauber angepasst im Code und es funktioniert 
auch soweit. Wie gesagt funktioniert das auch mit dem "dem LCD den Saft 
abdrehen" aber der Stromverbrauch steigt dadurch, geht zwar nicht kaputt 
aber ich lasse es dann doch einfach an.

Mich wundert aber nun das die ganze Schaltung knappe 16mA im Leerlauf 
braucht. Also nur µC mit 8MHz und LCD ohne Hintergrundbeleuchtung. 
Gespeist an 12VDC, auf 5V geregelt über einen LM2594-5.

Ich habe den Schaltregler im Verdacht gehabt und diesen mal gegen meinen 
bisherigen TS2950-5 getauscht, ok, Verbrauch sank auf knappe 9mA. Wenn 
ich das Display abziehe dann sinkt es auf knappe 8mA. Aber in meiner 
vorherigen Schaltung mit 4er 7-Segment Anzeige hatte ich im Standby nur 
eine Stromaufnahme von 1-2mA. Da bin ich grad echt am rätseln was da den 
Strom zieht.

Muss mal nochmals prüfen ob die Port-Pins richtig gesetzt sind. Die 6 
Pins zum Display müssten doch alle als Ausgänge geschaltet sein oder? 
Also E, RW und die 4 Datenleitungen.

Wenn es sein muss dann kann ich auch einen Akku einsetzen. Allerdings 
sollte das dann relativ einfach von statten gehen. Im Netz habe ich 
Anleitungen gefunden das man einen NIMH Akku mit bis zu 1/10 oder 1/20 
seiner Nennkapazität auch permanent laden kann wenn man nicht viel Strom 
benötigt. In meinem Fall ginge es nur darum eine Netzfreischaltung in 
der Nacht zu überbrücken.

Gruß, Benny.

von Karl H. (kbuchegg)


Lesenswert?

Benjamin Klyeisen schrieb:


> Wenn es sein muss dann kann ich auch einen Akku einsetzen.

wie groß ist dein Akku?
zb 1000mAh

bei 10mA Verbrauch hast du also rein rechnerisch 100 Stunden Versorgung. 
100 Stunden sind etwas über 4 komplette Tage.

> benötigt. In meinem Fall ginge es nur darum eine Netzfreischaltung in
> der Nacht zu überbrücken.

Du machst dir zuviel Sorgen :-)

von Lupe (Gast)


Lesenswert?

> Muss mal nochmals prüfen ob die Port-Pins richtig gesetzt sind. Die 6
> Pins zum Display müssten doch alle als Ausgänge geschaltet sein oder?
> Also E, RW und die 4 Datenleitungen.

Sind die Ausgänge auf LOW, wenn du das Display abschaltest?

von Benjamin K. (benkly)


Angehängte Dateien:

Lesenswert?

Hi,

also das Display schalte ich nicht mehr ab, lohnt sich nicht wegen den 
1,2mA. Wenn ich das Display abschalte dann steigt der Strom um gute 
50mA! Das Display geht zwar nicht kaputt, aber gut tut es nicht.

Ich hatte vor entweder einen 8,4V Block Akku zu verwenden mit 280mAh 
oder 6x 1,2V AA in Reihe mit je 2200mAh. Ladestrom ca. 26,5mA. Akku wird 
im Gerät fest verbaut, kann also nicht verpolt werden.

Aber das Netzteil könnte verpolt angeklemmt werden :-(

Ich habe mal diesen Schaltplan für diese Sache zusammengefummelt, das 
sollte doch so gehen oder?

Gruß, Benny.

von Reinhard Kern (Gast)


Lesenswert?

Benjamin Klyeisen schrieb:
> Ich habe mal diesen Schaltplan für diese Sache zusammengefummelt, das
> sollte doch so gehen oder?

Einerseits braucht man zum Akkuladen keine Konstantstromquelle, ein 
Widerstand tuts auch, es kommt ja auf ein paar Prozent mehr oder weniger 
Strom nicht an.

Andrerseits hört deine Schaltung nicht auf zu laden, wenn der Akku voll 
ist. Bei AA ist das sicher unkritisch, aber ob dein Akkublock den Strom 
als Dauerladung verträgt solltest du im Datenblatt nachprüfen.

Gruss Reinhard

von Anja (Gast)


Lesenswert?

Benjamin Klyeisen schrieb:
> Wenn ich das Display abschalte dann steigt der Strom um gute
> 50mA!

Da machst Du irgendwas falsch. (oder verwendest das falsche Display mit 
Step-up Wandler).
Der meiste Strom beim Display geht übrigens durch den Kontrasteingang.
Da hängt im LCD einfach ein Spannungsteiler gegen den VDD Pin.
Ich verwende meistens einen Open-Drain mit PWM + Widerstand + 
Glättungskondensator zur Kontrasteinstellung.
Jeder Pin hat außerdem einen Pull-Up gegen VDD der jeweils 33uA zieht.
Es bringt etwas zwischen der Datenübertragung die Pins in den 
Ruhezustand "high" zu setzen.

Zur Batteriepufferung kannst Du dir vielleicht auch mal den 
Batteriewächter Ladeteil anschauen.

http://www.mikrocontroller.net/articles/Batteriew%C3%A4chter

Gruß Anja

von Benjamin K. (benkly)


Lesenswert?

Anja schrieb:
> Benjamin Klyeisen schrieb:
>> Wenn ich das Display abschalte dann steigt der Strom um gute
>> 50mA!
>
> Da machst Du irgendwas falsch. (oder verwendest das falsche Display mit
> Step-up Wandler).

Matthias hat das bereits erklärt und es hat sich bewahrheitet. Wenn ich 
dem Display (Kontrasteinstellung hängt da mit dran) per µC Pin den Saft 
abschalte, dann fliest auf einmal mehr Strom über die Datenpins. Schalte 
ich das Display nicht ab sondern lösche nur den Inhalt und schalte die 
Hintergrundbeleuchtung ab, ist alles ok und ich habe nur ca. 1,2mA 
Stromaufnahme mehr wie wenn ich das Display komplett abziehe. Also passt 
zu den Angaben im Datenblatt des Displays.

Ich hab jetzt auch nochmals den Stromverbauch des µC genau im Datenblatt 
nachgesehen. Bei Vcc 5V und 8MHz Takt soll der im aktiven Zustand ca. 
typ 4mA bis max. 12mA betragen.
Also sollte sich mein Stromverbauch im Bereich von ca. 5,2mA bis 13,2mA 
befinden. Mit den knappen 8mA liege ich da ja gut und denke das soweit 
alles passt.

Nun geht es mehr darum die Akku Ladung usw. zu lösen. Das werde ich aber 
in einem neuen Thema erfragen.

Danke soweit an alle!

Gruß, Benny.

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.