Energy Harvesting ist zwar kein neues Konzept, etabliert sich aber zusehends. Weil moderne HF-ICs und Mikrocontroller immer mehr leisten und dabei immer weniger Strom verbrauchen, wird die Entwicklung einer Energy-Harvesting-Anwendung wie eines Sensorknotens immer einfacher. Mit der gleichen erzeugten Energie sind heute auch wesentlich mehr Funktionen innerhalb der Anwendung umsetzbar. Folglich finden sich immer mehr Anwendungen, in denen Energy Harvesting zur Versorgung eines Sensorknotens eine praktikable Lösung ist. Der Knoten erfasst Daten, verarbeitet sie sofort vor Ort und überträgt sie dann an einen Sammelpunkt.

Bild 1: Blockdiagramm eines IoT-Sensorknotens, der sich per Energy Harvesting versorgt.

Bild 1: Blockdiagramm eines IoT-Sensorknotens, der sich per Energy Harvesting versorgt. Silicon Labs

Systemkomponenten für das Energy Harvesting

Bild 1 zeigt ein Embedded-Energy-Harvesting-System. Einige Bestandteile, wie der Energy Harvester selbst, finden sich in jedem Energy-Harvesting-Design. Als Energiequelle stehen typischerweise Licht, Wärme, Vibration oder Funkwellen (HF) zur Wahl, die aber sehr unterschiedliche Energiemengen bereitstellen:

  • HF: 0,1 µW/cm²
  • Vibration: 1000 µW/cm²
  • Wärme: 10.000 µW/cm²
  • Photovoltaik: 100.000 µW/cm²

Für das Beispiel in diesem Beitrag wählen die Autoren einen Solarzellen-Harvester. Neben der Harvesting-Quelle ist auch eine Energiespeicherung erforderlich, zum Beispiel eine Kondensatorbank oder ein kleiner Akku. Die Energiespeicherung ist erforderlich, da der Harvester dauerhaft geringe Energiemengen erzeugt, die Anwendung selbst aber Aktivitätsspitzen mit hohem Energieverbrauch aufweist und sonst die meiste Zeit im Sleep-Modus verweilt.

Eckdaten

Stromsparen ist die wichtigste Aufgabe bei der Entwicklung von Energy-Harvesting-Anwendungen. Dabei kommt es nicht nur darauf an, wie viel Energie eine bestimmte Aktion verbraucht, sondern auch wie häufig ein System diese Aktion ausführen muss. Je länger die Pausen dazwischen, desto mehr Energy kann der Harvester inzwischen für die nächste Aufgabe sammeln. Silicon Labs erklärt Techniken, die diese Pausen verlängern.

Neben diesen Bestandteilen wählt der Entwickler genau die Komponenten, die das gewünschte Ergebnis liefern und die verfügbare Energie nutzen. Dabei muss er wichtige Faktoren berücksichtigen: Der Standby-Strombedarf der gewählten Bauteile sollte extrem niedrig liegen; sie müssen im aktiven Zustand möglichst wenig Strom verbrauchen; und sie müssen sehr schnell zwischen dem Aktiv- und Standby-Modus hin- und herschalten: Je mehr Zeit beim Übergang vom Standby- in den Aktiv-Modus vergeht, desto mehr Energie wird verschwendet.

HF-Verbindung hinzufügen

Beim HF-Teil spielt die Wahl des Protokolls eine wichtige Rolle: Dessen Bandbreite muss ausreichen, um die erforderlichen Daten mit minimalem Overhead zu übertragen. Zigbee und Bluetooth sind schon sehr energieeffizient, aber für Energy Harvesting könnte sich eine noch einfachere Funkanbindung besser eignen. Infrage kommt eine einfache, proprietäre Sub-GHz-Lösung. Nimmt man an, dass ein Sensorknoten nur eine minimale Datenmenge übertragen muss, da er die Signale schon vor Ort verarbeitet, dann verbringt der HF-IC die meiste Zeit im Standby-Modus und wird nur aktiviert, um kurze Bursts vorverarbeiteter Daten zu übertragen. Dabei sind zwei wichtige Parameter zu berücksichtigen: der Stromverbrauch im Standby-Modus und der Stromverbrauch im Sendemodus.

Ein stromsparender Sub-GHz-Transceiver wie der Si4464 von Silicon Labs ist daher eine gute Wahl. Der Baustein bietet eine Standby-Stromaufnahme von nur 50 nA und minimiert somit den Energiebezug vom Harvester, wenn kein Senden oder Empfangen stattfindet. Die Wake-up-Zeit von 450 µs sorgt für einen schnellen Übergang vom Standby- in den Betriebsmodus. Dieser Grad an Funkenergieeffizienz verringert den Stromverbrauch des HF-ICs in der Anwendung, wenn Daten erfasst und verarbeitet werden müssen.

Bild 2: Die Ausführung einer 512-Punkte-FFT auf einem Cortex-M3 im Vergleich zum Cortex-M4 zeigt, wie sehr die DSP-Funktionen des M4 den Ablauf beschleunigen und damit Energie sparen.

Bild 2: Die Ausführung einer 512-Punkte-FFT auf einem Cortex-M3 im Vergleich zum Cortex-M4 zeigt, wie sehr die DSP-Funktionen des M4 den Ablauf beschleunigen und damit Energie sparen.Silicon Labs

Die Wahl der richtigen MCU

Durch seine MCU kann der Sensorknoten die Messwerte vor Ort verarbeiten und damit kleinere Datenmengen über das Funknetzwerk senden. Als Basis eignet sich ein ARM Cortex-M4-Core mit seinen DSP-Funktionen für die Signalverarbeitung: Dabei sind wesentlich weniger Taktzyklen erforderlich als bei MCUs ohne DSP-Funktion. Bild 2 zeigt den Stromverbrauch über der Zeit, um eine 512-Punkte-FFT (Fast-Fourier-Transformation) auf einer Cortex-M3- und einer Cortex-M4-basierten MCU durchzuführen. Die CPU-Taktgeschwindigkeit bleibt dabei gleich. Die Verarbeitungsdauer mit einem DSP-basierten Cortex-M4 ist wesentlich kürzer als bei einem Cortex-M3, was die Energieeffizienz erhöht.

Der EFM32 Wonder Gecko von Silicon Labs basiert auf dem Cortex-M4. Der Core alleine ist jedoch nicht der einzige Faktor, um höchste Energieeffizienz zu erzielen. Ebenfalls zu berücksichtigen sind der Stromverbrauch für die Signalerfassung, für die Interaktion zwischen MCU und Peripherie sowie die Möglichkeit, die MCU für möglichst lange Zeit in Stromsparmodi zu versetzen.

Bild 3: Verschiedene ADC-Strategien wirken sich auch auf den Energiebedarf aus. Die EFM32-MCUs können auf externe Events warten und diese abarbeiten, ohne dazu in eine Interrupt-Service-Routine verzweigen zu müssen.

Bild 3: Verschiedene ADC-Strategien wirken sich auch auf den Energiebedarf aus. Die EFM32-MCUs können auf externe Events warten und diese abarbeiten, ohne dazu in eine Interrupt-Service-Routine verzweigen zu müssen.Silicon Labs

Energieeffiziente Signalerfassung

Bei der Signalerfassung lässt sich die Energieeffizienz auf verschiedene Weise optimieren. Für ein Analogsignal sind ein A/D-Wandler (ADC) oder eine spezielle Schnittstelle für die Signalerfassung nötig. Es gibt verschiedene Techniken, um mit einem ADC Daten zu erfassen. Bild 3 zeigt drei Varianten, wobei die erste Option am häufigsten anzutreffen ist. Die ADC-Erfassungen werden über einen Timer ausgelöst und die Daten an den DMA übertragen. Damit ergibt sich ein Stromverbrauch von 165 µA für 1 kSample/s. Die Peripherie ist dabei recht umfangreich im Einsatz, ohne spezielle Funktionen der MCU zu nutzen.

Die zweite Methode senkt den Stromverbrauch; die Messfrequenz bleibt dabei gleich: Der Energy Mode 2 (EM2) hält die MCU im Standby-Betrieb bis ein Interrupt sie aktiviert. Dieser Interrupt kann aus verschiedenen Quellen kommen, zum Beispiel von einem Timer, der im EM2-Modus aktiv ist. EM2 weist einen Standby-Stromverbrauch von 900 nA auf und ermöglicht der MCU, binnen 2 µs in den Aktivzustand mit voller Geschwindigkeit zu wechseln. Damit ergibt sich eine gute Balance zwischen der Zeitspanne in Ultra-Low-Power-Modi und der verbrauchten Energie, um von EM2 zurück in den Vollbetrieb zu wechseln. Der Stromverbrauch verringert sich beim Erfassen von 1 kSample/s deutlich auf 60 µA. Diese Option ist wahrscheinlich am besten geeignet, da viele Embedded-Anwendungen Interrupt-gesteuert arbeiten, aber bestimmte Umstände innerhalb der Anwendung beachten müssen. Doch man kann den Stromverbrauch noch weiter senken.

Bild 4: Stromverbrauch der drei ADC-Strategien aus Bild 3, aufgetragen gegenüber der Abtastrate. Es zeigt sich, dass je nach Abtastrate mal Strategie 1, mal Option 3 am sparsamsten arbeitet.

Bild 4: Stromverbrauch der drei ADC-Strategien aus Bild 3, aufgetragen gegenüber der Abtastrate. Es zeigt sich, dass je nach Abtastrate mal Strategie 1, mal Option 3 am sparsamsten arbeitet.Silicon Labs

