打印

求教一个关于数控电源的问题

[复制链接]
3120|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hiqrf3|  楼主 | 2009-8-26 22:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我手上有一个数控电源的板子,典型的MCU加BUCK电路模式,MCU采用的事流明诺瑞的Cortex-M3的ARM,MCU产生PWM经过驱动电路后控制开关MOS管的开断,就是一个典型的BUCK电路,然后经过ADC采样输出电压作为反馈。
   现在的问题是  当负载突变(由大负载成小负载或者小负载变成大负载)的时候 输出电压会有跳动(加入大负载 有个 负脉冲 去掉大负载的瞬间有个 正脉冲), 我首先考虑的是MCU控制不及时,所以导致了脉冲的出现 (脉冲持续时间 二十毫秒左右,正常输出5V,脉冲可达7V),然后改进了算法,用了PID控制,提高系统频率和PWM得频率,但是问题始终没办法解决,而且我调节PID的微分参数 电路都没有一点变化的,在网上找了很多PID的一些资料包括参数整定什么的,但是都是关于工业控制的,里面说的参数整定的方法我都不知道怎么在这个上面用(比如什么响应曲线 临界震荡什么的),所以现在实在不知道怎么搞了。  
    希望有做过类似项目或者知道这方面的高人指点一下,感激不尽!

相关帖子

沙发
madboy21| | 2009-8-27 00:19 | 只看该作者
用MCU做过,以你的CPU看,运行能力足足有余,有时也没必要搞个什么PID这么复杂,如输出5V,当超过5V就关闭输出,低于5V就打开输出,这种方法简单,过冲及掉电压都很小,只是纹波有点大。

使用特权

评论回复
板凳
hiqrf3|  楼主 | 2009-8-27 18:44 | 只看该作者
谢谢楼上的回复。 但是这样好像不行耶,我有设置过 如果超过5V一定值就关闭PWM 然后吧PWM占空比调到很低,再重新开,按道理不会有过冲,但实际情况是还是会有。

使用特权

评论回复
地板
晶纲禅诗| | 2009-8-27 23:04 | 只看该作者
你的系统完成一个反馈控制周期时间要多久?

使用特权

评论回复
5
maychang| | 2009-8-28 06:03 | 只看该作者
这正是PID的问题。
楼主把“比如什么响应曲线 临界震荡什么的”搞清楚,才可能“然后改进了算法”,否则所谓改进“提高系统频率和PWM得频率”只是瞎碰。

使用特权

评论回复
6
hiqrf3|  楼主 | 2009-8-28 21:54 | 只看该作者
回复4楼:开关频率是100KHz,一个周期进行两次ADC采样,采样频率就是200KHz。PID计算和PWM占空比调节在ADC中断函数中进行。计算不是很复杂,不过没试过到底需要多长时间。不过系统频率挺高的,时间应该不会很长,至少不会导致出现宽度为10ms的脉冲(嗯,应该是说时间肯定是微秒级的)。
回复5楼:我说的那个调整方法是先让Ki和Kd为0,然后单独调节Kp,直到系统临界震荡,然后用这个Kp和振荡频率来计算Kp、Ki和Kd。但是我觉得对我这种情况可能不适用吧,因为我不管怎么调节Kp都不会出现振荡的,如果Kp过小输出就达不到目标值,Kp过大 就直接输出上限值 输出电压等于输入电压了。系统经常出现振荡的情况,但是都是Kp为正 Ki为负的时候出现的。目前为止,我调节Kd对输出看不出任何影响。而且接上大的负载后发现纹波挺大,加大Ki不但不会减小反而会增大,减小Kp倒是可以减小纹波,但是也只能到一定程度,而且开关频率越大纹波越大。所以虽然我的MCU可以做到500Khz甚至更好的开关频率,但是我还是用了100Khz的频率。
  现在很迷茫,情况就这样了,怎么都得不到改善,包括对硬件做一些改动(比如增大输出电容、输出级增加LC滤波)。觉得自己盯着示波器一个一个调节PID的参数已经不会再有什么帮助了,而网上找的参数整定方法又不知道怎么用在我这个系统上面。上面等着我的结果呢,压力很大啊,各位好心人帮忙看看吧。

