如果您想要搭建属于自己的温度监控系统或测量无人机的飞行高度,或者只是想测量您所在区域的大气压力,那么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.readPressure和bmp.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开发板的文章,请关注微信公众号“一板网电子技术论坛”。
一板网论坛微信公众号