如何将BMP280气压传感器模块与Arduino开发板进行连接

如果您想要搭建属于自己的温度监控系统或测量无人机的飞行高度,或者只是想测量您所在区域的大气压力,那么BMP280气压传感器模块是您在项目中使用的最佳选择之一。 BMP280是绝对气压和温度传感器,是BMP085、BMP180、BMP183传感器的升级版。为什么称为升级版本?将在以下各节中进行讨论。

BMP280传感器模块可与Arduino、PIC、AVR等微控制器一起使用。在本篇文章中,我们将使用Arduino Uno开发板连接BMP280传感器,并在LCD1602显示模块上显示温度和压力值。在将BMP280与Arduino连接之前,我们需要下载Adafruit开发的BMP280 Arduino库。单击此Adafruit BMP280库链接以打开相应的Github页面,然后将头文件添加到Arduino IDE。

所需组件

● Arduino开发板

● BMP280传感器模块

● 连接线

● 面包板

● 液晶屏1602

BMP280压力传感器模块

BMP280传感器模块的最小电压(VDD)为1.71V,而早期版本的传感器模块的工作电压为1.8V(VDD)。就电流消耗而言,BMP280消耗2.7uA,而BMP180消耗12uA,BMP183和BMP085分别消耗5uA。 BMP280还支持新的过滤器模式。 BMP280传感器模块支持I2c和SPI协议,而其余的传感器则支持I2c或SPI。 BMP280传感器模块的精度为±0.12 hPa,相当于高度差为±1 m。由于这些关键参数,它通常用于各种应用程序中。 BMP传感器由压力感测元件、湿度感测元件和温度感测元件组成,它们还连接到压力前端、湿度前端和温度前端。这些前端IC是灵敏度模拟放大器,用于放大小信号。该模拟前端IC的输出作为输入信号馈入ADC。在这种情况下,模拟值被转换为数字电压,并且该电压被馈送到逻辑电路以进一步与外界连接。

BMP280传感器模块包括三种电源模式:睡眠模式(Sleep Mode)、强制模式(Forced Mode)和正常模式(Normal Mode)。在睡眠模式下,不执行任何测量,并且功耗最小。在强制模式下,将根据所选的测量和过滤器选项执行一次测量。正常模式在测量和待机时间之间连续循环,循环时间将由Tstandby定义。待机模式下的电流略高于睡眠模式。

Arduino与BMP280连接的电路图

连接Arduino与BMP280传感器和LCD的电路图如下所示。

传感器的VCC和GND引脚连接到Arduino的3v3和GND引脚。传感器的SCL和SDA引脚连接到Arduino板的A5和A4。

BMP280与Arduino连接的程序

在本文的末尾处给出了完整的BMP280 Arduino代码,可以直接上传到Arduino开发板。

包含这些库是为了启用特殊函数。 #include <Adafruit_BMP280.h>头文件,我们可以直接读取来自传感器的值。 #include <Wire.h>头文件我们可以使用I2C通信。 #include <LiquidCrystal.h>标头用于访问LCD的特殊函数,如lcd.print()Lcd.setCursor()等。可以使用上面提供的链接下载这些头文件。下载的文件将是zip格式。现在打开Arduino,选择Sketch>include library>Add.zip library,添加下载的文件。

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_BMP280.h>
#include <LiquidCrystal.h>

创建对象BMP上。创建一个目标文件以访问函数。

Adafruit_BMP280 bmp; // I2C

设置Arduino与LCD通信的LCD引脚。使用这些引脚传输数据。

LiquidCrystal LCD(9, 8, 5, 4, 3, 2);

初始化LCD和串口通讯。

void setup() {
  lcd.begin(16,2);
  Serial.begin(9600);
  Serial.println(F("BMP280 test"));
  lcd.print("Welcome to ");
  lcd.setCursor(0,1);
  lcd.print("CIRCUIT DIGEST");
  delay(1000);
  lcd.clear();
  if (!bmp.begin()) {
    Serial.println(F("Could not find a valid BMP280 sensor, check the wiring!"));
    while (1);
  }

当bmp对象的初始化失败时,调用以下函数。

 /* Default settings from datasheet. */
  bmp.setSampling(Adafruit_BMP280::MODE_NORMAL,     /* Operating Mode. */
                  Adafruit_BMP280::SAMPLING_X2,     /* Temp. oversampling */
                  Adafruit_BMP280::SAMPLING_X16,    /* Pressure oversampling */
                  Adafruit_BMP280::FILTER_X16,      /* Filtering. */
                  Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */
}

以下代码在串口监视器上打印温度,用于调试目的。

void loop() {
    Serial.print(F("Temperature = "));
    Serial.print(bmp.readTemperature());
    Serial.println(" *C");

函数bmp.readPressurebmp.readTemprature用于调用特殊函数以及返回温度和压力值。

    lcd.print(bmp.readTemperature());
    lcd.print(bmp.readPressure());

Arduino BMP280压力传感器连接的工作过程

函数bmp.readTemprature()和bmp.readPressure()用于返回温度和气压值。 lcd.setCursor将LCD的光标设置在液晶屏上所需的位置。 lcd.print命令从设置的位置打印数据。如果默认情况下没有为LCD设置位置,则它将(0,0)作为初始位置,并连续打印数据。下一个数据将占据下一个列的位置,并且过程将继续直到到达行末尾并移至下一行。

BMP280可用于飞行玩具、手机、平板电脑、PC、GPS设备、便携式医疗设备、家庭气象站等。通过遵循此过程并使用头文件和某些特殊函数,我们可以轻松地将BMP280与Arduino进行连接。

原文链接:

如何将BMP280气压传感器模块与Arduino开发板进行连接 - Arduino专区 - 一板网电子技术论坛

更多有关Arduino开发板的文章,请关注微信公众号“一板网电子技术论坛”。

一板网论坛微信公众号

posted @ 2019-12-30 21:25  子鱼_  阅读(3220)  评论(0编辑  收藏  举报