日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GY-BMP280-3.3 高精度大气压强传感器模块

發布時間:2023/12/20 编程问答 91 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GY-BMP280-3.3 高精度大气压强传感器模块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

GY-BMP280-3.3 高精度大氣壓強傳感器模塊

轉載于:https://blog.csdn.net/sunshinebooming/article/details/79637822

博世Sensortec - BMP280 是一種專為移動應用設計的絕對氣壓傳感器。該傳感器模塊采用極其緊湊的封裝。得益于小尺寸和低功耗特性,這種器件可用在如移動電話、GPS 模塊或手表等電池供電型設備中。與上代產品相同,BMP180、BMP280 也基于Bosch 成熟的壓阻式壓力傳感器技術,具有高確度和線性度,以及長期穩定性和很高的 EMC 穩健性。多種設備工作選擇帶來了最高靈活性,可以在功耗、分辨率和濾波性能方面對設備進行優化。

BMP280是博世最新推出的數字氣壓傳感器,具有卓越的性能和低廉的價格,相對精度為±0.12 hPa(相當于±1米),傳感器功耗僅有2.7μA。BMP280具有業界最小封裝,采用極其緊湊的8引腳金屬蓋LGA封裝,占位面積僅為2.0×2.5mm2,封裝高度為0.95 mm。包括有壓力和溫度測量功能。該氣壓傳感器支持SPI和IIC通信接口,相比上一代的BMP180,精度已有相當大的提升,非常適合應用于低成本的多旋翼飛行器飛行控制器上,價格僅有目前流行的MS5611的四分之一。傳感器模塊它的小尺寸和2.74μA@ 1Hz的低功耗允許在電池驅動的設備中實現。門內導航,醫療保健以及GPS改進的新興應用需要高相對精度和低TCO。
————————————————
BMP280非常適用于地板水平檢測等應用,因為傳感器具有±0.12 hPa的優異相對精度,相當于±1m高度差,偏移溫度系數(TCO)僅為1.5 Pa / K(相當于12.6厘米/ K)。作為廣泛實施的BMP180的繼承者,BMP280最初在2011年開始大量使用手機中的氣壓測量,BMP280在所有需要精確壓力測量的應用中實現了高性能。同時,BMP280具有更高的應用靈活性,新的濾波器模式和SPI接口,而且相對于BMP180,占位面積縮小了63%。

目錄

  • 單片機 BMP280大氣壓強與溫度傳感器使用詳解
    • 目錄
      • 模塊引腳及相關參數
      • 相關寄存器說明
      • 數據處理基本過程
      • 測量的基本流程
      • STC8A8K64S4A12單片機程序(51單片機,STM32等改一下就行了)


模塊引腳及相關參數

  • 本次使用的模塊型號為GY-BM E/P 280,淘寶上到處可以買到,這是對德國博世公司的BMP280芯片的一個應用封裝(實物圖片和封裝基本電路都放在下面)。采用的主控芯片為STC8A8K64S4A12單片機,所以寫的代碼都是最底層的,比較適合小白看(代碼貼在后面)。
  • 引腳說明:
    Pin1:VCC(3.3V供電)
    Pin2:GND
    Pin3:SCL(I2C通信模式時鐘信號)
    Pin4:SDA(I2C通信模式數據信號)
    Pin5:CSB(SPI通信模式下用到的引腳,本次沒用到,可以懸空)
    Pin6:SDO(傳感器地址控制位,接GND的時候I2C中器件地址為0xEC,接高電平為0xEC+ 1,本次接GND)
  • 傳感器測試范圍:
    溫度:-45℃~+85℃
    大氣壓強:0~20000hPa(百帕)
  • 測量主要模式:
    Sleep Mode:作電流達到uA級別,典型值為0.1uA,最大值為0.3uA,所有測量工作都停止。
    Normal Mode: 正常工作,相關工作間隔時間可以通過寄存器控制。
    Forced Mode:主控發起一次采集命令,傳感器采集一次信號,然后進入Sleep Mode,等待下次喚起(本次沒用到)。


相關寄存器說明

