Der Raspberry Pi kommt in zahlreichen Applikationen zum Einsatz. Für Anwendungen, die einen möglichst geringen Energieverbrauch aufweisen sollen, ist er jedoch weniger oder überhaupt nicht geeignet. Doch mit der richtigen Zusatzschaltung lässt sich die Leistungsaufnahme minimieren.
Die jeweiligen Ausstattungsmerkmale der verschiedenen Raspberry Pi Boards haben einen unterschiedlichen Stromverbrauch zur Folge. Es ist jedoch nicht die Anzahl der vorhandenen CPU-Kerne, die sich nachteilig auf den Stromverbrauch auswirkt. Vielmehr sind Boards mit einer neueren CPU und neueren Bluetooth Low Energy (BLE)- und WLAN-Chips energiesparender als ältere, was letztendlich an der fortschrittlicheren Halbleitertechnologie liegt.
Weiterhin haben das eingesetzte Betriebssystem – zum Beispiel Raspberry PI OS, Light-Versionen, RISC OS, Arch Linux, Windows 10 IoT Core – sowie die aktiven Dienste einen maßgeblichen Einfluss auf den Stromverbrauch. Für Low-Power-Anwendungen empfiehlt es sich, in der textbasierten Oberfläche zu bleiben (Konsolenmodus) und nicht in einer grafische Oberfläche zu booten.
Die allgemein gültige Empfehlung, möglichst alle Einheiten, die nicht für die konkrete Applikation nötig sind, abzuschalten, gilt ebenfalls für einen Raspberry Pi. Weitere Maßnahmen aus der Mikrocontroller-Praxis für einen möglichst geringen Stromverbrauch sind ein applikationsabhängiges Anpassen der Taktraten sowie der Versorgungsspannungen. Dies lässt sich mit einem Editor in der Konfigurationsdatei »/boot/config.txt« festlegen. [1]
Das direkte Programmieren eines Raspberry-Pi-Minicomputers in Assembler (Arm) oder C (Bare Metal Programming) ist seit dem Erscheinen des Raspberry Pi Pico – mit einem RP2040 Microcontroller – im Prinzip obsolet. Denn der Pico entspricht einem Mikrocontrollerboard im Arduino-Nano-Format, das kein Betriebssystem benötigt und in »C« oder »MicroPython« programmierbar ist. Für die weiteren Betrachtungen spielt der Pico deshalb hier keine Rolle, sondern ausschließlich die Versionen als Mini-Computer-Board.
Vergleichbare Low-Power-Modi, wie sie etwa bei der »MSP430«-Familie von Texas Instruments oder bei Arm-Prozessoren wie den »EFM32«-Typen von Silicon Labs bereitstehen, lassen sich beim Raspberry Pi nicht programmieren. Zunächst liegt das an fehlenden Informationen zu den implementierten Power-Modi des eingesetzten Arm-Prozessors. Zum einen gibt die Firma Broadcom hierzu offiziell keinerlei verwertbare Informationen preis. Zum anderen verweigern sowohl der Kernel als auch die an den Raspberry Pi angepasste Firmware dem Programmierer den Registerzugang zum Prozessor.
Ohne besonderen Aufwand ist es deshalb per Software lediglich möglich, den Raspberry Pi in den Shutdown-Modus (sudo shutdown –h now) zu versetzen. So fließt minimal der Ruhestrom. Je nach Raspberry-Pi-Modell sind das etwa 100 mA (Modell B, 3B+, 3A+), 35 mA (Model B+, A+, Zero) bis hinunter zu etwa 20 mA (Modell 4B). [2]
Beim Raspberry Pi 2B ist erstmalig Platz für einen Header vorhanden, der einen Massekontakt sowie einen mit »RUN« bezeichneten Kontakt führt. Hier ist ein zweipoliger Steckpfosten montierbar, an den sich ein Reset-Taster anschließen lässt. Betätigt man ihn, wird der RUN-Kontakt auf Masse gezogen, was einen manuellen Reset des Raspberry Pi auslöst. Solange sich der RUN-Pin auf Masse befindet (Reset Hold), ist der SoC angehalten und befindet sich ebenfalls in einem Shutdown-Modus.
Jedoch ist der Stromfluss dann nicht der Gleiche, als wäre der entsprechende Befehl (siehe oben) gegeben worden. Bei den Modellen 3B, 3B+ und 3A+ ist er höher und beträgt etwa 160 mA, während er bei den Zero-Modellen mit 3 bis 12 mA (Zero W) am geringsten ist. Interessant ist, dass der Stromfluss eines Raspberry Pi 4 mit etwa 340 mA im Reset-Hold-Modus von allen Modellen, die über den RUN-Kontakt verfügen, am höchsten ist.
Beim Raspberry Pi 3+ ist der Kontakt neben RUN mit »PEN« beschriftet, was für »Power Enable« steht. Der Pin befindet sich im Normalbetrieb auf High-Potenzial. Wird der Pin auf Low-Potenzial (Masse) geschaltet, verweilt der Power Management IC (PMIC) »MXL7704« auf der Platine in einem stromsparenden Modus. So beansprucht er – je nach Modell – lediglich etwa 6 bis 14 mA. Hierbei leuchtet die Power-LED, wie bei der Auslösung von RUN, weiterhin.
Die Power-Enable- oder Global-Enable-Funktion (siehe unten) ist von externen Schaltungen nutzbar, um einen Raspberry Pi »schlafenzulegen«. Entsprechend kann der Raspberry Pi dann zu bestimmten Zeiten aufwachen, seine programmierte Aufgabe, wie etwa eine Sensormessung, ausführen und sich danach wieder schlafen legen.
Man darf die Anschlüsse RUN und PEN – obwohl sie direkt nebeneinander angeordnet sind – aufgrund ihrer unterschiedlichen Funktion nicht miteinander verbinden, sondern lediglich einzeln mit einem Massekontakt (an der GPIO-Leiste) kontaktieren beziehungsweise auf Low-Potenzial setzen.
Diese ungünstige Position des RUN- und PEN-Kontaktes gibt es beim Raspberry Pi 4 nicht mehr. Beide Anschlüsse befinden sich als »J2« am linken Rand der Platine neben dem DSI-Anschluss. Zwischen den beiden Kontakten ist jetzt ein Masse-Pin vorhanden [2] und der PEN-Pin wurde in »GLOBAL_EN« umbenannt. Legt man diesen Pin auf Masse, ergibt sich die höchste Stromersparnis, denn der Strombedarf des Raspberry Pi 4 beträgt dann lediglich 14 mA, beim Modell 3B 6 mA und beim Modell 3B+ lediglich 10 mA.
Eine Real Time Clock (RTC) kann zu programmierten Zeitpunkten ein Schaltsignal ausgeben, welches für das Ein- und/oder Ausschalten eines Raspberry Pi nutzbar ist. Die RTC sollte sehr genau arbeiten, über eine möglichst geringe Leistungsaufnahme verfügen sowie über eine Knopfzelle mit Energie versorgt werden. Außerdem ist eine komfortable Möglichkeit zum Stellen der RTC wünschenswert.
Als geeignet erscheinende RTCs [3] sind beispielsweise verfügbar:
➔ Ambiq Micro: AM08XX
➔ Abacron: AB018X5
➔ MicroCrystal: RV-3028-C7
➔ Cymbet: CBC921-PMRTC
Sie weisen einen Strombedarf im Nano-Bereich (14 bis 45 nA) auf. Für die erwähnten RTCs von MicroCrystal und Cymbet wurden die entsprechenden Evaluation Kits mit der dazugehörigen Software verwendet. Mit ihnen ist ein Stellen der Uhrzeit unter Windows möglich.
Während das Cymbet-System mit einem USB-Interface (»FT2232D«) für den Anschluss an einen PC ausgestattet ist, verfügt das von MicroCrystal lediglich über ein I2C-Interface (Bild 1). Aus dem Grund ist hierfür ein Converter nötig. Zum Einsatz kam der Typ »USB-I2C« der Firma ELV Elektronik. Als USB-Chip wurde der Typ »CP2102« eingesetzt, für den Silicon Labs einen passenden Treiber bereitstellt.
Beim Erproben zeigte sich die Software (Bild 2) von MicroCrystal als besonders komfortabel, denn alle Funktionen und Variablen sind in einer übersichtlichen grafischen Oberfläche dargestellt. Sie bietet zudem einige »Annehmlichkeiten«, beispielsweise, dass sie die Systemzeit des Computers automatisch in die passenden Register der RTC schreibt.
Bei der Software von Cymbet sind die Registereinstellungen nicht ersichtlich. Wahrscheinlich, weil es sich hierbei um eine Demoversion handelt. Eine andere Softwareversion war jedoch nicht erhältlich. Also wurde das Design für den Raspberry Pi mit der RTC von MicroCrystal (»RV-3028-C7«) durchgeführt.
Die Notwendigkeit für eine Abschaltung des Raspberry Pi ergibt sich aus der jeweiligen Applikation. So war die konkrete Motivation eine Eigenentwicklung in Form einer aufgesetzten HAT-Platine für das Messen der Luftqualität, die autark mit einer Powerbank arbeitet. Ohne Abschaltmöglichkeit funktioniert die Schaltung nur wenige Tage, weil die Powerbank dann bereits erschöpft ist. Jedoch soll die Messschaltung hier keine Rolle spielen, sondern die Abschaltmöglichkeiten. Sie lassen sich für alle möglichen Applikationen mit dem Raspberry Pi einsetzen.
Möglichkeit 1: Shutdown mit RUN-Steuerung
Die einfachste Möglichkeit ist es, den Raspberry Pi am Ende einer Messung über einen Softwarebefehl in den Shutdown-Modus zu versetzen. So benötigt er dann nur noch etwa 20 mA (siehe oben). Mit einem Reset, also dem Verbinden des RUN-Pins mit GND, lässt er sich anschließend wieder starten. Es wird ein Neuboot ausgeführt. Neben dem Signal von einer RTC sind hierfür lediglich wenige Bauteile nötig: zwei Transistoren und zwei Widerstände als Pull-ups (Bild 3).
Die Transistoren kommen als Schalter zum Einsatz. Hierbei handelt es sich um MOSFETS der Firma Diodes Incorporated – diese Typen weisen einen hohen Eingangswiderstand (1014 Ohm) auf. Als NMOS-Transistor (der bei einem High-Pegel durchschaltet) kommt der »ZVN2110A« zum Einsatz und als PMOS (der bei einem Low-Pegel durchschaltet) der Typ »ZVP2106«.
Wichtig für die Auswahl geeigneter Transistoren ist, dass die Gate-Threshold-Spannung im Bereich der Knopfzellen-Spannung (Vcc= 3 V) liegt, die die Schaltung versorgt. Außerdem sollten die Leckströme sowohl zwischen Gate und Source (20 nA), als auch zwischen Drain und Source (0,5 bis 1 µA) möglichst gering sein.
Das Ausgangssignal der RTC (»nINT«) gelangt an den Gate-Anschluss des als Inverter geschalteten PMOS-Transistors T1. Wird das nINT-Signal Low, wird der Drain-Anschluss von T1 High, der mit dem Gate-Anschluss des NMOS-Transistors T2 verbunden ist. So wird der RUN-Anschluss des Raspberry Pi auf GND gezogen. Anschließend startet der Pi-Rechner neu, kann eine Messung ausführen und geht nach Abschluss der Messung über einen Softwarebefehl wieder in den energiesparenden Shutdown-Modus, bis er über ein Signal der RTC wieder gestartet wird und seine nächste Messung durchführt.
Möglichkeit 2: Global-GN-Steuerung
Die zweite Möglichkeit ist ein Senken des Stromverbrauchs auf etwa 10 mA, was mit einem Erweitern der Schaltung möglich ist, die den »Global-Enable«-Anschluss steuert. Alle untersuchten RTCs bieten die Funktion, einen Alarmtimer einzustellen (»RV-3028-C7« bis zu 68 Stunden). Er kann eine Deaktivierung des Raspberry Pi ermöglichen. Allerdings geben die RTCs beim Erreichen der festgelegten Zeit nur einen mehr oder weniger langen Impuls an einem Pin (RV-3028-C7 über nINT) aus und mehr nicht. Das macht die Steuerung über den Global-Enable-Anschluss etwas aufwendiger.
Wie erläutert, schaltet sich der PMIC des Raspberry Pi ab, wenn der Global-Enable-Pin auf Low liegt. Die RTC-Schaltung muss diesen Pin für eine bestimmte Zeit auf Low halten, weshalb eine Zusatzschaltung nötig ist. Sie generiert die entsprechenden Schaltsignale (An/Aus) aus dem Impuls der RTC. Kern der Schaltung (Bild 4) ist der bekannte »Timer 555« in einer stromsparenden CMOS-Version (»ICM7555«). Er wird dafür benötigt, nach dem Eingangssignal von der RTC zu starten und nach einer festgelegten Zeit ein Signal zum Ausschalten zu geben. [3]
Als Einschaltzeit werden mit R1 und C2 etwa 330 s eingestellt, das heißt, in der Zeit bootet der Raspberry Pi und führt seine Messungen aus. Die Abschaltschaltung aus Bild 3 findet sich auch in der erweiterten Schaltung mit T2, T3 und R2, R3 wieder. T3 schaltet bei einem Low-Pegel am Gate die Versorgungsspannung Vcc auf den ICM7555 durch. Dieser Low-Pegel ergibt sich durch den eingehenden Low-Impuls der RTC und dem Durchschalten von T1. Liegt die Spannung am ICM7555 an, startet der Timer aufgrund des RTC-Impulses am »TRIG«-Pin (2) über den Kondensator C3.
Solange der Timer läuft, gibt der ICM7555 über den »OUT«-Anschluss (3) einen High-Pegel aus und T4 schaltet durch, sodass das Gate von T3 Low wird und somit die Spannungsversorgung für den ICM7555 besteht. Sobald der Timer abgelaufen ist, wird das Gate von T3 über den Pull-up-Widerstand R2 auf High gezogen, der Transistor sperrt und schaltet den ICM7555 damit wieder ab. So handelt es sich bei der Schaltung um einen energiesparenden Timer mit automatischer Abschaltung, die im Prinzip für alle möglichen Schaltvorgänge einsetzbar ist.
Das Gate des Transistors T5 ist standardmäßig über den Pull-up-Widerstand R2 High und zieht damit »GLOBAL_EN« auf GND, was zum Abschalten des PMICs führt. Ist der Timer aktiv, liegt für den über Kondensator C1 und Widerstand R1 gewählten Zeitraum ein Low-Pegel am Gate von T5 an, was dazu führt, dass der Raspberry Pi startet und seine Messung durchführen kann.
Möglichkeit 3: Timer mit Relais
Die dritte Möglichkeit ist, den Raspberry Pi komplett abzuschalten, damit er überhaupt keinen Strom verbraucht. Hierfür wird seine Spannungsversorgung mithilfe eines Relais (Bild 5) abgeschaltet. Als Relais kommt ein bistabiler Typ zum Einsatz, sodass zum Einschalten und zum Ausschalten lediglich ein Schaltimpuls nötig ist. So fließt kein Strom, um das Relais in einer Schaltstellung zu halten.
Bei bistabilen Relais (Latching Relays) werden die Kontaktfedern über einen Permanentmagneten in der kontaktierten Position gehalten. Im Gegensatz zum monostabilen Relais ist deshalb keine permanente Erregung der Spule notwendig, um die Kontaktfedern dauerhaft zu kontaktieren, sondern lediglich ein kurzer Schaltimpuls. Beispielsweise ziehen die Relais der TX-S-Serie (»TXS2SA-LT-3V«) von Panasonic an 3 V für 5 ms einen Strom von 16 mA.
Um ein Relais schalten zu können, wird die Schaltung aus Bild 4 geringfügig geändert und ergänzt. Der Transistor T4 entfällt. Stattdessen wird die Leitung vom Gate des Transistors T4 über einen Transistor T7 auf das Relais geführt, was als Ausschaltsignal fungiert. Als Einschaltsignal wird das RTC-Signal über einen Transistor T6 auf das Relais geführt.
Als PMOS-Transistor wird in den Schaltungen bisher ausschließlich der Typ »ZVP2106« verwendet, der eine Gate-Source-Threshold-Spannung von -1,5 bis -3,5 V für das Durchschalten benötigt. Zum Aktivieren des Relais zeigte sich, dass ein Transistor mit einer geringeren Gate-Source-Threshold-Spannung nötig ist. Aus dem Grund verwendet man hier den Typ »IRLM2244« der Firma International Rectifier, denn er benötigt lediglich eine Spannung von -0,4 bis -1,1 V.
Stattdessen die Spannung der Knopfzelle (3 V) zu erhöhen, wäre die schlechtere Möglichkeit, weil der Stromverbrauch damit ansteigen würde. Statt des oben erwähnten Relais von Panasonic war nur das »HFD2-S-L2« Signalrelais der Firma Maluska Elektronik lieferbar, das für einen Schaltvorgang etwa die doppelte Leistung benötigt.
Der Transistor T7 ist über den Blockkondensator C4 mit dem OUT-Pin des ICM555 verbunden, um keinen Stromverbrauch des ICM555 zuzulassen. Sobald die Transistoren durchgeschaltet werden, entladen sich die Kondensatoren C5 und C6 und liefern so den benötigten Schaltimpuls für das Relais. Ohne die beiden Kondensatoren ist kein ausreichend hoher Stromfluss zum Schalten des Relais gewährleistet. Das Gate der beiden Transistoren ist über die Pull-up-Widerstande R4 und R5 mit der Versorgungsspannung der Knopfzelle verbunden.
Das Ein- und Ausschalten des Relais öffnet beziehungsweise schließt den Kontakt im Relais, der den Raspberry Pi mit der Energieversorgung (Powerbank) verbindet. Verfügt die Powerbank über eine integrierte Solarzelle, ist ein autarker Betrieb des Systems möglich. Mit dem Typ »Powerbank T11W« des Herstellers Dongguan Jili Intelligent, welches über eine Kapazität von 26.800 mAh verfügt, ist der Betrieb eines Raspberry Pi 4 mit der gezeigten Schaltung und einer aufgesetzten HAT-Platine für die Messung der Luftqualität (Eigenentwicklung) von über 14 Tagen möglich. Ein Aufladen über die eingebaute Solarzelle ist dabei noch gar nicht berücksichtigt.
Bei der ersten Abschaltmethode (Shutdown mit RUN-Steuerung) benötigen die RTC und die beiden Transistoren eine Leistung von etwa 1,2 µW – der Raspberry Pi hat bei dieser Methode eine Leistungsaufnahme von 0,1 W.
Die zweite Abschaltmethode (Global-EN-Steuerung) benötigt zusätzlich die Timerschaltung, die jedoch nur dann Leistung (106 μW) verbraucht, wenn der Raspberry Pi aktiv ist. Der Raspberry Pi hat hier im abgeschalteten Zustand noch eine Leistungsaufnahme von 0,05 W.
Die dritte Abschaltmethode (Timer mit Relais) erfordert zusätzliche Energie (ca. 700 mWs) für das Schalten des Relais und verbraucht im abgeschalteten Zustand überhaupt keine Energie.
Welche der drei Abschaltmethoden am besten geeignet ist, hängt stark von der jeweiligen Anwendung und der verwendeten Powerbank ab. Bei Systemen mit langen Einschaltzeiten kann sich die erste Abschaltmethode, die mit wenigen Bauelementen auskommt, lohnen, weil hier im eingeschalteten Zustand kein zusätzlicher Strom durch einen Timer verbraucht wird. Wechselt ein System häufig zwischen eingeschaltetem und ausgeschaltetem Zustand, ist die zweite Abschaltmethode eine gute Wahl. Allerdings ist zu überprüfen, ob der Mehraufwand im Schaltungsaufbau durch die Integration der Timer-Schaltung eine Ersparnis von 0,05 W wert ist. Die letzte Methode ist bei Systemen mit längeren Abschaltphasen die beste Möglichkeit, denn hier ist der Raspberry Pi komplett abgeschaltet.
Literatur
[1] Klaus Dembowski, Raspberry Pi: Das technische Handbuch. 3. Auflage. Springer Verlag, ISBN 978-3-658-27492-4.
[2] Klaus Dembowski, Raspberry Pi unter Strom: Optimierungsmöglichkeiten für die Leistungsaufnahme. Design & Elektronik. Ausgabe 13/2019.
[3] Klaus Dembowski, Der Low/No-Power-Schalter. Design & Elektronik. Ausgabe 4/2016.
Der Autor
Klaus Dembowski ist Entwicklungsingenieur für Low Power- und Energy Harvesting-Systeme. Er wurde 2011 und 2017 von der Redaktion der Elektronik für seine Fachaufsätze »Sensornetze mit energiesparender Funktechnik« und »Funkelektroden zur Messung bioelektrischer Signale: EKG ohne Kabel« als »Autor des Jahres« ausgezeichnet. Sein Fachaufsatz »Raspberry Pi: Unterschätzte One-Wire-Schnittstelle« war 2021 der meistgelesene Fachaufsatz auf elektroniknet.de.