开关电源环路的设计比较复杂,最可靠的方法是用网络分析仪实际测量出功率电路的bode图,然后根据实测的bode图采用相应的补偿器。但是,网分设备有一定的使用门槛,且并不是每个工程师都能配备,所以网分实测的方法注定不适用大多数工程师。
下面介绍一种方便快捷的方法,能使工程师在设计控制环路前,先大概估算一下环路补偿器的参数,虽然有一定的误差,但对补偿器电路的选择是有指导意义的。先说说它的优点:
1)不需要网络分析仪。
2)不需要有数学建模的知识,也不需要自动控制的专业课背景
3)设计的补偿器参数完全不需要数学推导,只需要将所需要的穿越频率和相位裕度输入进去,所有补偿器参数都由matlab的PID工具箱自动完成计算工作,只需要确定该补偿器的类型即可。
再来说说用该方法的需要具备的条件:
1)需要一台电脑。
2)需要安装 simplis和matlab 2020中的系统识别工具箱和sisotool工具箱(单输入单输出)。
3)要会用simplis仿真,matlab要会一些基本的操作。
下面用一个电源实例来说明如何进行操作。在开始之前,先确认你的电脑里面安装了simplis、matlab 2020和excel。matlab 2020以前的版本未试过,可能会和现有的版本在操作上有区别。如果matlab安装中不知道如何选装工具箱,那就选完全安装,现在开始。
下面以boost升压电路为例,电路参数如下:
输入:250Vdc--350Vdc
输出:430Vdc 1A
升压电感:1mH
输出电容:450uH ESR:10mΩ
反馈采用电流电压双闭环的形式,内环为电流环路,外环为电压环路。所以环路设计的步骤为:1)功率级电流环开环传递函数获得。2)电流环路补偿器的参数计算。3)功率级电压环开环传递函数的获得。4)电压环路补偿器的参数计算。
先从内部电流环开始。功率电路电流环开环传递函数及bode图,仿真电路图如下:
针对上面的仿真电路,做几点说明:
一、电流采样用电流控制电压源来模拟,代替电阻采样和差分放大电路。
二、V3信号源用来产生锯齿波,该锯齿波的幅值为15V,与现实中的PWM芯片内部的信号并不一致,所以要仿真实际电路,需要输入实际的锯齿波的幅值。
三、V14电压源的电压值设定为3V,会产生20%的占空比PWM波形。在350V的输入电压时,输出电压在440V左右,输出电流为1A。所以这样的直流偏置符合电路的额定工作状态,因此,V14设定为3V是合适的。
开关频率设为100KHz,先进行瞬态仿真。
瞬态仿真参数设置
得到瞬态波形
再进行AC交流仿真。
交流仿真参数设置
得到电流开环增益的bode图,如下:
要根据上面电流开环传递函数的bode图,设计补偿器,这就要用到matlab软件了。首先将bode图导入到Matlab中,然后用系统识别工具箱识别出传递函数。具体步骤如下:
先将图形通过“Copy ASCII Data”命令拷入到内存中。会弹出下面的对话框。选择“Select All”,单击“ok”。
然后打开Excel,然后用“Ctrl+V”复制到表格中。
需要另外增加两列,用来换算频率和放大倍数。
注意黄色标注的是计算公式,然后双击蓝色圈中的小黑点,自动完成这一列的填充。
然后完成分贝转换成放大倍数的公式。最后点击保存。
打开Matlab2020,点击“导入数据”。
选择刚才保存好的Excel表格,弹出下面的窗口。
在输出类型的下拉列表中,选择“列向量”,然后单击“导入所选内容”。就可以关闭这个窗口了。这时在Matlab的工作区中,就会出现刚才导入的数据了。
然后打开Matlab的系统识别模块“System identification”。
会弹出下面窗口:
按照1、2、3、4、5的顺序完成操作。注意,第4步中,连续系统要填“0”。
输入数据后,可以通过红圈“1”,调出导入数据的bode图,与之前的simplis仿真波形对比一下,应该完全一样。然后按照红圈“2”,让Matlab自动识别传递函数。
先根据经验大概估计一下传递函数中的零极点的个数。在上面的例子中,估计的零点为1个,极点为2个。然后点击”Estimate”,进行系统识别。会出现下面的窗口,判断是否识别成功,可以通过百分比自己判断。如果百分比太低,则要调整零极点的个数或其它识别参数,重新识别。一般超过80%即可。然后,如下图
先双击红圈“1”,会出现右边的窗口,右边的窗口就是识别出来和传函。点击“2”,输出到matlab的命令行。点击“3”,输出到matlab的工作区。
查看matlab的命令行,会看到上图的信息,该bode图的识别率为100%,最上端是功率级电流开环传递函数。
下面,我们要用sisotool工具进行补偿器的设计了。在调用sisitool工具之前,应该先将功率传函导入到sisotool工具中。
双击红圈“1”的“tf1”,会在命令行的上面窗口出现变量“tf1”的具体内容,分别把2、3用“Ctrl+C”和“Ctrl+V”复制到4、5处。然后用“6”的“tf()”命令生成传函。最后通过“7”调用sisotool工具。下图就是sisotool工具和窗口。
通过1、2两个步骤,将频率改为赫兹(Hz)。
按照上图的1、2步骤,用matlab自带的PID调节工具进行补偿器的设计工作。
- 1. 可以选择控制器的类型。一般就选择“PI”调节器。
- 2. 在“2”的下拉框中选择“Frequency”。
- 3. 选择自己想要的穿越频率。本例中是“10KHz”注意要换算成弧度。因为在pfc电流环路设计中,要求电流开环传递函数的穿越频率应该小于开关频率的10%,本例中的开关频率为100KHz,同时为了保证电流环路的快速性,选择穿越频率为10KHz。
- 4. 选择期望的相角裕度。本例中是“60”
- 5. 参数输入完成后,按“5”更新bode图。
- 6. 在“6”的位置,系统指示出,该控制器能让系统稳定。
- 7. “7”处是系统总的开环传递函数的穿越频率和相位裕度。本例中,穿越频率为“99KHz”相位裕度为“60度”。因此该补偿器达到了设计要求。
- 8. 单击“8”的位置所在的C。即为控制器的传函。
- 9. 在“9”的地方,显示了控制器的传函。
- 10. 在“10”处,单击“Export”。输出C,即将控制器的传函导入matlab的工作区中。 至此,我们就已经通过matlab的PID工具自动生成了补偿器的传递函数C,下面就要根据这个传递函数设计一个运放反馈电路来进行补偿。未完待续。