In der BJT-Schaltung sollte der Schalttransistor PNP mit einem zweiten NPN-Transistor sein, um ihm den Ansteuerstrom bereitzustellen.
Meine Schaltung unten ist der von Russel bemerkenswert ähnlich und wurde mit einer Arduino UNO getestet. Es schaltet den Vorregler für die 12-Volt-Versorgung um.
Der Druckknopf injiziert Strom in den NPN-Transistor, der wiederum Strom in den PNP-Transistor einspeist, der den Arduino antreibt. Bei der UNO wird der Kondensator benötigt, da es lange dauert, bis die UNO startet und die ON_PIN hoch setzt. Der Kondensator, der sich über den 5k6-Widerstand entlädt, hält die Basis des NPN mit Strom versorgt, bis die ON_PIN übernimmt.
Die Schaltung links mit den Dioden ermöglicht das Erfassen weiterer Tastendrücke, damit Sie dem Code andere Funktionen signalisieren oder ihn wie ich als Abbruch verwenden können.
Ich habe Varianten dieser Schaltung mit Batterien verwendet, um IR- und WiFi-Fernbedienungen mit anderen MCUs, z. Adafruit ItsyBitsy. Wenn der Stromkreis ausgeschaltet ist, liegt der Leckstrom unter 1 Mikroverstärker, wodurch die Batterien in den letzten Monaten zwischen den Ladevorgängen liegen. Schaltungswerte müssen für andere Versorgungsspannungen angepasst werden.
Das Obige ist eine Lösung für Ihr ursprüngliches Problem, aber um einige Ihrer Fragen zu beantworten:
Bei der BJT-Schaltung wird sie eingeschaltet, wenn die Taste gedrückt wird, da Strom aus der Versorgung in die Basis des Transistors fließen kann, die eine höhere Spannung als der Emitter des Transistors aufweist. Es funktioniert jedoch nicht, wenn der CPU-Ausgang D2 übernehmen soll, da der Transistor an der Basis etwa 0,6 Volt höher als der Emitter sein muss, um ihn zu drehen. Der Ausgangspin kann niemals mehr als das Vin der CPU liefern, aber Vin wird vom Emitter des Transistors bereitgestellt. Dies ist ein Teufelskreis, und es kann niemals Strom in die Basis des Transistors fließen, da die Basisspannung niemals hoch genug wird. Addieren Sie den 0,6-Volt-Abfall der Dioden-Durchlassspannung und die Situation wird noch schlimmer. Deshalb benutze ich ein PNP zum Umschalten. Wenn der Emitter an die Stromversorgung angeschlossen ist, müssen Sie die Basis nur über einen Widerstand mit Masse verbinden, um sie einzuschalten.
Für den FET ist die Antwort ähnlich, aber wie andere gesagt haben, ist der vom Gate des FET benötigte Strom winzig, und die Ladung am Gate des FET hält ihn fest, bis er ausläuft. Es gibt keinen Mechanismus in der Schaltung, um das Gate aktiv zu entladen, wenn der D2-Ausgang niedrig gezogen wird, und deshalb schaltet er sich nicht unter D2-Steuerung aus.
Sie sagen genau: "Vermutlich liegt das am 100uF-Kondensator". Der Kondensator lädt sich fast sofort über den Druckknopf auf und entlädt sich mit einer Geschwindigkeit, die vom 5k6-Widerstand gesteuert wird. Bei anderen Boards (ItsyBitsy und Feather) brauchte ich den Kondensator nicht, bei der UNO jedoch. Die Startzeit, die ich sah, betrug ungefähr 1,5 Sekunden.
Ein weiteres Merkmal meiner Schaltung, das mir gefällt, ist, dass sie, obwohl sie hier über eine Taste gestartet wird, von jedem Sensor, der genügend Strom liefern kann, um die Basis des BC547 einzuschalten, z. ein Türschalter, ein Temperatur- oder Lichtsensor, der eine Schwelle überschreitet usw.