Ich arbeite mit einer bereits vorhandenen Consumer-Hardware, die einen Open-Collector-GPIO-Ausgang hat, wie unten gezeigt:
Der Open Collector kann bis zu 100 mA liefern.
Ich möchte ein Relais (ein Sanyo-Relais vom Typ SRD mit +, Signal und -; so https://www.velleman.eu/products/view/?id=435570 ) mit einer einfachen Schaltung wie dieser schalten :
(Entschuldigung für Bildfehler, ich verwende die 5 VDC, für die das Relais als Leistung ausgelegt ist)
Und ich bin ziemlich überrascht zu sehen, dass es nicht funktioniert! RelayInput
Ich dachte, das Hinzufügen eines Pull-up-Widerstands würde es mir ermöglichen, den Knoten auf +5 V oder 0 V zu schalten, indem ich den GPIO ein- und ausschalte. Ich stelle fest, dass die Spannung an diesem Knoten konstant bleibt (~ 1,8 V), unabhängig davon, was ich mit dem GPIO mache. Ich bin viel mehr daran gewöhnt, mit Open Drain / MOSFETs und digitaler Logik zu arbeiten, daher vermisse ich hier einen entscheidenden Einblick, der auf Transistoren basiert und wie die Logik stromgesteuert wird.
Ich habe versucht, den Pullup-Widerstand auf niedrigere Werte (1k und 4,7k) zu tauschen, und das Verhalten ist genau das gleiche.
Kann mir jemand helfen zu verstehen, was hier das Problem ist?
Danke!
Klingt so, als hätten Sie das Relais-Datenblatt verwechselt. Es hat eine Spule, die den "zentralen" Kontakt des Schalters ansteuert, und der Strom der Spule beträgt im eingeschalteten Zustand etwa 90 mA (innerhalb der Spezifikation für Ihren Transistor). Die Spule wird für SRD-05VDC-SL-C mit 5 V versorgt, daher muss einer der Kontakte der Spule mit dem Open-Collector-Ausgang und einem anderen mit +5 V (nicht +12 V ) verbunden werden.
Sind Sie sicher, dass der GPIO-Pin 12-V-tolerant ist? Wenn Sie es auf +12 V hochziehen, kann der Transistor braten. Jedenfalls ist es sowieso falsch, hier an +12V anzuschließen.
Die Spule selbst dient als "Pull-up-Widerstand". Drei Dinge sind zu beachten: Flyback-Diode, wahrscheinlich kleiner Widerstand in Reihe mit dem Relais, wenn der Strom begrenzt werden muss, und Kühlkörper für den Transistor (falls extern).
Sehen Sie sich dieses Tutorial an .
Dann können Sie alles, was im Datenblatt angegeben ist, an die anderen 3 Kontakte des Relais (des Schalters) anschließen.
Update: Danke für die Info zum verwendeten Board (VMA406). Schade, dass sie keinen Schaltplan für das Modul veröffentlichen; Ich kann sehen, dass es bereits eine Flyback-Diode und einen Treibertransistor mit höchstwahrscheinlich einem Vorwiderstand am Eingang enthält.
Bei der Recherche nach dem Schaltplan habe ich hier folgendes gefunden :
Dies ist ein falscher Schaltplan, da die Flyback-Diode falsch angeschlossen ist. Hier ist die richtige Schaltung von hier :
Ihr Problem mit offenem Kollektor kann sich auf den Vorwiderstand im Modul beziehen: Wenn Sie einen zu großen Wert für den Pull-up-Widerstand wählen, bildet er mit dem Vorwiderstand einen Spannungsteiler und der Transistor funktioniert möglicherweise nicht richtig.
Sie benötigen tatsächlich KEINEN Open-Collector-Ausgang, um die Schaltung dieses VMA406-Moduls anzusteuern, es enthält bereits eine Open-Collector-Schaltung für Sie. Sie können GPIO direkt an den Eingang des Moduls anschließen.
Sie benötigen die folgenden Drähte von Ihrer Controller-MCU-Platine zum Modul: Masse, +5 V und logischer Eingang, um das Relais zu betreiben. Diese Informationen finden Sie im Datenblatt des Moduls im Abschnitt "Übersicht".
Um es anders zu formulieren, möchte ich mit meinem Open-Collector-Ausgang +5 V an den Signalstift der Relaiseinheit anlegen können.
Der VMA406 und seine internen Komponenten werden mit +5 V versorgt, nicht mit +12 V. Wenn Sie es auf +12 V hochziehen und mit Strom versorgen, können Sie die Relaisplatine oder sogar den Ausgangstransistor des Moduls beschädigen (nicht viel wegen der hohen Spannung [der Transistor ist für 40 V ausgelegt], aber wegen des Stroms [der für 200 mA ausgelegt ist]).
Das Datenblatt besagt, dass der Steuereingang ist 5 to 12 VDC
, und es ist seltsam, weil selbst CMOS harte Zeiten mit genau 5 V Ausgang bei 5 V Versorgung haben würde, nicht einmal über die Arduino-Logik.
Wenn Sie keine +5-V-Versorgung von Ihrer MCU-Platine haben, haben Sie Pech und können das Relaismodul nicht richtig verwenden.
Kann es sein, dass der interne Transistor durchgebrannt ist? Es scheint, dass ein Pull-up-Widerstand von etwa 1 k am GPIO-Pin nach dem funktionieren sollte, was Sie sagen.
Sie können den Ausgang des Transistors mit einem Multimeter im Voltrop-Modus (Diodenzeichen) überprüfen oder einfach die Ausgangsspannung mit angeschlossenem Pull-up messen.
Was ich in dieser Situation tun würde: Nehmen Sie ein NICHT-Gatter (z. B. CMOS 74HC04), versorgen Sie es mit +5 V, verbinden Sie seinen Eingang mit dem 2N3904 mit 4,7 k Pull-up auf 5 V und verbinden Sie seinen Ausgang mit dem "Signal" -Pin des Moduls - und sehen, ob es die Situation verbessert. Natürlich wird das Relaisverhalten gespiegelt, aber es zeigt an, ob das Modul in der Lage ist, eine logische 1 vom Signalpin (Ausgang von HC04) zu akzeptieren. Ich vermute, dass er richtig schaltet. Wenn Sie möchten, können Sie das Gate im endgültigen Design durch LVC1G04 ersetzen.
Alternativ können Sie Q1 von der Relaisplatine entfernen und stattdessen diesen internen 2N3904 verwenden (unter Verwendung des zweiten Schaltkreises des Moduls als Referenz, aber stellen Sie sicher, dass der Relaisstrom innerhalb der Spezifikation für den Transistor liegt und genügend Verlustleistung vorhanden ist, um ihn darin zu kühlen EIN-Zustand).
jonk
Peter Bennett
Nathan Lachenmeyer
jonk
jonk
Nathan Lachenmeyer
jonk
Nathan Lachenmeyer
NMF
Nathan Lachenmeyer
jsotola
sinks
... es fließt keinsource
StromNathan Lachenmeyer