Mittwoch, 5. August 2020

Optimierung der automatischen KWL Steuerung und Filterbox

Da hier viele Technik-Begeisterte mitlesen, mal wieder ein Update zur Steuerung unserer Lüftungsanlage. 

Ich hab in der Vergangenheit immer versucht den Lüftungsbedarf nach DIN möglichst genau zu berechnen und einzustellen. Aber wozu eigentlich? Unser Haus ist ja kein öffentliches Gebäude, für das man irgendwelche Nachweise erbringen müsste. Es ist ja nicht so, dass ein paar Kubik Abweichung von der DIN gleich zu schlechter Luft führen. Im Moment (aber ich überleg mir das immer mal wieder neu 😃) scheint es mir sinnvoller die Bandbreite des Geräts möglichst gut auszunutzen. Die Leistung des Geräts lässt sich mit 1-10V ansteuern. Ich hab aktuell folgende 4 Stufen (für die Abluft) festgelegt:
  • Stufe 1: 3V (bei warmer oder kalter Außenluft oder zu trockener Innenluft)
  • Stufe 2: 6V (Standard)
  • Stufe 3: 8V (um in Sommernächten kühle Luft ins Haus zu bringen)
  • Stufe 4: 10V (Stoßlüftung z.B. nach Raclette oder wenn's im Bad zu feucht ist)
Wie viel Luftaustausch das entspricht, ist mir dabei nun relativ egal. Wobei Stufe 3 in etwa der Nennlüftung und Stufe 2 in etwa der reduzierten Lüftung nach DIN entspricht. Wir lassen die Anlage standardmäßig auf Stufe 2 laufen, was gefühlt ausreicht.
Außerdem berechne ich den Taupunkt der Innenluft und sobald sich die Außentemperatur daran annähert, wird die Zuluft 5% runter gedrosselt. Das sorgt für leichten Unterdruck im Haus und verhindert dadurch, dass warme Luft von innen nach außen drückt und in der Wand oder an den Innenseiten der geschlossenen Rollläden kondensiert. Keine Ahnung ob das in der Wand wirklich passieren kann, aber an den Rollläden hatten wir das Problem schon. Auch Nachbarn ohne Lüftungsanlage haben das. Mit leichtem Unterdruck im Haus passiert das jetzt tatsächlich nicht mehr, hat also schon was gebracht. 

Die Leistungsstufen werden wie folgt automatisch ausgewählt:
    if ($aussenluftTemp > $stopHeatThreshold || ($currentLevel == 0 && $aussenTemp > $stopHeatThreshold)){
        fhem("setreading $dev ControlMode StopHeat");
        Log 3, "$dev It's hot outside. Stop ventilators to keep hot air outside.";
        SetLevel($dev$levelStopHeat);
    } elsif ($aussenluftTemp > $innenTemp || ($currentLevel == 0 && $aussenTemp > $innenTemp)){
        fhem("setreading $dev ControlMode HeatProtection");
        Log 3, "$dev It's warm outside. Reduce level to keep warm air outside.";
        SetLevel($dev$levelHeatProtection);
    } elsif ($humidityBathroom > $humidityUpperThreshold && $humidityFreshAir < $humidityUpperThreshold - 5.0){
        fhem("setreading $dev ControlMode BathroomDrying");
        Log 3, "$dev It's too moisty in bathroom. Power fan to get moist air outside.";
        SetLevel($dev$levelDrying);
    } elsif ($coolingAllowed == 1 && ($innenTemp > $coolingThresholdTemp || $hotForecast == 1) && $aussenluftTemp < $innenTemp - 3.0){
        fhem("setreading $dev ControlMode HeatCooling");
        Log 3, "$dev It's too warm inside or hot weather is forecasted. Increase level to cool down with fresh air from outside. ";
        SetLevel($dev$levelHeatCooling);
    } elsif ($aussenluftTemp < $frostProtectionThreshold){
        fhem("setreading $dev ControlMode FrostProtection");
        Log 3, "$dev It's cold outside. Reduce level to keep cold air outside.";
        SetLevel($dev$levelFrostProtection);
    } elsif ($humidity < $humidityLowerThreshold && $humidityFreshAir < $humidity){
        fhem("setreading $dev ControlMode DryAirProtection");
        Log 3, "$dev It's too dry inside. Reduce level to keep dry air outside.";
        SetLevel($dev$levelDryAirProtection);
    } else {
        fhem("setreading $dev ControlMode Normal");
        Log 3, "$dev Climate is fine. Running in standard level.";
        SetLevel($dev$levelNormal);
    }  
Ich denke der Code-Schnipsel ist halbwegs selbsterklärend.
$humidity = aktuelle relative Luftfeuchtigkeit im Haus
$humidityFreshAir = relative Luftfeuchtigkeit der Außenluft umgerechnet auf die relative Luftfeuchtigkeit bei Innentemperatur. (*)
$humidityLowerThreshold und $humidityUpperThreshold sollen die Luftfeuchtigkeit zwischen 50% und 60% einpegeln. 
Die 50% Minimum hat unser Hausbauer empfohlen, weil (deutlich) trockenere Luft zu Verformungen oder Rissen im Holz führen könnte. Hat bisher ganz gut geklappt und wir rutschen im Winter nicht mehr deutlich unter 50%. Allerdings war dieses Jahr auch kein wirklicher Winter. 

(*) Falls das jemand benötigt, hier noch der Code zur Umrechnung der gemessenen Luftfeuchtigkeit auf eine andere Temperatur. Die Formeln sind aus dem Netz zusammen gesucht, ich hoffe sie stimmen.
Ich finde das sehr nützlich, weil ich mir damit auch im Dashboard anzeigen lassen kann ob lüften mehr oder weniger Feuchtigkeit ins Haus bringt. 

# rH_in: Gemessene Luftfeuchtigkeit bei Temperatur 1 # temp_in: Temperatur 1 # temp_out: Temperatur 2 (Zieltemperatur in die umgerechnet werden soll) sub ConvertHumidityToOtherTemperature($$$) {    my ($rH_in,$temp_in,$temp_out) = @_;    my $eSat_in = CalculateSaturationVaporPressure($temp_in);  # Sättigungsdampfdruck    my $e_in = ($rH_in / 100) * $eSat_in;  # Wasserdampf-Partialdruck my $aH_in = $e_in / (461.51 * ($temp_in + 273.15));  # Absolute Luftfeuchtigkeit    my $eSat_out = CalculateSaturationVaporPressure($temp_out);  # Sättigungsdampfdruck    my $sat_out = $eSat_out / (461.51 * ($temp_out + 273.15));  # Wasserdampfsättigungskonzentration      my $rH_out = $aH_in / $sat_out# Relative Luftfeuchtigkeit Zieltemperatur    return sprintf("%.0f"$rH_out * 100); } sub CalculateSaturationVaporPressure($) {    my ($temp) = @_;    # Magnus-Formel zur Berechnung des Sättigungsdampfdruck    my $a = ($temp > 0) ? 17.62 : 22.46;    my $b = ($temp > 0) ? 243.12 : 272.62;    my $eSat = 611.2 * exp(($a * $temp) / ($temp + $b)); }


Filterbox

Für Allergiker ein großer Vorteil der kontrollierten Wohnraumbelüftung ist, dass sich die Frischluft durch einen Pollenfilter reinigen lässt. Der Hersteller sieht hierfür einen Platz im Gerät vor. Im Zuluft-Kanal, also hinter dem Wärmetauscher. Das heißt, Pollen kommen ungehindert ins Gerät, gehen durch den Wärmetauscher und werden erst raus gefiltert bevor's ab in die Räume geht. Die Folge ist eine dicke Pollenschicht im ganzen Gerät. Und da im Gerät nur wenig Platz ist, sind das nur kleine Filter, die der Luft viel Widerstand bieten und sich schnell zusetzen.
Ich hab mir deshalb schon vor dem letzten Frühjahr eine Filterbox gebaut, die vor dem Gerät sitzt, so dass nur noch saubere Luft ins Gerät kommt. Die Box hat einen Querschnitt von 30x30 cm und ist lang genug für eine G4-Filtermatte (Grobfilter) und F7 oder F9 Taschenfilter (Feinfilter). Diese Filter haben eine vielfach größere Fläche als die Filter im Gerät und bieten dadurch wesentlich weniger Widerstand und setzen sich wesentlich langsamer zu. Das spart Strom und Kosten für neue Filter.
Beim Bau der Box ist zu beachten, dass sie luftdicht und gut gedämmt sein muss. Ich hab eine Holzkiste gebaut und dann auf den Innenseiten Dämmung (Styrodur) angebracht. Manche bauen aber auch einfach nur eine Kiste aus Styrodur, ohne Holz drum rum. Styrodur (kein Styropor, das ist zu porös!) ist jedenfalls, finde ich, eine gute Wahl, Stöße und Kanten können mit Silikon abgedichtet werden.
Es gibt auch fertige Filterboxen zu kaufen, die sind aber meistens nicht gedämmt, lassen sich also nicht am Außenluft-Rohr einsetzen.



Keine Kommentare:

Kommentar veröffentlichen