PHP Dashboard für HmIP Smartmeter
09.10.2024
Elektronik | Funk | Software
Der Technik-Blog
Für dieses Projekt gibt es auch ein Video auf Youtube: Arduino Powerbank Abschaltautomatik verhindern - So bleiben Arduinos, ESPs oder NodeMCUs immer ein
Powerbanks eignen sich ideal für den Betrieb von Arduino Boards, ESP32, ESP8266 oder auch NodeMCU Boards. Sie sind nicht nur wegen der teilweise besonders hohen Kapazität sehr beliebt, sondern verfügen auch gleich über die benötigten 5V Betriebsspannung. Allerdings gibt es ein großes Problem bei nahezu allen Powerbanks: Sie funktionieren mit Mikrocontrollern nicht oder schalten nach wenigen Minuten Betriebszeit einfach aus. In diesem Artikel zeigen wir, welche Möglichkeiten es gibt, wie man einen Mikrocontroller kompatibel macht für einen Powerbank.
Im Powerbank befindet sich eine eigene Elektronik, die bei einer zu geringen Energieaufnahme die Stromzufuhr abschaltet. Powerbanks sind nicht für den Dauerbetrieb gedacht und nur für Aufladezwecke vorgesehen. Lädt man zum Beispiel damit den Akku vom Smartphone, so fließt ein Strom von einigen Hundert Milliampere bis hin zu ein bis drei Ampere. Wenn der Akku vollgeladen ist, geht die Stromaufnahme deutlich zurück und das Smartphone bezieht nur noch wenige Milliampere. Genau zu diesem Zeitpunkt sollte dann der Powerbank abschalten. Ein Mikrocontroller wie Beispielsteiße ein Arduino Uno Board benötigt im Leerlauf weniger als 30 Milliampere. Der Powerbank nimmt nun an, dass das angeschlossene Gerät vollgeladen ist, und schaltet daher sofort oder nach wenigen Minuten ab. Um dies zu unterbinden, muss man den Powerbank belasten bzw. einen leeren Smartphone-Akku vortäuschen.
Die einfachste aber auch ineffizienteste Lösung ist ein Widerstand, der parallel zwischen Powerbank und Mikrocontroller geschaltet wird. Das kann z. B. ein 220 Ohm Widerstand sein. Man hat dadurch einen höheren Stromverbrauch, der sinnlos Energie verschwendet und den Powerbank schnell entleert. Wenn man z. B. den Stromverbrauch vom Arduino (~30 mA) und den Lastwiderstand (~90 mA) addiert, so ergibt das einen Energieverbrauch von 120 mA, was meistens ausreicht für einen Powerbank im Dauerbetrieb. Allerdings läuft der Arduino mit einem 2000 mA Powerbank dann gerade einmal 24 Stunden, was sehr wenig ist. Es gibt aber eine ähnliche und weit aus effizientere Lösung, die wir im nächsten Absatz erklären.
Die zweite Variante ist eindeutig die bessere, jedoch erfordert diese mehr Bauteile. Der größte Vorteil ist der niedrige Energieverbrauch im Gegensatz zur ersten Variante, weil hier der Lastwiderstand nur sehr kurz in Betrieb ist. Da das Arduino Board und nahezu alle Mikrocontroller auf einen digitalen Ausgang nur maximal 40 mA schalten können, wir ein Verstärker benötigt. In unserem Fall ist das ein NPN BC547 Transistor. Dieser Transistor kann bis zu 100 mA schalten, was für den Powerbank ausreichend ist. Da der Eigenverbrauch bei etwa 25 mA liegt und der Arduino auch noch andere Aufgaben hat, kommt man in den meisten Fällen auf über 150 mA Gesamtstrom, was ausreichen sollte, um die Abschaltautomatik zu verhindern.
Achtung: Bei der Verwendung von 0.25 Watt Widerständen mit weniger als 100 Ω können diese im Dauerbetrieb sehr heiß werden und beschädigt werden!
Widerstand | Kollektorstrom | Gesamtstrom |
---|---|---|
150 Ω | ca. 30 mA | ca. 55 mA |
100 Ω | ca. 45 mA | ca. 70 mA |
68 Ω | ca. 65 mA | ca. 90 mA |
47 Ω | ca. 95 mA | ca. 120 mA |
Die Software ist sehr einfach aufgebaut und beinhaltet lediglich einen Timer, der nach X Sekunden für eine Sekunde einen digitalen Ausgang (Standard: Pin 10) einschaltet. Der Vorteil von diesem Code ist, dass es für die Wartezeit kein "delay" gibt und der Mikrocontroller dazwischen andere Aufgaben erledigen kann.
/* More information at: https://www.aeq-web.com Version 1.0 | 2019-APR-02 */ int dummyloadpin = 10; long cronmillis = 0; long interval = 4000; void setup() { pinMode(dummyloadpin,OUTPUT); } void loop() { if ((millis() - cronmillis) > interval) { cronmillis = millis(); digitalWrite(dummyloadpin,HIGH); delay(1000); digitalWrite(dummyloadpin,LOW); } }
PT1000 Sensoren können nicht direkt analog mit einem Mikrocontroller gemessen werden. Wie baut man einen Messwandler mit dem LM358 für den PT1000 und Arduino?
WeiterlesenDer PT100 ist ein sehr präziser industrieller Temperatursensor. In diesem Artikel geht es um den Bau eines Messverstärkers zum Einlesen eines PT100 am Arduino
WeiterlesenAEQ-WEB © 2015-2024 All Right Reserved