Ich verwende einen ESP8266-01, um ein 3,3-V-Relais über einen 2N2222A-NPN-Transistor zu steuern. Die ESP8266 GPIOs verwenden einen 3,3-V-Logikpegel.
Die Idee ist, dass ich durch Setzen von GPIO2 auf hi/lo den Transistor sättigen/abschalten und das Relais steuern kann. Dies funktioniert gut - solange ich GPIO2 nach dem Start an den Transistor anschließe, da GPIO2 während des Einschaltens auf Hi gehalten werden muss, um normal vom Flash zu booten ( http://robertoostenveld.nl/esp-12-bootloader-modes/ ). Ich habe ein Konzept, dass ich wahrscheinlich einen Pull-up am Pin haben muss, aber ich bin verwirrt darüber, wie GPIO2 auf Hi gehalten werden kann, ohne dass der Transistor immer im gesättigten Zustand ist (dh wie kann ich dann GPIO2 niedrig machen ... ). Was ist hier die beste Vorgehensweise?
Außerdem habe ich - unabhängig davon - festgestellt, dass in vielen Diagrammen von Relaistreiberschaltungen mit Transistoren ein Widerstand zwischen GPIO und Transistor vorhanden ist. Irgendein guter Grund dafür? Alles funktioniert wie es ist, aber vielleicht fehlt mir etwas.
BEARBEITEN: Zur Verdeutlichung besteht das Problem darin, dass die Schaltung wie beabsichtigt funktioniert, wenn ich das ESP booten lasse und dann GPIO2 mit Q1 verbinde. Das Problem tritt auf, wenn ich versuche zu booten, während GPIO2 verbunden ist (dh wie in dem von mir bereitgestellten Diagramm gezeigt). In diesem Fall wird GPIO2 vermutlich auf einen niedrigen Wert gezogen, was zu einem falschen Boot-Modus führt.
Sie müssen einen Widerstand zwischen dem GPIO-Ausgang und der Basis des Transistors hinzufügen. Wenn die Basis des Transistors mit 3,3 V angesteuert würde, würden einige Ampere abfließen und entweder der Transistor oder die MCU würde durchbrennen. Wenn es nicht durchgebrannt ist, bedeutet dies wahrscheinlich, dass etwas den Strom am GPIO-Ausgang begrenzt, aber ich würde es nicht empfehlen, davon abhängig zu sein.
Wenn Ihre MCU dies benötigt, können Sie GPIO2 natürlich einen Pull-up-Widerstand hinzufügen. Solange sein Wert hoch genug ist (10k ist Standard für mich), kann die MCU den Pin auf Anfrage leicht nach unten treiben.
Der Schaltplan wäre in etwa so:
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
Bearbeiten: R2 sollte viel niedriger als R1 sein, aber immer noch hoch, also habe ich die Werte festgelegt und den einzelnen Transistor durch eine Darlington-ähnliche Struktur ersetzt, um eine ausreichend hohe Verstärkung zu haben, um das Relais richtig anzusteuern.
Was Sie tun möchten, ist, Ihren GPIO2 mit dieser Schaltung an das Relais anzuschließen. Dadurch kann GPIO2 beim Einschalten auf fast 3,3 V hochziehen, aber nicht auf das Relais klicken. Dann, wenn die Software in der MCU bereit ist, das Relais zu aktivieren, muss es eine '0' an den GPIO2-Pin ausgeben. Das Widerstandspaar R1/R2 muss wie gezeigt im Verhältnis dimensioniert werden, damit der GPIO2 tatsächlich hochgezogen werden kann. (Die Schaltung in der anderen Antwort hat diese rückwärts und erlaubt GPIO2 nicht, in die Nähe eines gültigen Hochs zu gelangen).
Offensichtlich zieht der Basis-Emitter-Übergang {Lesediode} des NPN GPOI2 auf Masse. UND wenn der GPIO-Ausgang hoch ist, gibt es keine ordnungsgemäße Strombegrenzung für diesen Ausgang.
Selbst bei 10k Pullup hätte der 1k-Serienwiderstand nur ca. 0,3 V darüber (vorausgesetzt, er ist geerdet), es wird jedoch auch eine Basis-Emitter-Spannung von ca. 0,5 V vorhanden sein, sodass das Endergebnis immer noch ca. 0,8 V am IO-Pin beträgt. Wird das immer noch das Startproblem verursachen? Es ist sicherlich nicht das, was ich hochgezogen nennen würde.
Der Vorschlag, einen PNP-Transistor zu verwenden, könnte sinnvoll sein, wenn Sie mehr Spannung zum Spielen haben, aber dennoch einen Vorwiderstand zur Strombegrenzung einbauen möchten, was jedoch weniger Spannung zum Ansteuern des Relais bedeutet.
Am Ende wäre es besser, einen FET zu verwenden, da kein Gate-Strom fließt und kein Vorwiderstand erforderlich ist. Sie müssen sich nur entscheiden, ob Sie High-Side- oder Low-Side-Schaltung und damit P- oder N-Kanal-FET verwenden möchten.
Da Sie den GPIO-Pin zuerst High wollen, aber das Relais nicht aktiviert ist, sollten Sie einen P-Kanal-FET in High-Side-Schaltkonfiguration verwenden und das Gate auf Low ziehen, um das Relais anzusteuern. Den Pullup-Widerstand nicht vergessen
jonk
glen_geek
Arkologien
dandavis