Schalterzustand erkennen

OP #7836748
Lesenswert?

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.

Angehängte Dateien:
#7836760
Lesenswert?

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.

OP #7836769
Lesenswert?

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.

OP #7836792
Lesenswert?

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

#7836809
Lesenswert?

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.

#7836869
Lesenswert?

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!

Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren