Go Down

Topic: Abschaltung nach 10 Minuten (Read 740 times) previous topic - next topic

nokusonna

Feb 24, 2013, 02:46 am Last Edit: Feb 24, 2013, 09:57 pm by uwefed Reason: 1
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.
Code: [Select]
/*
 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

[EDIT] CODE Tags hinzugefügt Grüße Uwe[/EDIT]

maverick1509

Ich weiß nicht ob du millis() kennst, die Funktion gibt immer die abgelaufene Zeit des Arduino ab Start in Millisekunden zurück.

Definier eine Variablen
unsigned long start;
In der Loop schreibst du als erstes
start = millis();
do {

.
.
mach das was du willst
.
.

} while (millis() - start < 600000); // 600000 Millisekunden sind 10 Min

dischneider

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:

Code: [Select]


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.

Liebe Grüße

Dirk
using arduino leonardo, arduino uno ...
--
tomorrow today will only be yesterday, so live your life today!

uwefed

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)

Grüße Uwe

Udo Klein

Man könnte auch auf die Idee kommen, daß das genau das gleiche Problem wie bei der Leuchtturm Karte ist.

http://arduino.cc/forum/index.php/topic,146086.30.html

Nur, daß hier nicht Millisekunden sondern Sekunden aufgelöst werden.

Im Main Loop müsste man dann nur noch warten bis 10 Minuten um sind und dann alles stoppen.
Check out my experiments http://blog.blinkenlight.net

Go Up