Forum: Mikrocontroller und Digitale Elektronik Stromsparen bei Batteriebetrieb - ESP8266


von Hans (Gast)


Lesenswert?

Hallo zusammen,

ich baue zur Zeit an einem kleinen Projekt mit einem ESP8266 
(ESP-01-Board).
Das Ganze besteht lediglich aus einem einzigen Taster und keinerlei 
Verbrauchern (außer dem ESP8266-Board selbst).
Vorhandene Bauteile sind 2 x AAA-Mignon - 1.5 V-Batterien, dem 
ESP8266-Board und einem Taster.
Das Ganze soll eine Fernbedienung fürs interne WLAN-Netz werden, nähere 
Software-Details erspare ich euch, da diese nicht relevant sind.
Sobald der Taster gedrückt wird, erwacht der ESP aus dem 
Deep-Sleep-Modus für ca. 20 Sek. , aktiviert den internen Webserver und 
stellt eine kleine HTML-Seite im WLAN zur Verfügung. Nach den 20 Sek. 
legt sich der ESP wieder in den Deep-Sleep, bis das nächste Mal der 
Taster gedrückt wird. Das Spiel beginnt von Neuem. Dafür wird der 
Reset-Pin genutzt, der die CPU aufweckt (neustartet), 20 Sek. aktiv 
lässt und anschließend wieder in den Deep-Sleep wechseln lässt.

Nun ist es natürlich sehr wichtig, eine lange Batterielaufzeit für das 
tragbare Gerätchen zu gewährleisten. Im Deep-Sleep Modus zieht das 
ESP-Board beachtliche 8 mA, was bei einer Kapazität einer AAA-Mignon 
(Alkali, 1.5V: 1200 mAh) nicht vertretbar ist.
Ist das Board aktiv (Webserver aktiv,...), zieht der ESP beachtliche 160 
mA bei 3.3 V.

Nun habe ich zwei Fragen:
=========================

 - Gibt es eine Möglichkeit, z.B. über einen "dicken" Kondensator die 
Stromversorgung des ESPs und dadurch die Einschaltphase für etwa 20 sek. 
nach Tastendruck zu gewährleisten?
So könnte ich über den Taster den Kondensator für die entsprechende Zeit 
(20 Sek.) freigeben, der dann für diese Zeit den ESP mit Strom versorgt. 
Anschließend würde der ESP KOMPLETT abgeschaltet werden, was völlig ok 
wäre. Anschließend müsste sich der Kondensator wieder von der Batterie 
aufladen.
Somit würde im Leerlauf 0 Strom fließen und nur der Strom für die 
Aktivzeit (20 sek.) vom Kondensator in den ESP fließen.

 - Desweiteren ist mir die Idee gekommen, auf dem ESP den 
Spannungsregler zu umgehen, da der ESP auch mit 3.2 V (rohe Spannung an 
den beiden Batterien) einwandfrei funktioniert.
Somit sollte der Verlust am Spannungsregler wegfallen, wenn ich die 
Batterien direkt an den ESP anschließen würde, oder liege ich da falsch?


Ich würde mich sehr freuen, wenn der ein oder andere mir dabei helfen 
könnte, da ich eher aus der Software-Ecke komme. :-)

Ich bin über Vorschläge dankbar!

Gruß
Hans

von Stefan F. (Gast)


Lesenswert?

Hans schrieb:
> Vorhandene Bauteile sind 2 x AAA-Mignon - 1.5 V-Batterien, dem
> ESP8266-Board und einem Taster.

Wie lange wird es wohl dauern, bis die Batterien zu wenig Spannung 
abgeben? Außerdem liefern diese Zellen zu wenig Strom. Das ESP Modul 
benötigt 400mA, die kommen aus diesen kleinen Zellen nur wenige Minuten 
raus.

So anzufangen ist bereits Murks. Verwende eine LiFePo4 Zelle oder vier 
AA Zellen mit einem HT78833 Spannungsregler.

> ESP-01-Board
> Im Deep-Sleep Modus zieht das ESP-Board beachtliche 8 mA

Das kann nicht sein. Das ESP-01 Modul nimmt im Deep Sleep Modus ca. 
500µA auf. Wenn du die rote LED entfernst, sind es ca. 25µA.

> Ist das Board aktiv, zieht der ESP beachtliche 160 mA bei 3.3 V.

Nein, es sind kurze Peaks von ca. 400mA.

