High resolution barometer and altimeter using i2c mode
Fork of ms5611 by
Diff: ms5611.cpp
- Revision:
- 5:0d7b229474c6
- Parent:
- 3:c2d1b0d432ad
- Child:
- 6:41c370fa1f7b
--- 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); +}