MPU6050数据分析与滤波
更新时间:2023-05-14 03:23:01 阅读量: 实用文档 文档下载
MPU6050数据分析与滤波
DS-学习笔记02--MPU6050数据分析与滤波
[复制链接]论坛关于6050的帖子看了个遍也没整明白哪些东西可以用,哪些数据是干什么的。
沉寂了2天,尽可能的在网上收集资料,但是关于6050的太少了
在本论坛问题区提的问题有人看,没人回答,估计是看的人不会,会的人不会去问题区,要么就是大家对6050不熟悉或者是没用过吧。也没人来问津下我们初学者。
让我想起卜学亮一首歌:搞不懂就问人,搞得懂就答人,没有人懂还可以问神!
其实整到现在有的地方我还是不太明白,将就先贡献出来,给大家参考。
我参考的是飞思卡尔官方给出的设计参考。
1.关于6050 陀螺仪和加速度计 的角速度和角度计算。
A.陀螺仪角度计算,很多帖子中都提到了用的是积分,但是我这里还是重新讲下。 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 是陀螺仪比例。飞思卡尔的参考中提到这个值是可以计算出来的,下面我会提供下载,大家自己去看看怎么算的,但是在其论坛和调试手册中都提到,这个比例值还是实验法测量出来的比较准确。
B.加速度仪 角度计算。
加速度仪的角度计算有很多方法,论坛里就有2中。但是都用到了三角函数,数学没学好,照抄了也不行。参考了飞思卡尔的计算方法后大概是这样的。
Angle_Z = (az-C_Z)*R_Z;
angle_z 加速度计敏感轴Z轴产生倾角计算出的角度,单位度(°)
az 是加速度仪 Z轴读数
MPU6050数据分析与滤波
C_Z Z轴零点偏移量 测量方法和陀螺仪的一样。
R_Z 加速度计Z轴比例
C.反复试验,MPU6050加速度计Z轴对应的是陀螺仪的X轴。不知道是不是我的有问题,还是就这么设计的?
2.关于滤波,实验了一天,大概滤出个这么样个波形。
红色:加速度计算出的角度
橙色:陀螺仪积分出的角度
黑色:滤波后的角度
比较大的浮动是我将mpu6050 旋转大约45°的波形。后面是没放稳产生的前后晃动。
MPU6050数据分析与滤波
3.代码部分
ARDUINO 代码复制打印 1. #include "Wire.h"
2. #include "I2Cdev.h"
3. #include "MPU6050.h"
4. MPU6050 accelgyro;
5. int16_t ax, ay, az;
6. int16_t gx, gy, gz;
7.
8. float C_Z = -1343.91;//Z轴零点偏移量
9. float C_Gyro = -99.90;//陀螺仪零点偏移量
10.
11.
12.
13.
14.
15.
16. float Z_Min = -17873.76;//最小极值 float Z_Max = 15186.91;//最大极值 float T_Z = 3;//Z轴角度补偿时间常数 float R_Z = 180/(Z_Max - Z_Min);//Z轴比例 float R_Gyro = 0.081;//陀螺仪比例 unsigned long T_Now =0;//系统当前时间 unsigned long T_Last;//上次时间
17. float Angle_G,Angle_AG,Angle_GG;
18. int i;
19. float GYRO;
20.
21. void setup() {
22. Wire.begin();
23. Serial.begin(38400);
24. // initialize device
25. Serial.println("Initializing I2C
devices...");
26. accelgyro.initialize();
27. // verify connection
28. Serial.println("Testing device
connections...");
29. Serial.println(accelgyro.testConnection() ?
"MPU6050 connection successful" : "MPU6050
MPU6050数据分析与滤波
connection failed");
30. }
31.
32. void loop() {
33. accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy,
&gz); //读取6050数据
34.
35.
36.
37. if (i>20) { GYRO = GYRO/20; float Angle_Z = (az-C_Z)*R_Z;//加速度计 角度
计算 (读取值-偏移量)*比例 单位:°
38. Angle_G = -(GYRO-C_Gyro)*R_Gyro;//陀螺仪采样
(采样值-偏移量)*比例 单位:°/s
39. Angle_AG = Angle_AG +
(((Angle_Z-Angle_AG)*1/T_Z)+Angle_G)*0.005;//滤波
40. Angle_GG = Angle_GG + Angle_G*0.005;//陀螺
仪对X轴积分 得出角度。
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
代码loop段中,我使用了一个if循环,采集20次陀螺仪读数,进行平均。这样似乎影响了数据采集,但是在波形中灵敏度似乎不受影响。
知道办法笨了点,希望有高手给出简化方法。
滤波中用到的0.005是参考中给出的。本来准备用系统时间积分的,但是看滤出的波有模有 Serial.print(Angle_Z); Serial.print(","); Serial.print(Angle_GG); Serial.print(","); Serial.print(Angle_AG); Serial.print("\n"); i=0; } GYRO = GYRO + gx; i++; }
MPU6050数据分析与滤波
样的就没改了。
参考中给出了大部分的算法思想,人笨没办法,就折腾出个这么个代码。
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_AG);
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.许多串口调试工具都提供绘制波形的。
黑马给出的 /thread-676-1-1.html
还有一个是 SerialChart 也是论坛里谁找的,忘了是谁了。
我用的是SerialChart。
具体参数如下
SERIALCHART 代码复制打印
1. [_setup_]
2.
3. port=COM4
4.
5. baudrate=38400
MPU6050数据分析与滤波
6.
7.
8. width=1200
9.
10. height=600
11.
12. background_color = white
13.
14.
15. grid_h_origin = 200
16.
17. grid_h_step = 10
18.
19. grid_h_color = #EEE
20.
21. grid_h_origin_color = #CCC
22.
23.
24. grid_v_origin = 200
25.
26. grid_v_step = 10
27.
28. grid_v_color = #EEE
29.
30. grid_v_origin_color = transparent
31.
32.
33. [_default_]
34.
35. min=-100
MPU6050数据分析与滤波
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53. max=100 [Angle_Z] color = red [Angle_GG] color = orange [Angle_AG] color = black
好多人都看那个帖子了,但是不会用的居多,我也是瞎折腾,出了波形。
解释一下代码
port=COM4 //端口
baudrate=38400//波特率
width=1200//波形图底面宽
height=600//波形图底面高
background_color = white//波形图底面颜色
grid_h_origin = 200 //这个貌似是中间哪个参考线的高度
grid_h_step = 10
grid_h_color = #EEE
grid_h_origin_color = #CCC
grid_v_origin = 200
grid_v_step = 10
grid_v_color = #EEE
grid_v_origin_color = transparent
MPU6050数据分析与滤波
[_default_]//可视区域大小
min=-100
max=100
[Angle_Z]//这个格式是[名字],名字可以随便取,但是读数是串口发送第一行,以逗号分隔的第一个,后面的以此类推。
color = red//紧跟名字下面的是对于该名字指向的数据绘制波形的颜色。
[Angle_GG]
color = orange
[Angle_AG]
color = black
记住,串口发送数据的时候要以逗号分隔。如下:
ARDUINO 代码复制打印
1. Serial.print(Angle_Z);
2. Serial.print(",");
3. Serial.print(Angle_GG);
4. Serial.print(",");
5. Serial.print(Angle_AG);
6. Serial.print("\n");
这样,SerialChart,就可以认识你发送过来的数据了。
5.在调试的时候发现,总是因为调整一个参数而不断的下载程序。不知道论坛里有没有懂VC++接口编程的一起讨论下制作一个串口调试工具,我懂点编程语言,但是不会VC++,接口之类的。如果有人提供那就更好了。
具体实现内容如下:
A.串口接收单片机发送的 陀螺仪、加速度计等传感器原始数据。
B.软件提供相应的公式参数输入框,方便调整参数,比如计算零点值偏移量,对角度积分等等参数。
C.图形化原始数据和公式后数据。
顺便大家帮我看下有什么问题,这样的波形是否能在平衡车中使用。
有什么疑问的可以提出,我明白的都可以解答,不懂的地方就.....
加速度转角度.pdf
MPU6050数据分析与滤波
215.15 KB, 下载次数: 261
SerialChart.zip
5.4 MB,
下载次数: 26
官网参考方案第二版.pdf
4.5 MB, 下载次数: 56
本主题由 弘毅 于 2012-7-5 08:47 设置高亮
正在阅读:
MPU6050数据分析与滤波05-14
公司财务政策分析和资本成本管理08-12
初中生物实验室工作计划06-07
003近期建设规划制定情况汇报交流材料10-14
好莱坞音频素材库(常剪片子的同学,好好保存吧,很有用喔,超级06-07
狗狗场地训练的方法08-16
高考常见古代诗人生平简历11-07
育明考研:2014年北京大学计算机考研考博复习指导05-10
公司员工上半年工作总结范本精选04-21
材料科学基础试卷和答案03-08
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 滤波
- 数据分析
- MPU6050
- 广播电视编导教案
- 浙江省衢州市衢州二中2011-2012学年高一上学期期末考试化学
- 日周月KDJ的综合研判
- 不断开拓周边外交工作新局面
- 课后听力练习test1 答案
- 深入现场 服务一线
- 北京控股有限公司 2001年度业绩报告
- 高硼硅玻璃专业参数
- 19 CPO_T06_C3 CDMA2000 1xEV-DO基本原理及信道结构_41
- 司索信号工安全操作规程(标准版)
- BCH_4型差动继电器中间变流器原理分析
- 地区经济发展差异与高等教育成本补偿属地化
- 党纪条规知识测试题
- 各部门的工作职责与内容
- 成熟稳重的男人说说
- 成语、姓氏等读音
- 酱香型白酒生产工艺的堆积
- 如何培养七年级学生数学学习的习惯
- 高职院校学生职业能力教育的重新审视
- 第六章反比例函数章末检测