可调恒流/恒压源设计

这次分享的是我大学时候的毕业设计,题目是自己出的,不是很难,旨在温习一下基础知识,对分离式开关电源的设计和参数调试有更直接的认知,也让我在闲暇之余不再那么累(偷下懒哈哈,因为刚刚考过研)。

闲话不多说,上要求:
本设计拟采取buck拓扑,利用同步整流技术和数字闭环技术,设计实现一个可调的恒压/恒流源。该电源指标如下:具有恒压/恒流模式切换功能;整机最大功率大于200W;整机效率大于92%;系统输入DC5V-100V,恒压模式输出电压1V-50V步进可调,恒流模式输出电流0.5A-15A且步进可调;输出电压纹波小于20mVPP;

接下来分享大致的设计过程:

<一>总体摘要
本研究旨在设计一个集恒流和恒压一体化的智能电源。在具体设计实现上,本系统以STC15W4K58S4单片机作为MCU,以BUCK同步整流电路作为功率主拓扑,辅以栅极驱动电路、电压/电流采样电路、蓝牙、OLED显示等模块组成。使用该单片机的16位高精度PWM波,经过栅极驱动电路去驱动主拓扑的功率对管,用该单片机进行输出电压采样和电流采样,从而形成电流环和电压环,通过PID调节PWM波的占空比进而实现恒流/恒压控制。测试表明,该电源峰值功率接近100W,峰值电流7A以上,基本达到题目要求,且该设计原理对恒流控制具有启发意义。最终的实现:本系统实现了超高效率(最高效率98%,平均整体效率94%以上),超低纹波(10mVpp以内的纹波电压,指得是恒压模),超小面积(长宽高=1054cm)和智能控制(手机APP控制)。

<二>总体设计方案
NOTE:具体的设计原理在本博客中不详细给出,需要读者自行找资料了解或者联系我索取。

step1:由前所述,恒流/恒压的实现方法多种多样,也各有优缺点。现在对本设计的方案进行原理上的论证。系统的总体功能框图如图3-1所示,从中得知,恒流、恒压的关键在于两个环路──电流环和电压环。从手机端通过蓝牙串口助手发送指令,经蓝牙转串口模块得到串口数据传给MCU,这一条链为指令控制链。MCU得到相应的指令并解码后,由PWM模块控制输出PWM波,去控制功率电路的功率开关管,因为直接由MCU输出的PWM信号的驱动能力有限且,功率电路采用的是同步整流结构,故存在功率对管,所以栅极驱动电路起到以下作用:增加PWM波的驱动电流并隔离MCU和功率电路;由一路输入得到两路互补的带死区控制的PWM信号(死区控制:防止功率对管同时导通而烧坏管子);最重要的是该电路实现了电压自举,从而能够去驱动BUCK电路的高端ENMOS(关于该点,在后续内容中会详细叙述),故栅极驱动电路作用不小。
在输出端,分别进行电压和电流取样,其中电流可以通过运放实现IV转换,最后取样量均是电压,然后将这两个取样量馈送至MCU,经过比例计算可以得到实际的输出值,将实际输出值与设置的预期值进行比较,然后实时调整PWM波的占空比以让输出值对预设值做趋向运动。
实际上,用一句话说,上述恒流/恒压的原理就是利用两个环路实现PID闭环调节得到恒定输出。所以,经上述分析,该方案具有可行性。

上图 恒流/恒压源总体功能框图
可调恒流/恒压源设计_第1张图片

step2:整体设计的原理图
可调恒流/恒压源设计_第2张图片

step3:软件设计部分
先上图–>
可调恒流/恒压源设计_第3张图片

后解释–>
现对流程图进行必要的说明。经过3次程序优化后,程序最终只采用了两个中断,Timer0中断和Uart1中断,Uart1中断为高优先级,Timer0中断为低优先级,其作用是电源模式选择和设定输出值以及开关PWM,这样设置就保证了USER的指令不会丢失(虽然存在丢失现象,但概率已经非常低了,经测试,基本上100次指令只出现2-3次指令丢失),因为USER发送指令后,指令的接收是放在Uart1中断中完成的,Uart1中断可以打断Timer0中断和主函数的执行。Timer0中断来实现PWM的占空比的修改、限流和限压以及系统心跳指示灯的闪烁,采用16位自动重装方式,每隔1ms程序会进入Timer0中断(忽略Uart1中断的打断)。

系统上电后,首先完成OLED、Uart1、PWM、ADC以及Timer0的初始化,然后进入初始化界面显示。此时各部分已准备就绪,主循环等待串口指令的到来,并设定标志位flag_Uart,进入串口中断后置flag_Uart = 1。程序默认串口先进行模式选择,然后才是输出电流或电压的设定。模式选择是SBUF = ‘+’表示恒压,SBUF = '-'表示恒流,并分别置flag_mode为1和0。收到第一次模式指令后flag_Uart = 1,会在OLED上显示电源模式,然后置flag_Uart = 0和Adj = 1。当判断flag_Uart = 0且Adj = 1后,程序进入ADC采集,通过ADC4和ADC5对电压环和电流环反馈值进行采样,此时,若收到输出值设定指令,程序会调用Pwm_Adj函数实现增量型PID调节,PID调节的实际上是PWM波的DUTY,在这个函数中会不断改变DUTY,然后每隔1ms进入Timer0中断生效DUTY的修改值,并且ADC一直处于采集状态,Pwm_Adj也在时刻进行,当达到设定的精度后,实际输出值会趋近设定值,从而实现恒流和恒压功能。

