查看: 1396|回复: 0
打印 上一主题 下一主题

新人6050 DMP 库STM32F103运行成功分享附代码

[复制链接]
跳转到指定楼层
沙发
发表于 2015-6-10 09:28:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
首先声明:1.DMP库用的是圆点博士整理过的开源代码。2.上位机是用的匿名四周的上位机。3.开发板是正点原子mini开发板。4.芯片stm32f103rbt6。5.IIC驱动同样用的圆点博士的开源代码。6.传感器芯片mpu6050。

过程:1.做四轴姿态也有点时间了,前段时间做出了关于6050简单的寄存器读取数据,只读取加速度,和陀螺仪数据然后用串口发送到PC端。简单读取过程不再讲述,见下面链接:http://www.amobbs.com/thread-5574011-1-1.html
         2.我们都知道只读到简单地传感器数据是第一步,还要对数据处理。处理数据才是重中之重!!!后来开始查资料,关于什么陀螺仪数据积分啊...加速度数据的短时间不准确啊....卡尔曼啊...互补啊...四元数....偏差纠正....看的我蛋碎了一地.....本来数学知识就有限.... 。
         3.无意中查阅到6050DMP*大招*!!首先发现不用我们去处理那些复杂的算法(最重要的),其次还可以减轻主芯片的数据处理量(其次)。感觉很好的东西啊!!!
         4.不知道该从何处下手.....迷茫啊。然后在阿莫论坛里看到了一篇很火的关于DMP的帖子,有代码,有一点点讲解。先下载下来看了看,庆幸代码能用,可以吧四元数读取出来,计算出PITCH,YAW,ROLL。但那代码写的着实让人看得蛋疼.....不怕人喷我,感觉他写的够乱的(可能是自己能力有限吧,看不懂本质)。
         5.有了一个正确的代码,为什么不能有第二个?然后开始搜集关于DMP的资料和库函数,以及一些说是能运行的程序....还有据说是官方的DMP库,打开看了看,我次奥,几个文件加起来快上万行了.......首先我英语不太好注释看不太懂,其次官方的DMP库做的太完美了,有很多功能我都用不到(#ifndef.......)下载了好多文件。看了之后很多都是一样的东西,有价值的也就那么几个文件。
         6.后查阅到圆点博士的小四轴现在用的也是DMP库,而且他们的程序还是开源的,所以就搜他们的开源代码,很幸运收到了很多很有价值的资源。包括整理过的DMP库函数,以及一些其他的传感器.h文件,还有一些通信驱动。真的很赞!!
         7.开始把圆点博士整理过的库函数拿过来为我所用!!本打算用自己的IIC驱动,后发现自己的IIC写的太渣了,虽然没有错误,但跟他们写好的一比完全不在一个档次。所以就冒昧的把圆点博士的IIC也一起撬了过来!
         8.开始添加文件。然后#include调用.h文件。运行......各种警告和错误,然后就慢慢的改,看不懂原因的就google翻译,然后问度娘错误的原因。期间也学到了不少!
         9.期间参照那个论坛里下载下来的可以运行的程序然后一一调用函数,慢慢的就调试成功了。当然有些地方不懂得还要看看库函数中各个函数的功能和用法,以及输入输出值,至于函数里面的代码有没有细细看。
         10.成功后串口输出,PITCH,ROLL。当数据成功输出后非常高兴啊!!那晚睡的很晚...太激动了!
         11.之后感觉单单串口实处干巴巴的数据太不好看了,所以就开始寻找可用的上位机来绘图,最后选择了匿名四周的上位机!功能很强大的上位机,而且优酷上还有协议以及使用方法的讲解!!按照协议来发送数据就绘出图像了!!以后肯定还会用到这个上位机的!!!
         12.期间自己加入了一些qq群,群里有很多资料很多高手,这也是一个获得资料和解决问题的好方法!!!!

存在疑问:1.只是单单的利用6050读出了数据,没有加磁力计,所以感觉YAW输出值没有意义,所以就没有输出,因为YAW值需要磁力计来标定或者是纠正,如果没有磁力计的加入那么YAW也就没有利用价值,也就会”飘“不知理解对不对!
                2.首先数据从下面图像上可以看出来,有的地方偶尔是会有毛刺的,但是这个毛刺跳动后还会回归到数据线里面,不知道是什么原因。其次不知道现在的数据不知道能否直接拿来用,是否还要再来一次滤波???
                3.关于DMP数据输出速度,印象里好像是200Hz。200Hz能否满足四周的运算速度??
                4.(若我的一个疑问是对的)我买了一个5883,如何把5883与6050得到的数据结合起来,来纠正或者标定方向(主要是纠正)?
                5.根据不完全了解,6050可以作为主器件来读取磁力计5883的数据然后再处理,实现9轴姿态输出。这里如何实现的(6050的引脚上有两个接口xcl,xda)??还是我了解到的数据有错误??
                7.6050模块上INT引脚是干吗的????(可能是我对6050的使用手册没有太深入的阅读吧)
共享资料:javascript:;javascript:;

最后:
                1.首先感谢那些开源制作的团体!!!其次谢谢大家能来看我这个帖子,当然还请做过的大神们给解答一些疑问。
                2.希望那些和我一样的新手们,大家一起来分享一下过程和心得以及进展,以及遇到的一些问题,以及有经验的前辈们能给指点一下,避免我们少走一点弯路!!
                3.望大家一起分享一起交流一起进步,未来毕竟是我们的,放开视野看看国外!!....................(感慨很多)
                4.个人建议.希望论坛里可以做一个资料库,把那些真实的有价值的资料整理起来以方便我们来寻找。省去了从帖子到资料的搜寻过程,以及有些资料的可利用问题。慢慢的论坛就会有一个一个庞大的有价值的数据库了,也提供了一个大家有用的资料交流共享的平台!!
                5.再次感谢那些开源的团体及个人,以及答疑的大神!!!
转载

回复

使用道具 举报

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

本版积分规则

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