Relaiseplatine mit minus-signalpin für Arduino Nano verwendbar?

Hallo
Bin neu hier und auch Anfänger beim Arduino.

Leider gibt es ein Problem mit einer Relaisplatine.

Habe mir diese Platine gekauft:
http://www.ebay.at/itm/121504822647?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

Wollte mit meiner Schaltung ein Licht aus- und einschalten. Einschalten geht aber ausschalten nicht mehr. Licht bleibt immer an, wenn es einmal eingeschaltet wurde. Die LED die den Schaltzustand des Relais auf der Platine anzeigt leuchtet im abgeschaltetem Zustand ganz leicht (ca. halb so hell als normal).

Beim Testen der Relaisplatine habe ich festgestellt, dass diese beim Signalpin mit minus (GND) schaltet.
Sollte doch auf Plus reagieren.

Kann ich diese Platinen trotzdem irgendwie verwenden? Oder soll ich mir andere Platinen besorgen?

Habe leider nach langer Suche nichts gefunden, bin aber sicher nicht der Erste mit diesem Problem.

Low aktive Relais (oder überhaupt elektronische Bauteile) sind völlig normal. Das mit der LED sollte aber nicht sein.

kann es sein das du für den pin für's Relais im Setup kein pinMode (Relais_pin,OUTPUT) aufrufst?
Sonst poste mal den Sketch.

Hallo
Danke für die schnellen Antworten.

Im Setup habe ich das Relais mit

pinMode(RELAIS, OUTPUT);

aufgerufen

Habe 5 dieser Relais gekauft und mit allen das selbe Problem.

Hier noch der Teil des Sketch wo das Licht schalten soll:

if (digitalRead (taste_c) == HIGH)
{digitalWrite(RELAIS, HIGH);}
else{digitalWrite(RELAIS, LOW);}

Kompletten Sketch, mit dem Fetzen kann man nicht viel anfangen.

und evtl. noch eine Zeichnung, auch wie du den Taster angeschlossen hast.

Du bist nicht der erste mit dem Problem, dass du die anderen raten lässt, was du wohl falsch gemacht hast.
An der Zeile

pinMode(RELAIS, OUTPUT);

ist schonmal falsch, dass RELAIS nicht definiert ist :wink:

hier der ganze Sketch:

 #include <Servo.h> 
   Servo drehung;
   int taste_a = 5;
   int taste_b = 4;
   int taste_c = 3;
   
   const int RELAIS = 6;
   
   byte ledPin = 13;                  
   boolean value = LOW;                 
   unsigned long previousMillis = 0; 
   unsigned long interval = 5000;   
   unsigned long intervalw = 10000;
   unsigned long interval2 = 30000;
   unsigned long interval2w = 20000;
   unsigned long fehler = 500;
    
   void setup()
   {
     pinMode(taste_a, INPUT); 
     pinMode(taste_b, INPUT);
     pinMode(taste_c, INPUT);
     pinMode(ledPin, OUTPUT);      
    pinMode(RELAIS, OUTPUT);
     drehung.attach(9);
   }
    
   void loop()
   {
   
    if (digitalRead (taste_a)== HIGH && digitalRead (taste_b)==LOW)
     {
       digitalWrite(ledPin, HIGH);
       if (value == LOW)
     {
     if (millis() - previousMillis > interval) {
       previousMillis = millis();   // aktuelle Zeit abspeichern
  
       value = !value;
       drehung.write(11);
   }}
       
       else{
         
       if (millis() - previousMillis > intervalw) {
       previousMillis = millis();   // aktuelle Zeit abspeichern
   
       value = !value;
      
     drehung.write(92);}
     
   }}
   
  if (digitalRead (taste_b)== HIGH && digitalRead (taste_a)==LOW)
     {
       digitalWrite(ledPin, HIGH);
       if (value == LOW)
     {
     if (millis() - previousMillis > interval2) {
       previousMillis = millis();   // aktuelle Zeit abspeichern
    
       value = !value;
       
     drehung.write(11);
   }}
       
       else{
         
       if (millis() - previousMillis > interval2w) {
       previousMillis = millis();   // aktuelle Zeit abspeichern
    
       value = !value;
    
     drehung.write(92);}
     
   }}

if (digitalRead (taste_a)== LOW && digitalRead (taste_b)==LOW)
 {
drehung.write(92);
 digitalWrite(ledPin, LOW);  
}


if (digitalRead (taste_a)== HIGH && digitalRead (taste_b)==HIGH)
 {
if (millis() - previousMillis > fehler) {
       previousMillis = millis();   // aktuelle Zeit abspeichern
    
       value = !value;
    
       digitalWrite(ledPin, value);
     }

   
}

 // Licht über Funk schalten
 if (digitalRead (taste_c) == HIGH)
 {digitalWrite(RELAIS, HIGH);}
 else{digitalWrite(RELAIS, LOW);}

 }

