打印

请教关于PID程序运行频率的几点疑问

[复制链接]
2352|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

昨晚一时兴起,搭了个台子玩玩PID控制,通过pwm驱动l298带动带编码器的电机,开始只用了PI控制,我的PID程序开始是放在主程序的while(1)里面的,结果开机一直在震荡,后来我试试将PID程序放在了定时器里面,频率是10Hz,结果很快就整定了,为什么运算频率越快反而越震荡呢?我的定时器的频率是不是就是所说的积分时间?


相关帖子

沙发
gaoyang9992006| | 2013-4-2 21:43 | 只看该作者
上你的PID程序

使用特权

评论回复
板凳
loveme1949|  楼主 | 2013-4-3 09:52 | 只看该作者
gaoyang9992006 发表于 2013-4-2 21:43
上你的PID程序

CCR1_Val_old=CCR1_Val;
CC=BB-AA;//差
errplus=errplus+CC;//积分项
if(errplus>=20) errplus=20;
if(errplus<=(-20)) errplus=-20;
CCR1_Val=(CCR1_Val_old+CC*8+errplus*0.2);//PI
if(CCR1_Val>=10000) CCR1_Val=10000;
  if(CCR1_Val<=0) CCR1_Val=0;//pwm限制
TIM_SetCompare1(TIM3, CCR1_Val);

使用特权

评论回复
地板
bald| | 2013-4-3 10:56 | 只看该作者
系统惯性过大,高速运算时你采集的响应样本与激励的相差过大或反馈增益过高

使用特权

评论回复
5
loveme1949|  楼主 | 2013-4-3 13:47 | 只看该作者
bald 发表于 2013-4-3 10:56
系统惯性过大,高速运算时你采集的响应样本与激励的相差过大或反馈增益过高
...

按照我上面的程序,运行一次算法的时间间隔就是积分时间吗?

使用特权

评论回复
6
wkshengren| | 2013-4-4 22:46 | 只看该作者
积分系数为1,应该就是积分时间,积分时间太短,导致积分项过大,系统失稳,延长积分时间,降低积分项,系统恢复稳定,pi的话,哪个过大都会导致失稳的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

49

帖子

0

粉丝