Vergiss das mit dem Kondensator. Du müsstest ein riesiges Ding verwenden 
und mit vielen Ampere aufladen, was die Batterien wiederum nicht können. 
Außerdem fällt bei Kondensatoren die Spannung rasch ab, dafür ist das 
ESP Modul nicht ausgelegt. Das würde nur gehen, wenn der Kondensator mit 
viel mehr Spannung geladen würde (z.B. 10V) und dahinter ein 
Spannungswandler auf stabile 3,3V regeln würde. Die damit verbundenen 
Verluste passen nicht zum Batteriebetrieb.

> Desweiteren ist mir die Idee gekommen, auf
> dem ESP den Spannungsregler zu umgehen

Das ESP-01 Modul hat keinen Spannungsregler.

Ich empfehle Dir diese Lektüre: 
http://stefanfrings.de/esp8266/index.html


Abgesehen von der Stromversorgung: Welchen Sinn hat ein Webserver, der 
nur wenige Sekunden nach einem Tastendruck erreichbar ist?

Kann es sein, dass die die Begriffe Server und Client verwechselt hast?

von Philipp K. (philipp_k59)


Lesenswert?

ich hatte ein ähnliches Problem..

Meine Lösung war ein Attiny85 bei weniger als 5uA für mehrere Buttons.

Den Button mit an den Tiny und einen Feedback Pin vom ESP32 zum Attiny 
zum "Halten". Das ganze wird dann mit einem Mosfet geschaltet, das gibt 
es auch fertig als IC, nennt sich "Push Button controller".

https://hackaday.io/project/163278-pushbutton-controller

von Stefan F. (Gast)


Lesenswert?

> HT78833 Spannungsregler

Sorry, es sollte HT7833 heißen.

von Hans (Gast)


Lesenswert?

>LiFePo4 Zelle

Und wie kann ich die besagten LiFePo-Akkus einfach aufladen?
Soviel ich weiß bedarf es da ja einer großen Ausstattung an 
Lade-Equipment (Balancer usw.) um die einzelnen Zellen beim Laden zu 
überwachen?!

Warum 4 Zellen? Eine LiPo-Zelle liefert doch schon 3,7 V.

Das mit dem Strom im Deep-Sleep verstehe ich auch nicht.
Hier mal mein Code (aufs Nötigste reduziert):
1
     
2
3
4
const char* ssid = "Hans WLAN";
5
const char* password = "123456789";
6
String HTMLpage = "";
7
8
9
IPAddress ip(192,168,178,90);                 // IP-Adresse des ESP8266
10
IPAddress gateway(192,168,178,1);             // Gateway (z.B. Router / FritzBox)
11
IPAddress subnet(255,255,255,0);
12
13
14
15
16
void setup()
17
{
18
WiFi.begin(ssid, password);
19
WiFi.hostname("Hans ESP");
20
        WiFi.config(ip, gateway, subnet);
21
while (WiFi.status() != WL_CONNECTED)                 // Überprüfen, ob WLAN verbunden...
22
        {
23
            delay(500);
24
        }
25
      
26
        if (MDNS.begin("hans", WiFi.localIP()))         
27
        {
28
        }
29
30
       delay(500);
31
 
32
       Webserver.on("/", []()
33
       {
34
             Webserver.send(200, "text/html", HTMLpage);         
35
       });
36
37
      delay(100);
38
      Webserver.begin();                                    
39
      delay(100);
40
41
      for(int i=0; i<30000; i++)
42
      {
43
            Webserver.handleClient();                           // stelle für 30 Sek. den Clients  die Seite zur Verfügung,..
44
            delay(1);
45
      }
46
     
47
      ESP.deepSleep(0);                                    // danach gehe für undefinierte Zeit in den Deep-Sleep.
48
}
49
50
void loop() 
51
{   
52
}


Ich weiß nicht, wieso der soviel Strom im DeepSleep zieht. Nach 30 Sek 
fällt tatsächlich der Strom deutlich ab, aber eben niemals unter 1 mA.

Woran kann das liegen?

von Hans (Gast)


Lesenswert?


von Michael U. (amiga)


Lesenswert?

Hallo,

ich kann Stefan F. hier nur zustimmen.
Ich hatte mal als Test einen ESP8266-03 mit einem China-PIR an 2x AAA.
220µ parallel zur Betriebsspannung, keine LED.
Lief bis ca. 2,4V Batteriespannung stabil ca. 3-4 Wochen.
Aber: er war nur gut 1s wach, um eine MQTT-Message abzusetzen.

