Korrekte Verwendung von Open Collector zum Schalten eines Ausgangs

Ich arbeite mit einer bereits vorhandenen Consumer-Hardware, die einen Open-Collector-GPIO-Ausgang hat, wie unten gezeigt:

Geben Sie hier die Bildbeschreibung ein

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 :

Geben Sie hier die Bildbeschreibung ein

(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! RelayInputIch 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!

Warum hast du drei Leitungen zum Relais? Sie haben normalerweise zwei Leitungen, die verwendet werden, um die Spule mit Strom zu versorgen. Nicht drei. Ich bin verwirrt. Gibt es dazu ein Datenblatt?
Ist das "Relais" wirklich ein Relais, das auf einer kleinen Leiterplatte mit einem Optokoppler oder einem anderen Treiberschaltkreis (wie die häufig bei Arduinos verwendeten Relaismodule) montiert ist, und kein bloßes Relais?
Es ist ein SRD-05VDC-SL-C 5V-Relais, definitiv eines, das mit Arduino-Modulen verwendet wird. Es hat seine eigene Treiberschaltung – gibt es eine bessere Möglichkeit, es mit dem Open-Collector-GPIO zu verbinden?
@nathanlachenmyer Nun, das erklärt viel. Dieser mittlere Kontaktpunkt aktiviert NICHT das Relais. Es ist einer der Kontaktpunkte für den Schalter. (Entweder du bist verwirrt oder ich bin es.)
@nathanlachenmyer Verbinden Sie einfach Ihren "Open Collector" -Ausgang mit dem Erdungsstift des Relais. Lassen Sie die +12 mit der Relaisleistung verbunden. Trennen Sie (vorerst) alles von diesem mittleren Stift. Wie andere Ihnen sagen werden, möchten Sie vielleicht eine normalerweise in Sperrrichtung vorgespannte Diode über die beiden Spulenkontaktstifte hinzufügen.
@jonk Ich verwende eine Velleman SRD-05VDC-Karte mit integrierter Schaltung und soll digitale Logik akzeptieren: velleman.eu/products/view/?id=435570 Es hat die 3 Kontakte für den Schalter, aber auch 3 Eingänge - - Strom, Masse und dann der Signalstift zur Steuerung des Relais
Das Datenblatt ist nicht besonders hilfreich. Fast keine Informationen zu "Signal". Es besteht die Möglichkeit, dass Sie eine Stromkompatibilität von 8-10 mA benötigen, um ein internes Opto oder ähnliches zu betreiben. Das bedeutet Sink & Source, schätze ich. Ihr 10k-Widerstand wird diese Art von Strom nicht liefern. Versuchen Sie, es auf 1k zu senken.
Basierend auf den Fotos sieht es so aus, als hätte die Platine nur eine LED, einen Widerstand, einen MOSFET ('Q1') und eine Flyback-Diode. Das Absenken des Pull-up-Widerstands auf 1k hat das Verhalten nicht verbessert.
Können Sie das Relais schalten, indem Sie 5 V direkt an den S-Pin (Signal) anlegen? Und sind Sie sicher, dass Sie den GPIO richtig für die Ausgabe konfiguriert haben?
Ja, das direkte Anlegen von Strom an den Signalstift schaltet das Relais - es wird nur der offene Kollektor verwendet, um es zu steuern, was zu Problemen führt. GPIO ist definitiv auf Ausgang eingestellt.
ein offener Kollektorstrom sinks... es fließt kein sourceStrom
@jsotola jap! Ich stimme zu, dass dies das Problem ist. Irgendwelche Gedanken, wie man das zum Laufen bringt?

Antworten (1)

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 :

Geben Sie hier die Bildbeschreibung ein

Dies ist ein falscher Schaltplan, da die Flyback-Diode falsch angeschlossen ist. Hier ist die richtige Schaltung von hier :

Geben Sie hier die Bildbeschreibung ein

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).

Ich verwende eine Velleman-Platine für das SRD-05VDC-Relais, das über eine integrierte Schaltung zum Schalten verfügt: velleman.eu/products/view/?id=435570 Es erfordert Strom, Masse und dann das Relaissignal - das Problem ist, dass ich kann meinen Open Collector GPIO nicht verwenden, um den Signaleingang der Relaisplatine auszulösen.
Danke für die Info, bearbeitete Antwort.
Vielen Dank für Ihre Antwort hier. Obwohl mein Dilemma darin besteht, dass mein GPIO ein Open-Collector-Ausgang ist (es ist ein 2N3904 im Gerät); Wenn ich den GPIO-Pin direkt mit dem SIGNAL-Pin des VMA406 verbinde, kann er das Gerät nicht umschalten. Ich nehme an, dass dies daran liegt, dass kein Strom verfügbar ist, um Strom durch R1 in Q1 zu treiben? Um es anders zu formulieren, möchte ich mit meinem Open-Collector-Ausgang +5 V an den Signalstift der Relaiseinheit anlegen können.
Wie gesagt, Sie müssen GND, +5V und Signal an den Eingang des Moduls (an die Spulenschaltung) anschließen. Ohne +5V (Strom für den Transistor auf der Platine) funktioniert es nicht. Sie verbinden sich mit +12V und es ist falsch für dieses Board, da es für +5V ausgelegt ist. Sie riskieren sogar, den Transistor der internen Einheit (2N3904) zu braten, indem Sie ihn auf +12 V hochziehen.
Ich habe Zugriff auf +5 V, um es mit Strom zu versorgen. Der GPIO ist jedoch selbst bei +5 V-Stromversorgung nicht in der Lage, den Signal-Pin umzuschalten. 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.
Aktualisierte Antwort. Im Allgemeinen gibt es zwei Ansätze: Bauen Sie eine Schaltung zum Ansteuern des Relaismoduls auf oder "zerlegen" Sie das Relaismodul und treiben Sie die Relaiskomponente direkt an.
Vielen Dank! Das hatte ich befürchtet, aber ich bin froh, dass ich mich etwas weniger beunruhigt fühle, dass es nicht so funktioniert, wie ich es erwarte ... danke für deine Hilfe!