我造輪子,你造車,創客一起造起來!塔克創新資訊【塔克社區 www.xtark.cn 】【塔克博客 www.cnblogs.com/xtark/ 】
本文介紹X-CTR100控制器 擴展BMP280氣壓計傳感器,模塊型號為GY-BM E/P280,淘寶上可以買到。
氣壓計可用於海拔高度測量,常用於無人機中,實現定高功能。
原理
BMP280是一款絕對的氣壓傳感器,專為移動應用而設計。傳感器模塊采用極其緊湊的封裝。其小尺寸和低功耗允許在諸如移動電話,GPS模塊或手表的電池供電設備中實現。
作為其前身BMP180,BMP280基於博世經過驗證的壓阻式壓力傳感器技術,具有高精度和線性度以及長期穩定性和高EMC穩健性。眾多器件操作選項提供了最高的靈活性,可針對功耗,分辨率和濾波器性能優化器件。為開發人員提供了一組經過測試的默認設置(例如用例),以便盡可能簡化設計。
應用
- 增強GPS導航(例如,時間改進,航位推算,斜率檢測)
- 室內導航(樓層檢測,電梯檢測)
- 戶外導航,休閑和運動應用
- 天氣預報
- 醫療保健應用(例如肺活量測定法)
- 垂直速度指示(例如上升/下降速度)
引腳說明:
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傳感器內部所有寄存器及其地址如下圖所示,更詳細說明,請參考數據手冊。
例程
初始化BMP180,采集氣壓值和溫度數據並輸出顯示。
硬件說明
硬件資源:
- 串口UART1
- LF接口(IIC2接口)
- 擴展模塊BMP180氣壓計(需自備)
硬件連接:
模塊連接到LF IIC2接口,連接如下圖所示。
軟件生態
X-SOFT軟件生態,X-API文件如下。
ax_bmp280.c——X-CTR100 擴展BMP280氣壓計源文件
ax_bmp280.h——X-CTR100 擴展BMP280氣壓計頭文件
操作函數如下:
uint8_t AX_BMP280_Init(void); //BMP280傳感器初始化 uint32_t AX_BMP280_GetPressure(void); //BMP280獲取氣壓值 uint32_t AX_BMP280_GetTemperature(void); //BMP280獲取溫度值 |
軟件說明
主程序代碼如下。
int main(void) { uint32_t temp, press;
//X-CTR100初始化 AX_Init(115200); printf("***X-CTR100 BMP280氣壓傳感器例程***\r\n\r\n");
//模塊初始化及配置 AX_BMP280_Init();
while (1) { press = AX_BMP280_GetPressure(); temp = AX_BMP280_GetTemperature();
printf("壓力值:%d(0.1Pa) 溫度:%d (0.01℃)\r\n", press, temp);
AX_Delayms(1000); AX_LEDG_Toggle(); } } |
實現效果
運行效果如下圖所示。
參考
https://blog.csdn.net/sunshinebooming/article/details/79637822
