笔者在去年11月份参与了全国大学生电子设计大赛,选的是B题,这是一个主要考察三相有源功率因数矫正的电源题。其实它就是三相充电桩的翻版,是华为R50030G1的翻版。
面对此题,据说一些学生们十分无奈,不知从何下手。三相维也纳整流(T字型)是一种不错的选择,一个三相整流桥,三个电感,两个电容,但需要三个与电容中点相连的双向开关器件(可以是反向串联的mos,也可以是GanFET这样的睾♂级器件),其控制算法也很复杂,除了涉及到SVPWM,dq解耦,park变换这些,还涉及到母线均压问题。更要命的是,本题给定电压低,如果使用维也纳整流就必须用到被动的三相整流桥,这东西压降比较可观,你的供电电压只有28V,一根管子给你压降0.7V,效率就尿崩了。
有人想搞三相PWM整流,也就是我们讲的三相无桥PFC。这个东西很好,同步整流和boost开关是复用同一个器件的,效率绝对低不了。但是它的控制不仅复杂,对环路稳定性和采集的要求非常高,稍有不慎就可能造成能量倒灌(造成功率因数不理想甚至炸管),南华大学的陈教授认为此方案可能对参赛队伍要求太高。

如图为某队基于三相无桥的b题作品
但是以上两种方案在笔者的学校都不可行。因为我们的DSP28335只有一片,在11月3日傍晚调试程序的过程中就被静电击穿而RAM损坏,28035我们没有,STM32F103的算力根本不够,比赛一度陷入僵局。最终我们考虑出了一个令人惊掉下巴的操作:纯模拟方案控制,靠分立器件来做。德仪也是个无耻之徒,他们的dsp不仅难用,而且新工艺有缺陷,器件容易炸ram,其官网上赫然写着的借反恐之名对朝鲜和古巴的封锁也令人厌恶。
言归正传。当时我们采用的拓扑结构较为特殊,是自己独创的。三相电源进来以后接三个电流互感器,后面接三个星接的电容,星接的中性点作为虚拟的中性点;同时三个互感器后面串三个电感,送到6个mosfet构成的三相同步整流桥上,同步整流桥的输出作为正负母线接到两个mosfet组成的半桥开关,半桥中性点连接到两个母线滤波电容(正负母线与电容间还有一对肖特基二极管)中性点,同时这个中性点于前面星接的电容中性点连接,连接正负母线的电压采样环路。母线的滤波电容后面就是我们熟悉的同步整流buck了。
我们称这个拓扑叫同步整流的三电平boost,在simulink仿真中效果和维也纳整流基本相同,但是控制要简单一点。前面六管的同步整流的控制比较简单,我们使用AMC1301和分压电阻来采集到隔离的三个相电压,然后送到三个比较器里两两比较,得到三个开关量,通过六个非门和与门组成的译码器来实现最大值与最小值判别电路,输出三个并行的脉冲信号,然后送到移位寄存器与6个与门构成的状态机中,CLK由过零点采集电路和APLL产生。通过比较各相电压的大小,来确定在某个时刻各桥臂MOSFET的开关状态,使市电的相位状态与状态机同步,使状态机在110→100→101→001→011→010→110循环,通过悬浮驱动来驱动六个mosfet完成同步整流动作。

如图,控制同步整流信号的状态机和译码器
然后就是重头戏。我们三电平boost的控制板的clk由一个4.000兆的晶振产生,经过74hc4040分频得到各级的时钟(这其实也是从废旧CRT彩电上扣下的电路,它原本用于产生15.625k的行扫描频率,在这里提供高精度时钟供锁相环用)。在这里我们需要控制半桥开关的占空比,使每个开关周期中开关变量的平均值正比于控制参考量。这就叫单周期控制,负载电流抖动再严重也不会使输入电流有畸变。它能在一个周期内有效抵制电源侧的扰动,静态误差和动态误差都非常小,动态响应快速,对输入的扰动抑制能力很强。于是我们做了一套控制电路,包含复位积分器和十几路的模拟开关(我们从CRT彩电上扣了一个形似8051的视频通道切换IC配合74148做为模拟开关用),控制逻辑和IR1150相似,如下图

。CLK脉冲将RS触发器置位,Q端输出高电平,开关管导通,复位积分器工作,电流反馈回来的三角波开始上升,直到上升到设定值时比较器翻转输出高电平,将RS触发器复位,Q端输出低电平,开关管关断。直到下一个周期初始又开始重复上述过程。一套控制电路通过时分复用来控制半桥的两个开关(负母线的处理比正母线略复杂,涉及到均压问题)。PFC部分的电感全程工作在CCM模式,EMI干扰很小。因为笔者采用的三电平变换器,避免了传统两电平变换器因负序分量过大会严重影响相间均流。不过遗憾的是,笔者原以为单周期控制可以避免使用乘法器,但到后面的电流解耦控制和模拟坐标系变换就傻眼,全程靠着ad633和那几个模拟矩阵处理来过活,现在想想---但凡咱有个28035也不至于这样做,太nm恶心了
后面的两个管子控制需要用到六次谐波注入(用于降低五次和七次谐波,提高功率因数),方法就是直接在整流桥输出上分压,然后做带通滤波器和AGC。这里提一句,其实模拟电路分离零序很简单,将三个小工频变压器(必须是三个磁路彼此独立的,不能在一个铁心上)初级星接接在三相电源和中性点上,次级直接串联,120°的三个相量求和相消,剩下来的自然就是零序分量。如果是数字控制,可以通过√(a²+b²+c²–ab–bc–ac)求出。分离每相直流分量的方法是复位积分器求一个周期内电压信号对时间的积分,或者最大值最小值相加除以二。
我们的功率因数可调比较奇葩,是通过按键对计数器进行移位操作,计数器状态通过BCD译码器和两个数码管输出,同时通过DAC送到相位补偿环路中改变功率因数,但测试中发现不是十分准确,有一定的偏差。后面同步整流buck比较简单,在此不赘述。
下面是制作和调试中的照片。最终我们因出奇高的功率因数而惊呆评测老师,也因部分稳压不精确被扣分,但是最终还是goodend,夺得头彩。

测试时的功率因数,有点惊人

ps:我们整机用了近40个分立IC,光是整个控制系统的功耗就达到了3瓦,最终测得效率95%(满载)。但是功率因数这方面,还真的没人击败我们。陕西来的评测老师一直都在问我们:你们学校是穷成什么样了?别的学校好歹都有个32F4,你们搁这儿拿废电视改装成开关电源??🤣🤣🤣