Go Down

Topic: etwas ausführen nur wenn ein analoger value ca 10 sek einen bestimmten wert hat (Read 558 times) previous topic - next topic

currymuetze

Hi,
ich habe gerade keine idee, wie ich das hinbekomme, vielleicht denke ich auch zu kompliziert  :smiley-eek-blue:
Ich möchte, dass meine Lüfter nur dann loslaufen, wenn eine bestimmte Temperatur überschritten wird. Läuft soweit auch ganz gut, allerdings nervt es, wenn die Temperatur zwischen 25.4 und 25.6 grad schwankt, dann geht der lüfter immer an und sofort wieder aus.
Daher möchte ich ne bedinung einbauen, das der lüfter nur anspringen soll, wenn die temperatur mind. 10 sek über 25.5 grad lag (sobald sie einmal wieder unter 25.5 fällt sollen die 10 sek wieder von vorne loszählen.

Steh grad aufm schlauch, hoffe jemand hat ne idee,
Gruß

HIer der code:
Code: [Select]
void getWind() {
if (windstille==true) {
  if (Celsius0<25.5) {
    digitalWrite(luefter1, LOW);
    digitalWrite(luefter2, LOW);
    anlauf=true;
    windphase="windstill";
  }
  else if (Celsius0>=27.5) {
    digitalWrite(luefter1, HIGH);
    digitalWrite(luefter2, HIGH);
    anlauf=false;
    windphase="STURM";
  }
  else if (Celsius0>=25.5 && Celsius0<27.5) {
    if (anlauf==true) {
      digitalWrite(luefter1, HIGH);
      digitalWrite(luefter2, HIGH);
      delay(2000);
      anlauf=false;
    }
    else if (anlauf==false) {
      if (Celsius0>=25.5 && Celsius0<26) {
        w=50;
      }
      else if (Celsius0>=26 && Celsius0<26.5) {
        w=100;
      }
      else if (Celsius0>=26.5 && Celsius0<27) {
        w=150;
      }
      else if (Celsius0>=27 && Celsius0<27.5) {
        w=200;
      }
      analogWrite(luefter1, w);
      analogWrite(luefter2, w);
  }
}
}



uwefed

Da ist es einfacher eine Hysterese einbauen:
Anschalten bei 25,5Grad und ausschalten bei 24,5Grad.
Grüße Uwe

currymuetze

Was genau ist eine Hysterese?
eigentlich mach ich das doch so:
bei 25.5° schaltet der lüfter ein, unter 25.5° aus.



uwefed

Nein, das ist keine Hysterese.

Hysteresse ist ein Bereich in dem kein Wechsel stattfindet. Dies genau wegen Deines Problems, daß der Ausgang dauert ein-aus-schaltet, weil die Temperatur etwas instabil ist.

Ich schlug vor bei 25,5 einschalten
und bei 24,5 ausschalten.
So hast Du einen Bereich von 1 Grad bei dem nichts passiert und darum haben Störungen von fast einem Grad keine Auswirkungen.   

Grüße Uwe

currymuetze


uwefed

Viel Glück.
Wenn die Temperaturregelung darum zu ungenau wird dann brauchst Du eine Proportionalregelung des Ventilators (PWM).
Grüße Uwe

currymuetze

der lüfter läuft über pwm und ich habe den jetzt auch proportional eingestellt.
muss nur noch einwenig an den richtigen werten spielen, normalwert der temperatur in einem aqua sollte 25° sein.
Code: [Select]
if (windstille==true) {
  if (Celsius0<=25.5) {
    digitalWrite(luefter1, LOW);
    digitalWrite(luefter2, LOW);
    anlauf=true;
    w=0;
    anlaufdelay=millis();
  }
  else if (Celsius0>=26.0) {
    if (anlauf==true) {
      if (millis()-anlaufdelay<5000) {
            digitalWrite(luefter1, HIGH);
            digitalWrite(luefter2, HIGH);
      }
      else if (millis()-anlaufdelay>5000) {
            anlauf=false;
      }
    }
    else if (anlauf==false) {
      w=(Celsius0-25.5)*100;
      if (w>255) w=255;
      analogWrite(luefter1, w);
      analogWrite(luefter2, w);
    }
}


Go Up