电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

MPU6050大数据轻松分析报告

15页
  • 卖家[上传人]:壹****1
  • 文档编号:432027799
  • 上传时间:2022-08-05
  • 文档格式:DOC
  • 文档大小:708KB
  • / 15 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、wordMPU6050数据轻松分析这个文章是根据自己学习,查资料的汇总,同时把一些自己的心得加进去。如果有什么不对的,欢迎请大家指正、交流。:zhb_account163.最近看到加速度计和陀螺仪比拟火,而且也有很多人都在研究。于是也在网上淘了一个mpu6050模块,想用来做自平衡小车。可是使用起来就发愁了。网上关于mpu6050的资料确实不少,但是大家都是互相抄袭,然后贴出一段程序,看完之后还是不知道所以然。经过翻阅各个方面的资料,以与自己的研究在处理mpu6050数据方面有一些心得,在这里和大家分享一下。在处理加速度计和陀螺仪用到的方法都是比拟简单的,这里的简单并不是不需要任何根底知识,只是这些根本知识都是最根本的,比如简单的三角函数,数学计算,物理知识,c语言以与根本的arduino知识如果不会arduino会其它单片机也是一样的,本文实践是使用arduino,如果还不具备这些知识那就快去补课吧。1、 加速度和陀螺仪原理当然,在开始之前至少要弄懂什么是加速度计,什么是陀螺仪吧,否如此那后边讲的都是没有意义的。简单的说,加速度计主要是测量物体运动的加速度,陀螺仪主要测量物体转动的角

      2、速度。这些理论的知识我就不多说了,都可以在网上查到。这里推荐一篇讲的比拟详细的文章A Guide To using IMU (Accelerometer and Gyroscope Devices) in Embedded Applications,在网上可以直接搜索到。2、 加速度测量在开始之前,不知大家是否还记得加速度具有合成定理?如果不记得可以先大概了解一下,其实简单的举个例子来说就是重力加速度可以理解成是由x,y,z三个方向的加速度共同作用的结果。反过来说就是重力加速度可以分解成x,y,z三个方向的加速度。加速度计可以测量某一时刻x,y,z三个方向的加速度值。而自平衡小车利用加速度计测出重力加速度在x,y,z轴的分量,然后利用各个方向的分量与重力加速度的比值来计算出小车大致的倾角。其实在自平衡小车上非静止的时候,加速度计测出的结果并不是非常准确。因为大家在高中物理的时候都学过,物体时刻都会受到地球的万有引力作用产生一个向下的重力加速度,而小车在动态时,受电机的作用肯定有一个前进或者后退方向的作用力,而加速度计测出的结果是,重力加速度与小车运动加速度合成得到一个总的加速度在三个方

      3、向上的分量。不过我们暂时不考虑电机作用产生的运动加速度对测量结果的影响。因为我们要先把复杂的事情分解成一个个简单的事情来分析,这样才能看到成果,才会有信心继续。下边我们就开始分析从加速度得到角度的方法。如如下图,把加速度计平放,分别画出xyz轴的方向。这三个轴就是我们后边分析所要用到的坐标系。把mpu6050安装在自平衡车上时也是这样的水平安装在小车底盘上的,假设两个车轮安装时车轴和y轴在一条直线上。那么小车摆动时,参考水平面就是桌面,并且车轴y轴与桌面始终是平行的,小车摆动和移动过程中y轴与桌面的夹角是不会发生变化的,一直是0度。发生变化的是x轴与桌面的夹角以与z轴与桌面的夹角,而且桌面与x轴z轴夹角变化度数是一样的。所以我们只需要计算出x轴和z轴中任意一个轴的夹角就可以反映出小车的倾斜的情况了。为了方便分析,由于y轴与桌面夹角始终不变,我们从y轴的方向俯看下去,那么这个问题就会简化成只有x轴和z轴的二维关系。假设某一时刻小车上加速度计mpu6050处于如下状态,如下图是我们看到简化后的模型。在这个图中,y轴已经简化和坐标系的原点o重合在了一起。我们来看看如何计算出小车的倾斜角,也就

      4、是与桌面的夹角a。上图g是重力加速度,gx、gz分别是g在x轴和z轴的分量。由于重力加速度是垂直于水平面的,得到:角a+角b=90度X轴与y轴是垂直关系,得到:角c+角b=90度于是轻松的就可以得出:角a=角c根据力的分解,g、gx、gz三者构成一个长方形,根据平行四边形的原理可以得出:角c=角d所以计算出角度d就等效于计算出了x轴与桌面的夹角a。前边已经说过gx是g在x轴的分量,那么根据正弦定理就可以得出:Sind=gx/g得到这个公式可是还是得不到想要的角度,因为需要计算反正弦,而反正弦在单片机里不是很好计算。为了得到角度,于是又查了相关资料,原来在角度较小的情况下,角度的正弦与角度对应的弧度成线性关系。先看看下边的图:这个图x轴是角度,取值X围是090度,有三个函数曲线,分别是:Y=sinx 正弦曲线YY从图上可以看出,当角度X围是029度时:对于自平衡车来说,小车的摆动X围在-2929度之内,如果超过这个X围,小车姿态也无法调整,所以对于自平衡小车sinx=x*3.14/180根本上是成立的。当然有时候也会担心-2929度的摇摆X围还是无法满足需求。那可以给上边的公式乘一个系数

      5、。得到如下公式:S从上边的函数比照图可以看出,当系数取0.92时,角度X围可以扩大到-4545度。经过这一系列的分析,终于得到角度换算方法:由Sind=gx/gS得到:那么角度就可以通过如下公式计算出:d=180*gx/(k*g*3.14)而gx可以从加速度计里读出来,所以这下角度就可以轻松得到了。而之前也说过这个角度不是很准确,但是至少可以反映出角度变化的趋势。不过可以通过卡尔曼滤波等算法把加速度计读出的角度和陀螺仪读出的角度结合起来,使小车的角度更加准确。3、 陀螺仪通过陀螺仪来测量角度就很简单了,因为陀螺仪读出的是角速度,大家都知道,角速度乘以时间,就是转过的角度。把每次计算出的角度做累加就会等到当前所在位置的角度。先看如下图:假设最初陀螺仪是与桌面平行,单片机每tms读一次陀螺仪的角速度,当读了三次角速度以后 z轴转到上图的位置,如此在这段时间中转过的角度为x:角x=角1+角2+角3假设从陀螺仪读出的角速度为w,那总角度为:X=(w1*t1+w2*t2+w3*t3)/1000假设经过n次,那么总的角度如下:X=(w1*t1+w2*t2+w3*t3+wn*tn)/1000实际上这

      6、就是一个积分过程。其实这种计算出来的角度也存在一定的误差,而且总的角度是经过屡次相加得到的,这样误差就会越积累越大,最终导致计算出的角度与实际角度相差很大。于是也可以使用卡尔曼滤波把加速度计读出的角度结合在一起,使计算出的角度更准确。4、 mpu6050与arduino连接为了方便大家学习和复制,同时也应大家的要求,详细列出从哪里可以找到,比照了很多觉得这个是最划算和实用的,供大家参考名称来源Mpu6050模块.dwz./ntW0HArduino模块.dwz./ntY5J其它.dwz./ntYEBMpu6050可以直接买现成的模块,模块使用i2c接口和arduino通信,连接方式如下:Mpu6050ArduinoVCCVCCGNDGNDSCLAD5SDAAD45、 Arduino代码在开始之前先介绍一下用到的组件和算法。Mpu6050是通过i2c接口和arduino连接,所以需要i2c库,另外mpu6050也有现成的库。由于陀螺仪本身就有偏差,屡次积累之后偏差会越来越大越来越不准确,所以需要用一些滤波算法来校正,这里用的是卡尔曼滤波算法。卡尔曼滤波在网上讲的很多,这里就不多说了。网上有

      7、一个测量温度的通俗版,另外维基百科里的介绍比拟简单。有兴趣的可以去研究一下。另外也可以用其它算法来滤波,这里也只是做演示所以不多介绍。/ Arduino Wire library is required if I2Cdev I2CDEV_ARDUINO_WIRE implementation#include Wire.h/ I2Cdev and MPU6050 must be installed as libraries, or else the .cpp/.h files/ for both classes must be in the include path of your project#include I2Cdev.h#include MPU6050.h/ class default I2C address is 0x68/ specific I2C addresses may be passed as a parameter here/ AD0 low = 0x68 (default for InvenSense evaluation board)/ AD0 high =

      8、0x69MPU6050 accelgyro;int16_t ax, ay, az;int16_t gx, gy, gz;double total_angle=0;#define LED_PIN 13/* 把mpu6050放在水平桌面上,分别读取读取2000次,然后求平均值 */#define AX_ZERO (-1476) /* 加速度计的0偏修正值 */#define GX_ZERO (-30.5) /* 陀螺仪的0偏修正值 */void setup() / join I2C bus (I2Cdev library doesnt do this automatically) Wire.begin(); / initialize serial munication / (38400 chosen because it works as well at 8MHz as it does at 16MHz, but / its really up to you depending on your project) Serial.begin(38400); / initialize devic

      9、e Serial.println(Initializing I2C devices.); accelgyro.initialize(); / verify connection Serial.println(Testing device connections.); Serial.println(accelgyro.testConnection() ? MPU6050 connection successful : MPU6050 connection failed);/* 通过卡尔曼滤波得到的最终角度 */float Angle=0.0; /*由角速度计算的倾斜角度 */float Angle_gy=0.0; float Q_angle=0.9; float Q_gyro=0.001;float R_angle=0.5;float dt=0.01;/* dt为kalman滤波器采样时间; */char C_0 = 1;float Q_bias, Angle_err;float PCt_0=0.0, PCt_1=0.0, E=0.0;float K_0=0.0, K_1=0.0, t_0=0.0, t_1=0.0;float Pdot4 =0,0,0,0;float PP22 = 1, 0 , 0, 1 ;/* 卡尔曼滤波

      《MPU6050大数据轻松分析报告》由会员壹****1分享,可在线阅读,更多相关《MPU6050大数据轻松分析报告》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.