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++; }
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新工程科技MPU6050数据分析与滤波(4)全文阅读和word下载服务。
相关推荐: