一、大气压传感器简介
BMP180是一种数字式大气压传感器,由德国博世公司开发。它采用了微电子机械系统(MEMS)技术,可以测量大气压力和温度。BMP180传感器具有高精度、低功耗和小尺寸的特点。BMP180传感器通过测量大气压力来推算海拔高度和气压变化,可以用于气象观测、气候研究以及天气预报等应用领域。此外,它还可以通过测量温度来提供环境温度数据。其实物图说明见下图1。

BMP180传感器的工作原理是利用压阻式传感器来测量大气压力,其内部附带温度传感器,可对气压测量值进行补偿提高测量精度。它采用I2C数字接口,可以与微控制器或单片机进行通信,以获取传感器提供的数据。BMP180传感器是一种常用于大气压力和温度测量的数字式传感器,具有高精度、低功耗和小尺寸的特点,广泛应用于气象观测、气候研究和天气预报等领域。
二、工作原理
2.1 工作模式
BMP180共有四种工作模式,每种模式有不同的采样数量、转换速度和噪声等参数的不同。可以通过写入ctrl_meas寄存器来设置模式,默认为第一个ultra low power超低功耗。说明见下图2。

2.2 校准参数
BMP180的气压和温度数值并不是可以直接读取的,每个不同的传感器中,都有自己独特的校准数值,存储在内置的E2PROM存储器中。当微处理器读取传感器的原始温度和气压数值后,再根据E2PROM中的校准数值进行转换,才能得到真正的温度、气压数据。每个校准数值的存储的寄存器地址如下图3所示,微处理器可以通过这些地址读取校准数值。

2.3 读取传感器数据
读取传感器的数据可查看传感器手册得知,一般流程如下:
- 读取校准数值
把16位的校准数值读取到微处理器中,可以看到一共有11个数值。需要注意的是高位存储在MSB地址,低位存储在LSB地址。例如数值AC1,高八位存储在0xAA地址,低八位存储在0xAB地址。如下图4。

- 读取温度、气压初始值
温度初始值读取步骤:往寄存器0xf4写入0x2e,等待4、5ms;→读取0xf6(高八位)和0xf7(低八位)两个寄存器;→换算: UT=MSB <<8 +LSB。
气压初始值读取步骤:往寄存器0xf4写入0x34(如果不是默认的工作模式,需要加上oss左移六位的结果,oss为设置工作模式的寄存器0xf4的bit7、bit6位),等待4、5ms;→读0xf6(16-23位)、0xf7(8-15位)和0xf8(0-7位)三个寄存器;→换算: UP=MSB <<16 + LSB<<8 + XLSB >> (8-oss(这个同温度初始值读取一样))。具体读取过程见下图5。

- 计算温度、气压
根据第一步读出来的校准系数和第二步读出来的UT、UP进行换算,最后得出来的T(温度,每个数值代表0.1摄氏度),p(气压,每个数值代表1帕)。具体过程如下图6。