Forum: Mikrocontroller und Digitale Elektronik Mikrocontroller wöchentlich aus Sleep Modus holen


von Thorsten (Gast)


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

von Mike (Gast)


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.

von Falk B. (falk)


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.

: Bearbeitet durch User
von Peter R. (pnu)


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

von der alte Hanns (Gast)


Lesenswert?

Auch ich halte die Anforderung für wenig sinnvoll bei den gegebenen 
Stromverhältnissen. Wenn es denn aber sein muss/soll, vielleicht hilft 
Folgendes:
http://www.atmel.com/images/doc1268.pdf

von Noch einer (Gast)


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.

von Joachim B. (jar)


Lesenswert?

oder das aufwecken von einer RTC mit DS3231 machen lassen per Alarm aus 
der RTC und Int an den Atmel, dann darf der auch eine Woche tief 
schlafen und muss nie die Zeit zählen.

von Frank K. (fchk)


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

von Thorsten (Gast)


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.

von Torsten B. (tbrox)


Lesenswert?

Der PCF2123 ist eine sehr sparsame RTCC. Ansprechbar über SPI und als 
Alarmgeber programmierbar. Damit lassen sich auch größere Zeiträume sehr 
komfortabel einstellen.

von H.Joachim S. (crazyhorse)


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.

von der alte Hanns (Gast)


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.

von Paul B. (paul_baumann)


Lesenswert?

Der alte Hanns beklagte:
>Mein Tipp von weiter oben ist mindestens genauso veraltet wie der
>ATmega8, Atmel sollte in der Dokumentation mal etwas aufräumen.

In alten Gesangbüchern stehen auch schöne Lieder....
;-)

MfG Paul

von Amateur (Gast)


Lesenswert?

Eine externe RTC, mit I²C (0,4µA), die via Interrupt und FET den Rechner 
aufweckt.

von Joachim B. (jar)


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.

von Amateur (Gast)


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.

von Amateur (Gast)


Lesenswert?

apropos Quarz.

Beim PCF8563 (32 KHz) wird der Tackt nach außen geführt. Es müsste also 
möglich sein diesen Pin mit dem Takteingang des µC zu verbinden.
Spart notfalls dessen Quarz.

von Axel S. (a-za-z0-9)


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.

von Amateur (Gast)


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.

von Joachim B. (jar)


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.

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.