|
BMP180作為一個高精度、超小體積的氣壓傳感器,在很多應用場景下都能見到它的身影,比如航模等一些需要高度數據的場合。下面將把它應用于零知平臺進行演示。
1、硬件、軟件準備
(1)零知開發板-標準板
好看的標準板 (2).jpg (95.5 KB, 下載次數: 52)
下載附件
2019-5-25 16:23 上傳
零知標準板使用了STM32F103RBT6 作為MCU,采用32位高性能ARM核心,;包含37個IO引腳、15路PWM、15路ADC(12位精度)、一個USB設備接口、一個USB轉串口設備接口;可以使用USB、AC-DC適配器、LI-PO等多種方式供電;供電電壓 7v-28v,范圍非常的寬。同時零知標準板配合零知開發工具能實現一鍵下載,使用非常方便。
(2)BMP180大氣壓傳感器模塊
模塊圖.jpg (78.56 KB, 下載次數: 60)
下載附件
2019-5-25 16:23 上傳
該模塊VCC為5V,可使用3.3V和5V電壓供電。
(3) 杜邦線若干
(4)零知開發工具
零知界面.png (73.3 KB, 下載次數: 73)
下載附件
2019-5-25 16:24 上傳
2、電路連接
這里使用3.3V供電,把SCL和SDA引腳分別接標準板的A5、A4引腳即可。如下:
接線.png (316.2 KB, 下載次數: 57)
下載附件
2019-5-25 16:25 上傳
3、測試
根據芯片說明書,大氣壓力與海拔高度對應關系如下:
對應關系.jpg (32.09 KB, 下載次數: 65)
下載附件
2019-5-25 16:25 上傳
核心代碼:
- /**
- * 文件: BMP180模塊測試.ino by 零知實驗室
- * -^^- 零知開源,讓電子制作變得更簡單! -^^-
- **/
-
- #include "BMP180.h"
-
- Adafruit_BMP085 bmp;
-
- void setup() {
- Serial.begin(9600);
- if (!bmp.begin()) {
- Serial.println("BMP180 傳感器啟動失敗");
- while (1) {}
- }
- }
-
- void loop() {
- Serial.print("溫度:");
- Serial.print(bmp.readTemperature());
- Serial.println(" ℃");
-
- Serial.print("壓力:");
- Serial.print(bmp.readPressure());
- Serial.println(" Pa");
-
- // 標準氣體時測量的數據 101325 Pa
- Serial.print("高度:");
- Serial.print(bmp.readAltitude());
- Serial.println(" m");
-
- Serial.print("海平面壓力:");
- Serial.print(bmp.readSealevelPressure());
- Serial.println(" Pa");
-
- // 根據當地的海平面壓強進行更精確的實際高度計算
- Serial.print("真實高度:");
- Serial.print(bmp.readAltitude(101400));
- Serial.println(" m");
-
- Serial.println();
- delay(500);
- }
復制代碼 上述代碼測量真實高度時需根據當地的實際氣壓進行校正,在這里我使用中央氣象臺查詢到的作為依據:
氣壓情況.jpg (88.71 KB, 下載次數: 62)
下載附件
2019-5-25 16:27 上傳
注:1014hPa = 101400Pa,這里的氣壓值沒有很精確,可能會有存在誤差。
4、測試結果
查詢當地的海拔高度為14米:
海拔高度.jpg (67.25 KB, 下載次數: 63)
下載附件
2019-5-25 16:28 上傳
實際測量如下:
測試結果.jpg (121.62 KB, 下載次數: 71)
下載附件
2019-5-25 16:28 上傳
完整代碼和更多詳細資料可到零知實驗室官網免費獲取。
|
|