Witam
Masz tu klasyczny przykład histerezy. Przy przekaźnikach może to nawet doprowadzić do migotania i sklejenia zestyków - czyli bardzo niebezpieczne zjawisko.
Jak sobie z tym poradzić?
Przez wprowadzenia do klasycznej teorii sterowania histerezy właśnie :-)
Czyli dodaj do swojego programu zmienną globalną:
volatile int histereza=0;
a potem w kodzie:
To volatile jest po to aby procesor nie upraszczał sobie zadania, i zmieniał wartość histerezy na bieżąco, bez uproszczeń (tzn. dopiero po wyjściu z if-a na przykład). Można tego nie robić, ale lepiej warto :-)
Pozdrawiam
Masz tu klasyczny przykład histerezy. Przy przekaźnikach może to nawet doprowadzić do migotania i sklejenia zestyków - czyli bardzo niebezpieczne zjawisko.
Jak sobie z tym poradzić?
Przez wprowadzenia do klasycznej teorii sterowania histerezy właśnie :-)
Czyli dodaj do swojego programu zmienną globalną:
volatile int histereza=0;
a potem w kodzie:
Kod:
if(h > (maxHum+histereza) || t > maxTemp) {
histereza=-5;
digitalWrite(fan, HIGH);
myGLCD.print("Wentylator: ON ", 20, 400);
}
else {
histereza=0;
digitalWrite(fan, LOW);
myGLCD.print("Wentylator: OFF", 20, 400);
}
Pozdrawiam