BMP180是博世(Bosch)推出的一款高精度数字气压传感器,广泛应用于气压测量、海拔高度计算和天气监测等领域。
现阶段,BMP180 是主流型号。还有一些其他产品:
- BMP085(更老,已逐步停产,仅用于维护旧设备或库存替换,新设计不建议)
- 需要更高性能
- BMP280:检测温度、大气压,更快的响应时间
- BMP388:具有温度、大气压、海拔检测功能
- BME280:环境传感器,集成湿度测量,包括温度、湿度、气压
- BME680:更精确
以下是关于 BMP180 的关键信息和使用指南:
主要特性
- 测量范围:
- 气压:300–1100 hPa(海拔-500m至9000m)
- 温度:-40°C 至 +85°C
- 精度:
- 气压:±0.12 hPa(典型误差,相当于±1m海拔变化)
- 温度:±0.5°C
- 接口:I²C(兼容 3.3V 和 5V 系统)
- 功耗:低功耗模式(典型 5μA),适合电池供电设备。
- 输出数据:原始气压和温度值,需通过算法转换为实际值。
典型应用场景
气象站:气压趋势预测天气变化。
高度计:无人机、登山设备的高度测量。
室内导航:辅助定位(如楼层识别)。
物联网设备:环境监测传感器节点。
连线
BMP180有四个引脚,各引脚功能及连线如下:
- VCC:连接3.3V 或 5V
- GND:GND
- SCL:A5(I²C时钟)
- SDA:A4(I²C数据)
注意:部分开发板需上拉电阻(通常 4.7kΩ),但大多数 Arduino 内部已集成。
Arduino 示例
库支持:Adafruit BMP085 库(BMP180和BMP085都使用该库,但建议使用最新库以发挥BMP180的性能)
#include <Wire.h>
#include <Adafruit_BMP085.h>
Adafruit_BMP085 bmp;
void setup() {
Serial.begin(9600);
if (!bmp.begin()) {
Serial.println("BMP180 not found!");
while (1);
}
}
void loop() {
float temperature = bmp.readTemperature(); // 读取温度(℃)
float pressure = bmp.readPressure() / 100.0; // 读取气压(hPa)
float altitude = bmp.readAltitude(1013.25); // 基于海平面气压计算海拔
Serial.print("Temperature: "); Serial.print(temperature); Serial.println(" °C");
Serial.print("Pressure: "); Serial.print(pressure); Serial.println(" hPa");
Serial.print("Altitude: "); Serial.print(altitude); Serial.println(" m");
delay(1000);
}
注意
海平面气压校准:
海拔计算需输入当地海平面气压(可通过气象站获取),默认使用 1013.25 hPa(标准大气压)。
温度补偿:
BMP180 内置温度传感器,气压数据会自动补偿温度影响。
安装位置:
避免直接阳光照射或热源附近,防止温度误差。
常见问题
Q:数据不稳定?
A:增加软件滤波(如移动平均)或检查电源稳定性。
Q:I²C 地址冲突?
A:BMP180 的默认地址是 0x77(可通过硬件调整至 0x76)。
Q:海平面的气压值
A:海平面的气压值通常为1013.25百帕(hPa),这相当于760毫米水银柱的高度。
标准大气压是指在标准大气条件下海平面的气压值,通常为1013.25百帕,也等于1大气压(atm),即101325帕(Pa)
气压是指大气对地球表面单位面积上所施加的压力。海平面气压是指在地面上测得的大气压力,它是气候及天气分析研究中的一项基本资料。气压的大小与海拔高度、温度等因素有关,一般随海拔高度增加而减小
在实际应用中,由于观测站通常位于不同海拔的地点,因此需要将观测站的气压值调整到海平面上的气压值,以确保数据的准确性和可比性
Q:如何通过大气压计算海拔高度
A:海拔高度 = (1013.25 - 当前气压) / 9 米
这些数据可以帮助理解大气压与海拔高度之间的具体关系,并在实际生活中应用。