Powerbank Wächter zur Verhinderung der automatischen Abschaltung bei stromsparenden Arduino-Schaltungen

In diesem Artikel geht es um Powerbanks und die Versorgung von stromsparenden Arduino-Schaltungen durch sie. Denn dafür sind sie super-praktisch: Arduino Nano, Uno, aber auch STM32 Bluepill, ESP8266 und ESP32: all diese Mikrocontroller (und viele andere mehr) haben einen USB-Anschluss, über den sie mit Strom versorgt und programmiert werden können.

Und an diesem Anschluss erwarten sie natürlich die gewohnten 5V - welche die Powerbanks liefern. Powerbanks wären also die idealen Stromlieferanten für mobile Arduino-Schaltungen oder Plätze, an denen keine Steckdose in unmittelbarer Nähe ist. Sie sind relativ preisgünstig, handlich, liefern lange Strom und sind schnell wieder aufgeladen, also immer wieder verwendbar. Außerdem gibt es sie mittlerweile auch in großen Kapazitäten (20 Ah und mehr).

Powerbanks gibt es in vielen unterschiedlichen Formen und Kapazitäten. Hier ein paar Beispiele:



links oben: revolt NX-4810-675 mit 20'000 mAh
daneben in weiß: Logilink PA0124 mit 10'000 mAh
rechts daneben in schwarz: Ansmann 1700-0093 mit 10'000 mAh und 37 Wh
rechts daneben in weiß: kleine POWERBank (diverse Hersteller) mit 2000 bis 2500 mAh (kaufbar in China als Leergehäuse für eine 18650 Zelle)
in der zweiten Reihe mit Solar-Panel: revolt PX-2957-675 mit 4000 mAh, lässt sich auch über das integrierte Solar-Panel aufladen (sehr langsam)
rechts daneben im Scheckkarten-Format: revolt PX-4945-675 mit 2500 mAh: ohne USB-A-Buchse und nur mit Micro-USB-Stecker, dafür klein und flach
ganz rechts unten: RealPower PB260-ALU mit 2600 mAh, im Grunde wie die kleine POWERBank eine 18650 Zelle mit kleiner Zusatzplatine

Das Problem mit der automatischen Abschaltung

Die Powerbanks oben lassen sich zusätzlich in zwei Kategorie einteilen: welche mit automatischer Abschaltung, wenn nicht genügend Strom entnommen wird (nachfolgend "smart" genannt) und welche, denen die Stromentnahme egal ist und die nicht automatisch abschalten, evtl. nur, wenn sie fast leer sind (nachfolgend "dumm" genannt).

Zu den dummen Powerbanks von oben gehören: POWERBank mit 2000 bis 2500 mAh, RealPower PB260-ALU mit 2600 mAh und revolt PX-4945-675 mit 2500 mAh. Die liefern zuverlässig und durchgänging, bis sie leer sind. An diesem können wir Arduino-Schaltungen ohne weiteres betreiben. Allerdings sehen wir schon: die Kapazität der "dummen" Kandidaten ist nicht sehr hoch. Nehmen wir an, unsere Schaltung braucht 20 mA bei 5 Volt, dann wären das 100 mWh.

Wollen wir wissen, wie lange eine Powerbank bei 5 Volt liefert, dann müssen wir ein bisschen rechnen, denn die Angabe der Milliamperestunden auf den Powerbanks beziehen sich nicht etwa auf die am Ausgang gelieferten 5 Volt, sondern auf die mittlere Spannung, die der Akku intern liefert, und das sind nur 3.7 V. Marketing-Schönrederei und keine technisch Angabe würde ich sagen. Ansmann macht es richtig und gibt auch die Wattstunden (Wh) an. Damit wissen wir, dass sich die 10'000 mAh auf 3.7V beziehen, denn nur so kommen die 37 Wh am Ende heraus.

Doch zurück zur Rechnung. Da muss noch eine kleine Variable hinein: Die Effektivität der Spannungswandlung, die wir mal mit 85% veranschlagen wollen. Denn jede Powerbank enthält einen Spannungswandler, der die 3.7V auf 5V hochwandelt und dabei ca. 15% des Stroms in Wärme umwandelt. Die kommen nie am Ausgang an.

