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中的圖片,湊合看吧:
測量的基本流程
- 初始化
包括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 高精度大气压强传感器模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 定制Github日历库EPCalenda
- 下一篇: SPI在linux3.14.78 FS_