Projekt: Powerbank-Abschaltung mit zeitabhängiger Last verhindern (mit Raspberry Pi Pico)

Projekt: Powerbank-Abschaltung mit zeitabhängiger Last verhindern (mit Raspberry Pi Pico)

Bei diesem Projekt handelt es sich um eine Lösung, um die automatische Abschaltung einer Powerbank zu verhindern.

Problem: Eine Powerbank schaltet sich nach einer bestimmten Zeit ab. Manchmal schon nach 10 bis 30 Sekunden. Wenn sie einen Low-Current-Mode hat auch erst nach ein paar Stunden.

Analyse: Es handelt sich bei der automatischen Abschaltung um ein Leistungsmerkmal mit dem verhindert wird, dass Akku-betriebene Geräte, die über die Powerbank vollständig aufgeladen wurden, die Powerbank mit einer kleinen Erhaltungsladung vorzeitig leeren. Was in der Praxis sinnvoll ist hat den Nachteil, dass Geräte mit geringem Stromverbrauch, zum Beispiel Mikrocontroller, nicht an einer Powerbank betrieben werden können.

Fazit

In der Regel gibt es keine Powerbank, die keine Abschaltautomatik hat und die man deaktivieren kann.

Lösung

Die Lösung lautet in der Regel, den Stromverbrauch zu erhöhen, um die Abschaltung zu verhindern. Ein einfacher Widerstand zwischen VBUS und GND kann schon die Lösung sein.
Leider verhält sich jede Powerbank anders und der Widerstand führt in jedem Fall zur vorzeitigen Entladung der Powerbank.

Die Idee ist, eine zeitabhängige Last zu bauen, die verhindert, dass eine automatische Abschaltung erfolgt. Dazu muss die Last nur kurz geschaltet werden, bevor die Zeit abläuft.

Das Projekt besteht aus zwei Teilen:

  1. Schaltbare Last: Transistor als Schalter plus Widerstand.
  2. Zeitsteuerung im Mikrocontroller.

Der Aufbau sieht vor, dass sich der Mikrocontroller, der an der Powerbank betrieben wird, sich auch um die Zeitsteuerung kümmert.

Die schaltbare Last ist letztlich ein Festwiderstand, der mit einem Transistor parallel zum Mikrocontroller geschaltet wird, um zeitweise den Stromverbrauch zu erhöhen.

Aufbau und Bauteile

SchaltungMOSFET mit Lastwiderstand

Bausatz: MOSFET mit Lastwiderstand

Liste

MOSFET1: N-Kanal-MOSFET, BS170
R1: Metallfilm-Widerstand, 100 Ohm
R2: Metallfilm-Widerstand, 47 Ohm

Der Widerstandswert von R2 ist individuell. Er kann bei jeder Powerbank unterschiedlich sein. Er ist Abhängigkeit von Spannung und Strom zu berechnen. Außerdem ist seine maximale Verlustleistung zu berücksichtigen.

Tabelle: Widerstand und Verlustleistung

Der Widerstand R2 (Last) berechnet sich aus der Spannung von 3,3 Volt und dem Strom, der zusätzlich verbraucht werden soll.

Formel zur Berechnung des Widerstands

Weil der Widerstand den Strom in Wärme umsetzt, ist es wichtig, dass seine maximale Verlustleistung nicht überschritten wird. Ansonsten wird er gegrillt und geht dabei kaputt.

Formel zur Berechnung der Verlustleistung

Die folgende Tabelle enthält einige vorberechnete Werte und berücksichtigt verfügbare Widerstandswerte der E24-Reihe.

Da die schaltbare Last einen bestimmten Widerstandswert haben muss, kommt man nicht umhin, den notwendigen Strom durch ausprobieren zu ermitteln.

Tipp: Vermutlich muss der Widerstand R2 zwischen 33 und 100 Ohm liegen.

