Mikrocontroller wöchentlich aus Sleep Modus holen

Gast #3837852
Lesenswert?

Moin,

ich bin auf der Suche nach einer Möglichkeit, einen AVR Atmega8 einmal 
jede Woche zu einem definiertem Zeitpunkt aufwachen zu lassen, damit 
dieser einige Werte aufnehmen und auswerten kann.
Ich habe bereits gelesen, dass dieses mit dem Power Save Modus und einem 
externen Uhrenquarz gemacht werden kann, wenn bei jedem wachwerden immer 
eine Variable hochgezählt wird.
Die anwendung, bei der ich es allerdings benötige wird mit Batterien 
betrieben und die restliche hardware benötigt im Moment bereits im Power 
Down Modus ca. 300mikro Ampere.

Gibts es noch andere Möglichkeiten, den Controller jede Woche einmalig 
wachzubekommen?

Schon mal im Vorraus Danke
Gast #3837856
Lesenswert?

Thorsten schrieb:
> Die anwendung, bei der ich es allerdings benötige wird mit Batterien
> betrieben und die restliche hardware benötigt im Moment bereits im Power
> Down Modus ca. 300mikro Ampere.

Dann kommt es doch auf die paar µAs für das regelmäßige Aufwachen des µC 
zum Hochzählen seiner Zählvariablen wirklich nicht drauf an.
#3837857
Lesenswert?

@ Thorsten (Gast)

>ich bin auf der Suche nach einer Möglichkeit, einen AVR Atmega8 einmal
>jede Woche zu einem definiertem Zeitpunkt aufwachen zu lassen, damit
>dieser einige Werte aufnehmen und auswerten kann.

Direkt geht das nicht, dazu sind die Zähler zu klein. Aber alle paar 
Sekunden geht.

>Ich habe bereits gelesen, dass dieses mit dem Power Save Modus und einem
>externen Uhrenquarz gemacht werden kann, wenn bei jedem wachwerden immer
>eine Variable hochgezählt wird.

Genau, siehe Sleep Mode.

>Die anwendung, bei der ich es allerdings benötige wird mit Batterien
>betrieben und die restliche hardware benötigt im Moment bereits im Power
>Down Modus ca. 300mikro Ampere.

Je nach AVR-Typ um die 5uA, das fällt bei ohnehin benötigten 300uA also 
nicht ins Gewicht.

>Gibts es noch andere Möglichkeiten, den Controller jede Woche einmalig
>wachzubekommen?

Auch wenn er alle paar Sekunden aufwacht und sich gleich wieder schlafen 
legt, ist der Stromverbrauch sehr gering.
#3837880
Lesenswert?

Falk Brunner schrieb:
> Direkt geht das nicht, dazu sind die Zähler zu klein. Aber alle paar
> Sekunden geht.

Man kann ja eine 32-bit Variable als Zähler verwenden: Das vom Timer 
ausgelöste wake-up zählt die Variable hoch und prüft den erreichten 
Wert.
Danach geht der Kontroller meist gleich wieder in Ruhe. Erst wenn die 
Variable den Sollstand erreicht hat, wird mit der "aufwach"-Routine 
begonnen. Da kann man Jahrzehnte an sleep-Zeit erreichen
Gast #3837893
Lesenswert?

Hier zwei Beispielprogramme. Das untere benutzt einen Uhrenquarz.
http://www.mikrocontroller.net/articles/AVR_-_Die_genaue_Sekunde_/_RTC

Übrigens, normalerweise schaltet man da die restliche Hardware ab. 
Stromversorgung über Portpin oder P-Kanal Mosfet.

Auch wenn es hier verpönt ist, Einige Pics haben ein RTCC Modul, Der 
Uhrenqartz zählt selbsttändig einen Kalender hoch, weckt den Controller 
erst am eingestellten Datum.
#3837905
Lesenswert?

Warum die Leute immer nur die alten AVRs verwenden? Ein Mega88PA ist 
stromsparender, zum Teil, weil er in einem neueren Halbleiterprozess 
gefertigt wird, zum Teil, weil er einfach mehr Möglichkeiten bietet.

Das zum ersten.

Zu Deinem Problem: Du könntest überlegen, ob eine externe RTC wie zB 
MCP79410 oder DS3231 nicht Deine restliche Hardware per Alarm anschalten 
kann. Wenn die Aufgabe erledigt ist, schaltet sich der AVR mit einer 
Portleitung wieder selber aus. So ist die Woche über die gesamte 
Schaltung mit Ausnahme der Uhr AUS und verbraucht gar nichts. Die Uhr 
wird über eine Lithium-Batterie (zB CR2032) versorgt, die normalerweise 
für 10 Jahre reicht.

fchk
Gast #3837907
Lesenswert?

Danke für die vielen und hilfreichen Antworten.

