Finished calculation
This commit is contained in:
@@ -3,6 +3,8 @@
|
|||||||
#include <math.h> /* link against math lib */
|
#include <math.h> /* link against math lib */
|
||||||
#include "calculate.h"
|
#include "calculate.h"
|
||||||
|
|
||||||
|
#define R 8314.3 //J/(kmol*K) (universelle Gaskonstante)
|
||||||
|
#define mw 18.016 //kg/kmol (Molekulargewicht des Wasserdampfes)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Bezeichnungen:
|
Bezeichnungen:
|
||||||
@@ -31,53 +33,50 @@ Formeln:
|
|||||||
AF(r,TK) = 10^5 * mw/R* * DD(r,T)/TK; AF(TD,TK) = 10^5 * mw/R* * SDD(TD)/TK
|
AF(r,TK) = 10^5 * mw/R* * DD(r,T)/TK; AF(TD,TK) = 10^5 * mw/R* * SDD(TD)/TK
|
||||||
*/
|
*/
|
||||||
|
|
||||||
float sdd(float temperature) {
|
static float sdd(float temperature) {
|
||||||
//select constant based on input temperature
|
//select constant based on input temperature
|
||||||
float a = 7.5, b = 237.3;
|
float a = 7.5, b = 237.3;
|
||||||
if (sensor->temperature >= 0) {
|
if (temperature >= 0) {
|
||||||
a = 7.6;
|
a = 7.6;
|
||||||
b = 240.7;
|
b = 240.7;
|
||||||
}
|
}
|
||||||
return 6.1078 * pow(10, (a*temperature) / (b*temperature));
|
return 6.1078 * pow(10, (a * temperature) / (b + temperature));
|
||||||
}
|
}
|
||||||
|
|
||||||
float dd(float relativeHumidity, float temperature) {
|
static float dd(float relativeHumidity, float temperature) {
|
||||||
return relativeHumidity / 100 * sdd(temperature);
|
return relativeHumidity / 100 * sdd(temperature);
|
||||||
}
|
}
|
||||||
|
|
||||||
float r(float temperature, float dewTemperature) {
|
static float r(float temperature, float dewTemperature) {
|
||||||
/* This is optional. Necessary with dew point measurements. */
|
/* This is optional. Necessary with dew point measurements. */
|
||||||
return 100 * sdd(dewTemperature) / sdd(temperature);
|
return 100 * sdd(dewTemperature) / sdd(temperature);
|
||||||
}
|
}
|
||||||
|
|
||||||
//TD(r,T) = b*v/(a-v) mit v(r,T) = log10(DD(r,T)/6.1078)
|
static float v(float relativeHumidity, float temperature) {
|
||||||
|
|
||||||
float v(float relativeHumidity, float temperature) {
|
|
||||||
log10(dd(relativeHumidity, temperature)/6.1078);
|
log10(dd(relativeHumidity, temperature)/6.1078);
|
||||||
}
|
}
|
||||||
|
|
||||||
float td(float relativeHumidity, float temperature) {
|
static float td(float relativeHumidity, float temperature) {
|
||||||
//select constant based on input temperature
|
//select constant based on input temperature
|
||||||
float a = 7.5, b = 237.3;
|
float a = 7.5, b = 237.3;
|
||||||
if (sensor->temperature >= 0) {
|
if (temperature >= 0) {
|
||||||
a = 7.6;
|
a = 7.6;
|
||||||
b = 240.7;
|
b = 240.7;
|
||||||
}
|
}
|
||||||
return b * v(relativeHumidity, temperature) / (a - v(relativeHumidity, temperature));
|
return b * v(relativeHumidity, temperature) / (a - v(relativeHumidity, temperature));
|
||||||
}
|
}
|
||||||
|
|
||||||
float absoluteHumidity(sensor *sensor) {
|
static float af(float relativeHumidity, float temperature) {
|
||||||
//select constant based on input temperature
|
float tk = temperature + 273.15;
|
||||||
float a = 7.5, b = 237.3;
|
return pow(10, 5) * mw/R * dd(relativeHumidity, temperature) / tk;
|
||||||
if (sensor->temperature >= 0) {
|
}
|
||||||
a = 7.6;
|
|
||||||
b = 240.7;
|
float absoluteHumidity(sensor *sensor) {
|
||||||
}
|
return af(sensor->humidity, sensor->temperature);
|
||||||
|
}
|
||||||
|
|
||||||
float sdd_T = sdd(sensor->temperature);
|
int compareSensors(sensor *inside, sensor *outside) {
|
||||||
float dd = dd(sensor->humidity, sensor->temperature);
|
if (absoluteHumidity(inside) <= absoluteHumidity(outside)) return 1;
|
||||||
float relativeHumidity = r(
|
return 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user