Inhaltsverzeichnis
Aktualisiert – Januar 7, 2023
Eine luftfeuchteabhängige Lüftungssteuerung vermeidet die Kondenswasserbildung. Die Niessmann-Bischof Flair-Modelle verfügen meist über einen Frontscheiben-Rollladen. Dieser hält die Kälte sehr gut draußen und sorgt für eine Temperaturdifferenz von etwa 14 °C (z.B. 4 °C zwischen Rollladen und Frontscheibe, 18 °C im Wohnraum hinter dem Rollladen).
Der Vorteil dieser isolationstechnisch guten Abtrennung von Wohn- zu Frontscheibenbereich ist, dass die Wärme im Wohnbereich wirksam auf innen fokussiert bleibt. Nachteilig ist jedoch, dass sich an der Frontscheibe in Folge des großen Temperatur-Unterschiedes und der damit einhergehenden, deutlich höheren Luftfeuchte, Kondenswasser niederschlägt.
Dies zu minimieren oder gar zu unterbinden ist Zweck der hier vorgestellten, automatisierten Belüftungsfunktion mittels des eingebauten Fahrzeuglüfters (Fiat Ducato 244 Variante).
Verkabelung
Parallel zu der weiß-schwarzen Leitung des Lüfter-Anschlusses am Wahlschalter im Armaturenbrett des Fahrzeugs wird ein Kabel zu einem der vier potenzialfreien Relais-Kontakten des Homematic 4-fach Relais-Moduls gezogen. Der zugehörige zweite Relais-Kontakt wird mit Batterie-Plus verbunden.
Wird das Relais programmgesteuert bei Überschreiten eines kritischen Luftfeuchte-Wertes aktiviert, schaltet die erste Stufe des Fahrzeuglüfters ein, bei Erreichen eines unkritischen Wertes wieder aus.
Benötigte Hardware
Die zu installierende Hardware beschränkt sich auf zwei Homematic-Komponenten:
- Homematic 4-fach Relais-Modul HM-LC-Sw4-W
- Homematic Temperatur-Feuchte-Sensor innen HM-WDS40-TH-I-2
- Homematic Wandthermostat HM-TC-IT-WM-W-EU
Programmierung
Das abgebildete Programm speichert die aktuell gemessene Luftfeuchte, sowie die Temperatur des Temperatur-Feuchte-Sensors im Fahrerhaus in den Variablen F_FH
und T_FH
, sowie die Temperatur und Feuchte des Wandthermostaten in den Variablen T_WT
und F_WT
. Die daraus errechneten Werte ergeben letztlich die Empfehlung „lueften
“ oder „nicht lueften
„. die in der Variablen Lueften abgelegt wird.
Entsprechend dem Ergebnis wird z.B. Kanal 1
des 4-fach Relais-Moduls, respektive der Lüftermotor auf Stufe 1, eingeschaltet.
Das Programm:
Der Code:
real T_WT = dom.GetObject("T_actual_WT").Value();
WriteLine("T_actual_WT / T_WT");WriteLine(T_WT);
real F_WT = dom.GetObject("F_actual_WT").Value();
WriteLine("F_actual_WT / F_WT");WriteLine(F_WT);
real T_FH = dom.GetObject("T_actual_FH").Value();
WriteLine("T_actual_FH / T_FH");WriteLine(T_FH);
real F_FH = dom.GetObject("F_actual_FH").Value();
WriteLine("F_actual_FH / F_FH");WriteLine(F_FH);
var Lueften = dom.GetObject("Lueften").Value();
integer rF_WT = F_WT; ! relative Feuchte in % innen
integer rF_FH = F_FH; ! relative Feuchte in % außen
real r = (17.62 * T_WT) / (243.12 + T_WT);WriteLine("r (WT)");WriteLine(r);
real e = r.Exp()*611.2;WriteLine("e (WT)");WriteLine(e);
real eSat = e * rF_WT;WriteLine("eSat (WT)");WriteLine(eSat);
real F_WT = ((eSat / 461.51 * (T_WT+273.15))10).ToString(2);WriteLine("F_WT");WriteLine(F_WT); WriteLine("abs. Feuchte innen e (WT): " + F_WT);
real r = (17.62 * T_FH) / (243.12 + T_FH);WriteLine("r (FH)");WriteLine(r);
real e = r.Exp()*611.2;WriteLine("e (FH)");WriteLine(e);
real eSat = e * rF_FH;WriteLine("eSat (FH)");WriteLine(eSat);
real F_FH = ((eSat / 461.51 * (T_FH+273.15))10).ToString(2);WriteLine("F_FH");WriteLine(F_FH); WriteLine("abs. Feuchte aussen e: " + F_FH);
! Absoluten Feuchte - innen
if (T_WT < 0.0) {T_WT = 0.0;}
if (T_WT < 10.0)
{ F_WT = (3.78 + (0.29 * T_WT) + (0.0046 * T_WT * T_WT) + (0.00051 * T_WT * T_WT * T_WT)) * 0.01 * rF_WT;
WriteLine("F_WT abs.F if T_WT < 10.0");WriteLine(F_WT);
}
else
{ F_WT = (7.62 + (0.51 * (T_WT-10.0)) + (0.0143 * (T_WT-10.0) * (T_WT-10.0)) + (0.00045 * (T_WT-10.0) * (T_WT-10.0) * (T_WT-10.0))) * 0.01 * rF_WT;
WriteLine("F_WT abs.F else");WriteLine(F_WT);
}
! Absoluten Feuchte - außen
if (T_FH < 0.0) {T_FH = 0.0;}
if (T_FH < 10.0)
{ F_FH = (3.78 + (0.29 * T_FH) + (0.0046 * T_FH * T_FH) + (0.00051 * T_FH * T_FH * T_FH)) * 0.01 * rF_FH;
WriteLine("F_FH abs.F if T_FH < 10.0");WriteLine(F_FH);
}
else
{ F_FH = (7.62 + (0.51 * (T_FH-10.0)) + (0.0143 * (T_FH-10.0) * (T_FH-10.0)) + (0.00045 * (T_FH-10.0) * (T_FH-10.0) * (T_FH-10.0))) * 0.01 * rF_FH;
WriteLine("F_FH abs.F else");WriteLine(F_FH);
}
WriteLine(" ");
WriteLine("Temperatur innen: (T_WT)" + T_WT);
WriteLine("rel. Feuchte innen (rF_WT)%: " + rF_WT);
WriteLine("abs. Feuchte innen: F_WT)" + F_WT);
WriteLine("Temperatur aussen: (T_FH)" + T_FH);
WriteLine("rel. Feuchte aussen (rF_FH)%: " + rF_FH);
WriteLine("abs. Feuchte aussen: (F_FH)" + F_FH);
! Sättigung (0,5 g/kg bei 0,7 K Hysterese)
if ((F_FH <= (F_WT - 0.8)) && (T_FH <= (T_WT - 1.0)) && (T_WT > 20.7))
{Lueften.State(true);}
else
{ if ((F_FH >= (F_WT - 0.3)) || (T_FH >= (T_WT - 0.3)) || (T_WT <= 20.0))
{Lueften.State(false);}
}
WriteLine(„Lueften“);WriteLine(Lueften);
Die Variablen werden in einem externen Programm aus den jeweiligen Temperatur-/Feuchte-Sensoren ausgelesen und so allen übrigen Programmen ohne erneute Sensor-Abfrage (zwecks Minimierung des DutyCyclesund in diesem Programm zur Berechnung der Empfehlung „Lüften“ oder „Nicht Lüften“ herangezogen.
Wie immer: alle WriteLine
Anweisungen können nach Funktionsprüfung mit einem führenden „!
“ auskommentiert oder gelöscht werden.
Wer die Berechnungsgrundlagen näher erläutert haben möchte, wird hier fündig.