使用特权

评论回复
7
snakeemail| | 2009-8-28 22:10 | 只看该作者
建模型,看开关电源建模的书。你要完成这个项目。有几个条件。1.信号与系统,数字信号处理,自动控制系统学好没有。2.开关电源建模。3.以前有没有搞过模拟开关电源,用芯片实现的。上面3相,缺一不可。超人除外。还有数字电源有的很难搞。例如把输出电压的纹波或者噪声引回,也要参与反馈,这个模拟电路用加法器可以搞,但是cpu采很小的纹波有困难。另外你这玩意做出来成本高。通讯电源都是cpu加芯片搭的。

使用特权

评论回复
8
maychang| | 2009-8-28 23:10 | 只看该作者
7楼内行。
确实楼上说的那3项,缺一不可。
成本也确实太高,考虑到写软件的人工,成本就更高了。开关电源芯片不过一块钱,贵的也不超过两块,甚至有不到一块的。反应速度足够快,看不到楼主所述过冲现象,完全可以用到计算机这类对过冲相当敏感的电路上。普通PC机都是用模拟方法实现,要是用楼主的Cortex-M3的ARM,普通PC机电源还能卖吗?

使用特权

评论回复
9
hiqrf3|  楼主 | 2009-8-29 19:18 | 只看该作者
:funk:我这三个条件好像一个都不符合~~ 我今年才毕业,现在才工作不到三个月。以前也没做过电源,实际上 我以前对电源是一无所知,都是这一个多月才自己学了点。这么看来我是不是不可能解决这个问题啦?
我们公司是买芯片的,这是客户的一个项目,我也不知道他们怎么要这么麻烦用这个做,但是如果他们不用这个也不会买我们的芯片了。板子也是客户的,不是我们公司自己的项目,所以要改硬件的话有点不显示,现在只能看看能不能在软件商想想办法。我现在的想法是能不能用一种更好点的PID算法让性能达到要求,用一种好点的方法整定参数。大家觉得这个想法有可行性吗?客户说了,如果这个问题解决了就下单,当然解决不了就不用谈了,哎,压力啊。

使用特权

评论回复
10
hiqrf3|  楼主 | 2009-8-29 19:21 | 只看该作者
目前市场上有没有数控的开关电源卖? 他们的产品这方面的动态性能不知道怎么样,如果挺好而且也是通过软件控制的话,就说明改进一下控制方法应该还是可以的吧。

使用特权

评论回复
11
hiqrf3|  楼主 | 2009-8-29 19:32 | 只看该作者
嗯,另外我想请教一下,典型BUCK电路的传递函数怎么求啊,我今天搞了半天没求出来。我手上有一本《先进PID控制MATLAB仿真》,里面讲了茫茫多的PID控制算法和参数整定方法,每个都有MATLAB仿真,但是仿真都是直接该处被控对象的传递函数,然后进行的。我现在正在翻以前的MATLAB教材(在学校学过M语言 后来都忘光了:$)然后看懂仿真程序,我想把我这个东西的传递函数求出来,然后也仿真看看,希望能找到一种能用在这上面效果比较好的PID控制方法。

使用特权

评论回复
12
maychang| | 2009-8-29 23:17 | 只看该作者
开关电源的传递函数,各国大学都有人在搞,提出过很多,到现在没有一个可以令人满意。这个东西有多难,可想而知。

使用特权

评论回复
13
hiqrf3|  楼主 | 2009-8-30 12:30 | 只看该作者
:funk:这么难搞? 那我这个任务岂不是没办法完成了?

使用特权

