下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、DS-学习笔记 02-MPU6050 数据分析与滤波鼠复制链接论坛关于 6050 的帖子看了个遍也没整明白哪些东西可以用,哪些数据是干什么的。沉寂了 2 天,尽可能的在网上收集资料,但是关于 6050 的太少了在本论坛问题区提的问题有人看,没人回答,估计是看的人不会,会的人不会去问题区,要么就是大家对 6050 不熟悉或者是没用过吧。也没人来问津下我们初学者。让我想起卜学亮一首歌:搞不懂就问人,搞得懂就答人,没有人懂还可以问神!其实整到现在有的地方我还是不太明白,将就先贡献出来,给大家参考。我参考的是飞思卡尔官方给出的设计参考。1.关于 6050 陀螺仪和加速度计的角速度和角度计算。A.陀螺仪
2、角度计算,很多帖子中都提到了用的是积分,但是我这里还是重新讲下。angle_n=angle_n-1+(Gyro-C_Gyro)*R_Gyro;angle_n 当前角度值,它的单位是度()angle_n-1 上一次计算出的角度值Gyro 陀螺仪敏感轴偏转值,也就是当前敏感轴读数C_Gyro 陀螺仪零点偏移值,这个值的测量方法是:将陀螺仪敏感轴水平放置静止时的读数,我的零点偏移值是水平、垂直、倒置,分别取 1024 次,作平均值得出的,读数是-177.8865041,但是最后在程序实践中,调整到-99.90。或许还有别的办法,自己看着办吧。R_Gyro 是陀螺仪比例。飞思卡尔的参考中提到这个值是可
3、以计算出来的,下面我会提供下载,大家自己去看看怎么算的,但是在其论坛和调试手册中都提到,这个比例值还是实验法测量出来的比较准确。B.加速度仪角度计算。加速度仪的角度计算有很多方法,论坛里就有 2 中。但是都用到了三角函数,数学没学好,照抄了也不行。参考了飞思卡尔的计算方法后大概是这样的。Angle_Z=(az-C_Z)*R_Z;angle_z 加速度计敏感轴 Z 轴产生倾角计算出的角度,单位度()az 是加速度仪 Z 轴读数C_ZZ 轴零点偏移量测量方法和陀螺仪的一样。R_Z 加速度计 Z 轴比例C.反复试验,MPU605S速度计 Z 轴对应的是陀螺仪的 X 轴。不知道是不是我的有问题,还是就
4、这么设计的?2 .关于滤波,实验了一天,大概滤出个这么样个波形。红色:加速度计算出的角度橙色:陀螺仪积分出的角度黑色:滤波后的角度比较大的浮动是我将 mpu6050 旋转大约 45。的波形。后面是没放稳产生的前后晃动。3 .代码部分ARDUINOR 码复制打印#includeWire.h#includeI2Cdev.h#includeMPU6050.h”MPU6050accelgyro;int16_tax,ay,az;int16_tgx,gy,gz;floatC_Z=-1343.91;/Z 轴零点偏移量floatC_Gyro=-99.90;/陀螺仪零点偏移量floatZ_Min=-17873.
5、76;最小极值floatZ_Max=15186.91;/最大极值floatT_Z=3;/Z 轴角度补偿时间常数floatR_Z=180/(Z_Max-Z_Min);/Z 轴比例floatR_Gyro=0.081;/陀螺仪比例unsignedlongT_Now=0;/系统当前时间..5.16.unsignedlongT_Last;/上次时间17.floatAngle_G,Angle_AG,Angle_GG;18.inti;19.floatGYRO;20.21.voidsetup()22.Wire.begin();23.Serial.
6、begin(38400);24./initializedevice25.Serial.println(InitializingI2Cdevices.);26.accelgyro.initialize();27./verifyconnection28.Serial.println(Testingdeviceconnections.);29.Serial.println(accelgyro.testConnection()?MPU6050connectionsuccessful:MPU6050connectionfailed);30.31.32.voidloop()33.accelgyro.get
7、Motion6(&ax,&ay,&az,&gx,&gy,&gz);/读取 6050 数据34.if(i20)35.36.GYRO=GYRO/20;37.floatAngle_Z=(az-C_Z)*R_Z;/加速度计角度计算(读取值-偏移量)*比例单位:38.Angle_G=-(GYRO-C_Gyro)*R_Gyro;/陀螺仪采样(采样值-偏移量)*比例单位:/s39.Angle_AG=Angle_AG+(Angle_Z-Angle_AG)*1/T_Z)+Angle_G)*0.005;/滤波40.Angle_GG=Angle_GG+Angle_G*
8、0.005;/陀螺仪对 X 轴积分得出角度。41.Serial.print(Angle_Z);42.Serial.print(,);43.Serial.print(Angle_GG)44.Serial.print(,);45.Serial.print(Angle_AG)46.Serial.print(n);47.i=0;48.49.GYRO=GYRO+gx;50.i+;51.代码 loop 段中,我使用了一个 if 循环,采集 20 次陀螺仪读数,进行平均。这样似乎影响了数据采集,但是在波形中灵敏度似乎不受影响。知道办法笨了点,希望有高手给出简化方法。滤波中用到的 0.005 是参考中给出的。
9、 本来准备用系统时间积分的, 但是看滤出的波有模有样的就没改了。参考中给出了大部分的算法思想,人笨没办法,就折腾出个这么个代码。4.如何绘制波形图A.绘制波形图一般用 excel,吧串口调试工具读出是数据导入 excel,选择全部数据,单击图表向导就可以了,记住,在 arduino 输出数据的时候不要用“逗号”分割,打印一个 table 也就是把我上面的代码ARDUINO 弋码复制打印1.Serial.print(Angle_Z);2.Serial.print(,);3.Serial.print(Angle_GG)4.Serial.print(,);5.Serial.print(Angle_A
10、G)6.Serial.print(n);换成ARDUINO 弋码复制打印1.Serial.print(Angle_Z);2.Serial.print(t);3.Serial.print(Angle_GG)4.Serial.print(t);5.Serial.print(Angle_AG)6.Serial.print(n);在串口调试工具得到的数据就可以粘贴到 excel,直接得到一个 N 行 3 列的表格。至于多少行,看你要采样多少个数据。B.许多串口调试工具都提供绘制波形的。黑马给出的 http:/www.geek- SerialChart 也是论坛里谁找的,忘了是谁了。我用的是 Seria
11、lChart。具体参数如下SERIALCHAR 砧码复制打印1._setup_2.3.port=COM44.5.baudrate=384006.7.8.width=12009.10.height=60011.12.background_color=white13.14.15.grid_h_origin=20016.17.grid_h_step=1018.19.grid_h_color=#EEE20.21.grid_h_origin_color=#CCC22.23.24.grid_v_origin=20025.26.grid_v_step=1027.28.grid_v_color=#EEE29.
12、30.grid_v_origin_color=transparent31.32.33._default_34.35.min=-10036.37.max=1001.Angle_Z42.43.color=red44.45.46.Angle_GG47.48.color=orange49.50.51.Angle_AG52.53.color=black好多人都看那个帖子了,但是不会用的居多,我也是瞎折腾,出了波形。解释一下代码port=COM4/端口baudrate=38400/波特率width=1200/波形图底面宽height=600/波形图底面高background_c010r
13、=white/波形图底面颜色grid_h_origin=200/这个貌似是中间哪个参考线的高度grid_h_step=10grid_h_c010r=#EEEgrid_h_origin_c010r=#CCCgrid_v_origin=200grid_v_step=10grid_v_c010r=#EEEgrid_v_origin_c010r=transparent_default_/可视区域大小min=-100max=100Ang1e_Z这个格式是名字,名字可以随便取,但是读数是串口发送第一行,以逗号分隔的第一个,后面的以此类推。color=red/紧跟名字下面的是对于该名字指向的数据绘制波形的颜色。Ang1e_GGcolor=orangeAng1e_AGcolor=black记住,串口发送数据的时候要以逗号分隔。如下:ARDUINO 弋码复制打印1.Serial.print(Ang1e_Z);2.Serial.print(,);3.Serial.print(Ang1e_GG)4.Serial.print(,);5.Serial.print(Ang1e_AG)6.Serial.print(n);这样,SerialChart,就可以认识你发送过来的数据了。5.在调试的时候发现,总是因为调整一个参数而不断的下载程序。不知道论坛里有
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 远程游戏团队介绍
- 2025骨科股骨颈骨折髋关节置换术后康复培训教程
- 大学生营养调查
- 养殖基地合作协议书
- 演出合作协议书
- 俏江南对赌协议书
- 婚后夫妻约定协议书
- 2025-2026学年北京市东城区初三生物上册期中考试试卷及答案
- 2025-2026学年安徽省亳州市高三物理上册期中考试试卷及答案
- 北师大版八年级数学上册月考考试试题及答案
- 2025小红书S+级项目《宝藏目的地》招商方案
- IMPA船舶物料指南(电子版)
- 2025年国庆节(庆祝新中国成立76周年)全文课件
- 光伏冬季防火安全培训课件
- 甘肃跟踪审计管理办法
- 高压电工安全知识培训
- QC/T 544-2025汽车发动机凸轮轴
- 2025年中国安全U盘市场调查研究报告
- 数据标注课件
- 2025年西藏自治区综合评标评审专家库房建和市政评标专家考试历年参考题库含答案详解(5套)
- 侠客行古诗讲解
评论
0/150
提交评论