Unsere "2000 mAh"-POWERBank liefert bei 5V real also:

2000h * 3,7 / 5 * 0,85 = 1258 mA

Sieht schon nicht mehr so positiv aus, oder?. Wenn unsere Arduino-Schaltung nun geringe 20 mA verbraucht, hält die Powerbank 62.9 Stunden durch und wäre nach zwei einhalb Tagen leer. Hat man jetzt z. B. einen Geocache oder eine Wetteraufzeichnung irgendwo, dann wünscht man sich natürlich, nicht alle 2 Tage vorbeifahren zu und die Powerbank tauschen zu müssen. Man würde dann eher eine 20'000 mAh-Powerbank benutzen und müsste dann nur alle 3 Wochen vorbeischauen.

Doch in diesem Kapazitätsbereich gibt es eigentlich nur "smarte" Vertreter. Diese großen Powerbanks sind dafür gedacht, auf Reise mitgenommen zu werden und ein Smartphone ein paar wieder aufzuladen. Und die überwachen auch, wieviel Strom entnommen wird und schalten die Stromzufuhr komplett ab, wenn der Strom unter einen bestimmten Pegel sinkt, weil sie dann meinen, dass das Smartphone / der MP3-Player / das Tablet dann voll geladen ist. Sozusagen zur Sicherheit, damit das Gerät nicht überladen wird.

Natürlich können moderne Geräte wie Smartphone oder Tablet selbst darauf achten, wann sie voll geladen sind und nehmen dann keinen Strom mehr auf - schließlich kann man sie ja auch an einem USB-Netzgerät laden. Die selben USB Netzteile, an denen wir auch unsere Arduino-Schaltungen daheim betreiben, die schalten ja auch nicht automatisch ab, wenn der Stromverbrauch nur 20 mA oder so sind.

Egal, wie sinnhaft diese automatische Abschaltung ist. Die größeren Powerbanks tun das einfach. Und das stört uns, wenn wir unsere Arduino-Schaltung daran betreiben wollen. Da können wir es nicht gebrauchen, wenn auf einmal der Strom weg ist.

Etwas gegen die Auto-Abschaltung unternehmen

Gegen diese Auto-Abschaltung müssen wir also was unternehmen, wollen wir größere Powerbanks benutzen. Am zielführendsten wäre natürlich, in der Powerbank den Teil der Schaltung ausfindig zu machen, der für die Abschaltung verantwortlich ist. Aber das scheitert schon mal daran, dass wir die wenigstens Powerbanks gewaltfrei aufbekommen. Die sind alle verklebt.

Außerdem ist es sehr gefährlich, an Lithium-Ion oder Lithium-Polymer herumzuwerkeln. Diese bestehen auf vielen Schichten unterschiedlicher Folien, die getrennt bleiben müssen. Denn werden die Schichten z. B. durch einen spitzen Gegenstand (den Schraubenzieher, mit dem wir gerade versuchen, das Gehäuse auszubrechen) durchstoßen, dann verformen sich diese dünne Schichten natürlich und bekommen eventuell Kontakt zueinander, was einen Kurzschluss verursacht. Dadurch entstehen entzündliche Gase und der Akku wird heiß. Das kann zu gewaltigen Explosionen mit sehr unangenehmen Verletzungen führen.

Schon allein deshalb ist das keine Option bei der Bauforn der Powerbanks. Weiterhin nehme ich an, dass die Schaltkreise mittlerweile so integriert sind, dass das nur noch ein Chip regelt und es unmöglich ist, nur die Auto-Abschaltung lahnzulegen, und den Rest funktionell zu belassen.

Test: Wann genau wird eigentlich abgeschaltet?

Bevor wir uns einen Kopf um weitere Optionen machen, wollen wir doch erst einmal schauen, mit was genau wir es zu tun haben. Wann genau wird eigentlich abgeschaltet? Nach welcher Zeit? Ab welcher mA-Untergrenze?

Um das Herauszufinden, stecke ich in die Powerbanks zuerst einmal ein meine Arduino-Schaltungen, den MultiTimer, der ungefähr 50 mA verbraucht und schaue, ob und wann sie abschalten.

