mpu6050 计算角度

mpu6050 计算角度

ID:1321252

大小:52.00 KB

页数:5页

时间:2017-11-10

mpu6050 计算角度_第1页
mpu6050 计算角度_第2页
mpu6050 计算角度_第3页
mpu6050 计算角度_第4页
mpu6050 计算角度_第5页
资源描述:

《mpu6050 计算角度》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、shortMPU6050_Get_Angle(floatx,floaty,floatz,u8dir){floattemp;floatres=0;switch(dir){case0://与自然Z轴的角度temp=sqrt((x*x+y*y))/z;res=atan(temp);break;case1://与自然X轴的角度temp=x/sqrt((y*y+z*z));res=atan(temp);break;case2://与自然Y轴的角度temp=y/sqrt((x*x+z*z));res=atan(temp);

2、break;}returnres*1800/3.14;//把弧度转换成角度}QQ截图20121029102235.jpg(18.21KB,下载次数:130)有更简单的accelgyro.getMotion6(&ax,&ay,&az,&gx,&gy,&gz);angleAx=atan2(ax,az)*180/PI;计算量更少,而且atan2返回值范围-PI~PI角速度传感器输出的是某个轴的角速度,所以,如果想计算某个轴的角度(一般是相对于自然坐标轴),那么只需要对角速度进行积分就可以了,举例来说,我们现在要测量X

3、轴的角度,那么先假设起始状态x轴和自然坐标轴的角度为0,那么现在你可以将x轴想象成一辆只有速度仪表的汽车,汽车按照一定的速度行驶在一段时间后,如果你要计算汽车(x轴)到起始点的距离(x轴和自然周的角度),那么你只需要用车速(x轴的角速度)*时间就可以算出来了。当然,传感器的角速度输出严格来说是一个瞬时值,实际中不太可能是一个匀速值,所以需要做一些处理。希望对你有帮助。我也是刚接触这个东西,共同学习吧。你好,请问mpu6050的传感器,既可以求加速度,也可以算出角度?如果我想消除重力加速度的影响,有木有什么办法?

4、具体的我也没做过,根据我了解的一些信息提供以下几个方法:第一通过滤波器,过滤掉重力角速度的影响;第二看你需要计算那个轴的加速度,想办法保持这个轴和重力成90度角;第三将两个陀螺仪安装到一个平面,其中一个作为测量平面的倾斜角度,另外一个作为测量加速度,通过角度来反推消除重力加速度对其他各轴的影响。第四如果你需要测量的加速度远大于重力加速度,那么这个基本就不是个问题了。你可以查阅一下重力加速度计的手册,一般都推荐第一种方式。以上摘自http://www.geek-workshop.com/thread-2328-1

5、-1.htmlmpu6050角度换算如果觉得我是小白,勿喷,直接忽视即可,这其中也有我个人一些鄙薄的理解。如有错误欢迎指正,有交流才有进步。其实原理很简单,但是对刚开始接触6050的人来说,了解其原理应该会比直接移植代码理解更深刻吧。大家可以直接把6050的加速度计部分的检测元件想象成一个方盒子,方盒子里面放着个小球,小球因重力作用会在盒子的各个面上产生垂直于作用面的力,各个力矢量合成就是和重力相平衡的力了(不考虑除重力加速度以外的加速度)上图是一个手绘的,水平不咋样别见怪。上图是6050绕Y轴旋转一定角度产生

6、的力的合成图,绕一个轴旋转哈理解一些。gx=g重*cosΦ2;gz=g重*cosΦ1;同理gy=g重*cosΦ3;(该图上Φ3=90°)gx就是X轴输出的数值除以最小分辨率。如±2g时,最小分辨率是2^16/4=16384LSB/g;(资料上是16384LSB/mg当时我怎么看都不能明白,这里就提醒下,如果都懂就当我没说)很多人以为都以为角度是加速度读出来的值除以180°-0°的线性关系,其实用在飞思卡尔平衡车上的线性关系只是相对一个很小角度变换范围里的线性,在0-360的范围里肯定是不适用的,只有根据反余切变

7、换才能得到他的真是角度。说明一下,如果是用在飞控上,如果某个方向上出现了除重力加速度分量以外的加速度时,单单加速度读出的值是比该角度对应的加速度值大的。附上我根据飞思卡尔官方出的陀螺仪和加速度计融合而写的程序,自己写的,如有错误欢迎指正voidOffset_alignment(void){statics32A_Temp_X,A_Temp_Y,A_Temp_Z,G_Temp_X,G_Temp_Y,G_Temp_Z;staticu8Cnt=0;if(Calibration_Flag!=1){A_Temp_X+=(s

8、32)X_Angle;A_Temp_Y+=(s32)Y_Angle;A_Temp_Z+=(s32)Z_Angle;G_Temp_X+=(s32)X_Angle_acceleration;G_Temp_Y+=(s32)Y_Angle_acceleration;G_Temp_Z+=(s32)Z_Angle_acceleration;Cnt++;}if(Cnt==200){A_Offset_

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。