Forum: Mikrocontroller und Digitale Elektronik Atmega 328p: LowPower Library bei 1Mhz intern und 8Mhz extern


von Tim S. (Firma: Google) (tuxut83)


Lesenswert?

Hallo Gemeinde.

Ich verwende einen modifizierten Arduino Pro Mini ohne PowerLED und ohne 
Spannungsregler.
Zudem habe ich die LowPower-Library von rocketscream in Verwendung:
1
LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);

Das Arduino-Board läuft mit 3,3V und 8Mhz externem Oszillator.
Während des 8sekündigen-Sleeps zieht der Mikrocontroller ca. 4,6uA aus 
meiner Batterie.
Ein sehr guter Wert wie ich finde.

Allerdings bin ich noch einen Schritt weiter gegangen und habe den 
Atmega jetzt auf 1Mhz internen Takt umgeschaltet in der Hoffnung, dass 
sich der Strom nochmals deutlich verringern wird - falsch gedacht, er 
bleibt felsenfest bei den 4,6uA.

Ist das normal? Mache ich etwa falsch?

Ist das jetzt der niedrigste Verbrauch, den der Atmega328p haben kann?
Was ist, wenn ich die Spannung auf 3V senken würde? Geht dann der Strom 
noch runter?

Herzlichen Dank schon mal!

von Falk B. (falk)


Lesenswert?

@ Tim Scholz (Firma: Google) (tuxut83)

>Während des 8sekündigen-Sleeps zieht der Mikrocontroller ca. 4,6uA aus
>meiner Batterie.
>Ein sehr guter Wert wie ich finde.

Finde ich nicht. Im Power Down kommt man unter 1uA.

>Allerdings bin ich noch einen Schritt weiter gegangen und habe den
>Atmega jetzt auf 1Mhz internen Takt umgeschaltet in der Hoffnung, dass
>sich der Strom nochmals deutlich verringern wird - falsch gedacht, er
>bleibt felsenfest bei den 4,6uA.

Logisch.

>Ist das normal?

Sicher. Denn im Power Down sind ALLE Oszillatoren abgeschaltet. Da ist 
es egal, ob das Ding im aktiven Betrieb mit dem externen 8 MHz Quarz 
oder internen 1MHz RC-Oszillator arbeitet.

>Mache ich etwa falsch?

Dein Board zieht irgendwo noch Strom. Siehe

https://www.mikrocontroller.net/articles/Ultra_low_power

>Ist das jetzt der niedrigste Verbrauch, den der Atmega328p haben kann?

Nein.

>Was ist, wenn ich die Spannung auf 3V senken würde? Geht dann der Strom
>noch runter?

Nicht wirklich. Das Problem liegt woanders.

von S. Landolt (Gast)


Lesenswert?

Das hatte doch Peter Dannegger schon beim letzten Mal geschrieben: 
irgendwoher muss ja die Zeit kommen, wahrscheinlich wird der 
Watchdog-Timer aktiviert, und der braucht eben so viel.
  Der niedrigste Verbrauch liegt bei 1 uA.

von Michael R. (mr-action)


Lesenswert?

Also, wenn mich nicht alles täuscht ist der Clock sowieso aus, wenn du 
im Deep Sleep hängst - von daher ist es auch egal, welchen du nutzt...

Wenn du dann ins Datenblatt guckst (Abschnitt 34.1.2), siehst du, das du 
mehr Strom sparen kannst, wenn du nicht über den Watchdog (nach 8sec) 
aufgeweckt wirst, sondern dich von irgendeiner externen Quelle wecken 
lässt - also nur wach bist, wenn du wirklich gebraucht wirst...
Oder das du durch senken der Spannung noch ein bisschen was rausholen 
kannst...

von Dr. Sommer (Gast)


Lesenswert?

Löte mal den Oszillator aus, der schwingt und frisst Strom unabhängig 
davon ob der Controller den Takt überhaupt nutzt...

von M. K. (sylaina)


Lesenswert?

Tim S. schrieb:
> Das Arduino-Board läuft mit 3,3V und 8Mhz externem Oszillator.
> Während des 8sekündigen-Sleeps zieht der Mikrocontroller ca. 4,6uA aus
> meiner Batterie.
> Ein sehr guter Wert wie ich finde

 Nur für den Mikrocontroller sind 4,6 µA ein ziemlich schlechter Wert 
oder meinst du hier das deine komplette Schaltung 4,6 µA ziehen? Das 
wäre wieder super.

: Bearbeitet durch User
von Reiner_Gast (Gast)


Angehängte Dateien:

Lesenswert?

Wie aus dem Datenblatt zu sehen ist:

Bei 3,3 Volt Spannungsversorgung und Zimmertemperatur beträgt der 
Stromverbrauch die gemessenen 4,2 uA

