Arduino Sketch funktioniert nur einmal - RIFD + Relais Projekt

Hallo Zusammen,

ein weiteres Projekt welches Rätsel aufgibt. Ich habe gerade ein Projekt mit einem RFID RC522 und einem Grove Relais Bord welches ein Magnetventil steuert. Eigentlich ist es simpel. Wenn man den richtigen RFID Chip vor das Lesegerät hält, zieht das Relais für 3 Sekunden an und öffnet das Magnetventil.
Beim Testen, es ging zunächst, ist nun folgender Fehler: Ich starte den Sketch und kann mit dem RFID Chip nur ein mal das relais auslösen. Danach ist Funkstille. Weder der serielle Monitor gibt den Code des Chips aus, noch bekommt das Relais ein Signal.
Wenn ich den Teil mit dem Relais ausklammere, also nur RFID Chip lesen, geht es wunderbar. Ein neuer Sketch der nur das Relais aktiviert und wieder deaktiviert funktioniert auch. Beides Zusammen geht nicht. Ich habe keine Ahnung was los ist.

Aufbau ist wie folgt:
Auf dem Arduino ist ein Seeed Grove Shield. Am Grove Shield ist das Grove Relais angeschlossen.
Über die normalen Pins ist ein Standard RFID-RC522 angeschlossen.
Am Relais hängt das Magentventil über eine Extra Stromversorgung. Wenn das Netzteil nicht am Relais angeschlossen ist, geht der Code!
Aber der "Hochstrom" Teil des Relais, also da wo das Magentventil dran hängt, hat doch keine Verbindung zum Arduino, wieso hängt sich dann der Uno auf?

Das ist der Code:

// Relay Control
#define Relay 2 // Relay auf Grove 2/3
//RFID Library Teil
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);

void setup() {
  //RFID Initiieren und auslesen
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();

//Relais 
  pinMode(Relay, OUTPUT);  
}

void loop() {
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}

if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}

long code=0;

for (byte i = 0; i < mfrc522.uid.size; i++)
{
code=((code+mfrc522.uid.uidByte[i])*10);
}

Serial.print("Die Kartennummer lautet:");
Serial.println(code);

if (code==111111) // Wenn der Zahlencode 111111 lautet...

{ 

digitalWrite (Relay, HIGH); // ...Relais für 3 Sekunden schließen
delay (3000); // für 3 Sekunden
digitalWrite (Relay, LOW); // wieder öffnen
delay (1000);
} 

}

Dan zeige mall Link zu beiden Sachen.
Vermutung EMV Problem.
Dein Sketch auch zeigen bitte.

Ich tippe auf fehlende Freilaudiode am Relais.
Was ist das für ein Relais und wie steuerst du das Relais an ?

Also: Dieses Netzteil:

Versorgt diese Schlossfalle:

und dieses Relais:

schaltet den Plus von Netzteil and die Schlossfalle durch.
Wenn ich das Netzteil trenne und wieder anschließe, geht es auch wieder für eine Weile. Aber es fühlt sich nicht ganz richtig an. Ich dachte dass bei einem Relais das alles ja galvanisch getrennt ist, wieso beeinflusst das Netzteil den Arduino?

Hat die Schlossfalle eine Freilaufdiode?

Gruß Tommy

Ich finde leider keine Unterlagen dazu, welche Aufschlussgeben was da drin ist. Aktuell würde ich Nein sagen, wenn man sich die Fotos zur Montage anschaut, ist das nur ein Elektromagent, bestehend aus einer Spule:
https://www.berrybase.de/Pixelpdfdata/Articlepdf/id/101/onumber/LY-03

Es sieht nach einem Uno (also 5Volt) aus, dein Relais arbeitet mit 3Volt. Das passt nicht zusammen.

Wenn du am Magneten noch keine Spannung anliegen hast, wird das auch nicht dein Problem sein. Oder ist das anders zu verstehen.

Wie kommst du da drauf? Das Relaisboard ist mit einer Operating Voltage von 3,3V bis 5V angegeben.

Die Relaisspule ist mit 3Volt angegeben.
Steht auf dem Relais drauf.

Aber es wird ja nicht nur das Relais verwendet. Es ist auf einem Board mit Spannungswandler und auch einer (melf) Freilaufdiode.

Ok, da ich kein Schaltbild kenne, ist mir der Spannungswandler noch nicht aufgefallen.
Und das mit der Freilaufdiode war nur ein Gedanke bevor ich das Relais kannte.

Ich habe mir den Eingangspost noch mehrfach durchgelesen und vermute jetzt wie Tommy, es liegt an der fehlenden Freilaufdiode am Magneten.

Ok, danke.
Jetzt sehe ich den Regler auch.
Also das Relais ist unschuldig. :joy:

Da könnte man ja testweise eine Diode mit in das Schraubterminal vom Relaisboard roten Board (blaues Terminal) reintüdeln, wo der Magnetschalter angeschlossen wird.

Genau, eine 1N4001 sollte reichen.

Nicht das Netzteil sondern das Magnet. Wenn du anstatt Magnet eine Glühbirne, LED oder normalen Widerstand nimmst wird das Ewigkeit funktionieren.
Such mall nach Freilaufdiode, Schutzdiode.
Jede Induktive last = Gleichstrom Spulen, Motoren sollen eine Freilauf Diode haben, Erstens schont die, die Kontakte, Zweitens beugt vor EMV Störungen.

Danke für den tollen Support. Ich werde mal nach 1N4001 Dioden schauen und die dazwischen hängen. Aber zumindest habe ich schon wieder was gelernt!

Zu Info, der weiser Strich auf der Diode muss zum Plus am Netzteil, sonst baust du ein Kurzschluss !!! der kann dir im schlimmsten Fall dir das Netzteil zerfetzen, wenn die Diode nicht eher aufgibt.