气压转海拔的经验公式,自行搜索《气压温度求海拔高度》《关于大气压力与海拔高度经验计算公式的讨论》,这里贴两个参考公式:STM32+MS5611气压计测量海拔,IIC方式

或者:STM32+MS5611气压计测量海拔,IIC方式    也即STM32+MS5611气压计测量海拔,IIC方式

https://wenku.baidu.com/view/87130b0d168884868762d67a.html?from=search

硬件连接:

PS引脚决定了MS5611从哪个接口输出数据,PS拉高代表使用IIC接口,拉低使用SPI接口。

CSB引脚控制MS5611的IIC地址, IIC地址为0x111011Cx,其中的字符C代表CSB的反相,也即,当CSB拉高时,C为0;其中的字符X为读写控制bit,读时X应设为1,写时应设为0,这是IIC一贯的要求,不多说。由于MS5611的地址中,只有一个bit是可控的,系统中同一个IIC总线下最多只能挂载2个MS5611。

 

注意事项:

1、写驱动时,一定要参考英文官方原版datasheet,可以用bing英文版搜"MS561101BA03 datasheet",百度搜出的中文版错误一堆。气压计家族MS5xxx有很多,请确认你下载的数据手册是MS5611,百度搜出来一个名字是5611,结果下载下来是MS5207。

2、网上有人说,不同的测量频率下,MS5611测量值会跳动,只能放到严格的周期性定时中断里去,经过我实测,并没有出现这个问题。我估计他们遇到的问题可能是,转换尚未完成,就去读AD了。按照手册要求,读气压的标准步骤如下:

(1)从PROM读出出厂的校准参数C1~C6
(2)①启动温度AD转换-->②读取AD值-->③启动气压AD转换-->④读取AD值-->⑤把两个AD值按手册给的公式转成真实温度和气压。

手册指出,在不同的过采样率(OSR)下,所需的AD转换时间是不一样的,例如OSR=4096时,耗时9.04ms,也即①->②的间隔一定要>9.04ms,③->④同理。

我采集的结果如下:

STM32+MS5611气压计测量海拔,IIC方式

计算出的海拔高度,短时波动0.5m,长时间会漂好几米,用上位机记录了几分钟如下:
STM32+MS5611气压计测量海拔,IIC方式

上图局部放大如下(波动0.5m):

STM32+MS5611气压计测量海拔,IIC方式

晚上室内桌面上静止测试了14小时(19:00->09:00),每秒采集2次温度和海拔(气压),结果如下:

海拔波动30m

STM32+MS5611气压计测量海拔,IIC方式

温度波动2度(温度波动应该是正常的,毕竟从太阳落山开始温度就会一直下降)。

STM32+MS5611气压计测量海拔,IIC方式

相关文章:

  • 2022-12-23
  • 2021-10-04
  • 2021-11-22
  • 2021-05-08
  • 2022-12-23
  • 2021-09-17
  • 2021-04-04
  • 2021-08-03
猜你喜欢
  • 2021-08-10
  • 2021-08-18
  • 2022-12-23
  • 2021-12-10
  • 2021-10-26
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案