OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4722|回复: 6

求助PID调试

[复制链接]

48

主题

157

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
240
金钱
240
注册时间
2018-4-21
在线时间
105 小时
发表于 2018-8-3 14:27:18 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 c627933142 于 2018-8-4 12:31 编辑

调内环有一阵子了 外环还没开始
现在的问题是只有内环的情况下 飞机往一边歪 歪的时候一卡一卡的 3秒左右就歪成90度了
P值大了一点就抖小一点感觉没力气 一种说法是飞机平衡位置轻微抖动就是调好了 还有一种说法是飞机缓慢往一边倾斜但不抖动就好了 应该信哪种啊?
I值是定角度能力 但是加小了没用 大了就抖
D值不知道调到什么程度就好
浅谈四轴PID的那文章看了又看 但是不知道三个参数分别让飞机表现出什么现象才叫调好?
望高人指点一番

最佳答案

查看完整内容[请看2#楼]

早解决了 因为电机与螺旋桨同轴度太低 高速旋转时机架剧烈抖动 干扰到了角速度数据的反馈了 后来换了大疆的自锁浆 又换了一副碳纤维机架 才保持了高度的稳定性 后来我调了将近一个月的参数我两个小时就调好了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

48

主题

157

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
240
金钱
240
注册时间
2018-4-21
在线时间
105 小时
 楼主| 发表于 2018-8-3 14:27:19 | 显示全部楼层

早解决了 因为电机与螺旋桨同轴度太低 高速旋转时机架剧烈抖动 干扰到了角速度数据的反馈了
后来换了大疆的自锁浆 又换了一副碳纤维机架 才保持了高度的稳定性 后来我调了将近一个月的参数我两个小时就调好了
回复

使用道具 举报

48

主题

157

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
240
金钱
240
注册时间
2018-4-21
在线时间
105 小时
 楼主| 发表于 2018-8-3 14:27:44 | 显示全部楼层
float PID_Postion_Cal(float target,float measure,float p,float i,float d)
{
        float out;
        error=measure-target;
        Integ+=error;       
        if(Integ>400)
                Integ=400;
        if(Integ<=-400)
                Integ=-400;
        Deriv=error-last_error;
        out=p*error+i*Integ+d*Deriv;
        last_error=error;
        return out;
}

void PID(struct _out_angle *angle,struct _gyro *gyro_filter)
{
        Pitch_shell_out=PID_Postion_Cal(0,angle->pitch,Pitch_shell_kp,Pitch_shell_ki,Pitch_shell_kd);
        Roll_shell_out=PID_Postion_Cal(0,angle->roll,Roll_shell_kp,Roll_shell_ki,Pitch_shell_kd);
        Yaw_shell_out=PID_Postion_Cal(0,angle->yaw,Yaw_shell_kp,Roll_shell_ki,Roll_shell_kd);
       
        Pitch=PID_Postion_Cal(Pitch_shell_out,gyro_filter->y,Pitch_core_kp,Pitch_core_ki,Pitch_core_kd);
        Roll=PID_Postion_Cal(Roll_shell_out,gyro_filter->x,Roll_core_kp,Roll_core_ki,Roll_core_kd);
        Yaw=PID_Postion_Cal(Yaw_shell_out,gyro_filter->z,Yaw_core_kp,Yaw_core_ki,Yaw_core_kd);
       
        thro1=(u16)(temp+Pitch+Roll-Yaw);
        thro2=(u16)(temp-Pitch+Roll+Yaw);
        thro3=(u16)(temp-Pitch-Roll-Yaw);
        thro4=(u16)(temp+Pitch-Roll+Yaw);
       
        if(thro1>1500)thro1=0;
        if(thro2>1500)thro2=0;
        if(thro3>1500)thro3=0;
        if(thro4>1500)thro4=0;
       
        Motor_Out(thro1,thro2,thro3,thro4);
        Send_MotoPWM(thro1-1000,thro2-1000,thro3-1000,thro4-1000,Pitch_shell_out+200,Pitch+500,Yaw,0);
       
       
}
贴下我的PID程序
回复

使用道具 举报

48

主题

157

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
240
金钱
240
注册时间
2018-4-21
在线时间
105 小时
 楼主| 发表于 2018-8-3 20:57:13 | 显示全部楼层
有没有大佬接触过自主调节PID的算法啊 调的我快崩溃了
回复

使用道具 举报

48

主题

157

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
240
金钱
240
注册时间
2018-4-21
在线时间
105 小时
 楼主| 发表于 2018-8-4 12:30:53 | 显示全部楼层
大佬们别光看啊 说两句啊
回复

使用道具 举报

13

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
198
金钱
198
注册时间
2018-7-8
在线时间
57 小时
发表于 2018-8-11 19:31:04 | 显示全部楼层
c627933142 发表于 2018-8-4 12:30
大佬们别光看啊 说两句啊

我是直接移植原子小四轴里面的程序,自己做了一个大四轴,参数都没改,没想到一加油门就能飞起来了
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2018-8-11
在线时间
8 小时
发表于 2018-12-4 11:09:11 | 显示全部楼层
c627933142 发表于 2018-8-3 20:57
有没有大佬接触过自主调节PID的算法啊 调的我快崩溃了

解决了吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 22:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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