BMP280傳感器內部所有寄存器及其地址如下圖所示:

  • 測量控制寄存器(ctrl_meas)(0xF4):
    Bit7~Bit5:osrs_t[2:0] 控制溫度采樣模式,主要是采樣數據的位數(位數越大,精度越高),具體配置如下(本次三位都配置為1,最大采樣位數20Bit):

    Bit4~Bit2:osrs_p[2:0] 控制大氣壓強采樣模式,主要是采樣數據的位數(位數越大,精度越高),具體配置如下(本次三位都配置為1,最大采樣位數20Bit):

    Bit1~Bit0:mode[1:0] 傳感器工作模式控制,00為Sleep Mode,01/10為Forced Mode,11為 Normal Mode(本次配置為11)。
  • 配置寄存器(config)(0xF5):
    Bit7~Bit5:t_sb[2:0] 設置Normal Mode下的轉換間隔時間,具體配置如下(本次配置為000,0.5ms轉換一次)

    Bit4~Bit2:filter[2:0] 設置傳感器接收外界信號時的,前端濾波電路的濾波系數的,我也沒仔細研究,就設置了個000,有興趣的童鞋可以自己研究一下,datasheet上說和穩定度有關,可以有效減少外界環境的干擾:

    Bit0:spi3w_en 與SPI模式有關,本次沒用到,沒設置。
  • 身份編號寄存器(id)(0xD0):
    寄存器內固定值為0x58,讀取0xD0數據的時候,傳感器返回0x58,代表身份辨認完畢。
  • 復位寄存器(reset)(0xE0):
    寫入0xB6時,所有寄存器(除身份編號寄存器)數據全部清零。
  • 狀態寄存器(status)(0xF3):
    具體定義如下,感興趣的童鞋自己研究,本次沒用到:


數據處理基本過程

該傳感器是使用測量值和校準值(初始化中獲得),通過公式計算得出的,相關公式在datasheet中已經貼出了,還給了樣本數據(公式挺復雜的,建議先把公式抄到程序中,然后用樣本數據傳進去,測試一遍結果對不對,保證公式沒抄錯)。
數據處理中有個坑,請注意,就是讀取補償值數據的時候,下圖的數據存儲位是LSB/MSB,即數據是反過來存儲的,低位字節在前,高位字節在后,所以處理數據的時候要注意,具體可以見我的代碼中bmp280_MultipleReadTwo()函數:

公式的話,datasheet中也很模糊,配合datasheet中的圖片,湊合看吧:

long bmp280_GetValue(void) {long adc_T;long adc_P;long var1, var2, t_fine, T, p;adc_T = bmp280_MultipleReadThree(BMP280_TEMP_ADDR);adc_P = bmp280_MultipleReadThree(BMP280_PRESS_ADDR);if(adc_P == 0){return 0;}//Temperaturevar1 = (((double)adc_T)/16384.0-((double)dig_T1)/1024.0)*((double)dig_T2);var2 = ((((double)adc_T)/131072.0-((double)dig_T1)/8192.0)*(((double)adc_T)/131072.0-((double)dig_T1)/8192.0))*((double)dig_T3);t_fine = (unsigned long)(var1+var2);T = (var1+var2)/5120.0;//Pressurevar1 = ((double)t_fine/2.0)-64000.0;var2 = var1*var1*((double)dig_P6)/32768.0;var2 = var2 +var1*((double)dig_P5)*2.0;var2 = (var2/4.0)+(((double)dig_P4)*65536.0);var1 = (((double)dig_P3)*var1*var1/524288.0+((double)dig_P2)*var1)/524288.0;var1 = (1.0+var1/32768.0)*((double)dig_P1);p = 1048576.0-(double)adc_P;p = (p-(var2/4096.0))*6250.0/var1;var1 = ((double)dig_P9)*p*p/2147483648.0;var2 = p*((double)dig_P8)/32768.0;p = p+(var1+var2+((double)dig_P7))/16.0;return p; }


測量的基本流程

  • 初始化
    包括I2C初始化(和傳感器通信用),串口初始化(和上位機通信用,查看數據),傳感器初始化,兩個通信協議就不說了,不會的童鞋可以先去看看相關教程,下面主要說說傳感器初始化:
  • 數據全部清零:寫數據0xB6到地址0xE0;
  • 讀芯片ID:讀地址0xD0;
  • 設置測量控制寄存器:寫數據0xFF到地址0xF4(測量數據位20Bit,Normal Mode);
  • 設置配置寄存器:寫數據0x00到地址0xF5(測量間隔時間0.5ms,濾波器我沒仔細看,感興趣童鞋自己研究);
  • 讀取補償值數據
  • I2C循環讀取傳感器參數,代入公式計算獲得結果,并且將結果通過串口輸出到上位機。

?代碼下載(可直接使用):https://download.csdn.net/download/qq_42043397/25136098

總結

以上是生活随笔為你收集整理的GY-BMP280-3.3 高精度大气压强传感器模块的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。