// Berechnung der Feuchte über die Sättigungsfeuchte und die Temperatur // // Die gemessene Temperatur ist (empirisch ernittelt) um 3.2°C zu hoch, deshalb ist die gemessene // Feuchte immer deutlich zu niedrig. Mit Hilfe der Sättigungs-Tabelle wird nun die absolute Feuchte bei der // wahren Temperatur (Tmess - 3.2°C) ermittelt und dann die relative Feuchte berechnet. #define INTERPOL #include #include "interpolation.h" // Berechnung des Dampgehaltes bei der gemessenen Temperatur über Interpolation in der dampftabelle // // dampfgehalt = d[t] + ((d[t+1] - d[t]) / 1) * (temp - t) // mit t = int(temp)-indexOffset // d[t] = dampftabelle[t] // temp: gemessene Temperatur // return: Dampfgehalt in g/m3 float getDampfgehalt(float temp) { int index = (int)temp - indexOffset; if (index < 0) { index = 0; } if (index > sizeof(dampftabelle) / sizeof(dampftabelle[0])) { index = sizeof(dampftabelle) / sizeof(dampftabelle[0]) - 1; } float d1 = dampftabelle[index]; float d2 = dampftabelle[index + 1]; return d1 + ((d2 - d1) / 1) * (temp - (index + indexOffset)); } // Berechnung der relativen Feuchte // // temp: gemessene Temperatur // hum: gemessene relative Feuchte // return: relative Feuchte int getRelativeFeuchte(float temp, float hum) { float dampfmess = getDampfgehalt(temp); float dampfecht = getDampfgehalt(temp - tempOffset); return round((dampfmess * hum / dampfecht) + humOffset); }