Wie man ein Relais von ESP8266 gpio ansteuert

Ich versuche, ein ESP8266 gpio an eines der Relaismodule anzuschließen (bitte überprüfen Sie das Bild).

Wie ich mit einem sehr einfachen Hintergrund verstehe, sollte ESP in der Lage sein, diese Relaismodule auszulösen, da die gesamte Elektronik darin eingebettet ist (es handelt sich nicht nur um einzelne Relaiskomponenten). Ich habe sowohl das ESP- als auch das Relaismodul mit unterschiedlichen Stromquellen mit jeweils der richtigen VCC (3v3 und 5v, gemeinsame Nutzung von GND) versorgt. Das Einstellen von HIGH- und LOW-Ausgängen von ESP hat jedoch ein unberechenbares Verhalten (manchmal löst das Relaismodul aus, manchmal bleibt es einfach im selben Zustand, unabhängig von der gelieferten gpio-Ausgabe).

Nun, da ich nicht nur diese Community, sondern auch einige andere Quellen im Internet ausgrabe, weiß ich, dass derselbe Transistor dazu beitragen sollte, eine höhere Spannung zu den Relaiseingängen zu treiben als die bereitgestellten, aber die ESP-Gpios.

Es ist wichtig, darauf hinzuweisen:

  1. Beide Relaismodule funktionieren einwandfrei, wenn sie an einen Arduino Nano angeschlossen sind, der natürlich ein HIGH von 5 V hat, und das scheint das Problem mit dem ESP gpio zu bestätigen
  2. 2-Relais-Modul arbeitet "besser" als 1-Relais-Modul: bezüglich Genauigkeit LOW gpio -> Relais an; HIGH gpio -> Relais aus. Das 1-Relais-Modul scheint nur einmal auszulösen und hält dann das Relais unabhängig vom gpio-Wert eingeschaltet (genauso, als ob das Relais IN immer gegen Masse kurzgeschlossen wäre).
  3. Ich habe ~ 2,72 V an beiden IN-Pins des 2-Relais-Moduls und ~ 4,33 V vom 1-Relais-Modul gemessen. Das lässt mich denken, dass ESP das Relais später nicht ausschalten kann, da es niemals den normalen Pin-Spannungswert erreichen wird und fast alles, was niedriger ist, als GND LOW (also Relais an) bestätigt wird.

Meine Frage ist: Wie kann ich LOW- und HIGH-Werte von ESP gpio richtig zu diesen Relaismodulen treiben?

Relaismodule

Verwenden Sie einen Transistor, genauer gesagt einen MOSFET, um die 3V3 auf 5V zu puffern. Wie auf der Relaisverpackung angegeben, sind sie für 5 V ausgelegt und funktionieren nicht zuverlässig mit einem 3V3-Signal.
Danke @uint128_t, ich habe einen 2N2222-Transistor, von dem ich denke, dass er die Arbeit erledigen wird. Könntest du bitte einen Schaltplan zur Verfügung stellen? Ich gehe davon aus, dass die Verbindungen nicht ohne Widerstände sind, und ich möchte es wirklich richtig machen, um ein Braten zu verhindern.
Ah, ignorieren Sie meinen obigen Kommentar, er berücksichtigt nicht die zusätzliche Schaltung, die die Relais speist. Passant hat eine tolle Antwort.

Antworten (1)

Beide Module handhaben die Dinge unterschiedlich. Das einzelne Relaismodul verwendet einen direkten PNP-Transistor, um das Relais zu steuern. Aktiv niedrig . Da Ihre Basis niemals niedriger als 4,3 V (5 V - 0,7 V VBE-Abfall) wird, wird sie niemals ausgeschaltet. Aus diesem Grund sehen Sie auch ~4,3 V, wenn IN schwebend ist. Der Leckstrom durch die VBE-Diode reicht aus, um dies zu verursachen, und kann den Transistor auch selbst eingeschaltet halten.

Geben Sie hier die Bildbeschreibung ein

Ihr 3,3-V-Ausgang kann dies niemals ausschalten. Sie können dies mit einer Treiberschaltung beheben. Irgendein gemeinsames NPN und zwei Widerstände. Die Logik ist aufgrund des NPN invertiert. Der Ausgang High ist also NPN, auf dem PNP ist, auf dem das Relais eingeschaltet ist.

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Das andere Modul ist komplizierter. Es verwendet einen Optokoppler, um den Relaistransistor anzusteuern.

Geben Sie hier die Bildbeschreibung ein

Die LED-Seite des Optos hat jedoch mehrere Probleme für Ihr ESP. Es ist an VCC gebunden. Der Widerstand wurde basierend auf 5 V VCC gewählt. Es hat eine Inline-Status-LED. Da Ihr GPIO 3,3 V hat, bedeutet dies, dass er das Optokoppler niemals wirklich ausschalten kann. Bei logisch High sieht das Opto 5 V - 3,3 V = 1,7 V über alles, sodass die Transistorseite leitend bleibt.

Außerdem zeigt Ihr Bild, dass der Jumper von VCC zu JD-VCC angeschlossen ist . Dies bedeutet, dass Sie die Opto-Seite nicht mit 3,3 V versorgt haben und möglicherweise verursacht haben, dass der nicht 5-V-tolerante ESP-GPIO beschädigt wurde.

Aber Sie können mit dem gleichen Ding wie oben testen. Ein NPN + Basiswiderstand ist alles, was Sie brauchen. Sie brauchen den Klimmzug nicht (R2 10k).

