Ausgänge schalten einfach wenn der Arduino "hochfährt"..

Hallo,

wenn ich dem Arduino das erste mal einschalte. Dann gehen die Ausgänge kurz auf HIGH.
Das ist aber nicht gewollt, da sonst das Garagentor, nach einem Stromausfall ja einfach aufgeht :wink:

Was kann ich dagegen tun?

int relais1 =  7; // Relais 1 an Anschluss 7
int relais2 =  6;// Relais 2 an Anschluss 6


.......

void setup(){

//Set output
pinMode(relais1, OUTPUT); 
pinMode(relais2, OUTPUT);
digitalWrite(relais1, LOW);
digitalWrite(relais2, LOW);

//im LOOP schalten diese eigentlich erst, wenn eine externe Bedingung erfüllt ist.

Mit welcher Schaltung steuerst Du die Relais an? Grüße Uwe

Hallo,

was meinst du genau? Ich schalte die relais mit dem Arduino?

Ansonsten schalte ich diese über den Browser.

if(readString.substring(6,9) == "A=1") {
  Serial.println("A an");
  digitalWrite(relais1, HIGH); // set on
  ON1 = true;
  delay (500);
  digitalWrite(relais1, LOW); // set OFF
  }

was meinst du genau? Ich schalte die relais mit dem Arduino?

Wie? Relais direkt am Ausgang des Arduino oder doch was dazwischen? Grüße Uwe

Hallo,

ein Kabel vom Ausgang am Arduino geht zum Relais-"board" zu "in1" nix dazwischen.

Ist wohl falsch?

Gruß

Simon

Ist wohl falsch?

Ich kann Dir nicht sagen, ob was falsch oder richtig ist, wenn Du nicht sagst wie Du was machst. Welches Relais Board hast Du? Wie hast Du die Verbrauchen am Relais angeschlossen ( common und NC?). Wie versorgst Du Arduino mit Spannung?

Grüße Uwe

Hallo,

genau dieses:

http://www.ebay.de/itm/Neu-4-Channel-Relay-Module-5V-4-Kanal-Relais-Modul-fur-Arduino-DSP-AVR-PIC-ARM-/320855076806?pt=DE_Haus_Garten_Heimwerker_Sicherheitstechnik&hash=item4ab473efc6

danke für deine mühe schonmal.

Gruß

maniwahn: danke für deine mühe schonmal.

Gruß

Ja, es macht viel Mühe Dir Informationen zu entlocken. ;)

Wie hast Du die Verbrauchen am Relais angeschlossen ( common und NC?). Wie versorgst Du Arduino mit Spannung?

Grüße Uwe

Der Arduino bekommt seinen strom noch über USB.

Anbei eine kleien Zeichnung. Da ich nicht weiss was common und NC bedeutet.

Gruß

Nach einiger Mühe ;) und studieren der Infos bzw Schaltplan ;)

Das Relais auf dem Modul schaltet, wenn der entsprechende Eingang auf Masse gezogen wird. Du hast die Lampe so angeschlossen, daß sie leuchtet, wenn das Relais nicht angezogen ist.

Beim Einschalten des Arduinos sind die Pins als Eingänge geschaltet und darum wird das Relais nicht erregt. Du mußt die Logik Deiner Schaltung bzw Ansteuernung ändern.

Die Verbraucher müssen ausgeschaltet sein, wenn keine Ansteuerung am Eingang erfolgt bzw dei Stromversorgung der Elektronik abgeschaltet ist. Die Kabel der Lampe müssen an der mittleren und rechten Klemme angeschlossen sein. auf dem letzten Bild grün in der Mitte und rot rechts davon.

Grüße Uwe

Ich hab das gleiche Problem.

Mein Lösungsansatz wäre ein Pullup-Widerstand. Wenn es so ist, das beim Start die Pins als Eingänge definiert sind, dann sollte es gehen. Allerdings bin weiß ich nicht, was passiert wenn die Pins als Ausgänge definiert werden.

