Forum: Compiler & IDEs Atmega 644 Sleep


von Daniel H. (doomstar)


Angehängte Dateien:

Lesenswert?

Hallo,

ich hab ein kleines Problem mit dem Sleep mode des Atmega 644.

wenn ich den Sleepmode einschalte reduziert sich zwar der Stromverbrauch 
jedoch nicht mal ansatzweise auf den Wert der im Datenblatt steht.

Ich komm im Powerdown modus gerade mal auf knapp unter 4 mA und das ist 
für eine Batterie Anwendung deutlich zu hoch.

Ich habe als Anhang meine Schaltung gepostet.

Meine Code ist zum Testen sehr überschaubar:
1
#include <avr/io.h>
2
#include <avr/sleep.h>
3
#include <avr/interrupt.h>
4
#include <util/delay.h>
5
6
int main(void)
7
{
8
  // infinite main loop
9
  while (1)
10
  {
11
    // set sleep mode
12
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);
13
    
14
    // sleep_mode() has a possible race condition
15
    sleep_enable();
16
    sleep_cpu();
17
18
  }
19
}

Ich weis das ich so das Teil nicht mehr aufgeweckt bekomme aber das ist 
ja nur als Test.

Folgende Fuses sind aktiv:
JTAGEN
CKDIV8
Interner Oszilator 6CK 65ms

Hat jemand eine Idee warum das Teil soviel säuft obwohl Power down?

Ich könnte mir vorstellen das es am JTAG enabled liegt aber wenn ich das 
aus mache komm ich garnicht mehr an den Controller dran deswegen habe 
ich das noch nicht ausprobiert.

Danke und Gruß
Daniel

: Bearbeitet durch User
von R2 D. (r2-d2)


Lesenswert?

Wo hast du denn den Strom gemessen ?

Der von dir verwendete Spannungsregler ist denkbar ungünstig für den 
zweck.
Weil dieser alleine verbraucht schon ein paar mA ohne das du hinten 
Strom raus ziehst.

Nimm einen Micropower Spannungsregler.
Derer gibt es viele verschiedene.
Findest du hier im Forum.

von Thomas E. (thomase)


Lesenswert?

Daniel H. schrieb:
Ich weis das ich so das Teil nicht mehr aufgeweckt bekomme aber das ist
> ja nur als Test.
Du weisst nicht, wie man ihn wieder aufweckt. Du hast doch ein Keypad. 
Den Controller kannst du mit Pinchange an jedem Pin wieder aufwecken.
> Folgende Fuses sind aktiv:
> JTAGEN
> CKDIV8
> Interner Oszilator 6CK 65ms
Im Schaltplan ist aber ein Quarz.
> Hat jemand eine Idee warum das Teil soviel säuft obwohl Power down?
z.B. s.o.
> Ich könnte mir vorstellen das es am JTAG enabled liegt aber wenn ich das
> aus mache komm ich garnicht mehr an den Controller dran deswegen habe
> ich das noch nicht ausprobiert.
Nein. Daran liegt es nicht. Das JTAGICE darf allerdings nicht gesteckt 
sein!

mfg.

von Daniel H. (doomstar)


Lesenswert?

Hallo und danke für die Antworten.

Ich hab den Quarz auf der Schaltung nicht verbaut und nutze nur den 
Internen Oszillator.

Ich weis schon wie man ihn wieder aufweckt ;). Wollte aber nicht 
hunderte Seiten Code posten also hab ich ein neuen Code angefangen um es 
einfacher zu haben mit dem probieren.

Die SW ist schon fertig das Teil geht auch schlafen kann über das 
Tastenfeld mit Pin Change Interrupt aufgeweckt werden LCD kann man schön 
abschalten und und und.

Ich hatte die Versorgungsspannung der Platine gemessen. Wenn ich jedoch 
den Spannungsregler umgehe, mein Netzteil auf 5V einstelle und die 
Platine (Mikrocontroller) direkt versorge dann bin ich bei 6,5mA was 
auch nicht sooo toll ist. LCD und Tastenfeld hab ich ja über eine 
Stiftleiste angebunden. Habe diese auch schon abgezogen falls da strom 
fließt aber dem ist nicht so.

Gruß und danke schon mal
Daniel

von Thomas E. (thomase)


Lesenswert?

Was machen denn deine offenen Eingänge? Schalt die alle auf Output-Low.
Was ist mit den beiden Transistoren?

mfg.

von Daniel H. (doomstar)


Lesenswert?

Hallo Thomas,

das mit den offenen Ausgängen hab ich mal probiert ändert aber nix.

