iblancasa / hackathon_telefonicaTodosIncluidos

Aplicación para el Hackathon de Telefónica
GNU General Public License v2.0
1 stars 1 forks source link

Formula de temperatura #3

Open terceranexus6 opened 9 years ago

terceranexus6 commented 9 years ago

se llama temperatura relativa

terceranexus6 commented 9 years ago

http://www.vaisala.com/Vaisala%20Documents/Application%20notes/Humidity_Conversion_Formulas_B210973EN-F.pdf

terceranexus6 commented 9 years ago

https://github.com/practicalarduino/SHT1x

terceranexus6 commented 9 years ago

The calculation is performed using a form of the Clausius-Clapeyron equation:

P = Po e -H / R T

where P is the saturated water vapor pressure, Po is a pre-exponential factor (7.51E08 mm Hg, equivalent to the vapor pressure of water at infinite temperature), H is the enthalpy of evaporation (42.3 kJ/mol), R is the gas constant (8.314 J/Kmol) and T is the absolute temperature (in K). Po and H were chosen so that the equation fits two data points exactly; 17.535 mm Hg at 20 C and 760 mm Hg at 100 C.

Knowing the saturated water vapor pressure, which is only dependent upon temperature, the absolute water vapor pressure is calculated directly using the relative humidity. To calculate the relative humidity at a second temperature, the saturated water vapor pressure is again calculated, and the original absolute vapor is divided by this number. Both saturated vapor pressures may be observed in the Java console.

To calculate the dewpoint, the Clausius-Clapeyron equation is solved for temperature, and the absolute humidity is used as the independent variable.

terceranexus6 commented 9 years ago

double dewPoint(double celsius, double humidity) { double A0= 373.15/(273.15 + celsius); double SUM = -7.90298 * (A0-1); SUM += 5.02808 * log10(A0); SUM += -1.3816e-7 * (pow(10, (11.344(1-1/A0)))-1) ; SUM += 8.1328e-3 * (pow(10,(-3.49149(A0-1)))-1) ; SUM += log10(1013.246); double VP = pow(10, SUM-3) * humidity; double T = log(VP/0.61078); // temp var return (241.88 * T) / (17.558-T); }

// delta max = 0.6544 wrt dewPoint() // 5x faster than dewPoint() // reference: http://en.wikipedia.org/wiki/Dew_point double dewPointFast(double celsius, double humidity) { double a = 17.271; double b = 237.7; double temp = (a * celsius) / (b + celsius) + log(humidity/100); double Td = (b * temp) / (a - temp); return Td; }

include

dht11 DHT11;

define DHT11PIN 12

void setup() { Serial.begin(115200); Serial.println("DHT11 TEST PROGRAM "); Serial.print("LIBRARY VERSION: "); Serial.println(DHT11LIB_VERSION); Serial.println(); }

void loop() { Serial.println("\n");

int chk = DHT11.read(DHT11PIN);

Serial.print("Read sensor: "); switch (chk) { case 0: Serial.println("OK"); break; case -1: Serial.println("Checksum error"); break; case -2: Serial.println("Time out error"); break; default: Serial.println("Unknown error"); break; } delay(2000);

Serial.print("Humidity (%): "); Serial.println((float)DHT11.humidity, 2);

Serial.print("Temperature (oC): "); Serial.println((float)DHT11.temperature, 2);

Serial.print("Temperature (oF): "); Serial.println(Fahrenheit(DHT11.temperature), 2);

Serial.print("Temperature (K): "); Serial.println(Kelvin(DHT11.temperature), 2);

Serial.print("Dew Point (oC): "); Serial.println(dewPoint(DHT11.temperature, DHT11.humidity));

Serial.print("Dew PointFast (oC): "); Serial.println(dewPointFast(DHT11.temperature, DHT11.humidity));

delay(2000); } // // END OF FILE //