Bislang schicken wir USB und LiPo durch Festspannungsregler (LDO) und mit LFP-Akkus versorgen wir den ESP32 direkt. Das funktioniert soweit sehr gut, hat jedoch zwei Nachteile:
a) Bei USB und LiPo wird die überschüssige Energie verheizt. Das ist einerseits von der Effizienz nicht optimal, andererseits werden die Bauteile warm.
b) Werden die Akkus zunehmend entladen, dann sinkt die Akkuspannung ab, was bei tiefer Entladung zu „komischem Kram“ seitens des ESP32 führen kann.
Die Antwort darauf: Man verwendet einen Boost-Buck-Converter. Also einen Schaltregler, der z. B. sowohl aus 3 V, als auch aus 5 V, eine Zielspannung von 3,3 V formen kann. Genau das habe ich auch gemacht und dabei TPS63000 verwendet. Das funktioniert auch einwandfrei.
Daraus ergibt sich jedoch ein neues Problem: Man kann einen angeschlossenen Akku tiefentladen. Die Akkupacks von Eremit haben zwar ein BMS integriert, aber ich möchte es gerne nicht so weit kommen lassen, bis dieses abschaltet und früher einschreiten. In einem ersten Ansatz habe ich den SGM809 verwendet. Die Schaltung sieht so aus:
Zur Erklärung:
- In der Mitte sieht man den Schaltregler
- Links oben sieht man die Umschaltung zwischen USB (VBUS) und Akku. Das wird auf den Develboards auch so gemacht und ist ein sog. ORing.
- Links unten sieht man die Akkuspannungsüberwachung, die man auch überbrücken kann per Lötjumper. Dessen Eingang habe ich mit einem RC-Glied (100 Ohm, 2.2 µF) gedämpft. Der Output wirkt auf den Schaltregler und kann diesen aktivieren/deaktivieren über Push/Pull.
Ergebnis:
Die Schaltung funktioniert wie angedacht, jedoch nur so lange, wie ich die Spannungsüberwachung nicht aktiviere. Tue ich das jedoch und habe im laufenden Betrieb USB + Akku angeschlossen, dann führt das Rausziehen des USB-Steckers zu einem kurzzeitigen Spannungseinbruch (sah im Oszi so etwa nach 1 ms aus), der den SGM809 dazu veranlasst, den TPS63000 kurz auszuschalten, ehe er dann wieder neu startet. Ohne Spannungsüberwachung läuft alles wie gewohnt weiter.
Ansätze:
- Vielleicht könnte man den ORing durch einen Multiplexer ersetzen: https://www.ti.com/product/TPS2116. Ich weiß aber nicht, ob das den Effekt beseitigt.
- Vielleicht ist der SGM809 auch das falsche Bauteil. Ich brauche eigentlich kein Monitoring im µs-Bereich, mir würde auch sowas wie 1 s reichen. Man kann natürlich das RC-Glied anpassen, aber man kann es auch nicht übertreiben, weil sonst muss man beim Einschalten warten.
- Vielleicht ein PullUp mit Widerstand + Schottky-Diode zwischen Eingang SGM809 und Akkuspannung
Frage an euch:
Was fällt euch dazu ein? Ideen?
Vielleicht gibt’s ja fertige Bauteile, mit denen man das elegant lösen kann.