IC, der den Ausgang auf den Boden ziehen würde, vielleicht NICHT Gate?


8

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:

Einfacher Wechselrichter

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.


1
Willkommen bei EE.SE. Ich werde gleich weitermachen und dir eine +1 für deinen Schaltplan geben. Es ist wahrscheinlich mit einem Wechselrichter lösbar, aber um darauf zu antworten, müssen Sie Ihre Ausgangsleistungsanforderungen kennen. Wissen Sie, wie viel Last Sie haben?
Winny

1
Wenn Sie ein Relais betreiben, möchten Sie möglicherweise eine in Sperrrichtung vorgespannte Diode vom Ausgang auf 5 V hinzufügen. Googeln Flyback-Diode oder Freilaufdiode gibt weitere Informationen
Colin

1
Bitte geben Sie einen Link zum Datenblatt für die Relais an. Wir müssen wissen, wie viel Strom sie benötigen. Ein 7404 wird wahrscheinlich nicht genug Strom aufnehmen können.
Elliot Alderson

Was meinst du Signal ist vorhanden? Ist es eine Hochspannung + 5V am "Eingang" -Knoten und was ist "Signal nicht vorhanden", 0V oder unbekannt / getrennt?
R. Joshi

Es ist nicht klar, warum die Relais beim Zurücksetzen aktiv sind, da sich die Pins normalerweise in einem hochohmigen Zustand befinden, es sei denn, Sie haben unklugerweise Modus-Umreifungsstifte oder solche ausgewählt, die an einem Bootloader beteiligt sind.
Chris Stratton

Antworten:


2

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.


Sie hatten Recht, ich musste meine Startvorgänge überprüfen. Normalerweise setze ich alle E / A-Parameter und initialisiere alles, dann kümmere ich mich um den Standardzustand der Pins. Wenn Sie den Pin als Ausgangs-Pin einstellen, wechselt er automatisch in den LOW-Zustand. Es scheint, dass zwischen pinMode () und dem ersten digitalWrite () genügend Zeit war, um den Pin in einen HIGH-Zustand zu versetzen und zu verhindern, dass das Relais einrastet. Meine Lösung besteht nun darin, pinMode () aufzurufen und den Pin dann sofort auf HIGH zu setzen.
BigWhale

Stellen Sie es auf hoch, bevor Sie es zu einer Ausgabe machen, nicht danach.
Chris Stratton

Sie haben einen Treiber für die Relaisspule, ja? Fügen Sie Pullup-Widerstände zu ihren Eingängen hinzu, fertig.
CrossRoads

1
@ CrossRoads Pull-up-Widerstände werden das Problem weder lösen noch die Dinge geringfügig verbessern. Das Problem ist, dass die Software des Fragestellers die Dinge in der falschen Reihenfolge ausführt und den Pin nach unten drückt, bevor er nach oben fährt. Das falsche Fahren würde Ihren Pull-up-Widerstand überwinden. Und außerdem sind dies wahrscheinlich die Kathoden von Optokoppler-LEDs - ein Pull-up macht dort eigentlich gar nichts, was benötigt wird, ist nicht fälschlicherweise einen Weg zur Erde zu vollenden.
Chris Stratton

Die Pullups würden die Pins hoch halten, während das Gerät den Reset / Boot-Prozess durchläuft und die Pins schweben.
CrossRoads

0

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

#define RELAY_ON LOW
#define RELAY_OFF HIGH

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.


Ich denke, Sie haben den Punkt verpasst. Das OP möchte nicht, dass die Relais beim Zurücksetzen aktiviert werden .
Elliot Alderson

0

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:

Set direction to input
Set level to "0" (do NOT change direction to output)

Befehlsrelais auf NEIN:

Set direction to output

Befehlsrelais zurück zu NC:

Set direction to input

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 !


3
"eine ULN" ist kein Teil. Zeigen Sie die tatsächliche Teilenummer an, verstecken Sie sie nicht im Link
Chris Stratton

Dies ist der einzige Teil dieser Serie, den ich jemals benutzt habe, daher war es für mich immer "nur eine ULN".
Gleichgewicht
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.