Kuzschluss nach Stromausfall verhindern

Hallo Zusammen! Ich habe mir mittels 2 Relais und einem Arduino eine Rolladensteuerung mittels Blynk gebaut und es funktioniert auch alles, jedoch musste ich das relais so einbauen, dass es im normalzustand immer offen ist, da es sein signal aus irgend einem Grund immer selbst wieder invertiert. Nun ist es aber so, dass der Arduino nach einem Stromausfall immer ein paar sekunden benötigt um das relais zu schalten, sodass für eine kurze zeit der Roladenmotor einen eingangsstrom auf beiden eingängen hat (Kurzschluss). Wie kann ich das verhindern??

Gruß

hi,

Du hast doch wahrscheinlich relais, die in beiden zuständen durchgang auf verschiedene ausgänge haben, oder?

dann nicht nebeneinander schalten, sondern hintereinander. also erstes relais für ein/aus, zweites für die richtung.

gruß stefan

also mit

Hi! Was meinst du mit Richtung? Also der Motor hat 3 Anschlüsse:

Nullleiter Eingang Hoch Eingang Runter

Gruß

hi,

jetzt schaltest Du mit einem relais hoch und mit dem anderen runter, oder? wenn Deine relais auf der ausgangsseite je drei blockklemmen haben, sind sie richtig.

dann mit einem relais phase ein/aus.

mit dem zweiten relais schickst Du diese geschaltete phase in die richtige richtung.

muß kochen, kann nicht zeichnen. wenn Du es nicht verstehst, mußt Du ein stündchen vwarten, dann zeichne ich.

gruß stefan

Hi Stefan, habs glaube ich verstanden, wäre aber wirklich nett wenn du später ne kleine Skizze einfügen würdest :D

Gruß Nick

Eisebaer: hi,

jetzt schaltest Du mit einem relais hoch und mit dem anderen runter, oder? wenn Deine relais auf der ausgangsseite je drei blockklemmen haben, sind sie richtig.

dann mit einem relais phase ein/aus.

mit dem zweiten relais schickst Du diese geschaltete phase in die richtige richtung.

muß kochen, kann nicht zeichnen. wenn Du es nicht verstehst, mußt Du ein stündchen vwarten, dann zeichne ich.

gruß stefan

Hey Stefan! Sry falls es gehetzt wirkt, aber eine kleine Skizze würde mir vollkommen ausreichen, nur zum besseren verständniss...

Gruß

Stefan hat doch schon alles erklärt.

Deine vorhandenen Relais schalten doch die Drehrichtung, das kann auch so bleiben.

Nur die Phase nimmst du ab und schaltest diese über ein weiteres Relais erst hinzu wenn du die Rolladensteuerung durchführen willst. Also die Phase beider Relais nochmals getrennt über ein zusätzliches Relais schalten.

Hi!
Jo habs mir grade nochmal durchgelesen weiß es jetzt :smiley:
Danke an euch beide erstmal!
Eine sache noch…
Wisst ihr warum das relais sein eigenes Eingangssignal immer beim ersten Signal selber Invertiert??
Es ist nämlich so das es keinen unterschied macht ob ich ein HIGH oder LOW Signal anlege denn es wartet immer das erste Signal ab und vertauscht dann die Schaltreihenfolge…

Gruß

Schaue mal im Anhang dort habe ich zwei Schaltungen mit auch zwei Relais mit denen du kein Kurzschluss bauen kannst.
Ich nutzte immer die zweite
Gruß
DerDani
Das dritte ist noch eine kleine Handskizze mit Relais und Taster ohne Kurzschluss Gefahr.
Sorry mit nem Tablet kann man die Bilder (die Buttons fehlen)nicht in den Text einfügen geht nur auf dem Rechner

tmp_31749-Koppelrelais verriegelt-1744014852.png

TechScout: Eine sache noch... Wisst ihr warum das relais sein eigenes Eingangssignal immer beim ersten Signal selber Invertiert?? Es ist nämlich so das es keinen unterschied macht ob ich ein HIGH oder LOW Signal anlege denn es wartet immer das erste Signal ab und vertauscht dann die Schaltreihenfolge...

Das hört sich seltsam an. Diese Art von Funktion kenne ich nicht. Kann es evtl. am Steuerprogramm liegen ?

Was ist das für ein Relais ? Bitte Link posten.

Hallo Zusammen! @HotSystems Am steuerprogramm kann es nicht liegen ich schalte einfach nur ein LOW/HIGH Signal

SainSmart-2-Kanal

@volvodani Das zweite ist wirklich sehr cool gelößt! Werde ich denke ich so verwenden...

Gruß

Ich mache es immer so:
IMG_0186.PNG

volvodani: Schaue mal im Anhang dort habe ich zwei Schaltungen mit auch zwei Relais mit denen du kein Kurzschluss bauen kannst.

Das ist wirklich eine einfachere Lösung. Wobei mir die erste Lösung "besser" gefällt.

Edit: Eine Erklärung für das seltsame Verhalten des Relais habe ich allerdings nicht gefunden.

HotSystems: Eine Erklärung für das seltsame Verhalten des Relais habe ich allerdings nicht gefunden.

Mhh werde es dann mal mit der 2. Methode testen... danke an alle!

Gruß

hi,

sorry, hatte keine zeit bisher. aber jetzt hast Du ja zeichnungen. ich hab's so gemeint, wie es elespanol gezeichnet hat. das erste relais schaltet phase ein und aus, das zweite relais bestimmt die richtung.

so ist es definitiv unmöglich, daß der motor in beide richtungen gleichzeitig angesteuert wird.

gruß stefan