Das mit der externen Hardware abschalten geht nicht so einfach, da an 
dem Interruptpin ein Sensor hängt, welcher bei Auslösen den Controller 
ebenfalls aufweckt und die werte weggespeichert werden. Deshalb kann 
diese Hardware nicht abgeschaltet werden.

Ich werde das dann doch zuerst mit dem Power Save Modus probieren und 
eine Variable alle 8s hochzählen. Falls dieses doch nciht meinen 
Erwartungen entspricht, werde ich es mit einem externen RTC probieren.
#3838751
Lesenswert?

Wie schon gesagt - man muss das Gesamtkonzept sehen. Werden eh dauerhaft 
300µA gebraucht, muss man nicht mehr ums letzte µA feilschen.

Ansonsten würde ich auch ne RTC vorschlagen (M41T81), läuft mit 0,5µA 
und man kann den Alarm programmieren, auch über mehrere Tage. 
RTC-Interrupt weckt den MC, paar Sachen machen, neue Alarmzeit 
schreiben, schlafen legen.
Gast #3839139
Lesenswert?

Den ersten Teil von Frank Ks Beitrag betonend: ein ATmega328P mit Quarz 
32 kiHz und asynchronem Timer2 benötigt bei 3.0 V gerade mal 1.0 µA, da 
ist der Aufwand für eine externe RTC sorgfältig abzuwägen.

Mein Tipp von weiter oben ist mindestens genauso veraltet wie der 
ATmega8, Atmel sollte in der Dokumentation mal etwas aufräumen.
#3839270
Lesenswert?

Amateur schrieb:
> die via Interrupt und FET den Rechner

wozu den FET ?

der alte Hanns schrieb:
> ein ATmega328P mit Quarz
> 32 kiHz und asynchronem Timer2 benötigt bei 3.0 V gerade mal 1.0 µA, da
> ist der Aufwand für eine externe RTC sorgfältig abzuwägen.

ja klar, der Quarz muss auch bestückt werden, da lobe ich mir die RTC 
mit DS3231, ist eine Platz, Geld oder Entwicklungsfrage.

Ich stöpsel lieber einen fertigen Arduino an eine fertige RTC mit 
Platine, aber wer selber die Platine entwirft hat u.U. 
Bauteilbeschaffungsprobleme oder Bestückprobleme. Hier ist ein einzelner 
DS3231 jedenfalls teurer als ein Fertigmodul aus China mit LR Batterie 
Halter und Ladeteil auf Platine.
Gast #3839296
Lesenswert?

Wenn ein Mikrokontroller schläft - und nichts mehr schnallt - kann er 
auch richtig abgeschaltet werden. Also rund 0 Ampere Stromaufnahme.

Dafür kann ein FET, der über den Interruptausgang geschaltet wird, nicht 
schaden. Schau hierzu mal bei NXP nach (PCF8563).

Natürlich kannst Du den µC auch über einen NMI aufwecken. Dazu braucht 
dieser aber auch dauerhaft ein bissel Strom.
#3839324
Lesenswert?

Amateur schrieb:
> Wenn ein Mikrokontroller schläft - und nichts mehr schnallt - kann er
> auch richtig abgeschaltet werden.

Vielleicht erst mal lesen vor dem Schreiben? Der TE will den µC auch 
per Interrupt vom Sensor aufwecken lassen können:

Thorsten schrieb:
> abschalten geht nicht so einfach, da an
> dem Interruptpin ein Sensor hängt, welcher bei Auslösen den Controller
> ebenfalls aufweckt und die werte weggespeichert werden.

Sleepmodus ist genau richtig. Und der extra Strombedarf für den 32kHz 
Oszillator und den daraus abgeleiteten Timekeeper-Interrupt ist nun 
wirklich Pillepalle angesichts der angegebenen 300µA Strombedarf 
zusätzlich zu dem des µC.

Die vielen Vorschläge mit immer noch stromsparenderen RTC sind nix als 
virtuelle Schwanzvergleiche.
Gast #3839337
Lesenswert?

@Axel

>Vielleicht erst mal lesen vor dem Schreiben? Der TE will den µC auch
>per Interrupt vom Sensor aufwecken lassen können:

Da ist was dran!

Im dritten Absatz habe ich genau auf diese Möglichkeit hingewiesen.

Also:
Bestimmt mal vor dem Schreiben, lesen. Zumindest nicht so selektiv.
#3839370
Lesenswert?

Axel Schwenke schrieb:
> Die vielen Vorschläge mit immer noch stromsparenderen RTC sind nix als
> virtuelle Schwanzvergleiche.

und warum mischst du dann genauso mit ?

weil du besser programmieren kannst ?

mir liegt eher Hardware, ich koppel die RTC mit ihrem Alarmausgang auf 
einen INT und muss mich um den 32kHz sleep Timerkram nicht kümmern! du 
vergleichst ja auch Schwänze wenn du deine Lösung als einzig richtige 
hinstellst.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren