反激式开关电源输出电压的PID控制之MATLAB仿真

反激是开关电源中最常见的电路之一。像手机充电器、笔记本电脑的电源适配器,电动车充电器大都采用该电路。基本作用就是将高压直流将至低压直流。

反激电路的特点表现在结构简单,体积小。缺点是输出功率很难做到很大,一般只适用于150W以下的情况。

其基本电路如下:

2af2ef91bf3b4743bc56817654682ced.png

 工作逻辑就是通过开关管Q1的快速导通与截止,让变压器原边的能量传递至副边,实现降压。

与反激相似的一种电路叫正激,在一些高性能台式机的电源常采用正激式,正激式功率能做得更大些。其原理图如下

acc405405c304557acf26e20763ac4c1.png

正激与反激结构很相似,两者的区别是变压器同名端与二极管D1的位置不同。

反激式电路原理分析:

接通输入电压时,开关管Q1处于关断状态,变压器原边断开。

然后我们给Q1的G极输入高频的PWM波(几十KHz),以控制Q1的开关状态。

Q1导通时,由于变压器原边电感的的存在,原边电流无法突变,而是从0慢慢增加。 原边电流变大,原边线圈在变压器磁芯中激发磁场强度B变大的磁场,变化的磁场又在副边线圈激发感应电压u。

c394bab4ee4d43c3a90ea0988c858039.png图中曲线为示意图,不代表实际变化曲线。实际上原边电流并不是以一次函数上升,副边电压也是变化的

假如没有二极管D1的存在,此时副边应当给电容C2充电,但是二极管D1的单向导电性将副边的电压截止,电流i无法按上图所示方向流动, 所以副边无电流。

Q1截止时,变压器原边开路。同样,由于电压器原边电感的的存在, 原边电流无法突变,而是有个减小的过程,此时电流是通过R1、C1、D2释放。原边电流减小,原边线圈在变压器磁芯仍激发变化的磁场,但是此时磁场强度B变小,变压器副边感应电压反向。

e4ceb4baf97f43dfab85bec2a8e74d91.png

此时,二极管D1导通,变压器副边给电容充电(或者同时给负载供电)。

Q1再次导通,原边电流升高,副边二极管D1截止。

Q1再次截止,原边电流下降,副边二极管D1导通,电容充电(或者同时给负载供电)。

不断循环上述过程,输出端的能量就能源源不断传输到输出端了。

输出电压分析:

现在我们来分析开环状态下输出电压的情况(假驱动Q1的PWM占空比、频率固定,输出负载也恒定)

首先要知道,每次Q1截止,变压器副边都会向外输出能量。输出电压Vout会等于电容电压,所以分析输出电压等效于分析电容电压。

假如输出端没有负载(即空载),电容右边是开路状态,每次给电容充电,其电压都会升高,只要充电次数足够多,其电压就能升到变压器副边的最大值,理论可以达到gif.latex?Vin*%5Cfrac%7Bn2%7D%7Bn1%7D,(n1,n2分别为变压器原边、副边的线圈匝数)。

假如输出端有负载R,Q1截止时,变压器副边除了给电容充电,还有一部分电流流向负载R,所以此时电容电压上升的速度会比无负载时慢。Q1导通时,副边截止,此时电容向负载供电,电容电压会下降。Q1再次截止时,电容又充电,电压升高;导通时又下降。

ad7f3ac63c3546ed970fcdb35f8c3a05.png

输出电压处于不断上升下降的动态过程中。假如单个周期内(即PWM波的一个周期)上升的量Uup比下降的量Udown多,那么单个周期里,输出电压仍是增加了ΔU。

e086b2103fc64cd585d6af13df281fdf.png

