Steuerung der Wemos D1-Leistung mit P-Kanal-MOSFET

[Hinweis: Dies ist die Fortsetzung einer anderen Frage , wobei die erste mein Versuch ist, dieselbe Idee mit einem N-Kanal-MOSFET zu implementieren. Basierend auf den Antworten, die ich dort erhielt, ging ich los, kaufte einen P-Kanal-MOSFET und fand mich mit noch mehr Fragen als zuvor wieder :) ]

Ich versuche, etwas Ähnliches zu implementieren: https://youtu.be/nbMfb0dIvYc?t=4m27s

Die Idee ist, dass der Mikrocontroller (in meinem Fall ein Wemos D1 Mini) durch einen externen Schalter eingeschaltet wird. Sobald es startet, richtet es einen MOSFET ein, damit es seine Stromverbindung aufrechterhalten kann, bis es die Aufgabe beendet hat, für die es eingerichtet wurde. Am Ende "tötet es sich selbst", indem es die Stromversorgung durch den MOSFET unterbricht.

Also kaufte ich einen P-Kanal-MOSFET ( IRF9Z34N - wahrscheinlich nicht ideal mit einem Vgs(th) max von -4 V, aber es war das beste Durchgangslochteil, das ich finden konnte). Und ich habe folgende Schaltung aufgebaut:Erster Versuch

Wenn ich den Schalter drücke, schaltet sich der D1 korrekt ein, zieht den MOSFET-Gate-Pin auf Low und geht seinen gesamten Code durch. Am Ende zieht es den Gate-Pin hoch und schaltet sich selbst aus.

Allerdings stimmt etwas nicht. Beim Ausschalten (nach dem Setzen von D5 auf HIGH) hätte ich erwartet, dass die Gate-Spannung durch den Pull-up-Widerstand auf +5 V steigt. Stattdessen bleibt es bei etwa 1,25 V - genug, um den MOSFET teilweise offen zu halten, wobei genügend Strom durch ihn fließt, um die MCU in einem seltsamen, nicht lebendigen, aber auch nicht toten Zustand zu halten (die MCU tut dies nicht genügend Strom, um seinen Code weiter auszuführen, aber er erhält genug, um zu verhindern, dass er vollständig zurückgesetzt und neu gestartet wird, wenn ich den Schalter drücke).

Basierend auf dem Vorschlag von Brian Drummond zu meiner ursprünglichen Frage habe ich eine Dual-MOSFET-Anordnung gebaut:

NP-MOSFET

Dies scheint zu funktionieren - aber es scheint unnötig kompliziert zu sein, insbesondere im Vergleich zum ursprünglichen Schaltplan (siehe YouTube-Video oben, ab 04:24 ).

Meine Frage ist also: Gibt es eine Möglichkeit, den ursprünglichen Schaltplan zu "speichern"? Kann ich dies nur mit einem P-Kanal-MOSFET implementieren? Wenn das so ist, wie?

Wenn es hilft, hier ist der Schaltplan für den Wemos D1 Mini. Beachten Sie, dass ich es über die 5-V-Leitung mit Strom versorge, die dann durch einen Leistungsregler geht.

Ich vermute, wir können die wahrscheinliche Ursache bereits sehen ... Aber um sicher zu sein: Welche Teilenummer hat der P-Kanal-MOSFET, den Sie verwenden? Das habe ich in der Frage nicht gesehen. Ein Link zum Datenblatt wäre hilfreich.
Tut mir leid - ich wollte die P/N (IRF9Z34N) direkt kopieren/einfügen, bevor ich die Vgs(th) erwähnte, aber irgendwie kam der Name nicht durch. Ich habe die Frage bearbeitet, um sie hinzuzufügen.
Zwei MOSFETs und zwei Widerstände sind in meinem Buch alles andere als unnötig kompliziert :)
@anrieff - doppelt so kompliziert wie das Original :) . Und der Versuch, es zu vereinfachen, erweist sich als Lernerfahrung für sich: P
Stimmt, aber denken Sie daran, dass es in EE selten eine gute Strategie ist, übereifrig bei der Minimierung der Anzahl der Teile zu sein. Wenn Sie wirklich einen einteiligen Schalter wollten, könnte das ein LDO (mit Enable-Pin) oder ein SSR für das Pass-Element sein.
Stimme zu - vielleicht war die "unnötig komplizierte" Formulierung ein Fehler meinerseits. Ich werde die Frage nicht bearbeiten, da dies für andere verwirrend wäre. Aber ich formuliere hier anders: Ich fand heraus, dass ich noch ein Teil brauchte, und ich versuche herauszufinden, warum das passiert und ob der ursprüngliche Schaltplan korrekt implementiert werden kann (und wie).
Das Schlimmste an all dem ist, dass ich tatsächlich einen LDO (mit Enable-Pin) auf der Platine habe. Aber um tatsächlich auf diesen Pin zuzugreifen und ihn zu steuern, würde das physische Schneiden einer Leiterbahn und das Anschließen an einen SMD-Pin bedeuten. Und das scheint zu weit über meine derzeitigen Lötfähigkeiten hinauszugehen :)

