Elektronikdesign Energie sparen im Schlaf

Embedded-Systeme sind mittlerweile mehrheitlich batteriebetrieben. Das ist praktisch für tragbare Geräte und Wearables, stellt Entwickler aber auch vor einige Herausforderungen. Schließlich gilt es, die Leistungsaufnahme zu senken und die Batterielebensdauer zu steigern.

Die Mehrzahl der Embedded-Systeme ist heute batteriebetrieben. Fortschritte bei Mikrocontrollern (MCUs) und in der drahtlosen Kommunikationstechnik sind unter anderem für die Vielzahl tragbarer Geräte, Wearables und Wandgeräte verantwortlich, die unsere Welt heute vernetzen, erfassen und steuern. Die Stromversorgung dieser Mikrocontroller-basierten Geräte über Knopfzellen oder Alkalibatterien hat zu diskreten Power-Management-Funktionen in Mikrocontrollern geführt. Mehr und mehr Hersteller setzen zudem Software-basierte Sleep-Modi ein, um ihre Produkte vom Wettbewerb zu differenzieren. Der Funk-MCU-SoC ESP32 von Espressif (Bild 1) zum Beispiel vereint zahlreiche Funktionen in einem Gehäuse, das ungefähr die Größe einer Briefmarke hat – und wurde von Anfang an mit einem umfangreichen Power Management bedacht.

Da eine Datenanbindung mittlerweile allgegenwärtig ist, sind heute außerdem weitere Hardware-Bestandteile wie Funk-Transceiver und andere Funktionen wie Sicherheit und verschlüsselte Authentifizierung in einem SoC-Ansatz (System-on-Chip) üblich. Jeder dieser Bestandteile benötigt Energie. Das stellt Entwickler vor folgende Überlegung: Wie lässt sich die Leistungsaufnahme eines Designs senken und die Lebensdauer der Batterie verlängern?

Schrittweise Analyse

Auf solch eine komplexe Frage gibt es nicht die eine allgemeingültige Antwort. Vielmehr muss der Entwickler für das jeweilige Design stets das Anwenderverhalten gegen eine niedrigere Leistungsaufnahme abwägen. Denn die Anwendung bestimmt das Ausmaß, in dem Energiespartechniken umgesetzt werden können. So kann ein Temperatursensor an der Wand, der nur alle zwei Minuten eine Messung durchführt, beispielsweise die meiste Zeit inaktiv sein. Es ist für Entwickler also essenziell, die verschiedenen Zustände zu kennen, in denen ein Design eingesetzt wird.

Zu Beginn der Entwicklung sollten Untersuchungen zur generellen Leistungsaufnahme durchgeführt werden. Zuerst muss daher verifiziert werden, ob sich die Anwendung über die gewünschte Batteriequelle betreiben lässt und der Strombedarf für alle möglichen Betriebszustände im mAh-Bereich verbleibt. Im Laufe dieser Prüfung sollte auch die sogenannte »Peripherie«, das heißt, Funktionen, die nicht erforderlich sind und deswegen stets deaktiviert bleiben können, innerhalb des SoC festgestellt werden.

Der ESP32 verfügt etwa über zwei primäre Cores, die beide mit 240 MHz getaktet werden können. Entwickler sollten daher zunächst einige Fragen klären: Lässt sich abhängig vom Design die Taktrate verringern? Verlangt die Prozessorauslastung der Anwendung den Betrieb beider Cores? Wenn nicht, genügt ein Core?

Laut Datenblatt beträgt der Spitzenverbrauch der mit 240 MHz (ohne Funk) betriebenen Cores 68 mA im Vergleich zu 31 mA bei einer Taktfrequenz von 80 MHz (Bild 2). Mit wenig Aufwand lässt sich also der Betriebsstromverbrauch sofort um die Hälfte verringern, sofern dies keine Auswirkungen auf die Benutzererfahrung oder den Betrieb der Anwendung hat.

Der nächste Block mit einem – sehr wahrscheinlich – hohen Stromverbrauch ist der Funk-Transceiver. Während des Sendens benötigt der 2,4-GHz 802.11 b/g/n WiFi/BT-Transceiver bis zu 240 mA; während des Empfangs 100 mA. Ist bekannt, wie oft das Design Daten per Funk austauschen muss, steht damit auch fest, wie viel Energie sich einsparen lässt. Abhängig von der geplanten Anwendung lässt sich der gesamte Funkblock vielleicht sogar für einen erheblichen Teil der Zeit ausschalten. Angenommen, ein Sensor erfasst die Temperatur alle zwei Minuten und sendet die Daten über WLAN. Dann beträgt die Gesamtzeit zum Aktivieren, Lesen des Sensors und Senden der Daten beispielsweise drei Sekunden und die Einheit ist für fünf von 180 Sekunden aktiv. 175 Sekunden lang kann der Funkblock demnach ausgeschaltet bleiben. Funkfunktionen verbrauchen oftmals mehr Strom als die Cores. Eine sorgfältige Analyse ist daher entscheidend.

Ein Merkmal des ESP32 ist die geringe Leistungsaufnahme der Prozessorfunktionen. Dazu zählen auch die Takterzeugung, der Quarz und die PLL, die weiterhin in Betrieb sind, wenn die Haupttaktfunktionen ausgeschaltet sind.

Leistungsaufnahme ist nicht gleich Leistungsaufnahme

Insgesamt bietet der SoC von Espressif fünf vordefinierte »Stromverbrauchsmodi« (Bild 3). Im Aktivmodus sind die Cores aktiv und der Funkblock funktionsfähig. Die oben genannten Tipps zur Einstellung der Taktrate gelten weiterhin und sollten bei jedem Design berücksichtigt werden. Der Modem-Sleep-Modus hält die Cores in Betrieb, schaltet jedoch den Funkblock ab und behält die Wake-up-Funktionen bei. Im Light-Sleep-Modus werden die Haupttakte heruntergefahren, die Cores angehalten und der Funkblock ausgeschaltet. Die Stromaufnahme fällt auf 800 µA mit einer Wake-up-Verzögerung von weniger als einer Millisekunde.

Die zwei übrigen Stromverbrauchsmodi eignen sich für die meisten Sensor­anwendungen im Internet der Dinge (IoT) – sofern der Datenaustausch nur selten erfolgt. Im Deep-Sleep-Modus werden die Cores heruntergefahren und verlieren den Kontext. Der Funkblock ist deaktiviert und eine kleine Datenmenge wird in universellen Registern gehalten. Der Gesamtstromverbrauch sinkt dabei auf circa 6,5 µA, während die Wake-up-Verzögerung wie beim Light-Sleep-Modus beibehalten wird. Im Ruhezustand (Hibernate-Modus) sinkt der Verbrauch auf 4,5 µA.

WAKEUP_ENAWake-up SourceLight SleepDeep SleepHibernation
0x1EXT0++-
0x2EXT1+++
0x4GIPO++-
0x8RTC Timer+++
0x10SDIO+--
0x20Wi-Fi+--
0x40UART0+--
0x80UART1+--
0x100TOUCH++-
0x200ULP Co-Processor++-
0x400BT+--

 

Tabelle 1. Wake-up-Möglichkeiten des ESP32, sofern dieser sich in einem seiner Sleep-Modi befindet.

Mit abnehmender Leistungsaufnahme nehmen auch die Möglichkeiten zu, den Wake-up zu triggern. Tabelle 1 zeigt die verschiedenen Wake-up-Möglichkeiten. Entwicklern wird empfohlen, diese zu überprüfen, um den Energieverbrauch der Anwendung und somit die Wake-up-Verzögerung sowie die verfügbare Wake-up-Möglichkeit zu optimieren.

Eine vollständige Beschreibung der Sleep-Modi und deren Einsatz findet sich im technischen Referenzhandbuch für den ESP32.

Über den Autor

Andreas Meiler ist gelernter Industrieelektroniker und hat anschließend ein Elektrotechnik-Studium absolviert. Als Dipl.-Ing. (FH) war er seit Mai 2007 im Conrad Technologie Center zunächst als Entwickler für Hard- und Software beschäftigt, später als Projektmanager. Seit März 2019 ist er für die Leitung der Produktentwicklung verantwortlich.