本帖最后由 bennik 于 2015-1-5 13:33 编辑
喜欢使用不同的开发板来玩,看见论坛有举办这样的活动就毫不犹豫的参加了,之前一直用msp430G2553在做mpu6050的工作,后来才转到msp430fr5969的。感谢前辈IC爬虫的代码,在其基础上进行了理解和修改才完成了前期的工作,后面与电脑的usb接口的工作没有完成,不过也正在进行。自己所做的工作网上也有网友已经完成过的,在这里献丑了,希望大家多家指点与批评,希望金天的不足以后一定会多加注意,我会更加的努力。
/*---------------------------------------------------------------------------------------------------------------------------*/
论坛高手如云,感觉自己的方案和好几个高手的有些相似,现在发上来只能算是献丑了,就当是交作业了,哈哈。
先罗列一下之前的帖子:项目名称:基于mpu6050的手势遥控器设计
项目定位:1. 通过手上动作的变化来感应方向的变化的一款控制型的遥控器。
2. 通过串口将数据发给上位机进行显示。
项目发展远景规划:1. 可以作为那些控制方向的游戏的遥控手柄进行使用。例如:极品飞车。
2. 作为控制四轴飞行器,遥控汽车、船的控制器。
3. 需要制作一个用于与PC机相连的USB接口和通信协议;制作与需要控制的模型的2.4G通信接口和协议。
实现的功能:1. 利用mpu6050的三轴传感器,简单的区分向左和向右,向前和向后四个方向的遥控器。
2. 通过串口上传mpu6050的读数。
3. 制作USB接口,实现作为PC端的遥控器的接入接口(未完成)。
原理图:购买的mpu6050的模块
BOM:无
创新点:1. 原来的遥控器需要双手进行控制,采用这种控制器只需要一只手就能完成原来的一系列控制操作。
2. 可以将遥控器做的更小,更便于携带。
软硬件设计思路(不需提供源代码):1. 利用msp430fr5969的IIC接口与mpu6050进行数据通行,首先对msp430fr5969的IIC进行配置,然后通过IIC对mpu6050进行初始化配置,然后依次读取三轴加速度值和三轴陀螺仪数据。得到数据后现进行求平均值后然后输送到数据融合模块经行三轴数据融合上传给匿名的上位机进行姿态显示。流程图为:
使用过程中遇到的问题及解决的过程等:1. 在TIME_A0的中断中理论上需要10ms,20ms,50ms的中断程序写下去,但是这样始终不通过串口上传数据,分析原因是因为在I2C读取mpu6050的程序中使用进入低功耗模式,因此一直不执行20ms和50ms的中断程序。通过将10ms的中断程序放在20ms和50ms的中断程序后面就行了。
2. 就是在数据融合求解姿态角的过程中需要注意的就是角度的弧度和度之间的转化计算。还有就是因为最后在求解姿态角度后需要放大100倍后在上传给上位机,一开始乘上100的运算凡在20ms的终端中进行计算,但是发现上位机显示的姿态角在静止状态下面波动很大不能正确显示静止状态这个姿态。通过分析mpu6050的加速度计和陀螺仪的6个数据发现不是波动很厉害,但是融合后的数据就变化很厉害,于是将乘以100的运算放在50ms的串口处理中断中进行后,静止状态现下的姿态就正确了。需要考虑计算时间和中断时间的关系,计算时间不要超过中断时间否则会出现计算不完的情况。
解决问题之后,静止状态下面的数据波形和抖动之后在静止的波形图:
可以看见波动不大,可以稳定住了。
视频: