OpenEdv-开源电子网

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

关于PID的程序问题

[复制链接]

10

主题

55

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
350
金钱
350
注册时间
2017-7-26
在线时间
43 小时
发表于 2017-8-22 18:24:01 | 显示全部楼层 |阅读模式
5金钱
最近在网上找了一个 倒立摆 程序研究一下PID
程序中由几个不懂的点想请教论坛的大神们

在这个倒立摆中,用到了编码器和角速度传感器

//第一段程序
void PID_Init(u16 k_pa, u16 k_da, u16 k_pe, u16 k_de)
{
        PID.SetPoint = ADC_MID;
        PID.P_ANG = (float)k_pa / 1000;
        PID.I_ANG = 0;
        PID.D_ANG = (float)k_da / 1000;
        PID.P_ENCOD = (float)k_pe / 1000;
        PID.I_ENCOD = 0;
        PID.D_ENCOD = (float)k_de / 1000;
        PID.LastError = 0;
        PID.PrerError = 0;
}


//第二段程序
//摆杆PID计算
        pid_angle = PID.P_ANG * PID.PrerError;                            //比例
        pid_angle += PID.D_ANG * (PID.PrerError - PID.LastError);        //比例+微分
        angle_speed *= 0.97;                        //角速度
        angle_speed += (PID.PrerError - PID.LastError)*0.03;       
        PID.LastError = PID.PrerError;


在第一段程序中 为什么参数 k_pa,  k_da, k_pe, k_de都要除以1000呢?
在第二段程序中 为什么角速度又要乘与0.97呢?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2017-8-23 00:26:51 | 显示全部楼层
回复

使用道具 举报

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
发表于 2017-8-23 11:28:47 | 显示全部楼层
我的猜想是第一段程序  你看他的函数参数都是u16的    PID其实大多数都是float型的   如果不用的话 就需要同时扩大或者缩小  (注:float运算很占cpu的)

第二个那个是比例参数  用来修正的
自己选择的路,成家前走完。
回复

使用道具 举报

115

主题

548

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2098
金钱
2098
注册时间
2013-11-27
在线时间
518 小时
发表于 2017-8-23 12:38:32 | 显示全部楼层
既然你都看出来了要乘以0.97 那你为什么 不问 后面的式子 为什么 要乘以0.03呢?


你自己想想 这两个 加起来 系数等于1  

就是互补 滤波
回复

使用道具 举报

10

主题

55

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
350
金钱
350
注册时间
2017-7-26
在线时间
43 小时
 楼主| 发表于 2017-8-23 16:40:27 | 显示全部楼层
aiyeba 发表于 2017-8-23 11:28
我的猜想是第一段程序  你看他的函数参数都是u16的    PID其实大多数都是float型的   如果不用的话 就需要 ...

那比例参数的值是怎么得来的呢?
回复

使用道具 举报

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
发表于 2017-8-23 17:01:48 | 显示全部楼层
凯爷儿 发表于 2017-8-23 16:40
那比例参数的值是怎么得来的呢?

调试来的,效果最好,就是你要的值了,具体在多大的范围修改,我就不知道,毕竟不是专业的。
自己选择的路,成家前走完。
回复

使用道具 举报

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
发表于 2017-8-23 17:06:09 | 显示全部楼层

哥,你最近不是刚搞四轴飞行器,这个你应该知道的啊。
自己选择的路,成家前走完。
回复

使用道具 举报

0

主题

16

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2017-8-22
在线时间
5 小时
发表于 2017-8-23 21:28:55 来自手机 | 显示全部楼层
原子很忙
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2017-8-24
在线时间
1 小时
发表于 2017-8-24 08:15:27 来自手机 | 显示全部楼层
请问这位兄台,你的这个问题解决了么
回复

使用道具 举报

10

主题

55

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
350
金钱
350
注册时间
2017-7-26
在线时间
43 小时
 楼主| 发表于 2017-8-24 09:00:32 | 显示全部楼层
一丝细水 发表于 2017-8-24 08:15
请问这位兄台,你的这个问题解决了么

暂时还没有啊
回复

使用道具 举报

10

主题

55

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
350
金钱
350
注册时间
2017-7-26
在线时间
43 小时
 楼主| 发表于 2017-8-24 09:01:51 | 显示全部楼层
aiyeba 发表于 2017-8-23 17:06
哥,你最近不是刚搞四轴飞行器,这个你应该知道的啊。

不不不,我只是一名学生,想搞搞小车哒
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-14 21:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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