Das dritte Beispiel, das sich als optimierte Schleife betrachtet lässt, nutzt ebenfalls den EM2-Modus. Statt auf einen Interrupt zu warten, kommt der WFE-Befehl (Wait for Event) zum Einsatz. Mit diesem Kommando aus dem Cortex-M-Befehlssatz wartet die MCU auf externe oder interne Ereignisse, so wie bei einem Interrupt. Statt von der Hauptschleife in eine Interrupt-Service-Routine zu wechseln, wacht die MCU aus dem EM2 auf und führt den nächsten Befehl aus. Damit erübrigt sich die Interrupt-Latenz. Dieser Ansatz eignet sich zwar nicht für alle Anwendungen; er kann aber den Stromverbrauch auf weniger als 20 µA bei der gleichen Abtastung mit 1 kSample/s senken.

Auf die Häufigkeit kommt es an

Eine sorgfältige Analyse, wie oft ein Signal abgetastet werden muss und wie viel Strom die MCU in verschiedenen Modi verbraucht, hilft bei der Entscheidung für den geeigneten Abtastmodus. Bild 4 zeigt den Stromverbrauch gegenüber der Abtastfrequenz für alle drei Techniken. Es zeigen sich Kreuzungspunkte, an denen man sinnvollerweise von einer Methode zur nächsten wechselt.

Bild 5: Der Lesense-Betrieb (Low Energy Sensor Interface) ermöglicht es, auf Events nur dann zu reagieren wenn mehrere Bedingungen gleichzeitig zutreffen.

Bild 5: Der Lesense-Betrieb (Low Energy Sensor Interface) ermöglicht es, auf Events nur dann zu reagieren wenn mehrere Bedingungen gleichzeitig zutreffen.Silicon Labs

Neben dem ADC zur Signalerfassung bietet die MCU noch weitere spezielle Peripherie. Der EFM32 Wonder Gecko besitzt ein Low Energy Sensor Interface (Lesense), das eingehende Signale erfasst und die MCU nur dann aktiviert, wenn sie wichtige Informationen verarbeiten muss. Bild 5 zeigt das Lesense-Konzept, etwa wenn ein Analogsignal an der MCU anliegt.

Ein Standardverfahren für solche Signale wäre, den Eingang kontinuierlich abzufragen und zu prüfen, ob er einen Schwellenwert erreicht. Diese Technik ist jedoch nicht energieeffizient. Mit einer autonomen Sensorschnittstelle wie Lesense kann die MCU in einem Stromsparmodus (zum Beispiel EM2) verbleiben und nur dann aktiv werden, wenn der Schwellenwert überschritten wurde. Wenn nicht jedes einzelne Ereignis relevant ist, kann das System auch die überschrittenen Schwellenwerte zählen und die MCU erst nach einer bestimmten Menge aufwecken, beispielsweise nach fünf Überschreitungen. Damit ergibt sich eine energieeffizientere Lösung. Wird die MCU über Lesense aktiviert, ist die Aufgabe bereits vorgegeben und kann direkt bearbeitet werden. Bild 6 zeigt, wie Lesense in einer Energy-Harvesting-Anwendung den Stromverbrauch senken kann.

Bild 6: Der energieeffiziente Einsatz von Lesense sorgt dafür, dass die MCU nur die wirklich relevanten Ereignisse bearbeitet und damit deutlich weniger Strom verbraucht.

Bild 6: Der energieeffiziente Einsatz von Lesense sorgt dafür, dass die MCU nur die wirklich relevanten Ereignisse bearbeitet und damit deutlich weniger Strom verbraucht.Silicon Labs

Bild 6 zeigt die Messung einer Spannungsschiene, die in die MCU geführt und über das Energiereservoir der Anwendung versorgt wird. In beiden Beispielen erfasst die Anwendung Signale durch die Lesense-Peripherie bei 5 Hz. Im ersten Beispiel wird die MCU bei jeder Erfassung aktiviert, und schon nach kurzer Zeit ist das Energiereservoir erschöpft. Die MCU wird zurückgesetzt (Reset). Im zweiten Beispiel ist Lesense so konfiguriert, dass es die MCU nur bei jeder fünften Erfassung aktiviert. Die gleiche Datenmenge wird erfasst und an die MCU weitergeleitet, nur dass die MCU nicht zurückgesetzt wird und die Anwendung weiterhin funktionsfähig bleibt.

Energy Harvesting braucht stromsparende MCUs

Die Energiemenge, die sich von Energy-Harvesting-Quellen für Embedded-Anwendungen nutzen lässt, hat sich über die Jahre kaum erhöht. Der Energiebedarf wichtiger Systemkomponenten wie MCUs und HF-ICs hat sich hingegen erheblich verringert. Der Trend in Richtung energieeffiziente ICs ermöglicht intelligentere Embedded-Systeme, die mit Energy Harvesting arbeiten. Mit dem rasanten Wachstum des IoT lassen sich selbstversorgende Sensorknoten entwickeln und einsetzen. Die Auswahl an HF- und MCU-Chips ist heute riesig. Da es für Embedded-Designs mit Energy Harvesting keine Einheitslösung gibt, müssen Entwickler die passenden Bausteine sorgfältig auswählen.