Die als "dumm" identifizierten Powerbanks teste ich danach noch einmal mit einem kleinst denkbaren Arduino-Verbraucher, einem Digispark mit ATtiny 85 und etwa 25 mA Stromaufnahme. Die drei dummen Powerbanks lieferten auch hier zuverlässig ohne Abschaltung.

Danach versuchte ich ein LED-Taschenlampen-Modul mit 3 LEDs, das etwa 70-80 mA verbraucht und schaue, welche Powerbank einen noch höheren Verbrauch benötigt, um an zu bleiben.

Das ist nur die 20 Ah Powerbank von revolt. Die gibt sich auch noch nicht mit 70 mAh Dauerstrom zufrieden. Der muss ich noch ein zweites LED-Modul im 2. Port verpassen (zusammen etwa 150 mA), damit sie dauerhaft liefert.

Mit meinem bewährten Modul, um eine elektrische Last per Poti zu erzeuge, finde ich dann aus, dass die revolt 20 Ah auch mit 90-100 mA sicher an bleibt.

Die Powerbanks schalten übrigens auch nach unterschiedlichen Zeiten ab. Meist sind dies um die 30 Sekunden, nur die LogiLink fällt mit nur 9 Sekunden aus dem Rahmen.



Ich habe die Messergebnise einmal in einer Tabelle zusammengefasst:

PowerbankAbschaltung nachnötige Stromstärke, damit nicht abschaltet
revolt 20 Ah0:35~ 90-100 mAh
LogiLink 10 Ah0:09< 70 mAh
Ansmann 10 Ah0:39< ~50 mAh
revolt 4 Ah Solar0:35< 70 mAh
POWERBank 2 Ahnie< 25 mA
RealPower 2.6 Ahnie< 25 mA
revolt Scheckkarte 2.5 Ahnie< 25mA

Lösungsvariante Dauerstromentnahme

Wie wir schon bei der revolt 20 Ah gesehen haben, genügt es, dauerhaft den Strom über einer bestimmten Milliampere-Grenze zu entnehmen, damit auch die großen Powerbanks dauerhaft liefern.

Aber das ist natürlich kontraproduktiv. Wir wollen natürlich auch, dass die Powerbank möglichst lange durchhält. Wenn dann die Arduino-Schaltung z. B. nur 30 mA entnimmt und wir zusätzlich dauerhaft 100 mA verbraten, damit die Powerbank anbleibt, dann ist das ziemlich sinnfrei.

Lösungsvariante Intervallstromentnahme

Viel sinnvoller ist es, nur in bestimmten Intervallen Strom zu entnehmen, um die Powerbank wach zu halten. Das wäre in unserem Fall alle 8 Sekunden die LogiLink eingeschlossen bzw. alle 30 Sekunden ohne die LogiLink. Da ich möchte, dass es mit allen meinen Powerbanks funktioniert ist die erste Frage, die nach dem Intervall schon beantwortet. Die Antwort lautet: 7 Sekunden.

Die zweite Frage lautet: wieviel Strom soll ich entnehmen? Die Antwort richtet sich nach der Powerbank, die hier die höchsten Anforderungen stellt. Das ist die revolt 20 Ah mit 90 bis 100 mA. Das vielleicht plus ein bisschen Sicherheitsreserve. Damit lautet die Antwort auf die Stromentnahme 100 mA.

Bleibt nur noch die Frage, für wie lange wir die 100 mA entnehmen sollen. Selbstverständlich werkelt auch in den Powerbanks ein kleine Mikrocontroller, der in regelmäßigen Abständen die Stromentnahme überprüft. Liegt die über einem bestimmten Wert, dann wird intern ein Timer auf 0 gesetzt. Liegt er dauerhaft darunter und erreicht der Timer einen bestimmten Grenzwert, wird der Strom abgeschaltet. Unsere Stromentnahmedauer muss also mit dem Abfrageintervall zusammenpassen. Fragt die Powerbank alle 10 ms nach, reichen 10 ms Stromentnahmedauer, damit die Powerbank das mitbringt und nicht abschaltet. Sind es alle 100 ms, müssen wir auch länger Strom entnehmen. Hier müssen wir ggf. kurz anfangen und uns dann testweise steigern, bis wir die Stromentnahmedauer herausgefunden haben, mit den alle Powerbanks zufrieden sind.

Die drei Parameter für unseren Powerbank-Wächter sind also:

Eine Schaltung für die Aufgabe entwickeln

Der Adapter, die die Intervallstromentnahme durchführen soll, braucht folgendes: Für die Zeitschaltung fällt mir spontan ein NE555-Timer ein, wie ich ihn auch für meinen Breadboard-Computer verwendet habe. Als Verwendung als astabile Kippstufe (Multivibrator) muss ich allerdings die Zeiten per Kondensator einstellen; auch die der Stromentnahmedauer, die ja noch unbekannt ist. Die Kondensatoren gibt es auch nur in bestimmten Abstufungen, ein 100%ig genaue Abstimmung ist also nicht möglich, aber ein bisschen mehr an Dauer schadet ja nun auch nicht. Trotzdem ist das Durchprobieren mit unterschiedlichen Kondensatoren eher eine Strafarbeit.


Dann fiel mit der Digispark ein, das ist ein kleiner USB-Stick, auf dem sich ein ATtiny85-Mikrocontroller befindet, den man programmieren kann. Ich habe den Digispark schon einmal in einem anderen Projekt, als ich damit ein Mausscrollrad für meine PC-Tastatur emulierte eingesetzt. Die Teile sind (aus China bestellt) auch nicht teuer und kommen das Stück unter zwei Euro. Und sie bringen den USB-Stecker gleich mit, mit dem ich sie in die Powerbank stecken kann.

Mit einem Arduino-kompatiblen Mikrocontroller kann ich die Parameter natürlich super einfach und super genau einstellen. Der Digispark ist außerdem auf 5 Volt ausgelegt und verbraucht nur um die 20 mA, wenn er arbeitet. Legt man den ATTiny85 schlafen und kappt man die LEDs sogar noch weniger.

Meine Plattform für den Wächter steht also fest: es wird der Digispark. NE555 oder ein noch kostengünstigerer Multivibrator mit Transistoren und Kondensatoren wäre höchstens etwas für eine Massenproduktion, nachdem alle Parameter genau feststehen. Zu Experimentieren ist der Digispark aber viel besser geeignet.

Was brauchen wir noch?

An zusätzlicher Hardware brauchen wir noch etwas, dass unsere 100 mA verbraucht. Nichts einfacher als das, ein einfacher elektrischer Widerstand erledigt die Arbeit zuverlässig. Wie groß dieser dimensioniert sein muss ist schnell errechnet: R = U / I (Ohmsche Gesetz: Widerstand ist Spannung durch Stromstärke)

R = 5V / 0.1A = 50 Ohm


Bei der festen Spannung von 5 Volt fließen bei 50 Ohm die geforderten 100 mA Strom. Der Widerstand sollte eine Leistung von 500 mW, also einem halben Watt haben, denn das entspricht der Leistung, die der Widerstand in Wärme umwandeln muss. Da er sich allerdings nur immer kurz "aufheizt" und nicht gleich explodiert, wird man wahrscheinlich auch mit einem 1/4 Watt Widerstand auskommen.

Je kleiner der Widerstand wird, desto wird der Strom sein, der fließt. Wenn wir also keinen 50 Ohm Widerstand parat haben, nehmen wir eher einen mit geringerem Ohm-Wert, um den Grenzwert der Stromentnahme nicht zu unterschreiten. Ich habe noch einen alten 47 Ohm Widerstand gefunden, der der Bauform nach so aussieht, ob er gut und gerne ein Watt wegstecken könnte.

Der Verbraucher muss direkt an der USB-Schiene abgenommen werden. Würde er an einem Pin abgenommen werden, würde das zwar auch den Stromverbrauch erhöhen, aber die Pins sind nur bis 40 mA Stromstärke zugelassen, da drüber kann der ATtiny85 beschädigt werden.

Also dürfen wir einen IO-Pin nur dazu benutzen, einen Transistor zu schalten, die dann einen höheren Strom (nämlich die 100 mA) von der USB-Schiene direkt und damit außerhalb des ATtiny85 entnimmt. In meinem PIR-Bewegungssensor-Schalter für USB-Powerbank-Projekt hatte ich ja schon einmal einen Transistor auf ähnliche Art benutzt.

