Aufwachen aus dem Tiefschlaf

13

Die meisten Mikrocontroller (z. B. AVRs, MSP430s, PICs usw.) unterstützen eine Reihe verschiedener Schlafmodi. Der "tiefste" Schlafmodus ist derjenige, der die geringste Leistungsaufnahme vorgibt (z. B. "Power Down", "Shut Down"), aber alle Uhrensysteme werden normalerweise in diesen Modi angehalten, und es scheint mir, dass der einzige Weg zu wake up "von ihnen erfolgt über externe Reize (z. B. Pinwechsel-Interrupts, Chip-Reset). Vermisse ich etwas? Gibt es äußerst stromsparende Methoden, um ein periodisches Aufwecksignal für eine MCU zu generieren?

Angenommen, mein Ziel ist es, den Stromverbrauch zu minimieren (dh so lange wie möglich tief zu schlafen, so kurz wie möglich wach zu bleiben), während ich regelmäßig aufwache, um eine Funktion auszuführen. Wie kann man diese Art von Verhalten erreichen? Nehmen wir zur weiteren Vereinfachung an, dass meine Funktion zustandslos ist (ich muss mir nichts aus der Vergangenheit merken, um sie auszuführen).

Ich hatte einige Erfolge mit dem WDT auf dem MSP430, um diesen Effekt zu erzielen. Ich habe gerade meine Hauptroutine zu meiner Funktion gemacht, wobei die letzte Zeile dem Watchdog-Timer ermöglicht, nach einer bestimmten Zeit abzulaufen und in LPM4.5 zu wechseln oder wie auch immer der "Tiefschlaf" -Modus aufgerufen wird. Das Nettoergebnis ist, dass die Funktion ausgeführt wird, die MCU schläft, der WDT abläuft und der Chip ad nauseum zurückgesetzt wird. Scheint zu funktionieren, sich nur zu fragen, ob es eine "bessere" oder "elegantere" oder "energieeffizientere" Methode gibt, um diese Art von Verhalten zu erreichen?

Ich habe diesen Ansatz noch nicht mit einem AVR ausprobiert, aber ich denke, dass der WDT in den AVRs mehr "Strom verbraucht" als im MSP430, sodass er für Arbeiten mit geringem Stromverbrauch weniger attraktiv sein kann. Vielleicht gibt es keine "universelle" Herangehensweise an niedrige Leistung, und Sie müssen die Werkzeuge verwenden, die eine bestimmte Produktlinie bietet? Ich weiß, dass die neue picoPower-Linie viele Funktionen wie das Event-System und Sleep-Walking bietet, die in einigen Fällen kaum ein Aufwachen der CPU erfordern, wenn Sie Ihre Anwendung in diese Struktur integrieren können ...

OK genug von meiner Wanderung, lass uns hier was du zu sagen hast :)

Bearbeiten Konkrete Beispiele Techniken veranschaulicht , wäre auch cool!

vicatcu
quelle
2
Haben Sie focus.ti.com/lit/wp/slay015/slay015.pdf gesehen ? Einige interessante Punkte neben den absoluten Schlafleistungszahlen.
XTL

Antworten:

15

Die meisten Mikros unterstützen einen 32,768-kHz-Quarzoszillator mit geringer Leistung und einer Art Prescaler- und Timer-Interrupt. Stellen Sie den Vorteiler so ein, dass der Timer langsam zählt und die Unterbrechung zu der von Ihnen gewünschten Zeit erfolgt.

Einige Mikros haben auch einen eingebauten Low-Power-RC-Timer, wenn das genaue Timing nicht kritisch ist.

Das Datenblatt für jedes Mikro mit niedrigem Stromverbrauch listet den Stromverbrauch bei laufendem 32.768-Oszillator (und sonst nichts) auf. Es ist ziemlich nahe bei Null. Sie können nachrechnen, ob dies akzeptabel ist, und es mit dem vom Watchdog gezogenen Strom vergleichen.

OK, zum Beispiel beim msp430f2013, schauen wir uns die Leistung im Datenblatt an.

