MPU6050+HMC5883L同时驱动(硬件IIC)

2019-07-21 05:16发布

本帖最后由 Taven 于 2017-3-18 14:40 编辑

      我看论坛搞MPU6050之类的模块的人还是蛮多的,但或多或少都有问题,特别是在使用MPU6050时同时读取HMC5883L,成功的经验贴不多。正好最近也在玩GY_86这个模块,单片机使用的STM32F103C8T6最小系统版。也是摸索了一段时间,好在成功同时读取了MPU6050和HMC5883L的数据,当然MS5611也是可以同时读取的,这部分程序还没完全写好,在转换高度的环节还有些问题。 STM32F103C8T6-IMU-0302.rar (4.02 MB, 下载次数: 1108) 2017-3-16 16:43 上传 点击文件名下载附件
    截图中:angle是罗盘的数据,其他的Pitch,Roll,Yaw,分别是MPU6050的横滚,俯仰,航向,由于使用的是DMP库,所以没有加滤波函数,时间久一点Yaw确实有轻微的飘,上点初始化时各轴是校准0度的,图中可见Yaw已经飘了2度了 捕获.PNG
   2017/3/18:更新MS5611气压计 STM32F103C8T6-IMU-0318.rar (4.24 MB, 下载次数: 778) 2017-3-18 14:06 上传 点击文件名下载附件
   这次MS5611里气压转换高度用的是PIX飞控里的公式,效果还是比较好的,当然强烈建议MS5611上要盖海绵,最好是黑 {MOD}的,避免光照和气流影响,这样的读数才会平缓些,截图中Pressure为当前的气压读数(单位pa),altitude为当前的高度(单位m),Temperature为当前气压计的温度读数(扩大了100倍,单位为℃)。每次程序初始化都会把高度自动校准为0的。(初始化时建议平放MPU6050,否则DMP容易初始化失败) 捕获1.PNG 截图中黑 {MOD}背景的两张就是PIX的气压转高度公式。
`AI]1YI97%OXOCPE)0()GJ5.png J1PTZ]}[P]0A80W0M2]`F6B.png



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
30条回答
Taven
1楼-- · 2019-07-23 12:32
arao和xiaomi 发表于 2017-3-27 11:31
你好,我用原子哥的程序通过串口把数据发出去有点问题,就是连接匿名上位机,数据发上去是比较乱,不能接 ...

恩,这之前我做过,用的F103ZET6的最小系统,传个之前测试过的给你,我猜你可能上位机设置有问题。啰嗦几句:(匿名四轴上位机接收数据好像是分两部分的,一部分是三轴的角度数据,用于显示三维的飞行器动态,另一部分是原始的六轴数据,用于显示波形曲线那个界面。也就是说你传数据是要传两种的)。
arao和xiaomi
2楼-- · 2019-07-23 13:37
 精彩回答 2  元偷偷看……
Stevn
3楼-- · 2019-07-23 14:39
我用uCOS,在一个任务中读取dmp数据并发送给上位机,怎么明显响应变慢了啊,没有跑裸板响应快
arao和xiaomi
4楼-- · 2019-07-23 16:44
Taven 发表于 2017-3-27 14:39
恩,这之前我做过,用的F103ZET6的最小系统,传个之前测试过的给你,我猜你可能上位机设置有问题。啰嗦几 ...

恩,好的谢谢哈,我仔细研读一下
arao和xiaomi
5楼-- · 2019-07-23 22:26
Taven 发表于 2017-3-27 14:39
恩,这之前我做过,用的F103ZET6的最小系统,传个之前测试过的给你,我猜你可能上位机设置有问题。啰嗦几 ...

恩,是的,那个数据上传没有问题,我发现是那个波特率的问题,就是我这个开发板不能设置成500000的波特率,不知道是不是波特率太高了开发板不支持还是什么别的原因,我设置成115200就可以了,可以正常显示波形和数据了
Taven
6楼-- · 2019-07-24 00:16
arao和xiaomi 发表于 2017-3-27 15:07
恩,好的,谢谢,就是我这个模块的话MPU6050和磁力计HMC5883L整合在一起的,然后现在能把加速度计和陀螺 ...

按照原子哥的程序就好,主要就是注意,关闭IIC的主模式(不让MPU6050控制辅助IIC),让辅助IIC与主IIC通道直通,使得MCU可以直接通过辅助IIC访问HMC5883L

一周热门 更多>