电压升高后,流过负载R的电流就会变大,所以其功率就相当于增大了。在Q1截止时,负载就会消耗更多的能量,电容得到的能量就少了,所以其电压上升就会的量就会变少;Q1导通时,电容放电给负载,因为电压高了,所以其放电量就多了,电压下降的量就会变少。上升量减少,下降量变大。只要经过足够多的周期,终会在某个周期内电容电压的上升量等于下降量,也就是达到一个平衡,且这个平衡会一直维持下去。也就是输出电压达到了一个动态稳定的状态。

4214d34470504ab39ba3d6ab2533da61.png

可以得出结论,不管负载R多大,只要经过足够时间,输出电压都能达到稳定。但是R越小,稳定后的输出电压的平均值越小。

从上面分析来看,输出电压的大小与负载大小有关。在实际的应用中,我们是希望电压能稳定在一个值的,不管负载如何变化。所以,我们需要引入输出电压的闭环控制。

输出电压的闭环控制:

所谓闭环控制即将输出值(即输出电压)反馈至调节系统,调节系统对输入量(PWM占空比)进行控制,从而实现输出电压的闭环控制。

05437e8c5cc64dcbb899f253eb2de5de.png

 为什么调节Q1的PWM占空比就能调节输出电压呢?

可以这么理解,输出电压其实是变压器能量传递密度的表征。单位时间从变压器原边转递到副边的能量越多,输出电压就有升高的趋势(之所以说是趋势,是因为输出电压与负载有关系,负载不变的话,输出电压才越高),或者说功率越大。

对于变压器原边,等效于电感,其功率满足“安秒平衡”。

ac3b6e48b9d44c1da98bcd4b3575638f.png

如上图为Q1的驱动PWM波示意图。 阴影的高可以等效为平均电流(假设导通时的平均电流为I1,截止时为I2),宽等效于时间。

Q1导通,变压器储能,其所储能量值等效于阴影面积S1;Q1截止,变压器释放能量,其值应小于或等于所储能量(理想状态是等于的,如果Q1导通时,变压器磁芯出现饱和,则会小于,这里不考虑该情况),假设释放的能量等效于面积S2,则S1=S2,即I1*t1=I2*t2.

Q1导通时,原边的平均电流基本不变,所以,I2=gif.latex?I1*%5Cfrac%7Bt1%7D%7Bt2%7D=gif.latex?I1*%5Cfrac%7BT*D%7D%7BT-T*D%20%7D=gif.latex?I1*%5Cfrac%7BD%7D%7B1-D%7D.(D为占空比)

所以可以推出,D越大,I2越大,传递至副边的能量就越大,表征出的输出电压就越大。

这里只进行简单的分析,实际上能量传递方式与对应的函数关系复杂些。

需要注意,反激电路的占空比不大于50%,以免变压器磁芯饱和。

注:改变占空比有两种方式:一是PWM频率不变,同时改变on的时间与off的时间;二是on的时间不变,改变off的时间,也就是频率会变。

PID控制

PID控制是自动控制中最常用的控制方式。其应用十分广泛,例如变频空调的温控、伺服电机的控制、飞机的自动驾驶、甚至火箭的姿态保持等等。

PID指三个环节:

P:比例环节,比例环节的输出量与时间量成比例关系。对比例环节的微分方程进行拉普拉斯变换,得: C(s)=KR(s)。比例环节并不能消除静态误差,当比例环节的参数过大,会导致系统出现不稳定而产生震荡。

I:积分环节,积分环节的输出量与输入量的时间积分值成比例,积分环节能够消除控制系统中的静态误差,可以认为是比例环节的补充。其值过大也会引起系统震荡。 

D:微分环节,微分环节的输出量与输人量对时间变量的导数值成比例,能对变化趋势做出预测,提前做出反应。其值过大同样也会引起系统振荡。

本系统中只需用到比例与积分环节。

MATLAB
MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析无线通信深度学习图像处理计算机视觉信号处理、量化金融与风险管理、机器人,控制系统等领域。无论是学术、工程或是科研都能见到它的身影。

电路仿真也只是matlab的一个功能。

2020年6月,哈尔滨工业大学被美国列入“实体名单”,matlab开发公司就终止了matlab哈工大的所有授权。

所以这个软件有多强,这里就不多说了。

6a6b5343ecf64f2cbab13e6d6c56be9d.png

MATLAB每年都会退出两个新版本,目前最新的是2022b版,这里我使用的是R2020b版本

 电路仿真需用Simlink模块。

d6778ec8154f4ddd82e85a94251532e1.png

新建空白文件,在Library browser中选择器件,构建电路模型如下:

0b32facce628497bb15e63c097cfa760.png

b883d16195e84de9b735b4a426d9d69d.png

本电路基本设计参数:

额定输入电压:300Vdc

额定输出电压:12Vdc

额定输出电流:12A

额定功率:140W

关于matlab建模器件的选择:

所有的电感电阻电容可选择 Series RLC Branch

a76434b597854bc5b01fc2390ebe514d.png

然后在Branch type里选择是单电阻还是单电容或者其他组合,然后设置其值。

ec610d068fb545daabf0280d052c2c10.png

 二极管与MOSFET位置如下,可直接搜索名称。 c14b37c6cc2f4f6fbcb3cd548c36fecb.png

这两个器件都有一个m的端口,可以连接示波器查看该器件的电压电流波形。如果不需要,也能将该端口影藏,如下:

e02ec4647fb148e79f106e767e45f198.png

 Snubber resistance(缓冲电阻)与Snubber capacitance(缓冲电容)可分别设为inf(无穷大)与0,以尽可能模拟理想环境。

 变压器选择Linear Tramsformer(线性变压器),参数可参考下面:

这里我是用的54:6的双绕组变压器,PQ3220磁芯,原边电感700uH,副边8.64uH。

141c3441d8fa47089597276f23972f5b.png

 该变压器的参数与模型对应如下(省略了绕组3):

a4abb909d7f84cc1824ed5bd04dccfd6.png

 注:

1.在该变压器模型中,V1、V2的值并不代表实际的电压,其实代表原边与副边的电压比值,也可以说是线圈匝数比。比如上面的V1=54,V2=6,如果设成V1=9,V2=1,效果是完全一样的。而原边与副边的电感比值(Lm:L2)不对原副边电压比值产生影响(这与实际的变压器特性不符)。

2.Lm,Rm(磁化电感、磁化电阻)分别模拟变压器的无功损耗与有功损耗。一般可以把L1设为0,Lm设为原边电感,R1设为原边的电阻,Rm设成一个较大的值

3.我这里所有参数都是使用国际单位制(SI),Nominal power and frequency无效。

 PWM发波器:54ad68535d054809b1b7c08d62067803.png

 PID控制器

36bd0db0961540768a3c93d3343d4c86.png

 电压与电流探头,以测量电压电流

27a955c6993b4ebb9eb8b1a7bb6c2010.png

 加法器,用来计算误差值6a200b3c5681454e9580aff66d02b07e.png

基准电压由 常数块提供f6337addea334ad7ac5e86b5ba8d18cb.png

 搜索“scope”可以添加示波器,示波器的设置里可以更改通道数及布局

72626829617b48c9a4c47b017620061d.png

最后别忘了添加Powergui,没有它就无法运行电路仿真 。也可以在里面修改模型的各项参数,这里我就不做修改,默认即可。

3dc045da6c6d4f789a72a916dba1e62c.png

模型构建完成就可以开始了

先说明相关仿真条件:

输入电压300V,负载5欧(电流2.4A)

PWM频率50K,

PID控制器设置如下,使用PI控制 ,输出上下限限定在0-0.5.

bdc65ededfb44dcda003c0adeb1195ba.png

c6ab7e152bfb4175b0e8bc1a6487c90e.png

设置好之后,如果不改比例积分系数,以默认值运行(默认值为1),就会得到如下波形

3b0f9de8fb634036a5c1d6e47930ff6c.png

 测量输出电压,可以看到它出现了频率为271Hz的振荡,显然不符合我们的期望,所以需要对PID参数进行调节。

PID参数调节的基本顺序,先比例后积分(调比例系数时,需将积分系数调为0,从大到小开始调比例系数,直到输出不发生震荡为止),然后不动比例系数,调积分系数,直到误差快速变为0,且不发生振荡。

一般来说,比例系数和积分系数我们希望他越大越好,但是这两个值过大都会导致输出振荡。所以需要找到一个中间值,既不会振荡,又能快速响应。


P=1,I=0时的波形,与前面的一样。可以发现,占空比在0.5到0之间快速切换,当占空比为0.5,输出电压快速上升,当电压达到12V,占空比做出反应时已经来不及,电压超出12V;然后占空比又将为0,电压快速下降,当电压达到12V,占空比做出反应时已经来不及,电压低于12V。往复下去,就造成了输出电压的震荡,原因就是比例系数太大,占空比输出不够柔和。

8c8de9e992974610b69cf23b1505fd4c.png


我们慢慢调小比例系数,当Kp=0.5,Ki=0时,可以看到占空比变化柔和了很多,输出震荡的幅度也稍缓了,但是还不够,继续调小

29a17e4318024e82937fbd64c336f98a.png


当Kp=0.1,Ki=0:42de631395ae44739158aad8d3033fcc.png

此时,输出在刚开始时会稍微震荡两次,后面就基本稳定,且占空比更柔和了。但是还不够,因为输出电压在刚开始上升时出现了过冲,虽然其值只有10.517V,低于12V,但是一旦引入积分环节,其值就会超过12V。所以继续减小Kp值。


当Kp=0.01,Ki=0时,输出基本不发生过冲了。

4bf0d4a8b290442aa67b2f769e0aa38d.png

 但是其电压却只有2.043V,远低于12V,这就是因为单比例环节存在稳态误差,所以需要引入积分环节。

先设置Ki为1,试探一下。


Kp=0.01,Ki=1时 :

b1cd6b8e7f5d49ffb7e0e12c643f7617.png

可以看到,输出电压非常柔和的增加到12V,稳态误差几乎为0.但是注意看时间刻度,输出电压从0增加到12V用了近0.2s的时间,显然太慢了,如果能更快的达到12V,那就好了。所以继续增加Ki


Kp=0.01,Ki=5

a1fa703b2a9f40128ae406039b421151.png

发现此时,输出电压从0升到12V,只用了0.02S。当然,我希望他能更快一点。继续调大


Kp=0.01,Ki=6

12a3f56d458e45dbaade53016c04326b.png

 可以发现,此时到达12V的时间又缩短了,但是却出现了轻微过冲,这显然不是我们想要的。如果继续调大,过冲会越来越严重,所以需要调小Ki。刚才Ki=5时,是没有过冲的,所以只需稍稍调小Ki,且大于5即可。


Kp=0.01,Ki=5.5时:

9aaf62c83cdb4108b13831af3c5418a0.png

 此时的波形几乎已经完美了!

看看输出电压电流波形:

f8371e79eff948dea67170eb7521f6e1.png

曲线很漂亮,没有任何问题。

我们换个负载试试,R=10

f702aa8aab434be2b25ba585711c794d.png

aa6c2b8da4ce47dc9955707af792c775.png

也是没有任何问题,可以发现,R变大后,升到12V的时间缩短了一些


再换个输入电压试试,Vin=400V,R=2

c2b93ebced714023a388bebd6c0e6798.png

与前面的几乎没有差别

这样,整个调节就算完成了,最终参数为:Kp=0.01,Ki=5.5

须知,没有最好的PID参数,只有更好的。只要能满足实际需求就行。

如果MOSFET的驱动PWM波由单片机发出,那么如何在单片机中实现PID控制呢?

下篇文章将讲解STM32单片机的PID控制实现方法。

猜你喜欢

转载自blog.csdn.net/qq_55203246/article/details/126962914
今日推荐