打印

闭环控制

[复制链接]
1543|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zrsing|  楼主 | 2012-11-30 16:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这三天研究了一下PID闭环控制。想法的来源是上次找兼职被秒,所以觉得是得加强一下这方面的训练了。然后就想怎样能用尽可能的器件搭建出一个闭环系统来。后来想到一直在玩的LaunchPad,想用TA定时器产生的PWM来模拟DAC产生一个电压,经过RC滤波,然后再用ADC10采回去,根据测得的反馈电压,再去调节PWM的占空比,如果电压高于设定的值,减少占空比;如果电压低于设定值,提高占空比。这样一个闭环系统就搭建出来了。可以通过串口与电脑通信,用超级终端设定目标电压。话说滤波电路是振华做信号发生器时的实验板,偷了个懒。

程序的框架在回家前都完成了,后来由于别的事,就拖到了迷你假期结束。来后才开始调试,第一天把原来的程序运行了一下,结果出现莫名其妙的错误。试了不同的值还是不行。被折腾得精疲力竭,然后就偃旗息鼓了。后来又把谢大神的书拿来膜拜了,再深入研究一下PID算法。

第二天,调试才真正开始,因为我看到了自己的签名:想干的人永远在找方法,不想干的人永远在找理由。哥必须将其拿下。拿来示波器,从PWM波开始看,然后是滤波后的波形,才发现滤波出问题了,把方波滤成了三角波,怪不得AD采得的值是随机变化的。于是提高PWM波的频率,效果好多了,再增加滤波阶数,终于把纹波控制到20mV以内了。然后调ADC10,使它能正确测出实际电压。接下来突然发现串口不能正常工作了,原来还好好的呢。下午来后才猛然想起提高PWM频率的时候,改变SMCLK时钟频率了,于是串口问题也就顺利解决了。晚上开始调PID系数,按照书上说的,先调比例系数PID0,结果却总是在最大和最小之间徘徊。后来又调积分系数I,结果仍不对。后来干脆放弃人家和程序模板,根据自己的理解和实验数据表现出的规律,自己写,只用了一个比例调节OutPut=OutPut+P+I+D;就成功了。

第三天,昨天回去后想想,原来自己的方法不是不是比例算法,而是积分算法,因为我把比例环节的误差累加起来了,这原本是积分算法该干的事。于是今天把昨天那条山寨语句,换成正规的积分算法了。然后调节积分系数,发现只用积分就可以很快达到设定值,如果加上微分算法,速度反而更慢。因为微分是对有超调或者惯性的系统的。后来发现如果设定的值太大或太小,积分值会在有效范围之外徘徊很久才能进入有效范围。原来是积分限没有设置,后来又经过多次实验才确定了积分限。不过想起了大神的范例程序中积分限不是固定的,而是根据设定的目标值变化而变化。所以根据实验数据,计算出了本系统的积分上下限。果然逼近速度大大提高。下
1
就是最后使用超级终端的调试界面。设定电压的时候,输入值是设定值×100.

相关帖子

沙发
zrsing|  楼主 | 2012-11-30 16:30 | 只看该作者
在我寂寞的岁月里 只有科研陪伴我。。

使用特权

评论回复
板凳
huanghongxing| | 2012-11-30 16:36 | 只看该作者
楼主好像主要是阐明PID中比例,微分,积分的作用吧。

使用特权

评论回复
地板
gibenlin| | 2012-11-30 16:49 | 只看该作者
科研没有那么落寞,是很快乐的事情啊!
很好的第一步,不错,加油!

使用特权

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

本版积分规则

10

主题

119

帖子

0

粉丝