Ich habe eine Reihe von Relais (5), die ich von meinem Pi ausführen möchte. Ich verwende 5-V-TE-Konnektivitätsrelais, die von Sparkfuns Hochleistungsrelais-Kits gespeist werden und die mit einem NPN-Transistor das Relais ansteuern.
Bisher habe ich das Problem, dass ich das Relais nicht zum Schalten bringen kann. Liefern die GPIO-Ausgangspins keine 5V? Ich dachte, der Pi hat auf dem GPIO.
Antworten:
Warum nicht einfach so?
Raspberry Pi schaltet zwischen 0 und 3V3, mehr als genug, um Q1 zu sättigen, was die "schwere" Arbeit übernimmt: Ein- / Ausschalten des + 5V-Relais. Abhängig von den verwendeten Relais können kleine Änderungen für D1 und Q1 erforderlich sein.
quelle
# Einführung #
Das OP möchte Rpi verwenden, um eine Bank von 5 Sparkfun-Beefcake- Relaismodulen sicher zu steuern . Er hatte ein Problem, weil der Rpi-GPIO-Logikpegel 3,3 V beträgt, sein Relais jedoch eine 5-V-Logiksteuerung verwendet. Er möchte wissen, wie man Rpi modifiziert, um das Disparitätsproblem der logischen Ebene zu umgehen. Seine Wahlmöglichkeiten umfassen Folgendes: Verwenden des Transistors BC5468 zur Ansteuerung der Relaisspule; Holen Sie sich ein Opto-Isolationsrelais und treiben Sie es mit ULN2803 an. mit einem Quelltreiber wie UDN2981, ...
Nach der Untersuchung schlage ich nun einige Lösungen mit ihren jeweiligen Vor- und Nachteilen vor. Das OP kann nach Abwägung von Risiko, Zuverlässigkeit, Kosten usw. eine Lösung wählen.
# Inhalt #
Lösung 1 - Ändern des Vorspannungswiderstands des NPN-Transistors
Lösung 2 - Verwenden von UDN2981, um das 3,3-V-GPIO-Signal von Rpi auf 5 V zu verschieben
Lösung 3 - Verwenden von 74HC03 und 74HC04, um das 3,3-V-GPIO-Signal von Rpi auf 5 V zu erhöhen
Lösung 4 - Verwenden von 74HCT125 für die Konvergenz auf logischer Ebene
Lösung 5 - Verwenden von TXS0102 zum Konvertieren logischer Ebenen
Abschnitt 6 - Verwenden von 2N2222 zum Konvertieren logischer Ebenen
Lösung 7 - Verwenden von 2N7000 für die Konvertierung auf logischer Ebene
FAQ1 - So versorgen Sie Rpi und Relaismodul mit Strom und binden die Erdung zusammen
FAQ2 - Wie vermeide ich ein Problem mit schwebenden Eingängen?
FAQ3 - Mein Relais ist immer eingeschaltet, egal ob High- oder Low-Eingang, liegt es daran, dass das Rpi Low-Signal nicht niedrig genug ist?
FAQ3 - Mein Rpi GPIO Low-Signal kann das Relais nicht ausschalten, aber GPIO als Eingang einstellen. Werde ich meine RPI verletzen, wenn ich das tue?
Hardware-Fehlerbehebungsvorschlag
Software-Fehlerbehebungsvorschlag
Verweise
Lösung 1. Ändern der NPN-Transistorvorspannung, um 3,3 V-Kompatibilität zu erreichen
Es gibt zwei allgemeine Arten von Lösungen:
(1) die 5-V-Logikpegel-Eingangsschaltung des Moduls modifizieren, um sie an 3,3-V-Signale anzupassen,
(2) Verwenden Sie einen 3,3-V- zu-5-V-Logikpegelwandler, um die 3,3-V-Signale von Rpi auf 5 V hochzuschalten.
Ich beginne jetzt mit (1).
Ermittlung
Das Beefcake-Relaismodul des Sparkfun verfügt über einen NPN-Transistor 2N3904 (Q2), der die Spule (U1) ansteuert. Es ist für Arduino's 5V Logiksignale ausgelegt.
Ich habe ein ähnliches NPN-Transistormodul KY019, das mit 3,3 V-Signalen von Rpi betrieben werden kann. Also habe ich die Eingangssignalanforderungen überprüft, um herauszufinden, warum KY019 3,3-V-Signale unterhalten kann, Beecake jedoch nicht.
Ich fand, dass KY-019 einen Triggerpegel von 2,5 V und 0,1 mA hat . Dieses Signal wird vom NPN-Transistor auf 50 mA verstärkt, was hoch genug ist, um die Spule zum Aktivieren des Relais zu aktivieren.
RPI-GPIO (mit hohem Pegel über 2,8 V und maximaler Strombegrenzung von 16 mA ) kann bequem 4 mA liefern. Es sollte kein Problem geben, das Modul direkt anzutreiben.
Die Spule hat eine Reaktionszeit von 10 ms. Ich habe Rpi GPIO Pin 17 so programmiert, dass das Relaismodul bei 40 ms (25 cps) umgeschaltet wird, und festgestellt, dass das Relaismodul wie erwartet zufrieden klickt. (Ich habe 2 Meter lange Verbindungskabel für die GPIO-Signale verwendet, daher ist das Signal am Relaiseingang etwas verrauscht.)
So ändern Sie das Beefcake-Modul, damit es mit der 3,3-V-Logik kompatibel ist
Der Beefcake-NPN-Transistor hat einen Strombegrenzungswiderstand R2 mit dem Wert 1K. Dieser Widerstand begrenzt den Basisstrom bei hohem Arduino 5V-Logikpegel. Der Basisstrom innerhalb der Grenze ist nach der Verstärkung (normalerweise hFE> 100) groß genug, um die Spule zu erregen.
Berechnung des Arduino 5V GPIO-Stroms in das Beefcake-Relaismodul:
Arduino-Strom i ~ (4 V [Arduino High] - 1 V [Vce (sat)]) / 1 K [R]) = 3 V / 1 K = 3 mA
Das logische High-Signal des Rpi ist jedoch niedriger als das von Arduino, sodass der entsprechende begrenzte Strom kleiner ist und nach der Verstärkung nicht groß genug ist, um die Spule anzusteuern.
RPI-Strom i ~ ((3 V [RPI hoch] - 1 V) / 1 K = 2 mA
Die Änderung ist einfach - ersetzen Sie einfach 1K R2 durch einen kleineren Widerstand, z. B. 510R.
RPI-Strom i (nach Modifikation) = (3 V - 1 V) / 501R = 4 mA
Ich vermute, dass die Ausbildung auf Schaltungsanalysen und Experimenten basiert. Ich denke, meine Vermutung ist zu 90% richtig.
Risikoanalyse
Obwohl der Kleinsignal-NPN-Transistor 2N3094 zum Schalten kleiner Lasten verwendet werden kann, ist er nicht so zuverlässig. Zum Schalten von Relais ist es sicherer, Leistungstransistoren wie SS8050, UDN2981 zu verwenden, die speziell für induktive Lasten entwickelt wurden.
Das OP möchte eine sichere Methode, die seinen Pi nicht brät. Aus Gründen der Zuverlässigkeit ist ein Quelltreiber wie UDN2981 der richtige Weg.
/ ...
Lösung 2 - Verwenden von UDN2981 zum Ansteuern des Beefcake-Relaismoduls
Die Kommentare weisen darauf hin, dass das Sparkfun-Beefcake-Relaismodul des OP ein High-Level-Trigger ist und daher der häufig verwendete Sink-Treiber ULN2803 nicht verwendet werden kann. Es sollte stattdessen ein Treiber verwendet werden, der dem ULN2803 ähnelt, jedoch keine Stromsenke, sondern Stromquellen verwendet
Ich denke, UDN2981 ist ein geeigneter Treiber für das Relaismodul des OP.
Ich habe erfolgreich verifiziert, dass UDN2981 ein Hochpegel-Lastrelais-Modul ähnlich dem Beefcak und ULN2803 ein Niedrigpegel-Lastrelais-Modul ansteuert. Unten finden Sie eine Zusammenfassung.
UDN2981 zur Steuerung von Relaismodulen mit hohem Trigger und NPN-Transistoreingang
Ich habe zuerst UDN2981 manuell getestet, ohne eine Verbindung zu Rpi herzustellen, um 4 LEDs zu blinken, um sicherzustellen, dass die Schaltung in Ordnung ist.
Dann richte ich 4 Relaismodule vom Typ NPN-Transistoreingang (KY019) ein und verbinde die 4 Relaismoduleingänge mit 4 UDN2981-Kanalausgängen.
Dann habe ich 4 Rpi 3.3V GPIO-Pins direkt mit den 4 UDN2981-Kanaleingängen verbunden. Ich habe die folgende Python-Funktion verwendet, um 4 Relaismodule mit 25 cps umzuschalten.
Das Ergebnis war gut. Die 4 Relaismodule klicken und die LEDs blinken erwartungsgemäß mit 25 cps. Die Rpi GPIO-Ausgangssignale blieben nahe 3,3 V und die UDN-Ausgangssignale um 4,0 V, was bedeutet, dass kein Eingang überlastet wurde.
UDN2981-Steuerung Hochauslösende, optoisolierte Relaismodule
Das OP erwog auch, optoisolierte Relaismodule zu verwenden, da diese sicherer sind. Ich habe den gleichen UDN2981 erfolgreich zur Steuerung von 4 hochpegeligen, optoisolierten Relaismodulen (MK055) verwendet.
Tatsächlich kann UDN2981 zur Steuerung aller Arten von High-Trigger-Modulen verwendet werden, unabhängig von NPN-Transistoren oder optoisolierten Typen.
Bei Low-Trigger-Modulen sollte jedoch ULN2803 oder ein anderer Senkentreiber verwendet werden, unabhängig davon, ob der PNP-Transistor oder der optoisolierte Quellentreiber UDN2981 nicht funktioniert.
ULN2803 steuert Low-Trigger-PNP-Transistoreingang oder optoisolierte Relaismodule
Ich habe erfolgreich verifiziert, dass der ULN2083-Spültreiber 4 optoisolierte Relaismodule mit niedrigem Trigger steuern kann. Ich habe zuerst das manuelle Blinken von 4 LEDs getestet und dann die gleiche Python-Funktion wie oben verwendet, um die 4 Module zu testen. Die Ergebnisse waren auch gut.
Diskussion
ULN2803 und UDN2981 Vor- und Nachteile
Vorteile
ULN2803 und UDN2981 können direkt über ein TTL- oder CMOS-Logiksignal mit 3,3 V oder 5 V Versorgungsspannung angesteuert werden.
Ihre Nennausgänge von 500 mA mit Klemmdioden eignen sich zum Schalten von Relais und Schrittmotoren.
Nachteile
ULN2803 und insbesondere UDN2981 sind nicht so verbreitet.
Sie haben 8 Kanäle und daher ein größeres 18-poliges DIP-Gehäuse. Bei weniger Kanälen sind häufigere 74HC03 / 04 oder 74HCT125 mit 14-poligem DIP-Gehäuse häufiger und einfacher zu handhaben.
# Lösung 3 - Verwenden von 74HC03 und 74HC04 zum Hochschalten des 3,3-V-GPIO-Signals von RPi #
Die Verwendung von UDN2981 zum Ansteuern eines Relaismoduls ist ein großer Overkill, da sie mit eingebauten Flyback-Dioden zum direkten Ansteuern des Relais ausgelegt sind.
Der UDN2981 ist nicht üblich und nicht für Anfänger zum Experimentieren geeignet. Für Anfänger können die sehr gebräuchlichen und billigen Logikgatter-ICs, 74HC03 Quad-NAND-Gatter und HC04-Hex-Inverter dieselbe Aufgabe wie UDN2981 übernehmen und 3,3-V-Logiksignale aufteilen.
Ich habe erfolgreich verifiziert, dass HC03 und HC04 die 3,3-V-Logik auf 5 V heraufsetzen, und festgestellt, dass sie sowohl für den Transistoreingang als auch für optoisolierte High-Level-Triggermodule funktioniert.
# Verweise #
R1. Wie funktioniert ein elektrisches Relais? - TechyDIY
R2. Relais-Schaltkreis - Elektronik-Tutorials
R3. Beefcake Relay Control Anschlussanleitung - SparkFun
R4. Digitale Puffer und Tri-State-Puffer - Lernprogramme für die Elektronik
R5. Pull-up Widerstände - Elektronik Tutorials
R6. Tutorial Logikebenen - SparkFun
Arduino Voh 4,2 V, Vol 0,9 V
R7. RPI GPIO Pin Spannungs- und Stromspezifikation
Rpi Voh 2,4 V, Vol 0,7 V
R8. Bipolar Transistor - Elektronik Anleitungen
================
# A.3 Logischer Pegelwandler mit HCT125 #
Also habe ich einen weiteren Aufwärtswandler getestet, HCT125. Ich war froh, dass es gut funktioniert. Das HCT125-konvertierte 5V0-Signal fiel nicht ab, wenn es an das Transistor-gesteuerte NPN-Relaismodul angeschlossen wurde.
/ ...
Ende der Anhänge
** * Lange Antwort Zu löschen * **
Diese lange Antwort ist zu langwierig und chaotisch. Ich versuche jetzt, die irrelevanten Absätze zu entfernen und sie möglicherweise zu ersetzen, indem ich relevante Fragen stelle und mich selbst beantworte.
So überprüfen Sie das Relaismodul für Fotokoppler / Optokoppler
2.1 Transistoreingangstyp
Bei den bekannten bipolaren NPN-Transistoreingängen wird das Sourcing-Treibersignal (RPI-GPIO-Signal oder RPI-GPIO-Signal nach einer logischen Pegelumwandlung von 3,3 V auf 5 V) über eine Serien-LED und einen Vorspannungswiderstand an die Basis des Transistors geleitet.
Beispiel eines Relaismoduls vom Transistoreingangstyp (BJT NPN)
Es gibt andere nicht so beliebte Relais-Schaltkreise, wie sie in diesem Tutorial für Relais-Schaltkreise beschrieben werden
2.2 Eingangstyp des Fotokopplers
Das Fotokopplereingangsrelais hat einen Phtokoppler als Eingang. Der Fotokoppler steuert einen weiteren Transistor an, der wiederum die Relaisspule ansteuert.
Anhang C - Logischer Pegelwandler mit TXS0102
Jetzt weiß ich, dass Rpi GPIO das Relaismodul direkt ansteuern kann, aber es gibt zwei Probleme. Erstens ist das GPIO-Signal mit einem langen Verbindungskabel verrauscht und daher nicht so zuverlässig. Zweitens kann es sein, dass die Schwungraddiode 1N4148 die EMK der Spule nicht vollständig unterdrückt. Wenn der 1N4148 unglücklicherweise ausfällt oder nicht richtig angeschlossen ist (schlechter Kontakt, trockene Lötverbindung usw.), kann die EMK der Rückseite den Rpi beschädigen.
Deshalb habe ich mich für einen logischen Pegelwandler entschieden, um das Rpi-GPIO-Signal von 3V3 auf 5V zu erhöhen. Ich habe zuerst versucht TXS102 Konverter und fand es funktioniert gut. Neben dem Hochschalten des GPIO-Signals wird auch das Rauschen auf hohem Niveau stark reduziert.
Ich fand jedoch ein großes Problem beim Einspeisen des konvertierten 5-V-GPIO-Singals in das Relaismodul. Das Relais wurde wie zuvor mit dem 3V3-Signal ein- und ausgeschaltet, aber als ich das Oszilloskop zum Überprüfen der Wellenform verwendete, stellte ich sehr überraschend fest, dass das 5V-Signal um die Hälfte auf 2,2V abfiel .
Ich vermutete, der Grund dafür war, dass TXS0102 viel besser Strom aufnehmen kann, als Strom an das Relaismodul zu liefern. Um meine Vermutung zu bestätigen, habe ich das 5-V-Signal einem anderen Relaismodul, einem Pulldown-Fotokoppler vom Typ MK01, zugeführt.
Dieses Mal stellte ich fest, dass das 5-V-Signal keine nennenswerten Verluste aufwies.
Daher kam ich schnell zu dem Schluss, dass das NPN-Transistor-Relaismodul eine schlechte Wahl ist. Ich würde von jetzt an aufhören, diese Art von Relais zu testen, und den Relaistyp Photokoppler weiterentwickeln.
Ich habe auch ein anderes Fotokoppler-Treibermodul MK101 getestet. Dieses Modul verfügt über einen Jumper zur Auswahl von Higher Trigger oder Low Trigger. Ich habe festgestellt, dass für den Low-Trigger der vom TSX0102 umgewandelte 5-V-Signalpegel nicht betroffen ist. Wenn jedoch der Low-Trigger ausgewählt ist, sinkt der konvertierte 5-V-Signalpegel auf ca. 2,5 V, obwohl das Relais noch funktioniert.
Anhang E - Logischer Pegelwandler mit HC04
HCT125 ist nicht so verbreitet. Also habe ich eine weitere Wandlerschaltung ausprobiert, bei der das NAND-Gatter mit offenem Drain und der Hex-Inverter HC04 von HC03 verwendet wurden. Als ich den HC04-Ausgang getestet habe, fand ich ihn sehr laut. Ich vermutete einen Grund dafür, dass ich dirrerente Netzteile verwendete, eines für RPI und eines für den Konverter. Sogar ich habe die Massepunkte der Stromversorgungen angeschlossen, um einen gemeinsamen Punkt zu bilden, das Rauschen ist nicht verschwunden. Ich habe dann ein Netzteil für RPI und Konverter verwendet und das Rauschen ist verschwunden.
Ich habe versucht, das HC04-Ausgangssignal für das Relaismodul im Low-Trigger-Modus (der einen sinkenden Strom erfordert, aber nicht im High-Trigger-Modus (der einen Quellstrom erfordert)) auszugeben das Relaismodul.
Anhang F - Problem mit dem schwebenden Eingang des Pegelwandlers HC04
Als ich das letzte Mal den HC03-basierten Pegelwandler an einem Fotokoppler-Relaismodul ausprobierte, stellte ich fest, dass das Modul das Rauschen aufnahm und das Relais verrückt ein- und ausschaltete, wenn ich den Eingang schwebte. Ich dachte die Frequenz wäre vielleicht 1kHz. Ich war mir nicht sicher, ob es sich um eine positive Rückkopplungsschwingung handelte. Aber als ich das Oszilloskop zum Auschecken benutzte, stellte ich überraschenderweise fest, dass es 50 Hz war! Ich denke, es ist eine Art Resonanz. Aber ich weiß nicht, was der Unterschied zwischen Resonanz und Schwingung ist. Vielleicht sollte ich wieder brillen. Wie auch immer, ich denke, ich muss irgendwo einen Pull-Up / Down-Widerstand hinzufügen.
Unten gekürzt oder gelöscht werden
# Anhänge #
# A1. Optisch isoliert / Relaismodulplatine für Fotokoppler und Schaltplan #
Das optoisolierte Relaismodul verfügt über einen Fotokoppler mit 4-poligem IC. Das folgende Bild zeigt einen Fotokoppler PC1 (mit seinen 4 grün gekennzeichneten Pins 1, 2, 3, 4) und einen Transistor Q1. Die ICs sind nicht immer markiert. In diesem Bild ist PC1 EL354 und Q1 8050.
Diagramm-Links
35 : https://i.stack.imgur.com/cWkRi.jpg
quelle