Ich habe eine Platine mit vier Relais. Es verfügt über Standard-Vcc-, Gnd- und In1-In4-Pins. Ich möchte es mit Arduino oder in meinem Fall einem ESP32 steuern. Ich habe jedoch festgestellt, dass beim Ziehen von HIGH am Ausgangspin nichts passiert, wenn das Relais auf LOW gezogen wird.
Dies ist ein Problem, wenn die Karte zurückgesetzt wird, da alle Relaisschalter bis zum Einrasten einrasten und ich dies nicht möchte. Nach einigem Graben habe ich folgendes gemacht:
Dies funktioniert wie gewünscht, es gibt immer 5 V am Relais und das Relais ist die ganze Zeit ausgeschaltet. Wenn ich ein Signal an die Basis des Q1 ausgeben möchte, wird der Ausgang auf Masse gezogen und das Relais wird aktiviert.
Im Moment habe ich vier dieser Relais und bald werde ich mehr haben. Also möchte ich das mit einem IC lösen. Insbesondere habe ich mir den IC7404 angesehen, bei dem es sich um eine Reihe von NICHT-Gates handelt. Ich bin mir jedoch nicht sicher, ob dies mein Problem lösen wird.
Gibt es also einen IC, der den Ausgang auf Masse zieht, wenn das Signal am Eingang anliegt? Funktioniert 7404 und ich sehe einfach nichts? :) :)
Bearbeiten: Dies ist das Relaismodul, das ich verwende . Ich konnte keine nützlichen Datenblätter darauf finden.
quelle
Antworten:
Die Tatsache, dass Relais beim Zurücksetzen aktiviert werden, wenn sich die Pins in einem hochohmigen Modus befinden sollten, ist besorgniserregend und etwas, das Sie vollständig verstehen müssen, um Ihr System zu validieren und zu reparieren.
Bearbeiten: Jetzt, da klar ist, dass dies ein Softwarefehler in Ihrem Code ist, konfigurieren Sie das Ausgangsdatenregisterbit des Pins auf "Hoch", bevor Sie den Pin als Ausgang festlegen , um das unbeabsichtigte Laufwerk beim Starten zu beheben.
Eine wörtliche Antwort auf Ihre ursprüngliche Frage wäre jedoch ein Chip, der mehrere enthält
open collector inverters
.Das 74xx05 ist ein Beispiel.
Der 74xx06 ist ähnlich, ermöglicht jedoch das Anlegen einer akzeptablen Spannung an den Ausgang, selbst wenn diese die Versorgungsspannung überschreitet. Sie können das Teil beispielsweise mit 3,3 V betreiben, die Ausgänge jedoch von 5 V herunterziehen.
Dies ist jedoch nicht die Lösung für Ihr eigentliches Problem.
quelle
Die einfachste Lösung besteht darin, die Verbindungen der NO- und NC-Pins des Relais auszutauschen.
Die nächste Option besteht darin, die Programmierlogik für diesen Pin zu invertieren. Sie können einige Konstanten hinzufügen
Um die Relais während des Zurücksetzens in einen bestimmten Zustand zu versetzen (während der Ausgangspin hochohmig ist), können Sie nach Bedarf einen Pull-Up- oder Pull-Down-Widerstand hinzufügen. Der E / A-Pin kann den durch den Widerstand ausgetretenen Strom leicht übersteuern und das Relais dennoch ordnungsgemäß schalten.
Mit diesen beiden Techniken können Sie den Standardzustand des Relais als Zustand ohne Stromversorgung auswählen. Entweder weil es die meiste Zeit verwendet wird oder weil es die ausfallsichere Option ist.
quelle
Hier ist ein "Benutzerhandbuch" für Ihr Relais. Sie sollten wirklich niemals ein System entwerfen, ohne vorher alle Datenblätter zu haben.
Aus dem dort gelieferten Schaltplan ist klar ersichtlich, dass Sie Ihren Controller einfach direkt an die InX-Pins anschließen können. Das heißt, keiner der von Ihnen erstellten Schaltpläne wird benötigt.
Da der Eingang der Optokoppler im Open-Collector- Modus betrieben werden kann, würde ich Ihnen empfehlen, nur die entsprechenden Pins Ihres uC als Eingang / High-Z zu belassen, wenn Sie die Relais auf NC halten möchten.
Da ich mit Ihrem Controller nicht vertraut bin, finden Sie hier einen Pseudocode, der Ihnen helfen soll:
Initialisierung für jeden Pin, der ein Relais steuert:
Befehlsrelais auf NEIN:
Befehlsrelais zurück zu NC:
Normalerweise wacht ein uC mit seinen Pins bereits als Eingang auf, sodass die erste Zeile der Initialisierung redundant ist. Es ist jedoch immer sicherer, sie auszuführen, um sicherzustellen, dass sich das System in einem bekannten Zustand befindet. Stellen Sie sicher, dass Sie keinen Code haben, der eine allgemeine Initialisierung aller Pins auf bestimmte Werte als Teil eines Kesselplattencodes ausführt. Es ist bekannt, dass Anfänger diesen Fehler machen.
PS Für die Zeit, in der Sie tatsächlich einen invertierenden aktuellen Treiber benötigen, verwenden Sie einfach so etwas wie einen ULN2003A !
quelle