Ist das 1-Relais-Modul nicht ein aktives Low? Ich habe es mit einem Arduino uno getestet und löst das Relais aus, wenn gpio LOW ist
@Dario nein, es ist aktiv hoch. Es ist ein einfaches Design. Vielleicht haben Sie die normalerweise geschlossenen Kontakte des Relais anstelle der normalerweise geöffneten Kontakte angeschlossen. Wenn Sie also den Transistor einschalten, der das Relais einschaltet, unterbrechen Sie die Verbindung auf der geschalteten Seite. Der 2TY ist ein npn-Transistor und diese werden typischerweise als Low-Side-, Active-High-Setups verwendet.
Ich berücksichtige die vom Verkäufer erhaltenen Spezifikationen und die Tatsache, dass durch Erden des IN-Pins die grüne LED auf der Relaisplatine aufleuchtet, was bedeutet, dass das Relais auch eingeschaltet sein sollte. Aber wie Sie sagten, sagt das Design und auch die npn-Natur des Transistors etwas anderes aus. Also werde ich prüfen, wie die Kontakte C, NC und NO funktionieren (ich habe immer noch nichts daran angeschlossen)
Oh warte, die 2ty ist PNP? In diesem Fall haben Sie Recht, wenn Sie es erden, schalten Sie das Relais ein. Das bedeutet aber auch, dass man es nie ganz ausschalten kann. Um einen PNP-High-Side-Treiber auszuschalten, muss die Basis einen Diodenabfall unter dem Kollektor liegen. Für 5 V bedeutet das 4,3 oder höher. Bei 3,3 V leiten Sie also immer noch und das Relais bleibt eingeschaltet.
Wie gesagt, ich habe einen schlechten Elektronikhintergrund, also habe ich gerade getestet, wie das Relaismodul funktioniert, und ich bin mir ziemlich sicher, dass die Erdung von IN das Relais einschaltet. Außerdem ist der im Modul eingelötete Transistor mit "2TY" gekennzeichnet. Ich weiß nicht, ob der Transistor selbst mit diesem Etikett NPN oder PNP sein kann. Ich habe gesucht und finde immer eine Beschreibung wie diese . In diesem Fall denke ich, dass ich Recht habe, wenn ich sage, dass dies ein PNP-Transistor ist und das Relaismodul aktiv niedrig ist.
@Dario siehe mein Update. Ein 2n3904 oder ähnliches ist alles, was Sie brauchen.
Passant hat mit ziemlicher Sicherheit Recht, dass es sich um ein PNP handelt. Ich werde meine Antwort löschen, da seine viel besser ist.
@Dario ja ein 2n2222 wird funktionieren. Nein, Sie benötigen noch einen Basiswiderstand für beide Module und einen Pull-up wie für das einzelne Relaismodul gezeigt.
@Passerby jetzt, da wir uns einig sind, dass das Relaismodul aktiv niedrig ist, denke ich, dass wir einen Gewinner haben! Überprüfen Sie dies und diese Tests. Morgen werde ich das andere (komplexere) Relaismodul testen. Vielen Dank im Voraus. Tut mir leid, dass ich derzeit nicht den erforderlichen Ruf habe, um Ihre Antwort positiv zu bewerten.
Ich habe ein Boot-Problem festgestellt, das tatsächlich verschwindet, wenn gpio beim Booten von der Basis des Transistors getrennt und dann verbunden wird, wenn das ESP läuft. Das Modul bootet einfach nicht, wenn es über 2 * 220-Ohm-Widerstände angeschlossen ist, noch mit 1 k + 1 k parallel (das nächste, was ich den vorgeschlagenen 470 Ohm erreichen kann). Während ich nicht boote, kann ich sowohl TX/RX- als auch Power-LEDs sehen, der serielle Monitor zeigt Müll an und ich bin mir ziemlich sicher, dass es eine Art "Rauschen" gibt (aufgenommen von Lautsprechern und sogar dem Relais). Ich freue mich über Ihre freundlichen Vorschläge und Problemumgehungen.
470 ist mein Weg zum Widerstand. Da dies nur ein Schalter für den echten Schalter ist, könnten Sie 1k oder vielleicht 4,7k verwenden. 10k könnten zu wenig sein. Ich bin mir aber nicht sicher, woher das schlechte Verhalten kommt. Das ist sehr seltsam.
Aber 470 Ohm in diesem Setup würden nur 6 Milliampere ziehen. Nichts, was selbst für den ESP ein Problem sein sollte.
@Passerby Ich habe es mit 1k, 4,1k, sogar 10k versucht, nur um es zu überprüfen, auch mit weniger als Ihren vorgeschlagenen 470, wie 440, 320 und 220. Kein Glück, nur durch Trennen des ESP-GPIO von der Transistorschaltung kann der ESP booten. Außerdem habe ich beim Einschalten des ESP ~ 1,2 V Ausgang von gpio gemessen, es bleibt einfach so und bootet nicht. Wenn gpio vom Stromkreis getrennt wird, beginnt der Pin bei ~ 1,2 V, fällt auf 0 V und normalerweise wird gebootet. Sie können es in diesem nicht so spielbergischen Filmmaterial überprüfen
@Dario Sie haben die ESP-Masse und die Relaismasse richtig miteinander verbunden? Und wie sieht dein Code aus?
Ja, beide Gründe sind miteinander verbunden, und ich verwende Espeasy
Dies könnte fast eine gute Antwort sein, aber die Analyse der Optokoppler-Version ist falsch. Sie übersehen, dass dort zwei LED-Diodentropfen in Reihe geschaltet sind. Oder drei, wenn Sie die I/O-Schutzdiode mitzählen. Der Unterschied zwischen 5 V und 3 V3 wird wahrscheinlich nicht ausreichen, um beide LEDs zu aktivieren, und insbesondere nicht ausreichen, um beide LEDs zu aktivieren und die Schutzdiode in Durchlassrichtung zu versetzen, wo sie beschädigt werden könnte.