评论回复
14
maychang| | 2009-8-30 12:49 | 只看该作者
楼主请注意,三极管也好MOS管也好,当初学习管子的模型时,都有一个词“小信号”,还记得否?
开关电源的传递函数,难就难在不是小信号,开关电源总是工作在饱和与截止状态,线性工作状态是要极力避免的。大信号工作的线性功率放大器一般都不用模型分析,何况开关工作的开关电源呢?
不知道你的任务是什么,如果是公司下达的开发任务,最好向你的上司说明这个东西成本太高,无论硬件还是软件成本都很高。如果是在学校里做毕业设计,趁早另选题。当然,你这个工作比较简单,可以做出来,但搞出来也没有推广的价值。
所谓数字电源,前几年挺热闹,有家美国公司甚至出了高速51核加六路PWM控制的芯片,还答应给我寄样片。现在这家公司找都找不到了,样片始终没给我。

使用特权

评论回复
15
maychang| | 2009-8-30 15:47 | 只看该作者
Snakeemail另开了一帖讨论数字电源,可惜只有我回帖,没有几个感兴趣。

使用特权

评论回复
16
hiqrf3|  楼主 | 2009-8-30 17:05 | 只看该作者
我在一个自动控制的书上有看到介绍传递函数的时候有讲过一个RLC电路的传递函数,就是利用基尔霍夫定律列出式子在变换到复数域。我想的是一个BUCK电路,我不关开关管和之前的部分,只看后面的电感电容二极管那部分,求出它的传递函数。 应该和你说的不是同一个东西。在一片论文上看到有写过一个式子,但是好像不是输出对输入的。
我手上这个任务也不是我们公司要推出这个东西啦,是客户买了我们的芯片想做这么个东西给自己用,但是由于动态性能不行计划搁浅了,我的任务就是想办法把动态性能提高到他们可以接受的地步,这样他们就会买我们的芯片,不然就没单。
我在网上找了一下,本来想找找有没有这种类似MCU+BUCK电路的电源产品看看人家的产品性能怎么样,但是好像没找到。

使用特权

评论回复
17
maychang| | 2009-8-30 18:38 | 只看该作者
Buck电路中的滤波部分,要传递函数易如反掌,注意无论RLC无论多复杂,总是线性函数。要联系上开关管,那就不一样了。
传递函数,输出对输入,Buck电路(包括滤波)输出近似直流,输入是什么?是PWM脉冲。输入函数都很难写出来。
就楼主所说的系统,用数字控制可以做到输出平稳,无过冲。但用这种方法,可能比较困难。
100kHz应该是够高的频率,开关部分(包括滤波)的传递函数主要受滤波部分LC影响。就用滤波部分LC的传递函数当成开关电源的传递函数,误差不很大,但要注意,仅在频率远小于开关频率时才是这样,频率接近开关频率时就不行,大体上这样用LC的传递函数代替开关部分的传递函数,仅限开关频率的几分之一以下。
楼主所说过冲,和RLC电路中的过冲是一回事。减小过冲,反馈中应减小环路增益,但这与静态稳压精度矛盾。使用积分可以保证静态精度,但需注意,LC已经是二阶,你的控制算法加入积分那就是三阶,本身已经含有不稳定因素,要稳定,方法是“错开”(从频域上说),必须考虑LC滤波电路元件的参数,必要时改滤波元件参数。至于微分算法,不用也罢。

使用特权

评论回复
18
snakeemail| | 2009-8-30 19:42 | 只看该作者
:curse:哈哈。21ic的表情很有意思。我可不是什么内行,偶现在是生产线上的一名调试工人,真的。天天加班。我告诉你一招,你用模拟的芯片搭一个buck电路,然后用Cortex-M3的ARM控制电源的开关。好办法吧:lol

使用特权

评论回复
19
maychang| | 2009-8-30 19:55 | 只看该作者
果然好办法。至少软件非常容易写。

使用特权

评论回复
20
snakeemail| | 2009-8-30 19:58 | 只看该作者
王老师回贴了,刺激他神经了,还编辑了:loveliness:。好吧,你要求函数,这个也不是太难,就是长了点。假定你用最简单的电压模式控制。首先是输出对占空比的函数,然后pwm的函数,然后是你的PI函数。你要把你的控制器的函数的零点和极点,消去控制对象的零点和极点。反正也是纸上谈兵:dizzy:
问个问题,你程序怎么编的。例如:误差=参考 - 反馈,这个怎么实现?

使用特权

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

本版积分规则

8

主题

28

帖子

0

粉丝