@@ -495,6 +495,36 @@ float BME280::readTempF( void )
495495 return output;
496496}
497497
498+ // ****************************************************************************//
499+ //
500+ // Dew point Section
501+ //
502+ // ****************************************************************************//
503+ // Returns Dew point in DegC
504+ double BME280::dewPointC (void )
505+ {
506+ double celsius = readTempC ();
507+ double humidity = readFloatHumidity ();
508+ // (1) Saturation Vapor Pressure = ESGG(T)
509+ double RATIO = 373.15 / (273.15 + celsius);
510+ double RHS = -7.90298 * (RATIO - 1 );
511+ RHS += 5.02808 * log10 (RATIO);
512+ RHS += -1.3816e-7 * (pow (10 , (11.344 * (1 - 1 /RATIO ))) - 1 ) ;
513+ RHS += 8.1328e-3 * (pow (10 , (-3.49149 * (RATIO - 1 ))) - 1 ) ;
514+ RHS += log10 (1013.246 );
515+ // factor -3 is to adjust units - Vapor Pressure SVP * humidity
516+ double VP = pow (10 , RHS - 3 ) * humidity;
517+ // (2) DEWPOINT = F(Vapor Pressure)
518+ double T = log (VP/0.61078 ); // temp var
519+ return (241.88 * T) / (17.558 - T);
520+ }
521+
522+ // Returns Dew point in DegF
523+ double BME280::dewPointF (void )
524+ {
525+ return (dewPointC () * 1.8 + 32 ); // Convert C to F
526+ }
527+
498528// ****************************************************************************//
499529//
500530// Utility
0 commit comments