diff --git a/Adafruit_BMP085/Adafruit_BMP085.py b/Adafruit_BMP085/Adafruit_BMP085.py index e8d0e314..f3ac5ba3 100755 --- a/Adafruit_BMP085/Adafruit_BMP085.py +++ b/Adafruit_BMP085/Adafruit_BMP085.py @@ -1,6 +1,7 @@ #!/usr/bin/python import time +from decimal import Decimal from Adafruit_I2C import Adafruit_I2C # =========================================================================== @@ -257,3 +258,11 @@ def readAltitude(self, seaLevelPressure=101325): return altitude return 0 + + # With the measured pressure and the absolute altitude the pressure at sea level can be calculated + # see BMP085 datasheet: 3.7 Calculating pressure at sea level + def getRealPressure(self, altitude): + pressure = self.readPressure() + denominator = pow(Decimal(1) - (Decimal(altitude) / Decimal(44330)), Decimal(5.255)) + + return pressure / denominator diff --git a/Adafruit_BMP085/Adafruit_BMP085_example.py b/Adafruit_BMP085/Adafruit_BMP085_example.py index e7143c8a..d1b884eb 100755 --- a/Adafruit_BMP085/Adafruit_BMP085_example.py +++ b/Adafruit_BMP085/Adafruit_BMP085_example.py @@ -21,6 +21,10 @@ # Read the current barometric pressure level pressure = bmp.readPressure() +# get the real barometric pressure on sea level +# pass the absolute altitude of the sensors position as parameter +realPressure = bmp.getRealPressure(720) + # To calculate altitude based on an estimated mean sea level pressure # (1013.25 hPa) call the function as follows, but this won't be very accurate altitude = bmp.readAltitude() @@ -32,4 +36,5 @@ print "Temperature: %.2f C" % temp print "Pressure: %.2f hPa" % (pressure / 100.0) +print "Real pressure: %.2f hPa" % (realPressure / 100) print "Altitude: %.2f" % altitude