Die Transitoren sind aus.
Dienen ja dazu den den LCD abzuschalten wenn ich ihn nicht benötige.
Hab auch nochmal mit dem Oszi nachgemessen liegt auch keine Spannung an 
den Ausgängen vom Kondensator.

Gruß

von holger (Gast)


Lesenswert?

>Die Transitoren sind aus.
>Dienen ja dazu den den LCD abzuschalten wenn ich ihn nicht benötige.

Nimm das LCD mal raus.

Und das Relais an PA7 ist gar keine gute Idee.
Auch mal rausnehmen.

von R2 D. (r2-d2)


Lesenswert?

holger schrieb:
> Nimm das LCD mal raus.

Guter Einwand.
Die Steuerleitungen zum LCD müssen natürlich vor entern des Sleep-Modus 
als Eingänge (!) programmiert werden, sonst holt sich nämlich das LCD 
über die Schutzdioden an seinen Eingängen von daher den Saft.

von Alexander I. (a-irrgang)


Lesenswert?

Zur Erweiterung der Batterielaufzeit gibt dir auch "AVR4013: picoPower 
Basics" ein paar Ansatzpunkte.

von Volker (Gast)


Lesenswert?

Du betreibst den ATmega644 hoffentlich doch nicht wirklich mit 6V 
(7806)?

>Wenn ich jedoch den Spannungsregler umgehe, mein Netzteil auf 5V >einstelle und 
die Platine (Mikrocontroller) direkt versorge dann bin ich >bei 6,5mA was ...

Und der 7806 steckt dann noch in der Schaltung?

von Daniel H. (doomstar)


Lesenswert?

Hallo Zusammen,

Ich hatte den LCD schon ab und auch das Tastenfeld.

Hab das alles im Hauptprogramm so gestaltet das alles aus ist vor dem 
Sleep.
Deswegen hab ich auch das kleine Programm oben geschrieben das nur in 
den Sleep geht und sonst nix macht.

Es ist ein 7805 in der Schaltung und kein 7806. Sind ja Baugleich und da 
muss ich wohl ein falschen aus der Lib erwischt haben.
Der 7805 war noch in der Schaltung drinne als ich direkt (mit 5V) 
Versorgt hatte. Das könnte natürlich für den hohen Verbrauch beim direkt 
Versorgen zuständig sein.

Die Platine wird aber von Außen mit 14,8V versorgt von 4 LI Akkus. 
Brauche 12V für ein Aktor der über das Relay schaltet wird.
Es handelt sich hierbei um ein REED Relay was auch wunderbar 
funktioniert.

Warum ich das Ding jetzt rauslöten soll verstehe ich jetzt aber nicht 
ganz?
Der Ausgang ist auf low gesetzt Spannung liegt da auch keine an und 
somit fließt dann da auch kein Strom.

Gruß
Daniel

von holger (Gast)


Lesenswert?

>Warum ich das Ding jetzt rauslöten soll verstehe ich jetzt aber nicht
>ganz?

Wenn alles ab ist was Strom ziehen könnte sollten da keine
6mA mehr gezogen werden. Also LCD raus, JTAG ab, Keypad ab,
Relais weg, 7805 weg.

Ich hoffe dein Reed Relais hat eine eingebaute Freilaufdiode.
Sonst hat es dir möglicherweise den Portpin schon angeschossen.

von Daniel H. (doomstar)


Lesenswert?

Hallo alle zusammen.

Nach einer Erkältung bin ich jetzt wieder am Start und habe auch den 
Fehler gefunden.

Der Übeltäter heißt hier 7805. Der Baustein zieht im Leerlauf 5mA. Ich 
habe hier im Forum einen anderen Beitrag zu Thema Batterie Betriebene 
Geräte gefunden wo die reden von einem Baustein namens LP2950 ist. Hab 
mir den Spannungsregler bestellst und eingelötet. Nun hab ich im Sleep 
einen Stromverbrauch von 100nA was absolut okey ist für einen Linear 
Regler.

Vielen Dank an alle die die hier so fleißig ihre Ideen für die Lösung 
meines Problems gepostet haben.

Werde mich jetzt mal vermehrt mit Spannungsversorgung und Schaltreglern 
beschäftigen.

Gruß
Daniel

von Oliver S. (oliverso)


Lesenswert?

Daniel H. schrieb:
> Nun hab ich im Sleep
> einen Stromverbrauch von 100nA was absolut okey ist für einen Linear
> Regler.

...vor allem, da so ein LP2950 nach Datenblatt eigentlich 75uA Ruhestrom 
hat ;)

Oliver

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.