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!
@ 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.
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.
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...
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.
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...
> 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.
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...
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...
> 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)"
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 :-)
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
@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.