Was ich versuche zu tun
Bei dieser Frage geht es um die Verwendung eines beliebigen 3V3-Versorgungsmikrocontrollers zum Ansteuern von 5-V-Relaismodulen, die von vielen Anbietern erhältlich sind. Ich habe unten Details zu den Mikrocontrollern und Modulen angegeben, die ich speziell verwende, aber die Frage ist allgemein.
In meiner Anwendung habe ich einen Raspberry Pi Zero und einen Arduino, die ich für ein Automatisierungsprojekt verwenden möchte. Ich habe zwei der SSR-Module (HCMODU0115), wie das im Bild unten.
Ich habe sie mit meinen GPIO-Pins verbunden, ähnlich wie im Bild unten, und sie aktiviert, aber ich habe festgestellt, dass beide LEDs unabhängig von der Ausgabe meiner Controller leuchteten. Nur dass die LED im aktiven Zustand zu 100% hell waren und im inaktiven Zustand auf halber Helligkeit, aber immer noch eingeschaltet.
Aus Neugier entschied ich mich, ein Paar Dioden in die Kanaleingänge zu schalten, wie im Bild unten, aber dann würden die Relais überhaupt nicht aktivieren.
Dann entschied ich mich, die Dioden zu invertieren und plötzlich begann das Relaismodul wieder zu arbeiten, aber diesmal funktionierten die LED1 und LED2 so, wie sie sollten, nur wenn sie aktiv waren.
Daraus ergeben sich für mich zwei Fragen.
Erstens, ist es sicher, dieses Relaismodul direkt an meine Steuerungen anzuschließen? Warum leuchten die LEDs immer?
Zweitens, warum funktionierte es nur, wenn ich die Dioden umkehrte? Hat es etwas mit der Richtung des Elektronenflusses zu tun?
Frage
Das OP verfügt über ein auf niedrigem Pegel getriggertes SSR für 5-V-Arduino .
Das OP stellte fest, dass der 3V3 Raspberry Pi Zero (und 3V3 Arduino Mini Pro usw.) ihn einschalten, aber nicht ausschalten kann (wobei nur die Status-LED von hell auf gedimmt umschaltet).
Das OP stellte fest, dass das Hinzufügen einer Reihendiode am Eingangsanschluss das Problem löst. Warum?
/ weitermachen, ...
Antworten
Kurze Antwort
Teil 1 – Grundursache des Problems „Gerät kann nicht ausgeschaltet werden“.
Die Hauptursache ist die folgende.
Das Arduino-kompatible Gerät ist so konzipiert, dass es sich bei einem hohen Pegel von > 3,5 V ausschaltet (Anhang A).
Der High-Pegel von Rpi < 3,3 V ist jedoch nicht hoch genug , daher ist SSR immer eingeschaltet.
Teil 2 - Problemumgehungen
Es gibt ein paar Problemumgehungen, darunter die folgenden:
(1) Fügen Sie einen seriellen Widerstand 4k7 am Eingangsanschluss (IN/CH1) hinzu
Erklärung: Das 4k7 verursacht einen zusätzlichen Abfall von 5 V auf Rpis 3 V (was konstant ist). Dieser zusätzliche Spannungsabfall macht die Spannung am IN/CH1-Anschluss höher als 3 V, sagen wir 3,5 V. Problem also gelöst.
(2) Wandeln Sie die 3.3-Logik von Rpi in 5 V um
Es gibt ein paar Möglichkeiten, einschließlich der folgenden:
(a) Using a NPN BJT (eg 2N2222) in open collector mode, to pull up the 0V/3V signal to 0V/5V. This method is only one directional, ie, output only.
(b) Using any MOSFET logical level converter module which is auto detect bidirectional (Ref 4).
(3) GPIO in den Eingabemodus schalten, um SSR/Relais/Summer auszuschalten (Anhang C)
Wie oben erläutert, ist Rpi's High nicht hoch genug, um die Optokoppler-LED oder den Basis- / Emitter- / Kollektorstrom von PNP BJT abzuschalten. Eine Problemumgehung besteht darin, den GPIO einfach in den Eingangsmodus zu schalten, sodass kein Basisstrom sinkt, daher alles aus. Siehe Anhang C für die Summer-Fallstudie.
Warnung - Diese Problemumgehung, den GPIO-Pin in den Eingangsmodus zu schalten, um den SSR auszuschalten, birgt das Risiko, dass der GPIO-Schaltkreis blockiert , was früher oder später dazu führt, dass der Rpi fritiert oder die Lebensdauer des Rpi/s verkürzt wird.
Teil 3 – Diskussion, Schlussfolgerung und Empfehlung
Diskussion
/ weitermachen, ...
Abschluss
/ weitermachen, ...
Empfehlung
(1) Arduino-kompatible High-Level-ausgelöste Geräte haben fast immer nicht das High-Level-Signal-nicht-hoch-genug-daher-kann-das-Gerät-Problem-nicht-ausschalten.
Auf der anderen Seite haben Arduno-kompatible Low-Level-gesteuerte Geräte oft das obige Problem.
Daher ist für verwirrende Neulinge eine schnelle und schmutzige Empfehlung die folgende:
Um auf Nummer sicher zu gehen, besorgen Sie sich immer ein hochgradig ausgelöstes Gerät, wenn Sie die Wahl haben.
(2) Verwenden Sie nicht das Umschalten von GPIO in den Eingabemodus, um ein Latchen zu vermeiden
Um zu vermeiden, dass Ihr Rpi/3v3 Arduino Mini Pro verriegelt und fritiert, verwenden Sie nicht die Problemumgehung, indem Sie den GPIO-Pin in den Eingabemodus schalten (Einstellung durch Moduseinstellung oder Reinigungsfunktion), um das Gerät auszuschalten.
/ weitermachen, ...
Lange Antwort
/ weitermachen, ...
Verweise
Teil A - Allgemeines
(1) 5-V-Low-Level-Trigger (Omron G3MB-202P x 2) 2-Kanal-240-V-AC-Halbleiterrelais - HobbyComponents
(2) 5-V-Low-Level-Trigger (Omron G3MB-202P x 2) 2-Kanal-240-V-AC-SSR-Schema – HobbyComponents
(2.1) Halbleiterrelais G3MB – Omron
Teil B - Logischer Level Shifter (3V bis 5V)
(4) TXB0108 Bidirektionaler 8-Kanal-Logikpegelwandler – AdaFruit US$8
(5) HCT125 3 V bis 5 V Quad Level-Shifter – AdaFruit 1,50 US-Dollar
(6) HC03 Quad NAND Gartes mit Open-Drain-Ausgang (3 V bis 5 V logischer Pegelumsetzer)
(7) Darlington-Transistor-Arrays ULN2803A (Pegelumsetzer von 3 V auf 5 V) – TI
(8) UDN2981 8-Kanal-Quellentreiber (3 V bis 5 V logischer Pegelumsetzer – AllegroMicro
(9) Tutorial zur logischen Ebene – SparkFun
(10) Rpi GPIO Elektrische Spezifikationen – Mosiac Industries
(11) Bipolartransistor-Tutorial - Elektronik-Tutorials
/ weitermachen, ...
Anhänge
Anhang A – HobbyComponents Low Level Triggered SSR Spec
(1) Eingangsspez
Versorgungsspannung (DC- & DC+): 5V
Spannung des Eingangsschalters: 0 V bis 2,4 V
Eingangsfreigabespannung: 3,5 bis 5 V - Fehlerursache!
(2) Ausgangsspez
Nennlastspannung: 100 V bis 240 V AC
Laststrom: 0,10 bis 2A
Stoßstrom: 30 A (60 Hz, 1 Zyklus)
Anhang B – Das Problem „Hoch“ des Rpi/3v3Arduino ist nicht hoch genug
Die sehr traurige Geschichte begann in den guten alten glücklichen Tagen, als wir Bastler mit nur 5 V Arduino spielten und alle logischen Pegel eine Art 5 V TTL sind, war das Leben einfach.
Erst als 3V3 Raspberry Pi auftauchte und später auch 3V3 Arduinos (z. B. Pro Mini 328 3V3 8MHz) wurde das Leben unübersichtlich, besonders für die Oldies/Newbies, die nur die Arduino/TTL 5V Logik kennen.
Um zu verstehen, warum alle (na ja, fast) Neulinge verwirrt sind, müssen wir uns das folgende logische Pegeldiagramm genau ansehen, das die Grundursache der 3V/5V-Sorgen von Neulingen zeigt.
Diagramm der logischen Ebene
Konzentrieren wir uns auf die beiden Spalten ganz links, TTL und Arduino. Damals dachten meine Arduino-Freunde, dass das imperiale Arudino-Imperium glücklich bis ans Ende seiner Tage leben würde, und hätten nie gedacht, dass einige große Jungs wie Rpi bald auftauchen würden. Die Geschichte besagt also, dass die Arduino-Ingenieure einen neuen Standard/eine Spezifikation auf logischer Ebene entwickelt haben:
High level means at least 4.2V
Low level means at most 0.8V
Das Ergebnis ist, dass die meisten Geräte, z. B. Aktuatoren, einschließlich Relais, Solenoide, Summer usw., diese Spezifikation erfüllen, mit der (letzteren Rpi-Jungs beängstigenden) Anforderung, dass Sie 4,2 V oder mehr geben müssen, um etwas mit High-Pegel zu tun .
Natürlich macht das das Leben später geborener Rpis sehr elend, denn sie sind schwache 3V3-Typen, und ihr High-Pegel beträgt normalerweise 2,4 V bis höchstens 3,2 V. Dies bezeichne ich normalerweise als die
Das Problem „RPI ist hoch ist nicht hoch genug“.
Anhang C - Schalten Sie GPIO in den Eingabemodus, um den Summer auszuschalten
Warum der aktive Summer immer eingeschaltet ist.
Die Hauptursache ist die Verwendung eines Arduino-kompatiblen aktiven Summers für Rpi. Für diesen Arduino-kompatiblen Summer ist er so konzipiert, dass er niedrig aktiv ist, dh wenn das Eingangssignal niedriger als etwa 1,0 V ist, wird der Summer eingeschaltet. Und wenn das Eingangssignal höher als etwa 3,5 V ist, wird der Summer ausgeschaltet. Jetzt hat Arduino kein Problem, denn sein High liegt bei etwa 4,2 V, deutlich über 3,5 V.
Jetzt ist Rpi in großen Schwierigkeiten, weil sein High nur etwa 3 V beträgt, keine Hoffnung, die erforderlichen 3,5 V zum Abschalten zu erreichen.
Problemumgehung
Einfach - fügen Sie einen 4k7-Widerstand (oder eine Diode, wie das OP vorschlägt) zwischen den Rpi-GPIO-Pin und den Eingang des aktiven Summers ein.
Schnelle und schmutzige Erklärung
Das Eingangs-Frontend der Summerschaltung ist sehr wahrscheinlich ein PNP BJT. Es ist so vorgespannt, dass, wenn das Eingangssignal zur Basis über einen Vorspannungswiderstand 3,5 V oder mehr beträgt, der Transistor abgeschaltet wird (Glückspilz Arduino High ist 4,2 V, daher eine saubere Abschaltung), kein Basisstrom fließt, also nicht genug Kollektorstrom, um den Piezo-Summer zu aktivieren.
Jetzt ist Rpi's High nur 3 V, daher nicht hoch genug, um eine saubere Unterbrechung zu haben, was zu einem gewissen Basisstrom und daher zu einem gewissen Kollektorstrom führt, um den Piezo teilweise / schwach zu aktivieren, daher das kleinere Summen.
Die Umgehung des Einfügens eines 4k7 zwischen Rpi GPIO und Eingang besteht darin, nicht einmal einen kleinen Basisstrom fließen zu lassen, um sauber abgeschnitten zu werden, also kein Ton.
Für den Aktivierungs- / Einschaltfall haben sowohl Arduino als auch Rpi einen niedrigen Pegel von weniger als 1 V, daher haben beide keine Probleme beim Einschalten.
Tatsächlich hat Rpi das gleiche Problem mit ein paar anderen Arduino-Geräten, einschließlich 5-V-Low-Level-Triggerrelais. Ebenso kann Rpi nur einschalten, aber nicht ausschalten. Der gleiche Trick beim Hinzufügen eines 4k7-Widerstands ist die schnelle Heilung. Eine andere Umgehung ist die folgende:
Um das Relais auszuschalten, anstatt GPIO High zu setzen,
Setzen Sie GPIO in den Eingabemodus
/ weitermachen, ...
Anhang D - Das Latching-up-Problem, das Rpi durchbrennt oder seine Lebensdauer verkürzt
Die Verwendung der Problemumgehung, den GPIO-Pin in den Eingangsmodus zu schalten, um das SSR oder Relais auszuschalten, birgt das Risiko, dass der Rpi-GPIO-Pin-Schaltkreis verriegelt oder die Lebensdauer von Rpi verkürzt wird. Der Grund dafür ist, dass das Anschließen eines GPIO-Eingangspins an 5 V, selbst über einen Widerstand, fatal sein kann, wie im folgenden Artikel erläutert wird.
Anhang E – Warum verursachen Low-Level-Triggergeräte oft Probleme, aber nie High-Level-Geräte?
/ weitermachen, ...
Ende der Antwort
Hier ist der einfachste Weg, diese Arbeit zu erledigen – fügen Sie nur einen Teil hinzu (pro Ausgabe):
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
Das interne Schema des Moduls sieht ungefähr so aus (von hier ):
Das Omron SSR erhält etwa 0,7 oder 0,8 V weniger als die Versorgungsspannung und benötigt mindestens 4 V, um zuverlässig zu arbeiten, sodass es wirklich eine 5-V-Versorgung benötigt. Es beginnt ein paar Diodenabfälle unterhalb der Versorgung einzuschalten, also mehr als die maximale Ausgangsspannung der 3,3-V-MCU.
Chris Stratton
tlfong01