Der Stromverbrauch im Power-Down Modus mit eingeschaltetem Watchdog (Den 
brauchst du ja, damit der ATMega nach 8Sekunden wieder aufwacht) lässt 
sich wohl nur durch Absenken der Betriebsspannung auf z.B. 1,8 Volt 
erzielen, was durch die reduzierte Taktfrequenz von 1 MHz zulässig 
wäre...

von S. Landolt (Gast)


Lesenswert?

> Bei 3,3 Volt Spannungsversorgung und Zimmertemperatur
> beträgt der Stromverbrauch die gemessenen 4,2 uA

Ja eben: "Watchdog Timer Enabled".
Mit dem 32 KiHz-Oszillator kommt man knapp unter 1 uA.

von Reiner_Gast (Gast)



Lesenswert?

S. Landolt schrieb:
>> Bei 3,3 Volt Spannungsversorgung und Zimmertemperatur
>> beträgt der Stromverbrauch die gemessenen 4,2 uA
>
> Ja eben: "Watchdog Timer Enabled".
> Mit dem 32 KiHz-Oszillator kommt man knapp unter 1 uA.

Ich habe mal die beiden Diagramme aus dem Datenblatt rausgesucht...
Der Unterschied zwischen beiden bei 3,3 Volt liegt bei 0,6 vs. 0,5 uA.

Wenn ich das korrekt raus lese macht den Hauptunterschied wohl das 
Deaktivieren des WDT aus

Mal Interesse halber...
Wie weckst du denn den ATMega aus dem Sleep Modus auf, wenn der WDT 
abgeschaltet ist... die externe Triggerquelle darf ja dann nur knapp 
3,5uA Strom verbrauchen, damit sich das lohnt...

von Reiner_Gast (Gast)


Lesenswert?

Upps... gerade gesehen... dass ich auf die falsche Linie beim Power-Down 
ohne WDT geschaut habe... Sind also etwa 0,1uA bei 3,3 Volt... Demnach 
darf die externe Interrupt Quelle immerhin gut 4uA brauchen...

von S. Landolt (Gast)


Lesenswert?

> Wie weckst du denn ...
Wie gesagt, mit dem 32 KiHz-Oszillator, vorausgesetzt, der interne 
RC-Oszillator reicht bezüglich Takt und Genauigkeit als Hauptoszillator.

Datenblatt 1. Seite:
"Power-save Mode: 0.75μA (Including 32kHz RTC)"

von Reiner_Gast (Gast)


Lesenswert?

S. Landolt schrieb:
> Wie gesagt, mit dem 32 KiHz-Oszillator, vorausgesetzt, der interne
> RC-Oszillator reicht bezüglich Takt und Genauigkeit als Hauptoszillator.
>
> Datenblatt 1. Seite:
> "Power-save Mode: 0.75μA (Including 32kHz RTC)"

Ahhh... lese gerade, dass der Timer2 im Asynchronen Modus vom 32KHz 
Oszillator versorgt wird... Interessant... Wieder was dazu gelernt :-)

von S. Landolt (Gast)


Lesenswert?

> Wieder was dazu gelernt
Prima, dafür sind wir hier beisammen.

von Tim S. (Firma: Google) (tuxut83)


Lesenswert?

Okay, also ihr meint ich sollte den 8Mhz Oszi noch vom Board löten, den 
WDT abschalten und auf internen RTC Takt schalten...

Gut, jetzt natürlich die alles entscheidende Frage:
Was nehme ich dann als externe Triggerquelle, damit mein MCU zyklisch 
aufgeweckt werden kann? (sagen wir alle 60sek)

Und wie viel Strom benötigt diese Quelle? Wenn wir hier bei 4uA liegen 
lohnt sich wohl kaum der Aufwand.

Herzlichen Dank und viele Grüße
Tim

von Falk B. (falk)


Lesenswert?

@Tim Scholz (Firma: Google) (tuxut83)

>Okay, also ihr meint ich sollte den 8Mhz Oszi noch vom Board löten,

Mußt du nicht. Per Fuses abschalten reicht.

> den
>WDT abschalten und auf internen RTC Takt schalten...

Nein, da wird ein 32,768 kHz Uhrenquarz benötigt, und der ist extern.

>Was nehme ich dann als externe Triggerquelle, damit mein MCU zyklisch
>aufgeweckt werden kann? (sagen wir alle 60sek)

Deinen Timer 2 mit Uhrenquarz.

>Und wie viel Strom benötigt diese Quelle? Wenn wir hier bei 4uA liegen
>lohnt sich wohl kaum der Aufwand.

Eben. Es gibt RTC-ICs, die mit weniger als 1uA auskommen und über einen 
Interruptausgang deinen uC wecken können. Lohnt sich aber kaum, wenn 
dein AVR auch unter 1uA kommt.

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.