46 lines
1.5 KiB
C++
46 lines
1.5 KiB
C++
// 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 <math.h>
|
|
#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);
|
|
}
|