In einem Arduino-Projekt nutze ich einen ESP32 als "Kernelement" für einen mp3-Player. Der Player wird entweder per USB oder per Akku (LiPo / FePo) betrieben. Es gibt einen Laderegler, der den Akku (sofern notwendig) lädt, wenn eine USB-Versorgung vorhanden ist. Ein/ausgeschaltet wird der ESP32 bisher per Taster. Wobei Ausschalten bisher Deepsleep bedeutete und ich habe dann einen Mosfet benutzt, um die Peripherie (SD, DAC, Amp, Neopixel...) spannungslos zu schalten. Auch wenn der Deepsleep-Verbrauch für einen uC in diesem Setting vergleichsweise hoch war, hat das Ganze, gemessen am geringen Aufwand, sein Ziel erstmal erreicht. Auch wenn es in diesem Projekt nicht auf das letzte uA im ausgeschalteten Zustand ankommt, habe ich mir zum Ziel gesetzt, diesmal etwas weiter "vorne" anzusetzen und über den Enable-Pin des LDOs (ggf. wird's auch ein STBB1-APUR) den ESP32 und die ganze dahinterliegende Peripherie spannungslos zu schalten. Zu dem, wie ich mir das so überlegt habe, habe ich mal ausschnittsweise einen Schaltplan angehängt. Anforderungen: * Wenn der Player nicht gebraucht wird, soll der LDO deaktiviert sein, so dass ESP32 + Peripherie nicht versorgt werden. * Ich möchte den Player über einen kurzen Tasterdruck einschalten können. * Im laufenden Betrieb soll es eine Selbsthaltung geben, die der ESP32 via GPIO steuert. * Über einen Dip-Switch möchte ich den LDO wahlweise auch dauerhaft aktivieren können (Bypass). * Push-Button-ICs sind zuweilen nicht ganz günstig oder aktuell schwer zu kriegen. Ich würde es daher gerne mit recht einfachen Mitteln versuchen, auch wenn das verbrauchstechnisch ggf. etwas nachteilig ist. Auch möchte ich keinen zweiten uC einsetzen. Zur Erklärung: * VIN ist die Spannung, die entweder von USB oder vom Akku kommt. D.h. maximal haben wir hier 5 V, es könnten jedoch auch nur etwa 3 V ankommen. * POWER führt zu einem GPIO des ESP32. Recht früh in der Setup()-Routine wird hier LOW draufgeschaltet (Selbsthaltung). Über einen anderweitigen Tastendruck wird der ESP32 in den Deepsleep überführt - die Selbsthaltung endet damit. * Button_PPlay ist ein Taster, dessen Tasteraktionen von einem Port-Expander registriert werden (nicht im Bild) und entsprechend Aktionen auslöst. Der Taster hängt an GND, d.h. beim Drücken des Tasters kommt in der gezeigten Schaltung GND an. * EN_APUR ist der Enable-Pin des LDOs. Problem: Button_PPlay wird im Normalfall nur kurz gedrückt. Jedenfalls zu kurz, als dass der ESP32 schon in Selbsthaltung gehen könnte. Diese Zeit möchte ich überbrücken (und dachte da an ein RC-Glied). Meine Ideen (siehe Schaltplan): * Drückt man die Button_Pplay, so werden über Q1 die beiden Kondensatoren C11 und C12 schnell aufgeladen. * Lässt man Button_Pplay wieder los, so sperrt Q1 wieder und die beiden Kondensatoren steuern das Gate von Q4 an. Gleichzeitig werden sie über R20 entladen. * Mit insgesamt 14,7 uF zu 100 k habe ich eine Entladedauer von 7,35s berechnet (5 Tau). Q4 hat jedoch eine Vgs von 0,9 V, so dass ich eher mal mit 2 Tau gerechnet habe: 3 V * 0,63 * 0,63 = 1,19 V. Grob müsste das etwa für 3 s Stützzeit reichen. * R20 dient als Pulldown-Widerstand für Q4 und den LDO. Gleichzeitig jedoch auch als Entladewiderstand von C11/C12. * R19 dient zum Begrenzen des Stromes vom GPIO. Nicht zuletzt auch im Hinblick darauf, dass es keinen Kurzschluss geben kann, wenn man ESP32-seitig hier HIGH draufschaltet. * D5 müsste keine Schottky sein. Generell möchte ich mit der Diode (richtig rum gesetzt?) verhindern, dass ein LOW via Q4 oder POWER Rückwirkungen in Richtung Button_PPlay auf den Port-Expander hat, so dass hier falsche Tastenereignisse erkannt werden. Frage: Kann das so funktionieren oder habe
Leider ist meine Frage abgeschnitten. Daher nochmal: Kann das so funktionieren oder habe ich etwas (oder mehrere Dinge) nicht beachtet? Danke im voraus.
Schau mal hier. So mach ich das bei einem raeudigen STM32F030 in meinem SCA300 Adapter weil dieses olle Teil noch nicht weiss was LowPower ist. Funktioniert jetzt seit 2Jahren sehr gut. Olaf
@Jobst: Wenn ich so drüber nachdenke dann hast du Recht. Irgendwie dachte ich, dass das durch Wegnehmen von Power geschieht, aber reicht nicht. @Olaf: Vielen Dank, das sieht gut aus! Das werde ich mal testen.
Ich habe zu dem Ganzen nochmal zwei Fragen a) Wie bestimmt man in der OP-Schaltung denn, wie schnell sich der Kondensator entlädt? Fließt da wirklich nennenswert Strom in den OP rein? b) Grundsätzlich: Hat es eigentlich Vorteile, sowas mit einem OP statt mit einen P-Channel-Mosfet zu machen? Ich sehe einen PullUp mit 1M. Bei Mosfets arbeite ich immer mit 100k, habe es mit größeren Werten aber noch nie probiert. Wäre das ein Vorteil vom OP ggü. Mosfet, dass man mit größeren Pull-Widerständen arbeiten kann und damit weniger Verluste hat? Danke im voraus.
Nachtrag zu meiner ersten Frage: Im Datenblatt (https://assets.nexperia.com/documents/data-sheet/74AHC_AHCT1G04.pdf) habe ich gesehen, dass "Input-Leakage" bei 25 Grad und 5,5 V => 0,1 uA sind. Wenn F = As/V hernehme und nach s umstelle, dann käme ich bei 5 V auf 235s. Müsste ich da nicht eher sowas wie 82 pF nehmen, damit ich auf 4,1 s käme? Oder bin ich komplett auf dem Holzweg? Also wäre euch auf jeden Fall für Hilfe dankbar.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.