Strom Spannung Widerstand (berechnet) Widerstand (E24) Verlustleistung
50 mA 3,3 V 66 Ohm 68 Ohm 0,165 W
75 mA 3,3 V 44 Ohm 43 / 47 Ohm 0,248 W
100 mA 3,3 V 33 Ohm 33 Ohm 0,330 W
150 mA 3,3 V 22 Ohm 22 Ohm 0,495 W
200 mA 3,3 V 17 Ohm 18 Ohm 0,605 W

Es gibt einen guten Grund, warum der Widerstand nicht zwischen VBUS und GND geschaltet wird, sondern wischen 3V3 und GND. Dadurch reduziert sich die Verlustleistung. Vermutlich wird man einen normalen Widerstand mit einer maximalen Verlustleistung von 0,25 W (250 mW) gerade so verwenden können. Dadurch, dass durch den Widerstand nur sehr kurz ein Strom fließt, wird er kaum darunter leiden und kann bis zum nächsten Mal abkühlen.

Programmcode

Dieser Programmcode schaltet den GPIO 16 als Ausgang zeitabhängig alle 26 Sekunden für 2 Sekunden auf HIGH und schaltet dadurch die Last, wodurch der Stromverbrauch kurz erhöht wird.

Da jede Powerbank andere Zeitparameter hat, kann die Zeit von 26 Sekunden zu kurz oder zu lang sein.

Das heißt, man muss die Zeit, ab wann eine spezifische Powerbank abschaltet ermittelt und im Programmcode passend einstellen.

Der Programmcode ist so aufgebaut, dass ein vorhandenes Programm nicht umgeschrieben, sondern nur ergänzt werden muss. Außerdem beeinflusst dieser ergänzende Programmcode die Ausführung des Hauptprogramms nicht.

Der zu ergänzende Programmcode ist fett markiert.

# Bibliotheken laden
import machine
import time
import _thread

# Onboard-LED
led = machine.Pin('LED', machine.Pin.OUT, value=0)

# Funktion: Power-On
def power_on():
    out = machine.Pin(16, machine.Pin.OUT, value=0)
    while True:
        out.on()
        time.sleep(2)
        out.off()
        time.sleep(26)

# Funktion aufrufen und vom 2. Kern ausführen lassen
_thread.start_new_thread(power_on, ())

# Hauptprogramm
while True:
    led.toggle()
    time.sleep(1)

Funktioniert der Aufbau korrekt?

Erweiterter USB-Tester

Im Grunde funktioniert dieser Aufbau mit dem Programmcode, wenn sich die Powerbank nicht mehr abschaltet. Aber funktioniert die Schaltung auch korrekt. Die soll dauerhaft funktionieren.

Hierzu ist es empfehlenswert den gesamten Stromverbrauch des Aufbaus zu messen. Korrekt funktioniert der Aufbau, wenn der Stromverbrauch alle 26 Sekunden ansteigt und wieder sinkt.

Den Gesamtstrom vom USB-Anschluss ermittelt man am einfachsten mit einem USB-Tester.

Weitere verwandte Themen:

Der Elektronik-Kompendium Club ist ein Online-Treffpunkt für Hobby-Elektroniker und Maker.

Wir wollen:

  • Anregungen und Lösungen von echten Menschen bekommen
  • Menschen zusammenbringen und gemeinsam wachsen
  • Erfahrungen machen und teilen

Jetzt mehr erfahren und Mitglied werden

Elektronik-Kompendium Club Meeting

Der Elektronik-Kompendium Club ist ein Online-Treffpunkt für Hobby-Elektroniker und Maker.

Wir wollen:

  • Anregungen und Lösungen von echten Menschen bekommen
  • Menschen zusammenbringen und gemeinsam wachsen
  • Erfahrungen machen und teilen

Jetzt mehr erfahren und Mitglied werden

Elektronik-Kompendium Club Meeting

Elektronik-Sets für das Hardware-nahe Programmieren