Interpolation zum Berechnen der Feuchte
This commit is contained in:
44
src/interpolation.cpp
Normal file
44
src/interpolation.cpp
Normal file
@@ -0,0 +1,44 @@
|
||||
// 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.
|
||||
|
||||
#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);
|
||||
}
|
||||
Reference in New Issue
Block a user