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

 

要源码的自己加群,群号自己在博客里找。如果你连群号都找不到,那源码就不用要了,谢谢。

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

或者:    也即

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

硬件连接:

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

CSB引脚控制MS5611的IIC地址, IIC地址为Bits(111011Cx),其中的字符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,③->④同理。

我采集的结果如下:

计算出的海拔高度,短时波动0.5m,长时间会漂好几米,用上位机记录了几分钟如下:

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

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

海拔波动30m

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

  • 9
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: 正点原子STM32F103和MPU6050传感器可以用于实现计步器功能。以下是一种可能的源码实现方法。 首先,需要配置STM32F103的GPIO和I2C以及MPU6050的I2C。 然后,可以通过I2C读取MPU6050的加速度计和陀螺仪数据,并将其转换为计步器所需的数据。 计步器的原理是通过检测人的运动来累计步数。一般来说,当加速度计的数据超过一定的阈值时,可以判断为步行动作。可以设置合适的阈值来适应不同的步行习惯。 编写一个计步器算法函数,该函数接收加速度计的数据作为输入,根据设定的阈值和算法判断步行动作。可以使用滑动窗口法或者峰值检测法来实现步数的累计。当检测到步行动作时,步数加1,并将步数数据显示在LCD上。 在主函数中,设置STM32F103的时钟和相关的中断,并调用配置好的函数和计步器算法函数。通过定时器中断控制数据的采集和计步器算法的执行。 最后,将编写好的源码烧录到STM32F103开发板上,连接MPU6050传感器,并运行程序,即可实现步数的计算和显示。 当然,这只是一种简单的实现方法,根据具体的需求和实际情况可能需要进行更多的优化和改进。 ### 回答2: 正点原子是一个STM32F103系列的开发板品牌,MPU6050是一种常用的六轴陀螺仪和加速度计模块。实现计步器功能的源码就是通过正点原子的STM32F103开发板和MPU6050模块来获取加速度数据,并根据这些数据进行步数的计算。 基本的实现步骤如下: 1. 配置正点原子STM32F103开发板的GPIO和I2C接口用于与MPU6050通信。 2. 初始化MPU6050模块,设置好合适的采样频率。 3. 通过I2C接口读取MPU6050中的加速度数据。 4. 根据获取到的加速度数据进行计算,可以使用简单的算法例如计算总体加速度大小是否超过一定阈值。 5. 根据计算结果判断是否步行步数是否发生变化,并进行更新。 6. 可以通过串口或者LCD等方式输出步数信息。 需要注意的是,实现计步器的准确性是一个较为复杂的问题,通常需要综合考虑多种因素,例如姿势的变化、外部干扰等。此外,还可以进一步优化算法,例如引入滤波器和积分来提高计步器的精度。 ### 回答3: 正点原子是一款青少年学习STM32的开发板,可以用来学习和开发各种应用。本回答将简要介绍如何使用正点原子开发板和MPU6050传感器实现一个计步器的源码。 首先,我们需要准备一些基本的硬件设备,包括正点原子STM32F103开发板和MPU6050加速度传感器。接下来,我们需要进行一些准备工作和设置。 在正式编写源码之前,我们首先需要配置MPU6050的寄存器,以便获取正确的加速度传感器数据。可以使用IIC总线来读取和写入MPU6050的寄存器值。 接下来,我们需要设置STM32F103的时钟和IIC总线的参数,以确保数据传输的准确性和稳定性。我们可以使用STM32F103的I2C库函数来轻松地进行IIC总线通信。 在编写源码之前,我们还需要了解计步器的算法原理。一般来说,计步器通过对加速度传感器数据进行分析,检测步数的变化。常用的算法包括阈值法、绝对阈值法、卡尔曼滤波法等。 具体的源码编写涉及到硬件的配置和算法的实现。我们可以使用STM32的开发环境,如Keil、IAR等来编写、调试和下载源码。 总的来说,实现一个计步器的源码涉及到硬件的配置、传感器的数据获取和计步算法的实现等步骤。希望以上的回答对你有所帮助,祝你成功实现计步器的源码编写!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值