Es ist kein Taster angeschlossen sondern eine kleine Empfängerplatine mit 4 Kanälen

Die Dokumentation ist sehr dürftig.

Auf der Platine sind 3 Widerstände, 1 Diode, 2 LED und ein Transistor.
2 Widerstände werden für die LED sein.
Ein Widerstand wird der Basiswiderstand sein.

Damit das Relais mit LOW einschaltet muß der Transistor ein PNP sein und zwischen Relais und +5V geschaltet sein (bitte kontrollieren)
Einen PNP-Transistor zu verwenden ist sehr unüblich da man ihn nur mit einem Signal das gleich groß wie die Betriebsspannung ist ausschalten kann. ZB ein NPN kann auch mit 3,3V angesteuert werden.

Kontrollier bitte ob der Transistor direkt mit +5V oder mit Masse verbunden ist.

Noch eine Warnung. Diese Platinen sind nicht für Netzspannung ausgelegt. Die Spezifikation (250V 10A) bezieht sich einzig auf das verwendete Relais nicht auf die gesamte Platine.

Grüße Uwe

neuling0815:
Es ist kein Taster angeschlossen sondern eine kleine Empfängerplatine mit 4 Kanälen

Ich tippe mal auf Probleme mit der Empfängerplatine.
Was ist das für eine Platine?
Grüße Uwe

Habe die Empfängerplatine vor dem Einbau mit einer LED-Schaltung getestet, ging einwandfrei.

Diese Platine ist verbaut:

Kann noch versuchen den vierten ungenutzten Kanal der Fernbedienung für das Licht zu verwenden.

Hab jetzt den Sketch umgeschrieben und das Relais gleichzeitig mit der LED schalten lassen.

LED schaltet richtig aber Reais fällt nicht ab.

Ich glaube das die Relaisplatine schuld ist.

Schaltet der Arduino am Ausgang Plus oder Minus durch wenn er High ist?

@uwefed

Der Transistor sollte ein PNP sein, er hat die Aufschrift 2TY und ist zwischen VCC und dem Relais geschaltet

Wie schon zuvor geschrieben, wenn ich die Platine mit 5V versorge und den Signalpin mit dem Minus belege schaltet das Relais, beim belegen mit Plus am Signalpin tut sich nichts

Über das Relais laufen keine 230V, es wird nur eine 12V LED-Beleuchtung damit geschaltet.

beim belegen mit Plus am Signalpin tut sich nichts

Das Relais bleibt angezogen ?

Wenn nicht, probier doch einfach mal den Blink-Sketch

void setup() {
 pinMode(13,OUTPUT);
}
void loop() {
 digitalWrite(13, LOW);
 delay(1000);
 digitalWrite(13,HIGH);
 delay(2000);
}

Schliess das Relais an GND, 5V und D13 an und schau, ob es abwechselnd 1 sec NO, dann 2 sec NC mit COM verbindet.

mit dem Blink-Sketch schaltet das Relais einwandfrei

habs zwar auf pin6 umgeschrieben (da es schon fix verlötet ist), sollte aber keinen Unterschied machen

zu früh gerfreut!!

Wenn ich die LED-Beleuchtung anschliesse schaltet das Relais auch nicht mehr ab.

Versuche mal den ganzen Aufbau so gut wie möglich zu erklären:

habe ein 12V Netzteil

Relaise soll die 12V für die Beleuchtung schalten

Vom den 12V vom Netzteil habe ich noch einen Step-Down regler zischengeschaltet (ca. 5,8V)und gehe damit direkt auf den Arduino, den Servo und die Relaisplatine. Die 5V für die Empfängerplatine kommen vom Arduino.

Das Relais darfst du nur mit den 5V vom Arduino betreiben, damit HIGH auch richtig ausschaltet.

Und 5.8V für Vin ist ein bisschen knapp.

Problem gelöst!!

Hab die 5V Versorgungsspannung für das Relais jetzt direkt vom Arduino genommen. Jetzt funktioniert alles.

Danke für eure Hilfe

Ok. jetzt ist es klar was das Problem war.

  • Das Relais wird miit einem PNP Transistor geschaltet.
  • Du versorgst die Relaisplatine mit 5,8V
  • Ich nehme mal an, daß Du die 5,8V am Vin angeschlossen hast und somit die 5V des Arduino in Wahrheit ca 4,5V sind.
  • Der Arduino-Ausgang kann mit 4,5V keinen PNP-Transistor Ausschalten der mit der Emittor auf 5,8V gescheltet ist. Es braucht mindestens 5,3V besser 5,8V

Ich sagte bereits, daß es unüblich ist, einen PNP-Transistor zu verwenden, eben genau aus dem von Dir gefundenen Problemen. Mit einem NPN Transistor wäre Dir das nicht passiert.

Das Ist die Konseguenz aus zuwenig dokumentazione der Platine und, sagen wir es gutmütig, Unkenntnis der aus der Schaltung resultierenden Problemen.

Viele Grüße Uwe