Arduino mit Relais und Schieberegister

Hallo Community,

ich habe schon einiges mit dem Arduino angestellt. Mehrere Stepmotoren betrieben, meine Modellbahn mithilfe von Railuino gesteuert und diverse Beleuchtungssysteme betrieben. Bei meinem aktuellen Projekt verzweifle ich gerade.

Ich versuche mit einem Schieberegister ein Relais anzusteuern, welches wiederum LED’s schaltet. Die LED’s haben als externe Stromquelle einen Transformator 16VA (Modellbau Trafo von Märklin). Die LED’s sind auch alles kleine Modellbau LED’s (Laternen H0 Hausbeleuchtung etc.).

Ich habe bereit eine Schaltung mit Schieberegister und Transistoren gemacht. Funktioniert einwandfrei. Auch die direkte Ansteuerung des Relais von den Arduino Pins aus funktioniert prima. Nur die Schaltung mit Relais und Schieberegister will nicht so wie ich das will.

Das Schieberegister ist normal am Arduino dran. Also 2 mal 5V und 2 mal GND dazu die Pins Shift, Data und Storage. Wenn ich die Ausgangspins nun an Transistoren schalte, die die LED’s schalten sollen klappt alles wunderbar. Nun will ich aber mit den Ausgangspins an die Relaispins. Das Relais hab ich mit VCC ebenfalls an 5V vom Arduino dran und GND an GND vom Arduino. Das Schichtregister nun mit den Ausgangspins an die Pins vom Relais.

Habe versucht eine Schematische Übersicht über die Anschlüsse vom Breadboard zu machen. Hoffe man kann es verstehen. (Das Gelbe mit “SR”, “L”, “G” sind die Transistoren. 6 Stück verbaut über 1-6. Pin 7 und 8 gehen an Relais R1 und R2.)

Das Relais schaltet auch, aber irgendwie willkürlich. Manchmal schaltet es ohne Eingabe von einer Serial. Manchmal schaltet es den falschen PIN. Manchmal auch den richtigen. Manchmal klappen die ersten 5-6 Befehle und dann kommt der Wurm rein.

Mein Code ist wie folgt:

int DataPin1 = 2;
int StoragePin1 = 3:
int ShiftPin1 = 4;

int LampenWert1[] = {0, 0, 0, 0, 0, 0, 0, 0};

int CommandProcessing = 0;

void setup(){

    pinMode(Datapin1, OUTPUT);
    pinMode(StoragePin1 , OUTPUT);
    pinMode(ShiftPin1 , OUTPUT);

    Serial.begin(9600);

}

void loop(){

    if(Serial.available(){

        CommandProcessing = Serial.read();

        if(LampenWert1[CommandProcessing  - 1] == 0}

            LampenWert1[CommandProcessing  - 1] = 1;

        }

        else{

            LampenWert1[CommandProcessing  - 1] = 0;

        }

    }

    digitalWrite(StoragePin1, LOW);

    for(int index = 0; index < 8; index ++){
 
        digitalWrite(ShiftPin1, LOW);

        digitalWrite(DataPin1, LampenWert1[index]);

        delay(20);

        digitalWrite(ShiftPin1, HIGH);

        delay(20);

    }

    digitalWrite(StoragePin1, HIGH);

}

Wie gesagt der Code an sich funktioniert wunderbar wenn ich das ganze mit Schieberegister und Transistoren mache. Und das Relais funktioniert, wenn ich es direkt über die Arduinopins ansteuere. Aber das Relais am Schieberegister will nicht.

Relais falsch angeschlossen ? Wie gesagt VCC auch an 5V vom Arduino und GND am GND vom Arduino. Dann die Pins 1-8 an die Pins vom Schieberegister.
Oder ist das Relais nicht geeignet?

Relais (so eins müsste es sein):

Schieberegister ist ein 74hc595.

Bin um jeden Rat dankbar :slight_smile:

Mit freundlichenGrüßen

Schmiddie

Hallo,
irgendwie ist dein Text
a) mit unsinnigem Ballast versehen (unwichtiges weglassen)
b) nicht wirklich verständlich (löse dich einmal von deinen Gedanken und schreibe so, als wenn du es verstehen müsstest, hättest du das zum ersten Mal gesehen)
c) verknüpft mehrere Dinge (trennen, isolieren)

Versuche doch mal, diese Punkte zu bearbeiten und hier zu posten. Dann kann man dir vllt auch helfen.

Viele Grüße

Hallo,

Wenn der Sketch mit dem Register und daran angeschlossenen LED klappt kann es doch eigendlich nur an der Vebindung von Register Ausgang und Relaiseingang liegen.

die Steckbrücke VCC-JDVCC ist gesteckt ?

Was sagen die LED auf der Relaisplatine. ?

Ansonsten hilft da eigentlich nur mal messen. Beides sollte ja positive Logik haben. Vermutlich fehlt noch irgendwo ein Potential.

Heinz

Wie schon geschrieben, deine Beschreibung ist sehr schwer zu verstehen.

Wenn es mit den Transistoren funktioniert, warum nimmst du dann nicht die Transistoren ?

Meine Vermutung:
Evtl. liegt es daran, dass die Relais LOW-aktiv sind, also bei LOW schalten. Die Transistoren vermutlich bei HIGH.

Ok danke schonmal für die Antworten. Ich habe bemerkt dass die LED auf der Relaisplatine zwar an und aus gehen, aber das klicken vom Relais fehlt teils. Es schaltet also scheinbar nicht wirklich. Das passiert dann, wenn mehrere Verbraucher geschaltet sind. Demnach werde ich wohl mal versuchen ein externes 5V Netzteil an das Relais zu klemmen, anstatt über den 5V Ausgang vom Arduino. Mal schauen was ich da so finde.

Dennoch könntest du eine verbesserte Beschreibung liefern, dann verstehen wir es besser.

(deleted)

Ich habe bemerkt dass die LED auf der Relaisplatine zwar an und aus gehen, aber das klicken vom Relais fehlt

Dann bekommen die Spulen der Relais zu wenig Strom: Nicht aus dem 5V Pin des Arduino versorgen.

Die eigentlich interessanteste Frage

HotSystems:
Wenn es mit den Transistoren funktioniert, warum nimmst du dann nicht die Transistoren ?

…ist allerdings unbeantwortet.