Soweit recherchiert benötigt man zum erzeugen der 3,3 V für den ESP an einer (oder mehreren parallel geschalteten) 18650 LiIon Batterie einen Boost-Converter auf 5V und dann einen LDO uf die 3,3 V zurück. Ich plane einen Low-Power Shield und der Akku soll möglichst lange halten, da kommen die Wandlungsverluste ungünstig. Ich lade den Akku bei Bedarf extern, sprich mein Shield hat keine Ladebuchse sondern nur einen Batteriehalter.
Sowohl LiIon als auch LiPo liefern nominal 3,7 V was für die meisten LDOs einfach zuwenig ist für eine stabile 3,3 V Spannung. Auch geht die Akkuspannung wohl rasch runter, trotz genügend Restkapazität.
Eine Serienschaltung zweier Akkus würde genügend (evtl sogar wieder zuviel?) Spannung zum direkteb Betrieb am LDO ohne StepUp davor liefern, aber ich habe keine Erfahrung wie sich die Serienschaltung der 18650 verhält.
Der ESP steuert über eine KSQ eine LED die mit 100 mA betrieben wird. Den ESP selbst hoffe ich über Deep-Sleep bis auf wenige Mikroampere runter zu bekommen, vielleicht werden es aber nur 1-5 mA, beim senden über Bluetooth aber sicher kurzfristig mal mehr. Das nur zur Info.
Gibt es einen Königsweg oder muss man sich einfach für ein "Übel" entscheiden? Wie habt ihr sowas umgesetzt?
Es gibt extra Buck-Boost-Regler wie den TPS63051, der aus 2.5 bis 5.5V konstante 3.3V macht bei knapp 50µA Iq, dann sparst du dir bei einer Zelle den LDO.
Falls man aus einer LiIon-Zelle mit ihren maximal 4,2V eine Spannung von 5V erzeugen wollte, würde ein Boost-Konverter reichen.
Der ESP dürfte allerdings eher mit 3.3V laufen.
Eine Serienschaltung zweier Akkus würde genügend (evtl sogar wieder
zuviel?) Spannung zum direkteb Betrieb am LDO ohne StepUp davor liefern, Sie würde genug Spannung zum Betrieb an eine Stepdown erlauben, der dann einen besseren Wirkungsgrad hat und der auch leichter in "stromsparend" erhältlich ist.
Ein LDO würde zwingend für einen Wirkungsgrad <50% sorgen...
aber ich habe keine Erfahrung wie sich die Serienschaltung der 18650
verhält.
Es wäre sowieso ratsam, "gleich gute" Zellen zu nehmen, damit sie sich annähernd "gleich schnell" entladen. Und beim Laden hast du dann ja sowieso zwei Einzelzellen.
Der ESP32-C6 geht bis 3.0V runter. Die gängigen LiPo Akkus sind bei 3.0V praktisch leer, es ist kaum was zu holen wenn man noch tiefer entladen möchte. Selbst bei 3.3V ist nicht mehr viel drin. Es wäre also wahrscheinlich ausreichend eine einzelne Zelle ohne Step-Up zu nutzen.
Sowohl LiIon als auch LiPo liefern nominal 3,7 V was für die meisten
LDOs einfach zuwenig ist für eine stabile 3,3 V Spannung.
Dann nimm halt nicht einen der meisten LDOs. Es gibt sehr gute DC-DC Step-Down Wandler (z.B. TPS62840) die auch 0V Dropout können, indem einfach der MOSFET auf 100% Duty-Cycle geschaltet wird und somit die Akkuspannung fast direkt (über die Induktivität) am Ausgang anliegt.
Verträgt sich sowieso nicht mit einem LDO - da verheizt du ja bald die Hälfte der Energie. Gerade den stromhungrigen ESP32 sowie deine High-Power-LED solltest du nur per Schaltregler versorgen.
Brauchst du denn WiFi? Das frisst sowieso sehr viel Energie. Wenn dir BLE reicht nimm vielleicht einen nRF54 o.ä., der geht bis 1.7V runter. Allgemein sind die ESP32 sehr Energie -Ineffizient, wenn es dir um Akkulaufzeit geht sind die keine gute Wahl.
Zum Vergleich:
ESP32-C6 braucht nur mit CPU, ohne Funk, ca 30mA. Beim Senden BLE 8dBm weit über 100mA.
nRF54 braucht nur mit CPU 2.6mA. BLE Senden 8dBm 10mA.
Der nRF54 braucht bei maximaler Sendeleistung 3× weniger Energie als der ESP32 ohne zu senden, nur für die CPU!
Nicht umsonst halten BLE-Tracker/Tags à la AirTag Jahre mit einer einzigen Knopfzelle, die benutzen aber auch keinen ESP32 und ziemlich sicher keinen Step-Up und keinen LDO.
Der ESP32-C6 geht bis 3.0V runter. Die gängigen LiPo Akkus sind bei 3.0V
praktisch leer, es ist kaum was zu holen wenn man noch tiefer entladen
möchte. Selbst bei 3.3V ist nicht mehr viel drin. Es wäre also
wahrscheinlich ausreichend eine einzelne Zelle ohne Step-Up zu nutzen.
D.H. du würdest den ESP ohne LDO direkt an die Batterie klemmen?
Der ESP32-C6 geht bis 3.0V runter. Die gängigen LiPo Akkus sind bei 3.0V
praktisch leer, es ist kaum was zu holen wenn man noch tiefer entladen
möchte. Selbst bei 3.3V ist nicht mehr viel drin. Es wäre also
wahrscheinlich ausreichend eine einzelne Zelle ohne Step-Up zu nutzen.
D.H. du würdest den ESP ohne LDO direkt an die Batterie klemmen?
Mit einer maximalen Eingangsspannung von 3.6V wird er die 4.2V einer vollen Zelle sicherlich mögen!
Wenn die Batteriespannung sich der eingestellten Ausgangsspannung nähert (hier also 3.3V) verbindet dieser Wandler die Batterie direkt mit dem ESP32. Solange die Batteriespannung höher ist, wird sie effizient heruntergewandelt.
Also ne Zener Diode mit hohem Wirkungsgrad ;-) Ja für Lipos klingt das gut. Wie verhält das sich bei Lithium-Ionen Akkus?
Leider gibt es kein Angebot an Shields mit diesem Bauteil ...
Ich habe mir jetzt mal ein paar Dinge bestellt zum experimentieren und messen. Darunter nen LiPo und ein LiIon Akku sowie div. Laderegler, aber auch das Feather-Shield.
Ich nutze dann einen Z2MQTT Stack auf dem ESP und werde mich mal ein wenig mit den Energiesparoptionen des Chips vertraut machen. Sicher brauche ich für meinen einfachen LED Aktor keine 160 MHz Taktfrequenz, da reicht auch die kleinst einstellbare. Das Wifi Modem und anderes Zeugs werde ich auch aus lassen.
Da ich nen Aktor und keinen Sensor baue kann ich die CPU nicht zu lange schlafen lassen. Schade das es für Funkprotokolle keine abgetrennte Empfangshardware gibt die die CPU bei erkennen der MAC Adresse aufweckt, so wie in RDKS Sensoren.
Schade das es für Funkprotokolle keine abgetrennte Empfangshardware gibt
die die CPU bei erkennen der MAC Adresse aufweckt, so wie in RDKS
Sensoren.
Um die MAC Adresse zu empfangen, muss der Empfänger logischerweise ständig eingeschaltet sein. Der Energieverbrauch der CPU macht im Warrezustand nur einen kleinen Bruchteil aus.
Du könntest den Aktor in regelmäßigen vorhersagbaren Intervallen lauschen lassen. Dann ist er natürlich auch nur zu diesen Zeitpunkten ansprechbar.
Das schöne am MQTT ist ja das senden und empfangen asynchron laufen, d.h. es gehen keine Events verloren. Ich kann (muss wohl) damit leben wenn das Modul sich nur einmal pro Minute mit der MQTT verbindet und schaut ob es was zu tun gibt. Das muss ich mal fingerprinten wieviel Energie dafür verbraucht wird...
Schade das es für Funkprotokolle keine abgetrennte Empfangshardware gibt
die die CPU bei erkennen der MAC Adresse aufweckt, so wie in RDKS
Sensoren.
Praktisch alle Funk-Controller können das, auch die ESP32. Nur sind die ESP32 und WiFi halt so ineffizient dass man damit nicht viel gewinnt. Und ein Funkmodem auf Empfang hat eben immer einen gewissen Grundverbrauch, auch wenn die CPU im Deep-Sleep ist. Der gängige Trick ist es, dass man regelmäßig ein kurzes Datenpaket sendet und danach für wenige Millisekunden auf Empfang geht. Die Gegenstelle muss entsprechend schnell reagieren. Natürlich hat man so eine gewisse Latenz, weil man immer auf das nächste Paket des Aktors warten muss. Dafür kann man so leicht einen Durchschnittsverbrauch im μA-Bereich erzielen, aber eben nicht mit den ESP32.
Wenn du also nur ZigBee brauchst, hast du ja eine große Auswahl an effizienten Funk-Controllern (inkl den nRF54 oder auch STM32WB) und bist nicht auf die ESP32 angewiesen.
Danke, ja die Nordic-Chip scheinen sehr viel geeigneter zu sein. Jetzt habe ich aber bereits ein paar ESP32-C6 auf div. Shields (Waveshare, Xiao Seeed und bald auch nen Feather) mit denen ich erst mal teste.
Da du doch schon den XIAO ESP32C6 hast, kannst du doch einfach einen LiIon 18650 Akku als Spannungsversorgung nutzen:
"Leveraging Power Consumption: Offers four working modes, including a deep sleep mode with consumption as low as 15 μA, along with support for lithium battery charge management."
Ich habe heute dies von mir bestellte Boost-Modul bekommen, welches 3,7 V auf 5 V (und andere Spannungen) heben kann. Das ist für einen Einsatz ja dann eher ungeeignet, denn besser wäre ja ein Buck-Boost Modul direkt mit 3,3 V, aber das ist noch im Zulauf.
Das Modul arbeitet ab 2,0 V und ist kurzschlussfest am Ausgang. Auf dem Modul ist ein "MCP1640", welcher eigentlich speziell für Batterieanwendungen gedacht ist. Bei geeigneter Beschaltung sollte der auch 3,3 V liefern können.
Leider schluckt das Teil in meinem Lasttest bei 50 mA Nutzlast gute 20 mA zusätzlich, was ich mir jetzt nicht so erklären kann.
Leider schluckt das Teil in meinem Lasttest bei 50 mA Nutzlast gute 20
mA zusätzlich, was ich mir jetzt nicht so erklären kann.
Wenn die Batteriespannung geringer ist, als die Ausgangsspannung, dann muss das so sein. Außerdem hat jeder Schaltwandler Verluste. Die sind bei sehr geringer Belastung typischerweise hoch. Deswegen detzt man nicht einen 2000W Wandler ein, wenn man nur 5W braucht.
Vergleiche die Eingangsleistung mit der Ausgangsleistung. Wenn du 80% Wirkungsgrad hast, kannst du zufrieden sein.
Wenn ich den Graphen dazu befrage sollte ich ja bei über 90% liegen. Das entspricht aber nicht den Messwerten. Ich muss mal die Bauteile vergleichen...
Wenn ich den Graphen dazu befrage sollte ich ja bei über 90% liegen
Mag sein, aber nur wenn du die Schaltung auch genau so aufbaust, wie es der Hersteller gemacht hat. Rate mal, wie die Chinesen das ganze Modul für 99 Cent verkaufen können, und damit auch noch Gewinn machen, obwohl schon der Chip darauf bereits die Hälfte davon kostet.
Mag sein, obgleich die Chinesen den Chip für 1,29€ im 10er-Pack verkaufen und daran sicher auch noch verdienen. Der wird in der Herstellung nur wenige Cent kosten und keine 50 Cent wie Du meinst. Spielt aber auch keine Rolle da der Boost-Wandler ohnehin der falsche ist. Boost-Wandler benötigen ja wenigstens Vin < Vout, was bei einem LiIon (4,2 V) ja nicht immer der Fall ist.
Soweit recherchiert benötigt man zum erzeugen der 3,3 V für den ESP an
einer (oder mehreren parallel geschalteten) 18650 LiIon Batterie einen
Boost-Converter auf 5V und dann einen LDO uf die 3,3 V zurück
Wo hast du das "recherchiert"? Ist das ein KI-Mehrheitsentscheid über viele ins Netz gestellte Anfängerlösungen? Ich bin mir absolut sicher, dass man das mit einem gut designten Schaltregler direkt auf 3V3 auch schafft. Und dann hat man auch nicht gleich einen 34% schlechteren Wirkungsgrad (das verheizt der LDO von 5V auf die nötigen 3V3).
Die Reihenschaltung zweier Akkus und ein effizienter Stepdown wäre hier mein Ansatz. Da bekommt man mit geeigneter Bauteilauswahl und definiertem LAstbereich leicht auf 95% Wirkungsgrad.
Aber so ein System designt dann auch nicht der Laie
Eigentlich muss man nur ein Schaltregler Modul/Board auftreiben das einen 100% Duty Modus kann. Wird's halt nicht für $1 bei AliExpress geben. Die TI Evalboards (z.B. TPS62840-1YBGEVM56) sind allerdings wirklich etwas teuer.
Eigentlich muss man nur ein Schaltregler Modul/Board auftreiben das
einen 100% Duty Modus kann. Wird's halt nicht für $1 bei AliExpress
geben. Die TI Evalboards (z.B. TPS62840-1YBGEVM56) sind allerdings
wirklich etwas teuer.
Alternative Idee: Du kaufst ein "Nordic Thingy:53". Da ist ein BLE-fähiger Mikrocontroller, Batterie-Laderregler für USB-C, Schaltregler (nur Buck), usw. fix und fertig aufgebaut. Funktioniert mit Batteriebereich 2.3–4.35 V.
Nordic sind sowieso Experten im Bereich Ultra-Low-Power, du wirst mit Eigenkonstruktionen nur schwer an die Akkulebensdauer von deren Produkten rankommen. Mit einem ESP32 schon gar nicht.
Interessant ist auch dieser Buck-Boost Converter, auch wenn ich noch
nicht herausfinden konnte was das für ein Chip ist der darauf verbaut
wurde (SMD-Marking "N1IF":
Nein, ich habe nicht auf die Polung meines LiPo Akkus (JST-PH Stecker) geachtet bevor ich ihn am Feather angeschlossen habe - schon stieg weißer Rauch auf "Habemus Idiotus" würde ich sagen ;-( Optisch kam der Qualm aus dem Batteriesensor (MAX17041) der vermutlich nicht verpolungssicher ist. Evtl. habe ich aber auch den Laderegler (MCP73831) frittiert?
Die MCU hat es jedenfalls überlebt, vermutlich dank der MBR540 vor dem Step-Down (AP2112).
Der Feather ist ja nicht grad billig, da wäre eine selbstrückstellende Sicherung für ein paar Cent nicht mehr ins Gewicht gefallen... Jedenfalls klappt der Chip noch bei direkter Anlage von 3,3V, aber nicht mehr über USB oder Batterie. Vermutlich auch noch der LDO hin, ich muss jetzt mal messen.
Der Feather ist ja nicht grad billig, da wäre eine selbstrückstellende
Sicherung für ein paar Cent nicht mehr ins Gewicht gefallen...
Was mag wohl billiger sein? Auf die richtige Verschaltung zu achten, oder ein weiteres Bauteil zu verwenden, das man ins Layout einbringen, bestücken und lagerhaltig haben muss?
Da ich nen Aktor und keinen Sensor baue kann ich die CPU nicht zu lange
schlafen lassen. Schade das es für Funkprotokolle keine abgetrennte
Empfangshardware gibt die die CPU bei erkennen der MAC Adresse aufweckt,
Es gibt die Funktion dass der Empfängerteil bei einem elektrischen Feld mit einer gewissen Stärke am Empfänger aktiv wird und den µC dann aufweckt. Es ist dabei aber egal was da jetzt für Nutzdaten transportiert werden, es muss nur ein genügend starkes Feld sein, wenn viele Sender aktiv sind, dann wird der Empfänger dauernd aufgeweckt.
Ich selbst habe die Funktion aber noch nie genutzt, sondern mache es so dass der µC immer nur in definierte Zeitabschnitten aufwacht und lauscht.
Bei Aliiexpress gibt es in den Bündelangeboten: TENSTAR 2 Stück NRF52840 für 4€. Kann Bluetooth LE, Bluetooth mesh, Thread, Zigbee, aber eben keine W-Lan Verbindung aufbauen.
Für den ESP würde ich einfach einen LDO nutzen, die meisten Regler brauchen nur so 300mV über dem Soll-Wert. Für die LED einen StepDown Wandler bei dem man den Strom einstellen kann, direkt nur für die LED.
Ich bin nun doch auf den ESP32-H2 (im Mini-Shield) gewechselt weil der mehr meine Anforderungen trifft. Preislich ist da zwar kein Unterschied, aber Hardware (Wifi) die nicht vorhanden ist, muss ich auch nicht aufwändig abschalten ;-)
Inzwischen sind meine Buck-Boost Converter da und ich fange mal an damit zu experimentieren. Zunächst der TPS63020 (den man beim Chinesen für 1,79€ im 5er Pack bekommt). Der kann von 2V - 5V problemlos auf 3,3V stabilisieren.
Als nächstes nehme ich mir die Akkumessung vor. Hier würde ich über einen simplen Spannungsteiler (2x 10k) an einen der ADC-Eingänge (GPIO1..5 aka ADC1_CH0..4) gehen. Dabei fließt natürlich ständig Strom durch den Spannungsteiler und dem Chip-Port nach Masse (~200 µA). Besser wäre es vermutlich den Akku nur bei einer Messung zum Spannungsteiler/ADC zu führen? Z.B. mit einem kleinen Mosfet dessen Gate von einem IO-Pin gesteuert wird. IOs habe ich ja genug und dann fließt nur Strom während einer Messung. Die muss man ja auch nicht all zu oft machen, alle 10 Minuten würde ja reichen?
Aus der Batteriespannung müsste man dann die Restkapazität ableiten können, oder? Bitte hier mal um Tipps, da kenne ich mich überhaupt nicht aus. Der Li-Ion Akku dürfte im Spannungsbereich von 2,5V (=quasi leer) bis 4,1V (=prall gefüllt) liegen.
Die Grundlegende Firmware habe ich bereits geschrieben und getestet. Mein Node kann neben On/Off auch dimmen, damit könnte ich den Stromverbrauch ebenfalls optimieren indem ich die Helligkeit mal der Umgebungshelligkeit anpasse, oder bei nachlassender Batteriekapazität reduziere.
Als nächstes wäre dann eben der Power-Cluster an der Reihe um die Batteriefunktionen zu exposen, also Stromversorgungstyp, Art, Anzahl und Spannung der Batterien, aktuelle Spannung, Restkapazität.
Entwickelt habe ich die Firmware mit dem Espressif-IDF 5.5 in VS Code. Da muss ich mich noch tiefer einarbeiten, aber bislang habe ich alles umsetzen können.
Es gibt noch ein Timing-Problem zu lösen, da mein Node immer wieder "offline" geht, aber trotzdem sofort auf Statusänderungen reagiert. Ich denke das liegt an nicht gut abgestimmten Timeout-Parametern. Aber dem widme ich mich wenn es an die Sleep-Modi geht...
Der Li-Ion Akku dürfte im Spannungsbereich von 2,5V (=quasi leer)
bis 4,1V (=prall gefüllt) liegen.
<2,5V = Müll
Bis runter auf 3,3V noch nutzbar bei geringer Belastung, also wenig Strom da der Innenwiderstand hier mit sinkender Spannung ansteigt.
Bis runter auf 3,6V entladen wenn man auch etwas Strom aus dem Akku ziehen möchte.
Die Akkus kann man bis auf 4,2V aufladen, manche nur bis auf 4,1V. Ich mache es so dass ich sie nur bis auf 4,0V auflade, weil die Elektroden im Akku dann nicht so schnell degenerieren.
Du kannst die Spannung des Akkus auch sehr hochohmig messen, zum Beispiel mit 2x 100kOhm als Spannungsteiler und 100nF am ADC Eingang. Ein P-Kanal MosFET zum highside abschalten des Spannungsteilers ist aber auch eine Möglichkeit.
Wenn du die LED dimmen willst, dann kannst du das einfach mit PWM machen oder du baust dir einen diskreten StepDown Wandler mit einer Spule (470µH) und schottky diode. Mit dem StepDown Wandler hast du eben kein Flackern und keine Stroboskop Effekt wenn man mal ein Foto macht.
Ich habe noch ein Problem. Wenn ich die LED über die KSQ steuere, auch um damit Helligkeiten produzieren zu können, dann geht diese Steuerung aktiv vom ESP aus. Lege ich diesen in den Deep-Sleep, fällt das Schaltsignal oder PWM-Signal weg und auch die LED ginge aus.
Wie könnte ich den Zustand so puffern das die KSQ auch im Deep-Sleep bis zu 60 Sekunden ohne das Signal vom ESP angesteuert bleibt? Für reinen EIN/AUS Betrieb einfach einen kleinen Elko an das EN-Pin der KSQ? bzw. für Dimm-Betrieb doch einen Spannungsgeführten PWM-Regler?
Sehr gute Idee, aber 12 Kanäle brauche ich ja nicht. Als Shield (wird wohl eher für Motore eingesetzt als für LEDs) recht sperrig.
Es gibt noch kleinere Versionen der PCA9* Serie, aber die sind noch schwerer zu bekommen bzw. man muss sich selbst eine Platine dafür herstellen. Schade, denn ansich wären diese Bauteile optimal.
Die andere Option wäre wohl nicht in den Deep-Sleep zu gehen, sondern mit dem Light-Sleep vorlieb zu nehmen. In diesem Zustand blieben die LED PWM Controller (LEDCs) nämlich aktiv. Ich finde ein guter Kompromiss zwischen Materialaufwand und Stromverbrauch, denn das ist ja nur im Betrieb der LED und da kommt es auf 1 mA nicht an?
Die richtige Idee kam schon am 11.11. von Fred F. - LiFePO4
Dafür hat LiFePo eine viel geringere Energiedichte. Das macht den geringeren Verbrauch wieder wett. Massen an Elektronik Geräten nutzen normale LiPos bei praktisch endloser Lebensdauer...
Und Du meinst nicht, dass man auch da einen Tiefendladeschutz vorsehen
sollte?
Reicht in Software - bei der unteren Schwelle geht man in einen Deep-Sleep Mode. Verbraucht bei modernen Controllern weniger als so mancher Batteriewächter-IC. Man muss natürlich externe Verbraucher vollständig abschalten können.
18650er haben bereits einen Temperatursensor und einen Tiefendladeschutz
integriert.
Blödsinn.
18650 beschreibt nur die Zellengröße bzw. deren Formfaktor (~18mm Durchmesser, ~65mm Länge).
Ansonsten: Beleg deine These mit allgemeingültigen Fakten.