High resolution barometer and altimeter using i2c mode

Dependents:   Q2_Stabi

Fork of ms5611 by Kevin Braun

Revision:
5:0d7b229474c6
Parent:
3:c2d1b0d432ad
Child:
6:41c370fa1f7b
diff -r f7b0ad1b5751 -r 0d7b229474c6 ms5611.cpp
--- a/ms5611.cpp	Mon May 13 22:27:13 2013 +0000
+++ b/ms5611.cpp	Fri May 17 16:16:16 2013 +0000
@@ -16,9 +16,10 @@
 #include "mbed.h"
 #include "ms5611.h"
 
-double P;                       // compensated pressure value
-double T;                       // compensated temperature value
-double A;                       // altitude
+double P;                       // compensated pressure value (mB)
+double T;                       // compensated temperature value (degC)
+double A;                       // altitude (ft)
+double S;                       // sea level barometer (mB)
 
 uint32_t C[8];                  //coefficient storage
 
@@ -312,7 +313,8 @@
 } 
 
 //********************************************************
-//! @brief get pressure, no calculation
+//! @brief get altitude from known sea level barometer, 
+//! @      no pre-pressure calculation
 //!
 //! @enter float sea level barometer
 //! @return float altitude in feet
@@ -322,3 +324,29 @@
     A = (1 - (pow((P / (double)sea_pressure), 0.190284))) * 145366.45;
     return((float)A);
 } 
+
+//********************************************************
+//! @brief get sea level pressure from known altitude(ft), 
+//! @      no pre-pressure calculation
+//!
+//! @enter float known altitude in feet
+//! @return float seal level barometer in mb
+//********************************************************  
+
+float ms5611::getSeaLevelBaroFT(float known_alt) {
+    S = pow(pow((P * INHG), 0.190284) + 0.00001313 * known_alt , 5.2553026) * MB;
+    return((float)S);
+} 
+
+//********************************************************
+//! @brief get sea level pressure from known altitude(m), 
+//! @      no pre-pressure calculation
+//!
+//! @enter float known altitude in meters
+//! @return float seal level barometer in mb
+//********************************************************  
+
+float ms5611::getSeaLevelBaroM(float known_alt) {
+    S = pow(pow((P * INHG), 0.190284) + 0.00001313 * known_alt * FTMETERS , 5.2553026) * MB;
+    return((float)S);
+}