Antworten (1)

Lassen Sie uns gemäß Ihren Kommentaren diskutieren, warum die einzelne PMOS-Lösung nicht funktioniert.

Alle E/A-Pins moderner Mikrocontroller verwenden Schutzdioden , um empfindliche interne Schaltungen vor Fehlerzuständen zu schützen - zB wenn Sie extern 5 V oder -5 V auf einen Pin einer MCU treiben, die mit 3,3 V versorgt wird. Dies könnte auch durch ESD passieren, und ohne einen solchen Schutz werden Geräte leicht zerstört.

Dies hat jedoch zwei Konsequenzen:

  1. Wenn ein Mikrocontroller-Chip ausgeschaltet ist (0 V an seinem Stromversorgungsstift (Vdd)), führt das Anlegen einer ausreichenden Spannung an einen beliebigen E / A-Pin dazu, dass Strom zum Vdd-Pin "überfließt", und der Chip wird zum Leben erweckt wenn du es normal eingeschaltet hast
  2. Wenn Sie in einer ausgeschalteten MCU einen Pull-up-Widerstand an einer aktiven Versorgung haben, fließt ein kleiner Strom in den Chip, versuchen Sie, ihn mit Strom zu versorgen, aber da der Strom nicht ausreicht, hängt er in diesem "weder an, weder aus" Zustand, den Sie sehen.

Eine einfache Faustregel lautet: Wenn eine MCU etwas steuert, wird erwartet, dass die MCU für einige Zeit ausgeschaltet oder anderweitig deaktiviert ist (z. B. im Ruhemodus für MCUs, die ihre E / A nicht angesteuert halten). im Schlaf), ist es am besten, wenn das gesteuerte Ding ein "aktives" Signal benötigt und es einen Pulldown- Widerstand gibt . Kein Widerstand am Gate eines MOSFET wäre schlecht, Pull-Up ist schlechter, Pull-Down funktioniert.

Beachten Sie, dass diese Art von Vorsichtsmaßnahmen nicht erforderlich sind, wenn erwartet wird, dass die MCU immer aktiv ist. Dies ist nicht die beste Vorgehensweise, da Widerstände ein paar Cent kosten, aber Sie könnten in einem solchen Fall den Pulldown-Widerstand weglassen.

Für Ihre Konfiguration ist die Zwei-MOSFET-Lösung so ziemlich das Beste, was sie bekommen kann.

Ein weiteres zu untersuchendes Szenario, das die gleiche Funktionalität ohne MOSFETs bringen kann, ist die Verwendung der Sleep/Reset/Wake-on-Change-Funktionalität der MCU (ich kenne mich mit dem Wemos nicht aus, aber ich wette, es hat so etwas wie es ). Wenn Sie „abschalten“ möchten, gehen Sie einfach schlafen. Die MCU wird immer noch etwas Strom verbrauchen , aber das wäre zu gering, um eine Rolle zu spielen. Und Ihr Schalter kann mit einem Reset-Pin der MCU oder, wenn Sie den Prozessorzustand beibehalten möchten, mit einem Pin verbunden werden, auf dem Sie Interrupt/Wake-on-Change konfiguriert haben.

Vielen Dank für die sehr ausführliche Antwort - sie beantwortet definitiv das "Warum" :) . Um Ihren letzten Vorschlag anzusprechen, der ESP8266 hat eine nette Tiefschlafoption, und ich habe das anfangs versucht. Ich war jedoch nicht in der Lage, eine Schaltung zu entwerfen, die den Rücksetzimpuls zum Aufwecken des Geräts erzeugen würde. Ich werde versuchen, eine andere Frage zu stellen, um einige Hinweise zu erhalten. Nochmals vielen Dank!