如果您想要搭建屬於自己的溫度監控系統或測量無人機的飛行高度,或者只是想測量您所在區域的大氣壓力,那么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開發板的文章,請關注微信公眾號“一板網電子技術論壇”。
一板網論壇微信公眾號