Relays über ein Arduino ansteuern

Hallo :slight_smile:

ich würde gerne zwei relays über ein Arduino ansteuern

relays 1 soll 2 sekunden an und 2 sekunden aus seihen

relays 2 soll 1 sekunden an und 30 sekunden aus seihen

und das soll gleichzeitig laufen nicht hintereinander. ist das überhaupt möglich ?

mfg Marcel

Es besteht Hoffnung.

Ja. Wie gesagt ohne While und delay() aber mit millis() (Nachtwächtererklährung).
Ein anderes Wort. Ein Relais mit 0,25Hz ( 2 S Ein; 2 S Aus) schalten lassen ist nicht gut für die Kontakte des Relais.
Grüße Uwe

probiere das Beispiel "Blink Without Delay" in der IDE aus.

Je nachdem, was du schalten willst, solltest du, wie Uwe schon erwähnt hat, dich nach Alternativen umschauen. Z.B. Mosfet, SSR, Transistoren, Optokoppler, etc.

Und beschreibe doch einfach mal, was das für Relais sind und was die genau machen sollen.
Generell ist das machbar, wenn alle Komponenten zusammen passen und der Code funktioniert.

Zum Thema "Gleichzeitig":

und das soll gleichzeitig laufen

"gleichzeitig" gibt es natürlich nicht wirklich, da ein Arduino in der Regel nur eine Recheneinheit hat.
Ein kleiner Test (mit meiner Lib) sagt 5,22µs Differenz zwischen den beiden Relaisansteuerungen.

Diese Zeit ist deutlich unter den Schaltzeiten, welche elektromechanische Schaltelemente üblicherweise zeigen.
Damit ist die "Gleichzeitigkeit" quasi gegeben.

Eine weitere Optimierung scheint mir daher nicht Zielführend.

#include <CombiePin.h>
#include <CombieTimer.h>

// fuer invers schaltendes billig china Relais board
// an Arduino Pin 3 und 4

// relays 1 soll 2 sekunden an und 2 sekunden aus seihen
Combie::Pin::RelaisINV<3> relaisA;
Combie::Timer::PpmGenerator generatorA(2000,2000);

// relays 2 soll 1 sekunden an und 30 sekunden aus seihen
Combie::Pin::RelaisINV<4> relaisB;
Combie::Timer::PpmGenerator generatorB(1000,30000);

// monitoring Pin, 
//Combie::Pin::OutputPin<13> monitor;


void setup(void) 
{
 relaisA.init();
 relaisB.init();
 //monitor.init();
}

void loop(void)
{
  relaisA = generatorA;
  //monitor.toggle();
  relaisB = generatorB;
  //monitor.toggle();
}

CombieLib.zip (68.6 KB)

Marcel87:
relays 1 soll 2 sekunden an und 2 sekunden aus seihen

relays 2 soll 1 sekunden an und 30 sekunden aus seihen

und das soll gleichzeitig laufen nicht hintereinander. ist das überhaupt möglich ?

Gleichzeitig ist quasi von der Aufgabenstellung her nicht möglich.
da solltest du deine Fragestellung anders gestalten.

Gleichzeitig ist quasi von der Aufgabenstellung her nicht möglich

Völliger Unsinn, verwirre doch die Leute bitte nicht so.

Gleichzeitig aus der Sicht eines Quantenphysikers ist eine eher philosophische Frage, aber
Gleichzeitig aus der Sicht eines oder zweier Relais ist überhaupt kein Problem für einen Arduino.

michael_x:
Völliger Unsinn, verwirre doch die Leute bitte nicht so.

Gleichzeitig aus der Sicht eines Quantenphysikers ist eine eher philosophische Frage, aber
Gleichzeitig aus der Sicht eines oder zweier Relais ist überhaupt kein Problem für einen Arduino.

Na wenn du das sagst....

Vielleicht fangen wir mal so an. Was soll mit den beiden Relais geschalten werden?

Denn es stellt sich die Frage ob es Relais sein müßen. Die sind für so kurze Impulse nicht die beste Wahl. Um nicht zu sagen, die schlechteste Wahl :slight_smile:

Franz

Das habe ich in Post#4 auch schon gefragt und keine Antwort bekommen

ElEspanol:
Das habe ich in Post#4 auch schon gefragt und keine Antwort bekommen

Der TO hat zur Geisterstunde gefragt, da dürft ihr zu früher Stunde (11:38 Uhr) keine Antwort erwarten. Es gibt schließlich Schichtarbeiter und Nachteulen.