关于限流和限压,是在Timer0中断中进行的。实现的方法其实很简单,通过调试得到DUTY和输出值的关系,然后在中断里加入if判断进行软件限定。但是这种设定,对于不同的输入,设定的输出限流值和限压值会发生变化,因为BUCK电路的输出计算公式 Vout=DVin=VinTon/T(其中,D表示PWM波的占空比,T表示PWM波的周期,Ton表示PWM波高电平持续时间)。

关于软件的设计,总共经历了多次修改。其中一次修改如下:开始时,由恒压部分程序的影响,一直寻找电流和占空比的关系,由于这两者之间的关系十分复杂或者一般不讨论它们的关系,从而使得软件设计陷入僵局。最后改变思路,形成了软件比较器的方案,即比较器的其中一个输入由用户自定义输入(这个值就是预定的输出值),另一个输入值则通过ADC实时采集输出值(分压或转换得到合适的AD值),两者比较并设定精度范围,最后再调节DUTY,进而实现实际输出值趋向设定值。

step4:上板调试
假设硬件电路设计已经完成,随后在文末给出PCB设计图,这里不过多赘述。

这里给出栅极驱动器ir2109的关键波形(因为总有很多的童鞋弄不好这个东西,希望后来的学弟学妹能够少走弯路)。
直接上图:
测试条件,直流供给电压为VIN = 20V,IR2104供电电压为VCC = 10.5 V;

高端HO输出波形:
可调恒流/恒压源设计_第4张图片

低端LO输出波形:
可调恒流/恒压源设计_第5张图片

悬浮端VB输出波形:
可调恒流/恒压源设计_第6张图片

悬浮端VS输出波形:
可调恒流/恒压源设计_第7张图片

还是说几句吧,由理论分析可知,电压VB = VS + VCC(最大值),如图5-6、图5-7所示,满足上述关系。HO与LO波形相位相反(不考虑死区时间),且在PWM给高电平期间,Ug = 30.8V,VS = 21.6V,Ugs = 9.2V满足ENMOS管开启电压的要求,完美实现高端MOS的升压驱动。
由于在NMOS关断时刻,由于流过电感的电流不能不变,而是呈现线性下降的趋势,所以输出电压会迅速下降,并减小至-1V(一般考虑续流二极管压降为-1V),此时由电感,负载,二极管形成放电回路,由于续流二极管的钳位作用,会使得VS端的电压下降到-1V而不再下降。所以,VS端最低电压是-1V。
到这,一切都很ok,驱动波形也是十分的给力,好,go on!

接下来进入参数测试阶段:
化繁为简,上关键测试图:

极限参数测试(最高效率没做记录,记得是97.9%):
可调恒流/恒压源设计_第8张图片

恒压模式测试结果简表:
可调恒流/恒压源设计_第9张图片

恒流模式测试结果简表:
可调恒流/恒压源设计_第10张图片

恒压模式纹波( 恒压5V时输出纹波):
可调恒流/恒压源设计_第11张图片

可调恒流/恒压源设计_第12张图片

恒流模式纹波(恒流输出1.3A时的纹波电压):
可调恒流/恒压源设计_第13张图片

可调恒流/恒压源设计_第14张图片

step5:结论
结论1:由上表测试结果可知,恒压源输出可从1V-20V连续可调(24V输出没有测量);负载越重(电阻值越小),相对地纹波越大;在低电压输出测试时,相对误差比较大,主要是因为硬件电路的ADC采集误差较大;电流在整个测试范围内,相对误差小于等于3%;关于电压纹波,最大值约10mVpp。
结论2:恒流源输出电流范围为0.5A-7A(下限可以继续降低,但是误差会比较大,上限在现有条件下可以达到8A,但是不建议长时间大电流使用);电流的调节步进为0.15A,相对误差在低电流输出时比较大,主要原因也是ADC采集误差较大,相对误差小于等于4%。

NOTE:低纹波实现源于采用两级滤波结构,另一部分原因也与PCB布局有关,布局见下。

补充1:PCB设计图
啥也别说了,正面:
可调恒流/恒压源设计_第15张图片

反面:
可调恒流/恒压源设计_第16张图片

效果图:
可调恒流/恒压源设计_第17张图片

实物:
可调恒流/恒压源设计_第18张图片

补充二:蓝牙APP界面
蓝牙设计采用的易安卓设计。
可调恒流/恒压源设计_第19张图片

NOTE:原文太长了,这里结合关键做了简要描述,到此整个电源设计基本完成!

欢迎指正交流!

你可能感兴趣的:(开关电源)