Ein ganz normaler NPN-Transistor sollte vollkommen ausreichend sein. Ich habe mich für einen N2222 entschieden. Das Datenblatt gibt Auskunft über die maximale Last, die geschaltet werden kann:



600 mA Gleichstrom sind mehr als wir brauchen. Es reicht also dieser kleine, billige Transistor und muss kein teurer, fetter MOS-FET sein.

Unser Progrämmchen muss dann nur alle 7 Sekunden die Leitung auf high für ein paar Millisekunden (noch herauszufinden) setzen, damit für diesen Zeitraum 100 mA "verbraten" werden. Das sollte die Powerbank wach halten. Der Digispark selbst hat danach 7 Sekunden lang nichts zu tun und kann sich schlafen legen, um möglichst wenig Strom zu verbrauchen. Wir wollen ja, dass der Wächter nicht mehr verbraucht als nötig und die Powerbank möglichst lange druchhält.

Deswegen könnte man sich auch noch überlegen, die Power-LED des Digispark auszulöten. Ich finde aber, die zieht nur sehr wenig Strom. Außerdem will ich die rote LED auf dem Board benutzen, um anzuzeigen, wann gerade erhöht Strom entnommen wird. Die sollte dann alle 7 Sekunden kurz aufleuchten.

Die Schaltung

Für diese einfache Schaltung verzichte ich einmal auf einen Schaltplan. Das ist auch mit ein paar Worte gesagt: Also ran an den Lötkolben. Damit der Digispark und die USB-Buchse eine gute mechanische Verbindung haben, werden beide nebeneinander auf eine Lochrasterplatine gelötet. Dazu nehme ich einfach abisolierten Kupferdraht in passendem Durchmesser, stecke den durch alle Header-Löcher und löte diesen auf beiden Seiten fest. Elektrisch gesehen brauche ich zwar nicht all diese Verbindungen, mechanisch gibt aber jede Verbindung zusätzlichen Halt.



Danach werden dann die zusätzlichen Komponenten und die Drähte zum Durchschleifen des USB-Ports auf der Unterseite auf der Lochrasterplatine angelötet. Ich habe versucht, das möglichst platzsparend hinzubekommen.



Die Basisleitung des Transistors kreuzt die Emitterleitung oberhalb. Diese Lücke sollte ich noch mit einem Tropfen Epoxy auffüllen, damit später nicht aus Versehen die Basisleitung niedergedrückt wird und in Kontakt mit der anderen Leitung kommt.

Nachdem alle Leitungen nocheinmal durchgemessen sind und ein Kurzschluss ausgechlossen werden kann, wage ich mich daran, die Schaltung zu testen.

Testen der Schaltung

Dazu stecke ich den Digispark in eine Powerbank. Sie blink ganz normal und auch am anderen Ende leuchtet ein eingestecktes LED.

Soweit, so gut. Fehlt noch die Software, die in Intervallen für gewisse Zeit einen gewissen Strom zieht.

Software

Die erste Version der Firmware ist denkbar einfach gestrickt: //////////////////////////////////////////////////////// // (C) 2020 by Oliver Kuhlemann // // Bei Verwendung freue ich mich über Namensnennung, // // Quellenangabe und Verlinkung // // Quelle: http://cool-web.de/arduino/ // //////////////////////////////////////////////////////// #include <Arduino.h> #define TriggerPin PB0 #define LedPin PB1 void setup() { pinMode(TriggerPin, OUTPUT); pinMode(LedPin, OUTPUT); digitalWrite(TriggerPin, LOW); digitalWrite(LedPin, LOW); // LED aus } void loop() { digitalWrite(TriggerPin, HIGH); // Strom verbraten digitalWrite(LedPin, HIGH); // LED an delay (1500); // Strom für eine bestimmte Mindestdauer entnehmen und damit Powerbank wachhalten digitalWrite(TriggerPin, LOW); // wieder Strom sparen digitalWrite(LedPin, LOW); // LED aus delay (7000); } Sofort nach dem Hochfahren soll das erste Mal Strom gezogen werden. Das hat den Hintergrund, dass der Digispark ein wenig zum Hochfahren braucht. In dieser Zeit blinkt er schnell und der Bootloader "guckt nach", ob da jemand eine neue Firmware aufspielen will (siehe auch diesen Artikel). Da können schon einige Sekunden vergehen.

