搜索
bottom↓
回复: 15

求助:四轴PID参数调节

[复制链接]

出0入0汤圆

发表于 2014-4-10 10:16:47 | 显示全部楼层 |阅读模式
X型的四轴,1和3号电机反转,2和4电机正转。在进行PD调节,只调节俯仰和滚转通道,现在调出的参数是四轴会缓慢的往一边倾斜,就是在平衡点附近特别不灵敏。。加大P的参数,四轴会出现在两个通道上的振荡,P越大振荡越厉害,调小对静态的状态补偿又不够。。请问这种情况该怎么办?是要从控制方面再调PD,还是要检查下滤波出的数据是否稳定?

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2014-4-10 10:52:43 | 显示全部楼层
楼主你好:
     请问1.在读取MPU6050的数据,经过四数素转换得到了Pitch和Roll的角度。就可以用PID调节了吧?
           2.四轴水平放置时,读取的俯仰、翻滚角度不是0°,该怎么校准?和怎么处理数据?
谢谢!

出0入0汤圆

 楼主| 发表于 2014-4-10 11:01:51 | 显示全部楼层
qinkaiabc 发表于 2014-4-10 10:52
楼主你好:
     请问1.在读取MPU6050的数据,经过四数素转换得到了Pitch和Roll的角度。就可以用PID调节了 ...

在读取MPU6050的数据之后你有没有对陀螺仪加速度计进行零漂温漂补偿?如果都补偿了再进行数据融合

出0入0汤圆

发表于 2014-4-10 11:08:22 | 显示全部楼层
wenzhouyxc 发表于 2014-4-10 11:01
在读取MPU6050的数据之后你有没有对陀螺仪加速度计进行零漂温漂补偿?如果都补偿了再进行数据融合 ...

做了
#define ax_offest 840
#define ay_offest -105
#define az_offest -1102

#define gx_offest 79
#define gy_offest 114
#define gz_offest -58


MPU6050放的好的话,水平放置时角度在1°以内。有没有什么方式处理水平数据,使得每次水平放置都在1°以内?

出0入0汤圆

 楼主| 发表于 2014-4-10 11:17:06 | 显示全部楼层
qinkaiabc 发表于 2014-4-10 11:08
做了
#define ax_offest 840
#define ay_offest -105

你再加个低通滤波试试

出0入0汤圆

发表于 2014-4-10 12:42:33 | 显示全部楼层
wenzhouyxc 发表于 2014-4-10 11:17
你再加个低通滤波试试

Single_WriteI2C(CONFIG, 0x06); //低通滤波器

是这个吗?MPU6050初始化的

出0入0汤圆

 楼主| 发表于 2014-4-10 13:03:45 | 显示全部楼层
qinkaiabc 发表于 2014-4-10 12:42
Single_WriteI2C(CONFIG, 0x06); //低通滤波器

是这个吗?MPU6050初始化的

这个是它自身带的。你自己还要再设置一个低通滤波器,或者移动平均法对数据再进行处理

出0入0汤圆

发表于 2014-4-10 13:05:26 | 显示全部楼层
wenzhouyxc 发表于 2014-4-10 13:03
这个是它自身带的。你自己还要再设置一个低通滤波器,或者移动平均法对数据再进行处理 ...

平均法对数据

  1. /*均值滤波*/
  2. void Data_Filter(int16 Acc_Buf[3],int16 Gyro_Buf[3])
  3. {
  4.         unsigned char num;
  5.         int16 Ax_Temp=0,Ay_Temp=0,Az_Temp=0,Gx_Temp=0,Gy_Temp=0,Gz_Temp=0;
  6.         int32 Ax_Sum=0,Ay_Sum=0,Az_Sum=0,Gx_Sum=0,Gy_Sum=0,Gz_Sum=0;
  7.         for(num=0;num<20;num++)
  8.         {
  9.                 READ_MPU6050(Acc_Buf,Gyro_Buf);
  10.                 Ax_Temp = Acc_Buf[0];
  11.                 Ay_Temp = Acc_Buf[1];
  12.                 Az_Temp = Acc_Buf[2];
  13.                 Gx_Temp = Gyro_Buf[0];
  14.                 Gy_Temp = Gyro_Buf[1];
  15.                 Gz_Temp = Gyro_Buf[2];
  16.                 Ax_Sum += Ax_Temp;
  17.                 Ay_Sum += Ay_Temp;
  18.                 Az_Sum += Az_Temp;
  19.                 Gx_Sum += Gx_Temp;
  20.                 Gy_Sum += Gy_Temp;
  21.                 Gz_Sum += Gz_Temp;
  22.         }

  23.         Ax = Ax_Sum / 20 - ax_offest;
  24.         Ay = Ay_Sum / 20 - ay_offest;
  25.         Az = Az_Sum / 20 - az_offest;
  26.         Gx = Gx_Sum / 20 - gx_offest;
  27.         Gy = Gy_Sum / 20 - gy_offest;
  28.         Gz = Gz_Sum / 20 - gz_offest;
  29. }
复制代码


我也做了

出0入0汤圆

 楼主| 发表于 2014-4-10 13:15:03 | 显示全部楼层

我们这边这样处理就没什么问题了。。不好意思,真的不知道了

出0入0汤圆

发表于 2014-4-10 13:23:20 | 显示全部楼层
wenzhouyxc 发表于 2014-4-10 13:15
我们这边这样处理就没什么问题了。。不好意思,真的不知道了

能看下你的代码不?

出0入0汤圆

 楼主| 发表于 2014-4-10 14:06:26 | 显示全部楼层
qinkaiabc 发表于 2014-4-10 13:23
能看下你的代码不?

那部分代码我们参考的是john大神的开源飞控,你看网上能找到不?姿态这部分的代码不是我写的,具体的我也不是很清楚

出0入0汤圆

发表于 2014-5-1 15:54:12 | 显示全部楼层
看到两位大神的交流,不错。。。

出0入0汤圆

发表于 2014-5-12 22:04:16 | 显示全部楼层
我也一直卡PID这块好久了。。怎么个思路啊

出0入0汤圆

发表于 2014-5-14 20:45:10 | 显示全部楼层
学习了,谢谢

出0入0汤圆

发表于 2014-5-14 20:45:36 | 显示全部楼层
学习了,谢谢

出0入0汤圆

发表于 2014-7-8 20:03:51 | 显示全部楼层
楼主你好,我现在的情况和你当时的差不多,不知道你现在解决了吗?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-4 02:33

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表