Ich versuche, eine "Selbstabschaltung" für meinen ESP8266 zu bauen. Ich möchte Code vor der Abschaltung ausführen. Dafür verwende ich einen Logic-Level-N-Channel-MOSFET, dessen Gate von einem GPIO-Pin des ESP8266 gesteuert wird. Der GPIO-Pin wird auf HIGH gesetzt, sobald ich den ESP einschalte, und ich möchte ihn auf LOW setzen, sobald ich den Schaltzustand mit einem zweiten GPIO erkenne. Das Ein- und Ausschalten funktioniert größtenteils gut, aber ich habe Probleme, den Schaltzustand zu erkennen, da alle Schaltterminals mit einem GND Potential verbunden sind. Es handelt sich um einen Schiebeschalter mit 3 Terminals. Eines ist mit dem Batterie-GND verbunden, das Mittlere mit einem "common" GND, und das letzte ist mit dem MOSFET-Drain verbunden. Gibt es eine gute Idee, den Schaltzustand zu erkennen? Meine Recherche hat mich in Richtung eines Spannungsteilers geführt, und das Lustige an dem Spannungsteiler (10k vom Erkennungs-GPIO zu 3,3 V und 3k3 vom MOSFET-Drain zum Erkennungs-GPIO) ist, dass er funktioniert, solange ich über USB-C mit meinem Laptop verbunden bin. Aber sobald ich auf meine Batterie umschalte, erkennt er den Schaltzustand nicht mehr. Ich bin für jede Idee dankbar. In folgender Darstellung habe ich versucht den Kern der Schaltung zu extrahieren.
Fabian schrieb: > Kern der Schaltung zu extrahieren. Die Schaltung ist Quatsch Fabian schrieb: > Ich versuche, eine "Selbstabschaltung" für meinen ESP8266 zu bauen. Du könntest es so machen,,wie man es richtig macht, mit einem Taster. Siehe Kapitelende von https://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.29.1 Wenn es unbedingt dein Schiebeschalter sein muss, versuche den ESP8266 immer an plus zu lassen und mit dem Schalter nur in deep sleep zu bringen, der Schalter muss dann RST auslösen zum einschalten. Wenn es weitere Peripherie gibt die nicht in Stromsparmodus geschickt werden kann, schalte ihre Versorgung oer PMOSFET ab.
Michael B. schrieb: > Die Schaltung ist Quatsch Danke für die 'nette' Formulierung. Schaltung funktioniert in der Sim genau wie sie soll. Und bringt doch den Kern der Frage drüber oder? Ich nehme ansonsten gerne Hilfe an, die Frage präziser zu formulieren - danke. Ja es muss ein Schiebe schalter sein, nein deepSleep ist keine Option. Gerne Ideen wie man anders eine verzögerte Abschaltung hinbekommt, die mir erlaubt vorher Code auszuführen. Aber DeepSleep ist leider aus mehreren Gründen nicht möglich.
Wenn du es nicht so machen kannst (oder willst), wie es alle machen, weil es sinnvoll ist, sage uns doch, warum nicht? Und noch eine Anmerkung: dein "Schaltplan" ist eine Zumutung, ein Stück Papier mit einer abfotografierten Bleistiftzeichnung wäre übersichtlicher.
Weil der wake aus deepSleep(0) auf vielen ESP8266 Chips nicht richtig funktioniert, weil wake aus deepSleep mit timer bei vielen ESP8266 Chips nicht richtig funktioniert und aus Sicht des Akku Verbrauchs keinen Sinn macht. Weil ich eine richtige vollständige Abschaltung erreichen muss. Hoffe das erklärts
Fabian schrieb: > und aus Sicht des Akku Verbrauchs keinen Sinn macht Na ja, 10uA ist weniger als die Akku-Selbstentladung. Die korrekte Art ist:
1 | +---+----------+-------+ |
2 | | | | | |
3 | | | +-----+ |S |
4 | | | +--|Delay|o--|I PMOSFET |
5 | Bat | | +-----+ | |
6 | | o\ | | | |
7 | | o--+-10k-(----ESP8266 |
8 | | o | | |
9 | | | | | |
10 | +---+----------+-------+ |
und der Kern ist die Delay Ausschaltverzögerungsschaltung. Die liegt VOR der Stromabschaltung und bleibt immer an der Batterie. Ein NE555 wäre also fehl am Platz. Ein CMOS MonoFlop wie CD4538 braucht 5nA, da kann man nicht meckern. Ich weiss aber nicht, ob man mit ihm ohne weitere ICs die Impulsform hinkriegt. Ein simples RC Glied schaltet den MOSFET nur schleichend ab und invertiert nicht. Ein RC Glied gefolgt von einem Schmitt-Trigger Inverter wie 74LVC1G14 verzogert auch das einschalten, eventuell egal, oder man überbrückt den R vor dem C mit einer Diode für unverzügliches Einschalten. Delay ist dann so:
1 | +--R--+ |
2 | --+ +--+---|S>o-- |
3 | +-|>|-+ | 74LVC1G14 |
4 | C |
5 | | |
6 | GND |
Der 10k Vorwiderstand vor dem ESP Eingang mit dem der ESP ein Ausschalten erkennt schützt den ESP beim einschalten wenn der MOSFET noch nicht durchgeschaltet hat.
:
Bearbeitet durch User
Fabian schrieb: > Gerne Ideen wie man anders eine verzögerte Abschaltung hinbekommt, die > mir erlaubt vorher Code auszuführen. Mit der Schottkydiode SB130 kann man das Erkennen vom Abschalten realisieren und alle Codes können noch in Ruhe ausgeführt werden, egal wie lange das dauert. Durch den Einsatz der beiden Transistoren kann man sogar auf einen Logik Level N-MOSFET verzichten. Aber ein Logik Level N-MOSFET ist auf jeden Fall besser, wenn man einen zur Hand hat!
Es soll nach dem Tasterdruck noch irgendwelcher Code ausgeführt und dann abgeschaltet werden? Warum schaltet man dann am Ende des Codes nicht einen Pin, der dem µC den Strom abschaltet?
Danke für die Vorschläge! Die Schottky Diode war die einfachste Lösung und funktioniert wunderbar. Hatte noch IN5B19 da und verbaut. Außerdem konnte ich mir die Verbindung zu 3V3+ sparen, indem ich den internal pullup des GPIO benutze. Danke für Hilfe :)
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.