Ein Webserver erscheint mir in dem Zusammenhang auch ziemlich unsinnig, 
wer soll da den ESP8266 ständig anpingen und dann die Webseite aufrufen, 
wenn er gerade mal wach ist?

Nach ESP.deepSleep(0); noch ein delay(100); einfügen, damir er an der 
Stelle etwas Zeit für den DeepSleep-Start hat, sonst kann er durchaus 
noch etwas machen, was man nicht will.
Eine Zelle LiFePO4 ist ideal für die ESPs, nahezu über die komplette 
Nutzungszeit zwischen 3,0V und 3,4V.

Gruß aus Berlin
Michael

von Hans (Gast)


Lesenswert?

Hallo Michael,

vielen Dank für deinen Beitrag.

Dann werde ich eine LiPo-Zelle in Erwägung ziehen.
Welche Kapazität sollte diese idealerweise haben?

Wie löst man das Laden am besten einfach und günstig und vorallem 
platzsparend? Der von mir gepostete Link zeigt auf eine kleine Platine 
zum Laden von LiPos. Auch die USB-Schnittstelle fände ich komfortabel...

Was denkst du?


Dankeschön!

von Hans (Gast)


Lesenswert?

UPDATE:

>Nach ESP.deepSleep(0); noch ein delay(100); einfügen

Ich habe jetzt sogar eine Delay von 1 sec. eingefügt, der Strom liegt 
bei 6 V im DeepSleep bei 4 mA.

Kann das an der LED liegen?
Denn die ist bei mir (noch) unverändert verbaut.

Danke!

von Michael U. (amiga)


Lesenswert?

Hallo,

Hans schrieb:
> Kann das an der LED liegen?
die LED zieht max. 0,5mA.

Welcher Spannungsregler bei Deinen 6V?

Hier weitermachen oder dort?
https://forum.arduino.cc/index.php?topic=651216.0

LiFePO4 sind bei mir China-Zellen im AA Format im Einsatz (600mAh) im 
Einsatz.
Mit Batteriehalter und einem Billig-Loader, der LiFePO4 kann.
Werden einfach getauscht und im Ladegerät geladen.

Gruß aus Berlin
Michael

von Stefan F. (Gast)


Lesenswert?

Hans schrieb:
> Dann werde ich eine LiPo-Zelle in Erwägung ziehen.

Nein, nicht LiPo sondern LiFePO4.

LiPo Zellen haben frisch geladen bis zu 4,3V, das ist zu viel.

Hans schrieb:
> der Strom liegt bei 6 V im DeepSleep bei 4 mA.
>
> Kann das an der LED liegen?
> Denn die ist bei mir (noch) unverändert verbaut.

Das liegt wohl eher an den Bauteilen auf dem unbekannten Board. Ein 
ESP-01 kann es wie gesagt nicht sein, denn das hat keinen 
Spannungsregler. Liest du überhaupt, was ich schreibe?

> Auch die USB-Schnittstelle fände ich komfortabel...

Je mehr Schnickschnack auf dem Board ist, umso höher seine 
Stromaufnahme. Gerade Spannungsregler und USB Chips sind dafür bekannt.

von Hans (Gast)


Lesenswert?

>Das liegt wohl eher an den Bauteilen auf dem unbekannten Board

Also es lag an dem ESP-01-Board. Meines hatte wohl irgendein internes 
Problem. Nach dem Tausch bin ich bei 0,3 mA im Deep Sleep und 60 mA im 
Aktiv-Mode.

>ESP-01 kann es wie gesagt nicht sein, denn das hat keinen
>Spannungsregler.

Dann frage ich mich, warum auf meinem ESP-01 ein 7805 aufgelötet ist.

von Stefan F. (Gast)


Angehängte Dateien:

Lesenswert?

Hans schrieb:
> Dann frage ich mich, warum auf meinem ESP-01 ein 7805 aufgelötet ist.

Ein ESP-01 Board sieht so aus. Die gibt es in blau und in schwarz. Immer 
ohne Spannungsregler.

Wie sieht dein Board aus?

Du findest das vielleicht unwichtig, aber es ist wichtig. Wir können Dir 
bei Problemen mit deinem Produkt nur zielgerichtet helfen, wenn wir von 
dem gleichen Ding reden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.