如果您想構建自己的溫度監測系統或測量無人機的高度,或者只是想測量您所在地區的大氣壓力,那么您在項目中使用的最佳模塊之一就是BMP280 壓力傳感器模塊。BMP280是絕對壓力和溫度監測傳感器,是BMP085、BMP180、BMP183傳感器的升級版。為什么叫升級版?它將在以下各節中討論。
BMP280 傳感器模塊可以與 Arduino、PIC、AVR 等微控制器一起使用。對于這個項目,我們將使用Arduino Uno 和 BMP280以及 LCD 16x2 顯示模塊來顯示溫度和壓力值。在將 BMP280 與 Arduino 連接之前,我們需要下載 Adafruit 開發的BMP280 Arduino 庫。
所需組件
阿杜諾
BMP280
連接電線
面包板
液晶顯示器- 16x2
BMP280 壓力傳感器模塊:
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連接的電路圖如下所示。
傳感器的 VCC 和 GND 引腳連接到 Arduino 的 3v3 和 GND 引腳。傳感器的 SCL 和 SDA 引腳連接到 Arduino 板的 A5 和 A4。LCD連接如下
將 BMP280 與 Arduino 連接的 Arduino 程序:
完整的BMP280 Arduino 代碼可以在本頁底部找到,可以直接上傳到您的 Arduino 板。下面給出相同的解釋
包含這些庫以啟用特殊功能。#include
#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)為初始位置,連續打印數據。下一個數據占據下一列的位置,并且該過程繼續進行,直到它到達行的末尾并移動到下一行。
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);
}
-
壓力傳感器
+關注
關注
35文章
2243瀏覽量
163588 -
Arduino
+關注
關注
188文章
6477瀏覽量
187816 -
BMP280
+關注
關注
1文章
20瀏覽量
5776
發布評論請先 登錄
相關推薦
評論