Probleme beim Schalten eines 3-V-Relais mit digitalen Pins von Arduino

Ich verwende das Arduino-Ethernet mit POE und habe Probleme, wenn ich mein Relais mit einem digitalen Pin aktivieren muss. Was ich machen möchte, ist, einen Motor mit einem Relais zu starten, das mit einem digitalen Arduino-Pin geschaltet wird.

Mein Relais ist das folgende (3V):

Geben Sie hier die Bildbeschreibung ein

Meine Schaltung ist folgende:

Geben Sie hier die Bildbeschreibung ein

Meine Skizze sieht wie folgt aus:

#define pinRelay 5 

void setup() {
  pinMode(pinRelay, OUTPUT);
  ...
}

void loop() {
  ...
  digitalWrite(pinRelay, HIGH);
  delay(5000);
  digitalWrite(pinRelay, LOW);
  delay(5000);
  ...
}

Wenn das digitalWrite(pinRelay, HIGH)läuft, dann höre ich ein schwaches Klicken vom Relais, aber es funktioniert nicht wie erwartet: COM/POLE (Common) schaltet nicht von NC (Normally Close) auf NO (Normally Open), also der Strom geht nicht und der Motor springt nicht an. Wenn ich das Kabel jedoch direkt an den 3,3-V- (oder 5-V-) Stromquellenstift auf der Arduino-Platine anschließe, funktioniert es wie erwartet und der Motor beginnt sich zu bewegen.

Was ist das Problem? Warum funktioniert das Relais nicht wie erwartet?

Hinweis I : Ich habe es auch mit anderen Pins als versucht 5, aber das Ergebnis ist das gleiche.

Hinweis II : Durch Messen der Spannung zwischen dem pinRelayund dem Groundmit meinem Multimeter beträgt der Ausgang etwa 4 V.

Anmerkung III : Ich habe viele Beiträge im Internet gelesen, die meinem Problem ähnlich sein könnten, aber ich habe noch nicht herausgefunden, was das Problem wirklich ist.

Der Arduino kann wahrscheinlich nicht genug Strom an das Relais liefern, um es richtig auszulösen. Schauen Sie sich die vielen Antworten auf dieser Seite an, bei denen ein Relais über einen Transistor von einem Arduino angesteuert wird.
@pjc50 - Können Sie mich auf eine Antwort auf mein Problem hinweisen?
1: Dieses Bild ist kein Schema und zeigt daher nicht wirklich, was genau mit was verbunden ist. 2: Es mag in der Arduino-Welt als "Skizze" bezeichnet werden, aber dies ist eine Elektrotechnik-Site. Lernen Sie die richtigen Begriffe, wenn Sie in der realen Welt kommunizieren.
Aus dem Datenblatt unter gfinder.findernet.com//assets/Series/356/S36EN.pdf können wir entnehmen, dass Ihr Relais etwa 120 mA benötigt, oder etwa das Dreifache dessen, was ein Arduino-Pin liefern soll. Wenn Sie die Spannung an der Relaisspule selbst messen, werden Sie wahrscheinlich feststellen, dass sie weit geringer ist als beabsichtigt, da dort effektiv nur etwa 25 Ohm Widerstand vorhanden sind. Beachten Sie auch, dass der 3,3-V-Regler auf Ihrer Platine diese Last wahrscheinlich nicht bewältigen kann, und selbst wenn dies möglich wäre, möchten Sie kein Relais ohne starke Filterung an eine Logikversorgung anschließen.
@Chris Stratton - Was meinst du genau mit "Sie würden kein Relais ohne starke Filterung an eine Logikversorgung anschließen wollen"?
Das Ausschalten der Relaisspule erzeugt aufgrund der Induktivität der Spule eine Spannungsspitze. Ihre Diode wird etwas davon einfangen, aber nicht alles. Der Rest kann Ihre Logikkomponenten stören (oder im Extremfall, insbesondere wenn Ihnen die Diode fehlt oder schlecht ausgewählt ist) sogar beschädigen. Sie haben ein ziemlich kleines Relais, und mit Sorgfalt ist dies möglich, aber Sie könnten in Betracht ziehen, das Relais an der vorgelagerten, ungeregelten Versorgung zu betreiben.
@ChrisStratton Das Arduino-Ethernet verfügt über einen 1-Ampere-3,3-V-Abwärtsregler. Es kann gut damit umgehen.
@ChrisStratton Sie sprechen von der Gegen- EMK des Relais. Das Anschließen an die Logikversorgung ist nicht die beste Option (obwohl die Diode und bei Bedarf ein Snubber-Netzwerk funktionieren sollten), aber da das Relais für 3 V ausgelegt ist, wäre die einfachere Lösung, einen Linearregler an die "vorgeschaltete Versorgung" anzuschließen. . Aber das würde eine gute Verlustleistung hinzufügen, also bevor man von einem Schaltregler spricht, ist es besser, ein Relais mit einer vorgeschalteten Nennspannungsspule zu verwenden.

Antworten (2)

Die Arduino-Pins können nur eine geringe Strommenge liefern (40 mA pro Pin, 200 mA insgesamt). Sie sollten einen Low-Side-Schalter mit einem Transistor verwenden, um den Strombedarf Ihres Relais zu decken. Meine Go-to-Schaltung für dieses Problem ist wie folgt (unter Verwendung einer 1N4001-Diode und eines 2N3904-Transistors).

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Um die Antwort noch etwas zu vervollständigen, verfügt das Arduino Ethernet mit POE über einen schaltenden Abwärtsregler LM2734 (oder LM2736) für die 3,3 V von vin. Im Gegensatz zu den älteren Arduinos, die den 50-mA-3,3-V-Ausgang des seriellen FTDI-ICs oder des Arduino Uno mit dem 150-mA-LM2734 verwendeten, beträgt der 3,3-V-Regler des Arduino-Ethernets bis zu 1 AMP. Was gut für das Relais tun wird.

Hier das Datenblatt des Relais:

http://gfinder.findernet.com//assets/Series/356/S36EN.pdf

Gemäß der Tabelle (Spulenspezifikation) auf Seite 3 für die 3-V-Spule beträgt der empfohlene Betriebsspannungsbereich 2,2 V bis 3,9 V.

Der Stromverbrauch beträgt ungefähr 120 mA (bei 3 V), was für die Arduino-Pins viel ist. Wenn Sie dann 5 V anlegen, ist der Strom noch größer und kann die Arduino-Pins beschädigen.