Hallo , ich geh mal davon aus das deine Relay "low active" schalten. Wenn ich das richtig verstehe schalten die bei LOW Level am Eingang und fallen bei HIGH Level wieder ab. Ich hoffe ich hab mich da verständlich ausgedrückt. Und da gibt es von jurs ein Beispiel wie man das umgehen kann

// relay example program by 'jurs' for German Arduino forum thread:
// http://forum.arduino.cc/index.php?topic=434114.0

// Pin-Definitionen ggf. ändern nach Bedarf
#define Relais1 2 // Relais1 an Pin2
#define Relais2 3 // Relais2 an Pin3
#define Relais3 4 // Relais3 an Pin4
#define EIN LOW
#define AUS HIGH


void setup(){
  // Alle drei Relais auf AUS initialisieren
  digitalWrite(Relais1,AUS);
  pinMode(Relais1,OUTPUT);
  digitalWrite(Relais2,AUS);
  pinMode(Relais2,OUTPUT);
  digitalWrite(Relais3,AUS);
  pinMode(Relais3,OUTPUT);
}

Hoffe das hift weiter

Gruß Matthias

Hallo,

komisches Verhalten bei Relais kommt oft zustande weil die I/O's beim Reset erst alle als Eingang gesetzt werden. Wenn das Relais nun nicht fiel Spannung und Strom benötigt oder sogar eigene Elektronik für Inpuls schalten besitzt. Ich definiere dazu immer einen I/O der quasie als Programm Start Signal den gemeinsamen aller Relais zuschaltet. Dazu verwende ich einen Transistor mit 4 Ampeer Leistung. Gerade wenn der Pin 13 Verwendung findet sind besonders Chinesische Produkte von komischen verhalten infiziert.

Gruss TFT

matthiasve: Hallo , ich geh mal davon aus das deine Relay "low active" schalten. Wenn ich das richtig verstehe schalten die bei LOW Level am Eingang und fallen bei HIGH Level wieder ab. Ich hoffe ich hab mich da verständlich ausgedrückt. Und da gibt es von jurs ein Beispiel wie man das umgehen kann

// relay example program by 'jurs' for German Arduino forum thread:
// http://forum.arduino.cc/index.php?topic=434114.0

// Pin-Definitionen ggf. ändern nach Bedarf

define Relais1 2 // Relais1 an Pin2

define Relais2 3 // Relais2 an Pin3

define Relais3 4 // Relais3 an Pin4

define EIN LOW

define AUS HIGH

void setup(){   // Alle drei Relais auf AUS initialisieren   digitalWrite(Relais1,AUS);   pinMode(Relais1,OUTPUT);   digitalWrite(Relais2,AUS);   pinMode(Relais2,OUTPUT);   digitalWrite(Relais3,AUS);   pinMode(Relais3,OUTPUT); }




Hoffe das hift weiter 

Gruß Matthias

temucin:
Hallo,

komisches Verhalten bei Relais kommt oft zustande weil die I/O's beim Reset erst alle als Eingang gesetzt werden. Wenn das Relais nun nicht fiel Spannung und Strom benötigt oder sogar eigene Elektronik für Inpuls schalten besitzt. Ich definiere dazu immer einen I/O der quasie als Programm Start Signal den gemeinsamen aller Relais zuschaltet. Dazu verwende ich einen Transistor mit 4 Ampeer Leistung. Gerade wenn der Pin 13 Verwendung findet sind besonders Chinesische Produkte von komischen verhalten infiziert.

Gruss TFT

Hallo Zusammen! Um das Problem direkt zu Umgehen kennt ihr evtl. ein Relais Board (4x) auf Amazon, welches diesen Reset erst garnicht besitzt?

MfG

Das hat mit Relaisplatinen aus chinesischer Produktion nichts zu tun. Das ist ein Verhalten vom Arduino und durch entsprechende Programmierung zu lösen. Wie bereits in anderen Posts geschrieben.

long unsigned int switchActivated;
long unsigned int switchActivated2;

const int switch1 = 4;       // relay 1
const int switch2 = 0;     // relay 2
int state = 1; 

int laufzeit = 20000;

void setup()
{
  Serial.begin(115200);
  Blynk.begin(auth, "xxxxx", "xxxxxxxx");

  pinMode(switch1, OUTPUT);
  pinMode(switch2, OUTPUT);
  digitalWrite(switch1, HIGH);
  
}

BLYNK_WRITE(V1) //Button Widget is writing to pin V
{
  if (param.asInt()){
    switchActivated2 = millis(); 
    digitalWrite(16, HIGH);
    Blynk.virtualWrite(V1, HIGH);
  }
}

  BLYNK_WRITE(V2) //Button Widget is writing to pin V
{
  if (param.asInt()){
    switchActivated = millis(); 
    digitalWrite(5, HIGH);
    Blynk.virtualWrite(V2, HIGH);
  }
}

  BLYNK_WRITE(V3) 
 {
  if (param.asInt()){
   
      // debounce
       //delay(200);
   
      if (state == 1) 
      {
        digitalWrite(switch1, LOW);
        state = 2;
        digitalWrite(switch2, HIGH);
      }
      else if (state == 2) {
      digitalWrite(switch2, LOW);
      state = 1;
      digitalWrite(switch1, HIGH);
      }
    }
  }
  



void loop()
{
  Blynk.run();
  if(switchActivated > 0 && switchActivated + laufzeit < millis())
{
  switchActivated = 0;
  Blynk.virtualWrite(V2, LOW);
  digitalWrite(5, LOW);
}

 if(switchActivated2 > 0 && switchActivated2 + laufzeit < millis())
{
  switchActivated2 = 0;
  Blynk.virtualWrite(V1, LOW);
  digitalWrite(16, LOW);
}
}

Das ist mein derzeit verwendeter Code…
muss ich nun einfach die const int`s umschreiben?

Gruß