0,5 μA ist fast Null, obwohl es das Fünffache des echten AUS-Modus ist.

Weitere Einzelheiten können Sie dem Datenblatt entnehmen.
Von LPM4 (alles aus) zu LPM3 (den Oszillator laufen lassen) zu gehen, ist die Differenz zwischen 0,5 μA und 1 μA.

Angenommen, die Batterie ist CR2032 mit einer Kapazität von 225 mAh. Dann beträgt die Standby-Zeit in LPM4 etwa 50 Jahre und in LPM3 etwa 25 Jahre. 25 Jahre reichen für viele Anwendungen aus, da der Einschaltstrom (während der Messung selbst) den Verbrauch dominiert.

Alt-Text

Markrages
quelle
Fühlen Sie sich frei, um ein konkretes Beispiel zu wählen ... :)
vicatcu
erledigt, für msp430f2013 und cr2032 cell.
Markrages
Wir verwenden Cr2032 bei meiner Arbeit mit dem ACLK bei 32768 und wachen alle 2 Sekunden auf. Wir benutzen alle 90 Sekunden einen Transceiver. Wir nehmen alle 10 Sekunden eine Temperaturmessung vor. Mit einem neuen CR2032 können wir mehr als 4 Jahre durchhalten.
Kortuk
3

Einige Teile haben Oszillatoren mit sehr geringem Stromverbrauch (ein paar uA) zum Aufwecken, und einige PICs verfügen auch über Hardware, mit der eine sehr langsam ansteigende Spannung an einem Pin aufgeweckt werden kann erforderliche Weckzeit.

mikeselectricstuff
quelle
3

Bei PICs mit RTCs kann die RTC in einen Alarmzustand versetzt werden, sodass die MCU zu einem bestimmten Zeitpunkt mit einem externen 32,768-kHz-Quarz aufgeweckt wird. Sie ziehen im RTC + -Schlafmodus ~ 450nA IIRC, aber nur 20nA bei ausgeschalteter RTC.

Thomas O.
quelle
3

AVR-Watchdog-Timer sind nicht so schlecht, wie Sie denken. Gemäß dem ATTiny13A-Datenblatt beträgt die Stromaufnahme im Power-Down-Modus bei 3 V 2 μA ohne aktivierten WDT und 4 μA mit aktiviertem WDT. Sicher, es ist 2x mehr, aber der Strom selbst ist klein genug für eine Betriebsdauer von ca. 6,2 Jahren, was ungefähr der Zeit entspricht, die der Akku benötigt, um sich selbst zu verschlechtern (Quelle: Mindesthaltbarkeitsdatum).

Darüber hinaus würde praktisch alles, was Sie um den μC anschließen, viel mehr zeichnen. Tatsächlich ist der schwierigste Teil beim Entwerfen einer solchen Schaltung mit geringem Stromverbrauch das Abschalten des gesamten Stroms im Rest des Schaltplans während der Ruhephase.

Die Weckverzögerung ist ebenfalls gut konfigurierbar, von ~ 12 ms bis 8 s, wenn der Speicher belegt ist. Die tatsächliche Frequenz macht keinen nennenswerten Unterschied, wenn kurze Interrupt-Routinen verwendet werden: Ich habe den ADC eingeschaltet, einen 1-K-Pot abgetastet, einige Daten aus den Ergebnissen berechnet und bin wieder eingeschlafen, ohne dass sich der Gesamtverbrauch merklich verändert hat ( mit einem großen Kondensator geglättet, um die Trägheit meines Multimeters auszugleichen).

Beachten Sie, dass der WDT kein genaues Zeitnehmungs-Tool ist. Möglicherweise möchten Sie eine externe Echtzeituhr anschließen. Diese können nur Nanoampere verbrauchen, es sollte also eine gute Paarung sein. In der Tat, wenn die fragliche RTC regelmäßige Impulse erzeugen kann, könnten Sie diese als Ihre Aufweckquelle anstelle des WDT verwenden, und zwar auf Kosten der Verwendung eines Pins.

FlashCactus
quelle