Hallo,
ich bin ein blutiger Arduino Anfänger und komme mit einer Frage die Ihr Experten sicherlich sofort lösen könnt. Zur Zeit bin ich in Fidschi und dort ist die elektrische Steuerung meiner Waschmaschine kaputt gegangen. Ersatzteile bekomme ich nicht und deshalb will ich das Ganze auf Arduino umbauen.
Das Programm soll die Drehrichtung des Motors alle 10 Sekunden ändern; dazwischen ist eine Pause von 2 Sekunden.
/*
Wash
Switch the turn direction of a washing maschine.
The motor moves 10 seconds leftway
wait for 2 seconds
The motor moves 10 seconds rightway
wait for 2 seconds
*/
// define the pins
// give it a name:
int links = 11;
int rechts = 10;
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(links, OUTPUT);
pinMode(rechts, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
digitalWrite(links, HIGH); // turn the motor left way (HIGH is the voltage level)
delay(10000); // wait for a 10 seconds
digitalWrite(links, LOW); // turn the motor off by making the voltage LOW
delay(2000); // wait for a 2 seconds
digitalWrite(rechts, HIGH); // turn the rightway (HIGH is the voltage level)
delay(10000); // wait for 10 seconds
digitalWrite(rechts, LOW); // turn the motor off by making the voltage LOW
delay(2000); // wait for a 2 seconds
}
Ich denke das funktioniert wenn ich 2 Relais ansteuere. Nun meine Frage: wie kann ich das Programm nach 10 Minuten beenden?
Wer wei was?
Vielen Dank schon mal im voraus
Definiere einen zusätzlichen PIN für eine "Programm aktiv" LED, für optische Kontrolle.
Initialisiere eine Zeitvariable und setze deinen "Waschzyklus" in eine Schleife:
void setup() {
#PIN-Definitionen
int links = 11;
int rechts = 10;
int LED = 9;
int laufzeit = 0;
}
loop() {
while (laufzeit < 600000) {
waschen();
laufzeit=millis();
}
schleudern();
}
waschen() {
digitalWrite(links, HIGH); // turn the motor left way (HIGH is the voltage level)
delay(10000); // wait for a 10 seconds
digitalWrite(links, LOW); // turn the motor off by making the voltage LOW
delay(2000); // wait for a 2 seconds
digitalWrite(rechts, HIGH); // turn the rightway (HIGH is the voltage level)
delay(10000); // wait for 10 seconds
digitalWrite(rechts, LOW); // turn the motor off by making the voltage LOW
delay(2000); // wait for a 2 seconds
}
schleudern() {
hier noch Steuerung für Schleudern rein?
}
Setzt voraus, dass mit Reset oder Strom an/aus gestartet wird, millis ist Zeit seit letztem Reset.
Um die Drehrichtung von Asynchron-motoren mit Kondensatorhilfsphase zu ändern muß der Kondensator von einer Wicklung auf die andere geschalten werden. Die Relais sollten dazu am besten mechanisch gegeneinander verriegelt werden oder falls das nicht möglich ist wenigstens elektrisch (einen Öffner-Kontakt in den Spulenschaltkreis des jeweils anderen Relais schalten). Oder das eine Relais für die Drehrichtung und das zweite Relais fürs Einschalten des Motors.
Wenn Du nicht mit millis arbeiten willst könntest Du in eine for Schleife die Umpolund sooft wiederholen bis ca 10 min um sind. (genaugesagt 25 mal einen rechts - warten links warten Zyklus)