PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : atmega8 lcd und powerdown



Malte0815
02.05.2010, 17:10
Hallo,

ich möchte über 1wire und ds1820 eine temperaturanzeiger für einen wasserspeicher bauen. Angeschlossen an einen Atmega8L ist ein 8*2 LCD ohne Hintergrundbeleuchtung. Da ich die Schaltung für den Batteriebetrieb auslegen möchte soll der Programmablauf so aussehen -> Nach drücken der Reset-Taste (Resetpin) wird der µC und das LCD eingeschaltet. Nun läuft ein Timer der den µC und das LCD nach 30 Sekunden in den Powerdown-Modus schickt. Das klappt auch so weit ganz gut nur hab ich, wie ich finde, eine zu hohe Stromaufnahme und ein Verhalten das ich mir nicht erklären kann?

Zustand 1: Powerdown (LCD nicht abgeschaltet) -> Stromaufnahme: 1,2mA
Zustand 2: Powerdown (LCD per Software abgeschaltet)-> : 1,5mA

Stromaufnahme des LCD nach Abschaltung durch Sotware: 1mA
Stromaufnahme (LCD)ohne Abschaltung (nach powerdown) : 0,7mA

Warum ist der Stromverbrauch bei abgeschaltetem Display höher als bei
eingeschaltetem? Zieht das Display vieleicht über die Datenpins vielleicht noch Strom??? Wie kann ich das Display nach powerdown komplett stromlos schalten?



Gruß Markus
$regfile = "M8def.dat"
$crystal = 1000000


'+++++++++Display-Config+++++++++++
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portb.0 , Rs = Portb.6 , E = Portb.7
Config Lcdbus = 4
Cursor Off


'+++++++++config timer+++++++++++++
Config Timer1 = Timer , Prescale = 1024
On Timer1 Zeit

Enable Timer1
Enable Interrupts
Timer1 = 64558

Dim Sekunde As Byte
Sekunde = 15
Dim Minute As Byte

Locate 1 , 1
Lcd "Temp"
Lowerline
Lcd "Ver 0.1"

Waitms 2000

Cls

Locate 1 , 1 : Lcd "O"
Locate 1 , 4 : Lcd Chr(223) '223 = binär 11011111
Locate 1 , 5 : Lcd "M"
Locate 1 , 8 : Lcd Chr(223) '223 = binär 11011111
Locate 2 , 1 : Lcd "U"
Locate 2 , 4 : Lcd Chr(223) '223 = binär 11011111

Do

If Sekunde = 0 Then
Gosub Poweroff
End If

Locate 2 , 6
Lcd Sekunde

Loop
End

Zeit:
Timer1 = 64558
decr Sekunde
Return

Poweroff:

Cls
Lcd "power"
Lowerline
Lcd "down"
Wait 2
Display Off
Powerdown
Return

nflatjor555
02.05.2010, 19:20
Hi Malte,

hast du da einen Schaltplan? Sind Pullups an den Ports aktiviert?
Sind Pins eigentlich als Input oder Output geschaltet?
Ein Input kan wenn der "in die Luft haengt" auf Rauschen
hin-und-herschalten und so Strom verbrauchen.

Wirst du die Schaltung IMMER ueber eine Taste "starten"?
Wenn ja, kannst du auch die Stromversorgung HW-abschalten und garantiert 0mA verbrauchen im PowerDown.

Malte0815
02.05.2010, 21:21
Einen Schaltplan hab ich noch nicht gezeichnet. Einen zusätzlichen Verbrauch konnte ich noch beim Poti für die kontrasteinstellung entdecken. Trenne ich die +5V des Potis, habe ich nur noch 0,6mA.

Welche pins für In/Output meinst du? Sollte ich die Pullups der pins für die Datenleitungen (LCD) einschalten oder generell alle unbenutzten pins?

Ja ich werde den Mega über einen Taster einfach durch reset "wecken".

Mir ist aber immer noch nicht klar warum der Stromverbrauch bei abgeschaltetem LCD höher ist als im eingeschalteten Zustand. Das LCD ist ganz normal im 4bit-Modus und poti für Kontrast am Controller angeschlossen.

nflatjor555
03.05.2010, 09:47
Hi Malte,

generell gilt: ALLE I/O-Pins sollten einen definierten Zustand haben. Nicht angeschlossene Pins sollten entweder als Output definiert werden, oder als Input mit Pullup aktiviert. Dann verhindert man das die als Inputs definiert sind, die "in der Luft haengen" und Strom verbrauchen an der Eingangsstufe weil die hin-und-her toggeln.

Wie sendest du denn eigentlich das LCD in "Power Down"?
Hat das so einen Funktion, ist es im Datenblatt beschrieben?

Wie gesagt, wenn du mit einem Transistor die Schaltung komplett von der Batterie trennst, hast du 0mA Stromverbrauch...