5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
查看: 2527|回复: 15
打印 上一主题 下一主题

关于调试气压计之后的感想

[复制链接]
跳转到指定楼层
楼主
发表于 2015-2-6 21:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近自己编程序读取高精度气压计MS5611的数据。意外的发现了这个传感器在使用上一个很难搞的问题。

我是在房间内测试MS5611的,模块一直放着不动,然后,通过stm32读取芯片内存储气压值(用其他芯片读取没试过,但应该没有影响)。最后发现,读数据的频率非常影响气压的值,或者是温度的值。这里我已经考虑到了传感器芯片内部做AD转换的时间了。

出现的问题是,当读取频率不一样的时候,气压值和温度值都会稳定在不同的数值上。例如,每20ms读取一次,和每100ms读取一次,气压值前后会有很大的差别,已经经过很多次试验了,传感器芯片一直放着一旁没有动过,室内肯定无风,也没有空调影响。所以,我得出的结论是读数的频率影响了其稳定的数值。

最后我的解决方法是,不得不适用stm32的定时器中断,每隔一个精确的时间读取一次传感器数值,这才稳定下来。看过MWC的算法里面读气压计的代码部分,它是判断是否超过10ms然后读取的,由于不是中断,所以,有可能某些值是超过10ms读取的,这样或多或少会造成读数的不准确。

ps:MS5611在刚刚通电数10s内读到的数值,变化幅度是最大的,需要一段时间的预读取使其稳定下来。MWC里面有个寄存器控制着这个预读取并计算基准气压的量calibratingB。在主文件内面定义的值是200,我觉得这个还不够,还要更大才能让气压计稳定下来,但是,由于气压计读数很慢,每次要20ms(MWC里面设置的),所以,可能会造成飞机上电之后需要等待的时间过长。

这是在折腾了MS5611之后的一点心得,希望广大在高度算法上折腾的盆友们发表下自己的看法和解决方法。大家多多交流!

欢迎继续阅读楼主其他信息

沙发
发表于 2015-2-6 23:25 | 只看该作者
很高深的理论。真心佩服楼主。顶起来
3
 楼主| 发表于 2015-2-7 10:32 | 只看该作者
自顶一下,希望有做过的人来交流
4
发表于 2015-2-7 17:17 | 只看该作者
所以apm之类的飞控做定稿是基于z轴数据融合气压计的读数做定高...
5
发表于 2015-2-7 20:32 | 只看该作者
读数间隔要40ms吧
6
 楼主| 发表于 2015-2-7 22:38 | 只看该作者

做AD转换的时间是10ms。只要超过这个时间,就可以读出差不多正确的数据来。

7
发表于 2015-2-8 09:16 | 只看该作者
StarFlying 发表于 2015-2-7 22:38
做AD转换的时间是10ms。只要超过这个时间,就可以读出差不多正确的数据来。

昨天我看错了,不是40ms。温度的AD转换要10ms,压强的还需要10ms,至少要20ms才能出一组完整的数据。在MWC里面,一次气压计的更新用24ms。你如果不需要温度的话,10ms间隔也可以,但是要关闭温度的AD转换,别让温度占用时间。

8
 楼主| 发表于 2015-2-8 10:32 | 只看该作者
暗黑刺客熊 发表于 2015-2-8 09:16
昨天我看错了,不是40ms。温度的AD转换要10ms,压强的还需要10ms,至少要20ms才能出一组完整的数据。在MW ...

现在的问题不是这个,是在满足转换时间的条件下,读取的频率不一样,得到的稳定数值是不一样的,MWC每次读取气压计的时间间隔有少许变化,所以我觉得会有些影响。我在stm32上测试的是20ms和100ms那差的真是太多了!

9
 楼主| 发表于 2015-2-8 10:33 | 只看该作者
爵爷 发表于 2015-2-7 17:17
所以apm之类的飞控做定稿是基于z轴数据融合气压计的读数做定高...

请问除了APM做了高度融合外,还有哪些做过?尤其是开源的,想学习下程序

10
发表于 2015-2-8 10:55 | 只看该作者
StarFlying 发表于 2015-2-8 10:32
现在的问题不是这个,是在满足转换时间的条件下,读取的频率不一样,得到的稳定数值是不一样的,MWC每次 ...

那你试试在MWC上,用不同的更新频率读一读气压计的数据,看看和你STM32上的现象是不是一样的,我觉得不应该有这个情况

11
 楼主| 发表于 2015-2-8 12:07 | 只看该作者
暗黑刺客熊 发表于 2015-2-8 10:55
那你试试在MWC上,用不同的更新频率读一读气压计的数据,看看和你STM32上的现象是不是一样的,我觉得不应 ...

已经试过了,MWC的板子上,用它固有的软件和硬件,分不同频率读取气压计原始值,确实存在这个问题。气压计是压电传感器,我不知道是不是这个存在影响,也不知道多少频率读取更稳定

12
发表于 2015-2-8 14:46 | 只看该作者
推荐读取频率是50Hz,频率不能太高[1-2]。多旋翼可以取50Hz。控制固定翼飞机的气压计只用于惯性导航算法(INS),气压参数不需要太高频率刷新,读取可以5Hz[3]。

参考资料
[1]ppz源代码 firmwares/fixedwing/main_ap.c
[2]ppz源代码 firmwares/rotorcraft/main.c
[3]ppz设置例子 airframes\ENAC\fixed-wing\jp.xml
13
 楼主| 发表于 2015-2-8 15:46 | 只看该作者
xukejing 发表于 2015-2-8 14:46
推荐读取频率是50Hz,频率不能太高[1-2]。多旋翼可以取50Hz。控制固定翼飞机的气压计只用于惯性导航算法(IN ...

50Hz是哪里来的数据啊请问一下,另外这个50Hz是单单读取气压计值的频率还是读取温度和气压一起的频率?

14
发表于 2015-2-8 19:12 | 只看该作者
50Hz这个读取频率是一些PPZ飞控的开发者推荐的,在源代码里由“BARO_PERIODIC_FREQUENCY”定义[1-3],推荐值是50[1,2]。为了准确计算高度,温度和气压一起读取,因为气压传感器的目的是惯导控制。对于多旋翼的控制,姿态和惯导强烈耦合在一起,理论上每秒读取气压计次数越多越好,但是超过每秒超过100次就会出错[4]。如果是固定翼飞机,得益于系统的静稳定性,惯导系统每秒钟把高度刷新5次也够了[3]。
参考资料
[1]ppz源代码 firmwares/fixedwing/main_ap.c
[2]ppz源代码 firmwares/rotorcraft/main.c
[3]ppz源代码 boards/apogee/baro_board.c
[4]ppz设置例子 airframes\ENAC\fixed-wing\jp.xml
[5]ppz源代码 peripherals/ms5611_i2c.c
15
 楼主| 发表于 2015-2-8 21:24 | 只看该作者
xukejing 发表于 2015-2-8 19:12
50Hz这个读取频率是一些PPZ飞控的开发者推荐的,在源代码里由“BARO_PERIODIC_FREQUENCY”定义[1-3],推荐 ...

你好,请问下这些代码在哪里可以找到?

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

【站内推荐】上一条 /1 下一条

快速回复 返回顶部 返回列表