基于STM32开发的BMP180气压传感器(附STM32程序!!!)

Posted 三明治开发社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于STM32开发的BMP180气压传感器(附STM32程序!!!)相关的知识,希望对你有一定的参考价值。

老规矩,话不多说,先送上代码 https://github.com/Tuya-Community/tuya-iotos-embeded-mcu-demo-wifi-ble-air-pressure-sensor

BMP180 简介


BMP180是一款由BOSCH开发的数字压力传感器,IIC接口,压力测量范围可以从300hPa至1100hPa,测量海拔高度大约从9000m至-500m。
工作电压范围在1.8V~3.6V,满足大部分单片机电平要求。
功耗低,标准模式下单次采样功耗大约5uA。
低噪声,在低功耗模式下,大约只有0.06hPa,超高分辨模式下只有0.02hPa。
内置温度传感器,加上一些算法可以进行温度补偿。
其他性能可以查看数据手册

各模式的配置参数和电气特性如下

校准参数和读取

BMP180传感器有大量的出厂校准参数,利用这些参数和特点算法,可以很精准的得到我们想要的气压值。
参数寄存器表如下

具体读取函数在void bmp180_get_calib_param(void)中
获取好参数后,我们就可以读取温度和压力寄存器,获取当前未补偿的温度和压力值

具体方法请查看
uint16_t bmp180_get_uncomp_temperature(void)和
uint32_t bmp180_get_uncomp_pressure(uint8_t oss_mode)函数

数据补偿


有了校准参数和原始温度压力数据后,接下来就是要进行数据补偿了,
具体算法我已经整理出来给大家。
温度校准

压力校准:

完整补偿算法请查看
** bmp180_get_temperature(uint32_t v_uncomp_temperature_u32)

bmp180_get_pressure(uint32_t v_uncomp_pressure_u32)**
这两个函数。
这样,经过上面一系列处理,我们终于获得了我们想要的温度值和压力值。

最后再给大家附上整体流程图

海拔换算

大家都知道,气压和高度存在一定的关系,但是这个关系是怎么样的呢,哈哈,我有答案。

根据上面式子,我们就能很轻易写出算法公式
Altitude =(44330.0 * (1.0-pow((float)(gas_pressure.now) / 101325, 1.0/5.255)));

好啦,至此,大家肯定对BMP180有了比较深刻的认识,快去测试自己的程序吧,有问题,欢迎在评论区留言。
 

 

以上是关于基于STM32开发的BMP180气压传感器(附STM32程序!!!)的主要内容,如果未能解决你的问题,请参考以下文章

张高兴的 Windows 10 IoT 开发笔记:BMP180 气压传感器

雕爷学编程Arduino动手做(67)---BMP180气压传感器

一起玩转树莓派(17)——BMP180数字压力传感器应用

HaaS Python 硬件积木 BMP280气压传感器

关于博世BMP180气压计受到太阳照射影响的说明

基于STM32的四旋翼飞行器的设计与实现