找回密码
 立即注册

QQ登录

只需一步,快速开始

基础模块资料库

基于Arduino使用 BMP180气压传感器



一、基础知识

BMP180是当前最常用的气压传感器传感器之一,可以检测温度和气压,通过这两个数据还可以计算出当前海拔高度。BMP180气压传感器具有体积小,功耗低、精度高等优点,因此广泛的被应用于手机,手表等小型编写式设计。

34.jpg

技术参数

  • 压力范围:300-1100hPa(海报500~9000米)
  • 电源电压:1.8V-3.6V(VDDA),1.62V-3.6V(VDD),VIN3.3V/5V
  • LCC8封装:无铅陶瓷载体封装(LCC)
  • 低功耗:5µA(标准模式)
  • 高精度:在低功耗模式下,分分辨率为0.06hPa(0.5米)
  • 高线性模式下,分辨率为0.03hPa(0.25米)
  • 含温度输出
  • I2C接口
  • 温度补偿
  • 无铅,符合RoHS规范
  • MSL1反应时间:7.5ms
  • 待机电流:0.1µA
  • 无需外部时钟电路

接线图示

36.png
二、编程调试

1,下载库文件

文件名:SFE_BMP180-master.zip
下载链接:https://pan.baidu.com/s/1qP2Uf3XAaFYdfnY3FNctDg
提取码:2545

2,安装库文件

文件下载后无需解压,点击Arduino IDE菜单栏项目—加载库—添加.ZIP库...

37.png

选择SFE_BMP180-master.zip文件

38.png
3,检测测试

Arduino代码:

  1. #include <SFE_BMP180.h>
  2. #include <Wire.h>
  3. SFE_BMP180 pressure;
  4. #define ALTITUDE 10.0 // 当地海拔
  5. void setup()
  6. {
  7.   Serial.begin(9600);
  8.   Serial.println("REBOOT");
  9.   if (pressure.begin())
  10.     Serial.println("BMP180 init success");
  11.   else
  12.   {
  13.     Serial.println("BMP180 init fail\n\n");
  14.     while(1); // 暂停
  15.   }
  16. }
  17. void loop()
  18. {
  19.   char status;
  20.   double T,P,p0,a;
  21.   Serial.println();
  22.   Serial.print("provided altitude: ");
  23.   Serial.print(ALTITUDE,0);
  24.   Serial.println(" meters ");
  25.   status = pressure.startTemperature();
  26.   if (status != 0)
  27.   {
  28.     delay(status);
  29.     status = pressure.getTemperature(T);
  30.     if (status != 0)
  31.     {
  32.       Serial.print("temperature: ");
  33.       Serial.print(T,2);
  34.       Serial.println(" deg C ");
  35.       status = pressure.startPressure(3);
  36.       if (status != 0)
  37.       {
  38.         delay(status);
  39.         status = pressure.getPressure(P,T);
  40.         if (status != 0)
  41.         {
  42.           Serial.print("absolute pressure: ");
  43.           Serial.print(P,2);
  44.           Serial.println(" mb ");
  45.           p0 = pressure.sealevel(P,ALTITUDE); // we're at 10 meters (Boulder, CO)
  46.           Serial.print("relative (sea-level) pressure: ");
  47.           Serial.print(p0,2);
  48.           Serial.println(" mb ");
  49.           a = pressure.altitude(P,p0);
  50.           Serial.print("computed altitude: ");
  51.           Serial.print(a,0);
  52.           Serial.println(" meters ");
  53.         }
  54.         else Serial.println("error retrieving pressure measurement\n");
  55.       }
  56.       else Serial.println("error starting pressure measurement\n");
  57.     }
  58.     else Serial.println("error retrieving temperature measurement\n");
  59.   }
  60.   else Serial.println("error starting temperature measurement\n");

  61.   delay(5000);
  62. }
复制代码

显示效果如下:

39.png
分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册