#MPU6050之2阶低通滤波,滤波效果非常好

更新时间:2023-07-07 05:58:33 阅读: 评论:0

#MPU6050之2阶低通滤波,滤波效果⾮常好
难忘的老师作文⾃从打算搞⽆⼈机之后,最终倒在了姿态的问题上,每次到了调参数PID,飞机都不稳。之后锁定了⼏个可能的因素,⼀是参数没做到最佳,⼆就是电机⾼转速下,6050受到震动的情况下,姿态乱了,导致PID⽆法做到最佳。
经过各种排查,试过各种减震,效果还是不明显,⽆意中接触了穿越机的F3飞控,经过实验,发现穿越机在没有做减震的情况下,输出的数据⾮常平滑,看了代码,6050输出的数据是要经过2阶低通滤波。经过移植到树莓派后,终于做到了⾼频震动下,6050 的输出在0.3的误差,⽽不是原先的5度左右的误差。感觉⾮常好。⽽且反馈的⾮常快,并没有滞后。金泰亨身高
这次代码⽐较多。感谢cleanflight,感谢正点原⼦@ALIENTEK,这个是对⽅开源的代码移植出来的。再次感谢。
//传感器对齐定义的机体坐标系的安装⽅向
#define ACCEL_ALIGN  CW0_DEG
/*传感器对齐定义的机体坐标系的安装⽅向*/
#define GYRO_ALIGN  CW0_DEG
/*低通滤波参数*/
#define GYRO_LPF_CUTOFF_FREQ  80.0f
#define XYZ_AXIS_COUNT 3
biquadFilter_t gyroFilterLPF[XYZ_AXIS_COUNT];//⼆阶低通滤波器
Axis3i16 gyroADCRaw;//陀螺仪原始AD数据 x,y,z
哪吒画Axis3i16 gyroADC;//校准的AD数据 x,y,z吃醋的好处
Axis3f gyrof;//转换单位为°/s的数据 x,y,z
//软件⼆阶低通滤波参数(单位Hz)
#define ACCEL_LPF_CUTOFF_FREQ  15.0f
biquadFilter_t accFilterLPF[XYZ_AXIS_COUNT];//⼆阶低通滤波器
Axis3i16 accADCRaw;//加速度原始AD数据,x,y,z
Axis3i16 accADC;//校准后的AD数据 x,y,z
Axis3f accf;//转换单位为G的数据 x,y,z
//初始化⼆阶低通滤波
for(int axis =0; axis <3; axis++)
{
biquadFilterInitLPF(&gyroFilterLPF[axis], gyroUpdateRate, GYRO_LPF_CUTOFF_FREQ);
}
鬼故事短篇
//初始化软件⼆阶低通滤波
for(int axis =0; axis <3; axis++)
{
biquadFilterInitLPF(&accFilterLPF[axis], accUpdateRate, ACCEL_LPF_CUTOFF_FREQ);
}
//这⾥⽤在循环读取传感器数据之后⽤,每次都进⾏滤波
//软件低通滤波
for(int axis =0; axis <3; axis++)
{
乡6accf.axis[axis]=biquadFilterApply(&accFilterLPF[axis], accf.axis[axis]);
}
//软件⼆阶低通滤波
for(int axis =0; axis <3; axis++)
飞机哪个位置比较好{
gyrof.axis[axis]=biquadFilterApply(&gyroFilterLPF[axis], gyrof.axis[axis]);
修篱种菊什么意思}
代码就是⼤概就这么多。⾃此,经过滤波后的数据,再进⾏PID输出的时候,已经感觉⾮常平稳,接下来就是要调节PID的参数,直到能平稳飞起来。需要代码可以私信联系。

本文发布于:2023-07-07 05:58:33,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1083128.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   通滤波   阶低   参数   代码   穿越   情况   输出
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图