Und die Ansmann 10 Ah Powerbank schickt sogar derart wildes Zeug über den USB-Datenport, dass es den Digispark derart durcheinanderbringt, dass er es nicht schafft, innerhalb der 39 Sekunden hochzufahren, nach denen die Powerbank abgeschaltet. Das war echt ein Problem, mit dem ich nicht gerechnet hatte. Leider ist der Ansmann damit nicht geeignet für den Powerbank-Wächter.

Wie lange genau der Strom entnommen werden soll, das müssen wir noch genau herausfinden, indem wir abwechselnd die Powerbank testen und die Firmware anpassen.

Danach folgt eine Pause von 7 Sekunden, um die 9 Sekunden der LogiLink Powerbank nicht zu überschreiten.

Und danach geht das ganze Spiel wieder von vorne los.

Das die Powerbank noch wach ist, kann man unabhängig von den meist in der Powerbank verbauten LEDs auch an der grünen LED am Wächter sehen. Ist diese noch an, dann liefert auch die Powerbank noch Strom. Und die rote LED auf dem Digispark leuchtet immer so lange, wie Strom entnommen wird.

Testen des Wächters mit den Powerbanks

Als ersten Test habe ich erstmal 1500 ms für die Stromentnahme-Dauer eingestellt. Das ist wahrscheinlich viel mehr als genug, um die Powerbanks wach zu halten, aber ich will doch einmal nachmessen, wieviel Milliampere die Schaltung jetzt zieht und ob das überhaupt über den Transistor funktioniert. Darum schließe ich mein kleines USB-Verbrauchsmessgerät an und schaue, ob alles funktioniert.



Wunderbar. Der Wächter zieht alle 7 Sekunden für 1.5 Sekunden ca. 140 bis 150 mA Strom. Das ist ein bisschen mehr als die anvisierten 100 mA, aber das schadet auch nicht.

Zeit, den Wächter und die Powerbanks auf Herz und Nieren zu testen. In folgendem Video ist das live mitzuverfolgen:



Ich fange mit der revolt 20 Ah an. Seltsamerweise schaltet diese nach 0:39 ab. Beim nächsten Mal dann nach 1:18. Da wird mir klar, dass die revolt wohl nicht nach folgendem Muster abfragt, so wie ich das programmieren würde: sondern eher nach dem Prinzip Das ist natürlich selten dämlich für den Wächter. Der müsste sich mit der revolt 20 Ah synchronisieren und dann genau alle 39, 40 oder was-weiß-ich-wieviel Sekunden Strom ziehen. Aber bei noch soviel Mühe muss das irgendwann zwangsläufig auseinanderlaufen. Bei der revolt 20 Ah hilft also nur Dauerstromentnahme über 100 mA. Darum funktionierte das auch mit der elektrischen Last mit dem Poti. Aber mein Wächter entnimmt ja nur alle paar Sekunden etwas Strom, alles andere wäre ja auch Stromvergeudung.

Schade, damit ist auch die revolt 20 Ah aus dem Rennen. Gerade die größste Powerbank, die ich habe. Aber wer soll mit sowas rechnen, dass das jemand so programmiert?

Bleiben noch die LogiLink 10 Ah und die revolt Solar mit 4 Ah. Diese funktionieren beide wie angedacht. Bei der revolt Solar mit 4 Ah allerdings kann ich den Wächter nicht so richtig einstecken wegen des dicken Gummimantels um die Powerbank drumherum. Hier brauche ich ein Verlängerungskabel.

Nächstes Ziel ist, herauszufinden, wie oft die Powerbank die Stromaufnahme abfragt und dann möglichst kurz Strom zu entnehmen, dass die Powerbank das noch mitbekommt und an bleibt. Denn eins ist klar: je kürzer ich Strom verbraten, je weniger Strom wird durch den Wächter verbraucht und erhöht die Laufzeit der Powerbank.

Von 100 ms und 20 ms erreiche ich schließich 5 ms, bei denen noch alles tippi toppi bei den beiden übrig gebliebenen Powerbanks funktioniert. Dann wage ich nur noch eine Millisekunde, das macht aber nur noch die Solar revolt mit. Also gehe ich wieder zurück auf 5 ms und mache einen Langzeittest. Auch nach 20 Minuten ist die LogiLink noch an. Das werte ich mal als Erfolg.

Trotzdem ist meine Freude gedämpft, denn eigentlich hätte ich erwartet, dass der Wächter mit allen Kandidaten funktioniert.

Stromspar-Optimierungen

Von dem Deep Sleep Modus bin ich erst einmal wieder weggekommen, da hier maximal etwa 4 Sekunden geschlafen werden kann. Es gingen auch 8 Sekunden mit dem WatchDog-Timer, aber der würde dann einen Reset ausführen. Und dann fängt der Bootloader wieder an zu werkeln und braucht seine Zeit, so dass die 9 Sekunden dann wohl überschritten würden. Das ist mir ein zu hohes Risiko. Außerdem ist die Implementierung auch nicht die simpelste und es dauert bestimmt eine Weile, bis ich den Code zum Laufen bekomme.

Darum habe ich mich nur dafür entschieden, die ADC (Analog Digital Wandler) abzuschalten, die wohl (in Relation) sehr energiehungrig sind. Dazu füge ich noch folgende Zeilen in den Code ein: #include <avr/power.h> ... void setup() { power_adc_disable(); // ADC ausschalten zum Strom sparen (brauchen wir ja nicht) ... }

Ein Gehäuse für den Wächter


Fehlt nur noch ein 3D-gedrucktes Gehäuse für das kleine Powerbank Wächter Modul.

Das will ich möglichst einfach halten. Eigentlich einfach nur einen Schlitz im Boden. Der Boden selbst soll dünn sein (nur 2 Lagen à 0.2mm = 0.4mm), damit die Platine möglichst tief in die Powerbanks gesteckt werden kann. Denn das kleine USB-Platinchen des Digispark ist doch fast ein bisschen kurz geraten. Außerdem feile ich die Digispark Platine in den Ecken ein wenig an, damit es noch ein paar Mikrometer tiefer geht.

Ansonsten wächst das Gehäuse mit Wandstärke 0.8mm einfach um die das Modul samt Komponenten. Das Modul wird dann mit der USB-Platinen-Seite zuerst eingesteckt bis Anschlag und dann fixiert mit Klebeknete, Heißkleber, Epoxy oder sonst einem Kleber, den man gerade da hat. Ich nehme die Klebeknete. Die hält für den alltäglichen Einsatz, macht es aber immer noch möglich, die Platine heraus zu bekommen, falls doch noch mal was ist.

Den 3D-Entwurf habe ich wieder mit dem bewährten OpenScad gemacht. Ein paar Zeilen Code reichen für den einfachen Körper: wand=0.8; difference(){ translate([0, 0, 0]) { cube( [21, 15, 40+.4 ]);} // hohl translate([wand, wand, 0.4]) { cube( [ 21-wand*2, 15-wand*2, 50 ]);} // Aussparung für USB-Platine translate([wand+3.6, wand+5.4, 0]) { cube( [ 12.3, 2.4, 50 ]);} }


Die STL-Datei (hier downloadbar) habe ich dann mit ideaMaker importiert und mit meinem 3D-Drucker gedruckt.

Mein Anycubic i3 mega 3D-Drucker ist nach etwa 30 Minuten fertig mit dem Druck (siehe Video rechts).


Ich habe transparentes PLA gewählt, damit man die LEDs im Inneren noch sehen kann, was ganz gut funktioniert.

Sogar das kurz aufblitzende rote Licht kann man durch das Gehäuse durch erkennen.


Mit dem Gehäuse sieht der Wächter gleich ein Stückchen professioneller aus und außerdem sind die Innereien geschützt, nicht das irgendwann noch ein Bauteil abreißt - obwohl ja eigentlich nichts derartiges passieren sollte dank der Epoxy-Stabilisierung, aber man weiß ja nie.

Ich habe noch einen Langzeittest angeschlossen, um zu schauen, wie lange die Logilink 10 Ah so durchhält. Über 14 Stunden hat sie schon geschafft: