全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > MEMS传感器 >

将BMP280压力传感器模块与Arduino连接的方法

时间:2022-08-19 15:45

人气:

作者:admin

标签: arduino  BMP280 

导读:如果您想构建自己的温度监测系统或测量无人机的高度,或者只是想测量您所在地区的大气压力,那么您在项目中使用的最佳模块之一就是BMP280 压力传感器模块。BMP280是绝对压力和温度...

如果您想构建自己的温度监测系统或测量无人机的高度,或者只是想测量您所在地区的大气压力,那么您在项目中使用的最佳模块之一就是BMP280 压力传感器模块。BMP280是绝对压力和温度监测传感器,是BMP085、BMP180、BMP183传感器的升级版。为什么叫升级版?它将在以下各节中讨论。

BMP280 传感器模块可以与 ArduinoPIC、AVR 等微控制器一起使用。对于这个项目,我们将使用Arduino Uno 和 BMP280以及 LCD 16x2 显示模块来显示温度和压力值。在将 BMP280 与 Arduino 连接之前,我们需要下载 Adafruit 开发的BMP280 Arduino 库。

所需组件

阿杜诺

BMP280

连接电线

面包板

液晶显示器- 16x2

poYBAGL_P1uAc7UBAAXMYZ2QMtc639.png

BMP280 压力传感器模块:

poYBAGL_P1aARo0xAARiQoC3bK0742.png

BMP280 传感器模块在 1.71V 的最小电压 (VDD) 下工作,而之前版本的传感器模块在 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 传感器模块由三种功耗模式组成,睡眠模式、强制模式和正常模式。在睡眠模式下,不执行任何测量,并且功耗最低。在强制模式下,根据选定的测量和过滤选项执行单次测量。正常模式在测量和待机周期之间连续循环,周期时间段将由 Tstandby 定义。待机模式下的电流略高于睡眠模式。

将 BMP280 与 Arduino 连接的电路图:

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

pYYBAGL_P1KAaXNPAAEt85U6_6U215.png

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

pYYBAGL_P06ABkxcAAAMbm9DsEI909.png

将 BMP280 与 Arduino 连接的 Arduino 程序:

完整的BMP280 Arduino 代码可以在本页底部找到,可以直接上传到您的 Arduino 板。下面给出相同的解释

包含这些库以启用特殊功能。#include 头文件我们可以直接读取来自传感器的值。#include 标头有助于使用 I2C 通信。#include 头文件用于访问 LCD 的特殊功能,如 lcd.print()、Lcd.setCursor() 等。可以使用上面给出的链接下载这些头文件。下载的文件将采用 zip 格式。现在打开 Arduino 选择 Sketch>include library>Add.zip library。现在添加下载的文件。

#include 
#include 
#include 
#include 

为 Adafruit_BMP280 创建对象 BMP。创建目标文件以访问特殊功能。

Adafruit_BMP280 bmp;// I2C

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

液晶液晶屏(9、8、5、4、3、2);

初始化 LCD 和串行通信。

无效设置(){
  lcd.开始(16,2);
  序列号.开始(9600);
  Serial.println(F("BMP280 测试"));
  lcd.print("欢迎来到");
  lcd.setCursor(0,1);
  lcd.print("电路文摘");
  延迟(1000);
  lcd.clear();
  如果(!bmp.begin()){
    Serial.println(F("找不到有效的 BMP280 传感器,检查接线!"));
    而(1);
  }

该函数在 bmp 对象初始化失败时起作用。

  /* 数据表中的默认设置。*/
  bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* 操作模式。*/
                  Adafruit_BMP280::SAMPLING_X2,/* 温度。过采样 */
                  Adafruit_BMP280::SAMPLING_X16, /* 压力过采样 */
                  Adafruit_BMP280::FILTER_X16, /* 过滤。*/
                  Adafruit_BMP280::STANDBY_MS_500); /* 待机时间。*/
}

这部分代码在串行监视器上打印温度,用于调试目的。

无效循环(){
    Serial.print(F("温度 = "));
    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()用于返回温度和压力值。这些函数是一组执行特殊任务的语句,在我们的例子中是返回温度和压力文件。使用bmp.readTemprature()和bmp.readPressure()函数调用这些函数。lcd.setCursor将 LCD 的光标设置到屏幕上所需的位置。液晶打印命令从程序员设置的位置打印数据。如果 LCD 没有设置位置,默认以(0,0)为初始位置,连续打印数据。下一个数据占据下一列的位置,并且该过程继续进行,直到它到达行的末尾并移动到下一行。

poYBAGL_P0iAcSW3AAfxf2I-DL8097.png

BMP280 可用于飞行玩具、手机、平板电脑、PC、GPS 设备、便携式保健设备、家庭气象站等。按照此程序并使用头文件和一些特殊功能,我们可以轻松地将 BMP280 与阿杜诺。完整的工作也可以在下面给出的视频中找到,希望您喜欢这个BMP280 Arduino 教程并学到一些有用的东西。

#include

#include

#include

#include

Adafruit_BMP280 bmp; // I2C

//Adafruit_BMP280 bmp(BMP_CS); //硬件SPI

//Adafruit_BMP280 bmp(BMP_CS, BMP_MOSI, BMP_MISO, BMP_SCK);

液晶液晶(9、8、5、4、3、2);

无效设置() {

lcd.begin(16,2);

序列号.开始(9600);

Serial.println(F("BMP280 测试"));

lcd.print("欢迎来到");

lcd.setCursor(0,1);

lcd.print("电路文摘");

延迟(1000);

lcd.clear();

if (!bmp.begin()) {

Serial.println(F("找不到有效的 BMP280 传感器,检查接线!"));

而(1);

}

/* 数据表中的默认设置。*/

bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* 操作模式。*/

Adafruit_BMP280::SAMPLING_X2, /* 温度过采样 */

Adafruit_BMP280::SAMPLING_X16, /* 压力过采样 */

Adafruit_BMP280::FILTER_X16, /* 过滤。 */

Adafruit_BMP280::STANDBY_MS_500); /* 待机时间。*/

}

void loop() {

Serial.print(F("Temperature = "));

Serial.print(bmp.readTemperature());

Serial.println("*C");

lcd.setCursor(0,0);

lcd.print("温度= ");

lcd.print(bmp.readTemperature());


Serial.print(F("压力 = "));

Serial.print(bmp.readPressure());

Serial.println("Pa");

lcd.setCursor(0,1);

lcd.print("按=");

lcd.print(bmp.readPressure());

Serial.print(F("大约高度 = "));

Serial.print(bmp.readAltitude(1018)); /* 调整为当地预测!*/

Serial.println("m");

序列号.println();

延迟(2000);

}

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信