uwefed: Das Relais auf dem Modul schaltet, wenn der entsprechende Eingang auf Masse gezogen wird.

Was dem OP mit einer dicken, fetten, roten LED pro Relais auf dem Board auch angezeigt wird: Rote LED ist aus ==> Relais ist im Ruhezustand, es fließt kein Spulenstrom Rote LED leuchtet ==> Spulenstrom fließt, Relais ist angezogen

Der Spulenstrom des angezogenen (LOW) Relais beträgt bei dieser Art von Relais-Board übrigens knappe 45 mA.

Da die rote LED leuchtet, wenn der Eingang (IN1, IN2, IN3, IN4) ein LOW bekommt, handelt es sich um ein "active low" Relais.

Warum der OP den Schaltzustand der roten Kontroll-LEDs vollkommen mißachtet, keine Ahnung. Die roten LEDs sind jedenfalls keine 4-LED-Lightshow, die es gratis dazugegeben hat, sondern es handelt sich um Kontroll-LEDs, die den Schaltzustand der Relais anzeigen.

Anyway, wenn man Verbraucher anschließt, die nun also bei angezogenem (LOW) Relais eingeschaltet sein sollen, definiert man das in seinem Programm entsprechend:

#define EIN LOW
#define AUS HIGH

und schaltet zum Einschalten

digitalWrite(relais1, EIN);

und zum Ausschalten

digitalWrite(relais1, AUS);

Natürlich muss dann auch der Verbraucher richtig angeschlossen sein, also am Arbeitskontakt statt am Ruhekontakt.

Und ein weiter Fallstrick droht in der Initialisierung im Setup, denn mit: //Set output pinMode(relais1, OUTPUT); wird das Relais sofort LOW und damit ganz kurz mit Spulenstrom geschaltet, selbst wenn man es in der nächsten Zeile auf HIGH setzt. Es gibt dann meistens sogar einen kurzen Schaltvorgang, ein ein kurzes "Klackern des Relais beim Einschalten". Der Trick dagegen ist es, zuerst den angeschlossenen Relais-Signalpin auf HIGH zu schalten und erst danach auf OUTPUT, also im Setup:

  digitalWrite(relay1, HIGH); // prevents relay from activating after power-on
  pinMode(relay1, OUTPUT);

oder

  digitalWrite(relay1, INPUT_PULLUP); // prevents relay from activating after power-on
  pinMode(relay1, OUTPUT);

circuit99: Ich hab das gleiche Problem.

Mein Lösungsansatz wäre ein Pullup-Widerstand. Wenn es so ist, das beim Start die Pins als Eingänge definiert sind, dann sollte es gehen. Allerdings bin weiß ich nicht, was passiert wenn die Pins als Ausgänge definiert werden.

Diese Logik ist gefährlich. Bei abgefallenen Relais ist der Verbraucher eingeschaltet. Das ist schlichtweg falsch und gefährlich. Eine Schaltung muß eigensicher sein und nicht wegen eines Fehlers (keine Spannungversorgung det Elektronik) die Verbraucher einschalten.

Verdrahte die Verbraucher am Schließer des Relais und krempel die Ansteuerung des Relaisboards um. LOW eingeschaltet, HIGH ausgeschaltet.

Grüße Uwe

Der Verbraucher ist bei mir richtig angeschlossen (bei stromloser Relaisspule aus). Das ändert aber nichts an der Tatsache, dass beim "Hochfahren" des ATMegas ein Schaltvorgang stattfindet weil der Ausgang erstmal auf LOW geht. Aber jurs hat die Lösung ja bereits geposted.

Hallo,

der Programmiertrick von jurs ist gut. Du kannst auch einen Transistor am Eingang einbauen, dann stimmt die gesamte positive Logik wieder. Dann schaltet HIGH das Relais durch und nicht mehr LOW. Egal was Du machst, es sollte funktionieren.