8-bit-Kompagnon für den Raspberry Pi - Strom sparen leicht gemacht
Einplatinencomputer mit Unix-Fähigkeit erleichtern die Entwicklung komplexer Steuerungen. Insbesondere in Szenarien mit hohen Ansprüchen an GUI und Datenverarbeitung sind sie MCUs überlegen. Leider lassen Stromverbrauch und Echtzeitfähigkeit zu wünschen übrig.
Doch warum nicht das Beste aus zwei Welten verbinden? Wer einen Einplatinencomputer von der Stange auf sparsam trimmen möchte, kann dies mit einem Achtbitter als Partner erreichen.
Als Beispiel wollen wir hier ein System realisieren, das programmatische Totzeiten einhält und als Reaktion auf ein bestimmtes externes Ereignis einen „Alarmstart“ durchführt.
Schaltungskonzept im Fokus
Im Prinzip präsentiert sich die Schaltung wie im Flowchart gezeigt (Bild 1). Der als Hauptversorgung für den Prozessrechner agierende Spannungsregler (normalerweise ein Schaltregler) wird über seinen Enable-Eingang vom Mikrocontroller gesteuert.
Die MCU benötigt (logischerweise) eine separate und vom EN-Eingang unabhängige Spannungsversorgung; ob des geringen Energiebedarfs ist ein Linearregler hier die preiswertere Lösung. Im Allgemeinen ist das Konzept komplett bauteilagnostisch, der Autor verwendet aufgrund guter Erfahrungen gerne moderne PIC16F-Derivate von Microchip.
In Bild 2 ist die Teilschaltung zu sehen, die den PIC darüber informiert, wann der SBC (OPI = Orange Pi) vom externen Schaltregler (EXT) versorgt wird. D1a, R9 und D7a realisieren einen mehr oder weniger „klassischen“ Abschwächer, der anliegende Eingangsspannungen im Bereich von bis zu 20 V auf einen für die Eingänge von Prozessrechner und Mikrocontroller verwaltbaren Wert herunterbricht.
Die Zweiteilung des Vorwiderstands in die Werte R7 und R9 ist erforderlich, weil Single Board Computer im Fall der Abschaltung mitunter zu einer niederohmigen Last werden oder eine Residualspannung aufweisen - dies würde ohne den Widerstand dafür sorgen, dass der über den Eingang PIC angeschlossene Power-Management-Mikrocontroller seltsame oder ungültige Werte sehen würde.
R7 ist außerdem ein zusätzlicher Schutz - die Eingänge des Prozessrechners sind durch Schutzdioden mit der Versorgungsspannung beziehungsweise der Masse verbunden. Beim Eintreffen von sehr hohen Spannungspegeln sorgt R7 dafür, dass der in diese Dioden fließende Strom beschränkt wird und eine Beschädigung des Prozessrechners unterbleibt - C13 und R8 sind eine kleine zusätzliche Entprellung.
Zu bemerken sei, dass die hier gezeigte Schaltung mit ihrem EXT-Eingang in verschiedensten Schulbussen direkt mit dem Bordnetz verbunden wurde. Da mittlerweile einige Tausend solcher Systeme ohne Ausfälle im Markt beziehungsweise auf der Straße sind, ist die korrekte Funktion empirisch erwiesen.
Hilfreich ist auch die Rolle der Diode D1a als Verpolungsschutz - bitte glauben Sie dem auch im Logistikbereich tätigen Autor, dass das Falsch-herum-Anschließen von Batterie und Co. zu den klassischen Sportarten eines Mechanikers gehört.
Der Clou liegt in der Software
Die Kommunikation über I2C ist im Allgemeinen unproblematisch (man denke aber die notwendigen Pullups). Das „Geheimnis“ des vorliegenden Systems liegt in der Software. Der PIC realisiert eine Art Zustandsautomat, der sich an den in Bild 3 gezeigten Zuständen orientiert.
Von besonderer Bedeutung ist die Realisierung des Shutdown-Prozesses. Unixoide Betriebssysteme neigen dazu, auf unsanftes Ausschalten wenig freundlich zu reagieren. Ein bequemer und praxistauglicher Weg zur Lösung des Problems ist das Implementieren eines Countdowntimers: Der SBC aktiviert diesen Countdown und startet dann den Shutdown des Betriebssystems. Nach dem Ablauf der großzügig zu bemessenden Zeitspanne ist der Prozessrechner „inertialisiert“ und kann von der Energieversorgung getrennt werden.
Der PIC kann logischerweise auch andere Aufgaben übernehmen. Neben dem (schwerer manipulierbaren) Abspeichern von Seriennummern und anderen Informationen ist es beispielsweise auch möglich, grundlegende Steueraufgaben im PIC zu hinterlegen. Selbstverständlich sind auch komplexere Implementierungen möglich: Ein aufwändiger MSR-Task würde als Zweitcontroller beispielsweise eine 32-bit-MCU vernünftig erscheinen lassen.
Praxiserfahrungen
Auf dem hier gezeigten Schaltungskonzept basierende Tracker sind bei einem Kunden des Autors mittlerweile in Zehntausenderstückzahlen im Einsatz, wodurch der praktische Wert des Designs aufgezeigt ist. Statt einem Standby-Stromverbrauch im Bereich von rund 200 mA kommt das System nun mit wenigen Milliampere aus.
Die bei Microchip erschienene AN4121 des Autors steht hier bereit und bietet weitere Informationen zur Thematik.
Anmerkung der Redaktion: Dieser Artikel (240210) erscheint in der Bonusausgabe vom Januar/Februar 2025