分享

【龙腾原创】基于STM8的 数字电源 设计全过程

 SocFans 2019-02-10

一、数字电源的优缺点: 

数字电是以MCU或DSP为核心控制器的电源,本方案是采用STM8S003F3P6为核心,输入10~14V,输出恒流0.7A限压37V的boost拓扑车载30瓦LED驱动电源,效率达到90%。 

数字电源的优点成本低,可移植性强,可扩展性强 
成本低:本方案采用的是STM8S003F3P6为控制器,STM8S003F3P6是ST公司生产的8位单片机,具有10位5路ADC,3个定时器,集成UART,I2C,SPI协议,最高频率16MHz。价格在1.2元左右,比一般的模拟控制器还要便宜。 
可移植性强:编写的功能代码可以以函数库的形式封装,方便自己和别人调用。一次编写,终生调用。 
可扩展性强由于MCU有很多IO口,可以方便的接入保护、通信、显示、特殊要求等功能。 
扩展保护功能:假如想加入一个风扇控制器,模拟电源需要使用NTC热敏电阻,外加运放滞回比较器。而数字电源仅仅需要外加一个热敏电阻即可,通过ADC采样,用查表法来判断温度,滞回合一通过程序代码来实现,而且具有精度高的特点 
扩展通信功能:由于单片机内置有UART,I2C,SPI协议,可以通过引出IO口,来实现数控功能。例如电压电流信号输出、上位机控制等等。 
扩展显示功能:可以方便的外置数码管、LED、LCD等显示设备。 
扩展特殊要求功能:有些电源需要特殊的要求,例如铅蓄电池的充电,要有恒流、恒压、涓流三个阶段。如果采用运放进行控制,硬件电路会很麻烦。如果采用数字电源,再添加入几行代码即可完成特殊的要求。 


数字电源的缺点精度低、抗干扰能力弱 
精度低:输出电压、电流的精度主要取决于ADC采样精度和PWM步进的精度。ADC采样精度一般都不是问题,10bit的ADC就可以达到3.3mV的精度。PWM的精度主要受到时钟频率和开关频率的影响。PWM精度=1/(时钟频率/开关频率)。比如本方案采用的失踪好难过频率=16MHz,开关频率=100kHz。那么PWM精度=1/(16M/100k)=1/160。也就是PWM只能在0~160之间的整数调节。这个PWM精度问题可以通过抖频来解决,但是抖频会产生较大的电压纹波。 
抗干扰能力弱开关电源产生的电磁干扰较强,可能会影响MCU,导致死机。这个问题可以通过优化PCB布线,加入屏蔽等方式来解决。 

 

二、参数计算 

输入电压:10~14V 
恒流电流:0.7A (留余量,保证适应大多数LED,取1A) 
限压电压:38V (留余量,保证适应大多数LED,取40V) 
其余已知参数如下图: 
 

电感计算: 
 
电感选取37uH,5.2A;线径使用RMS=4.14A计算。 
输出电容计算:

 

忽略ESR,电容量需要38uF。 
忽略电容量,ESR需要39mR,根据ESR与C的一般关系,C取1670uF。 
电容允许RMS电流要大于1.8A。 
实际综合上述情况采用50V,1000uF电解电容。 

其他参数计算:

三、原理图、PCB、实物图



原理图: 

 


PCB: 


 
 
 
实物图: 


 

四、基本软件代码 

基本流程图:


 


ADC采样:
初始化ADC:

 



采集电压平均值:

 




采集电流平均值:

 




定时器初始化:

 





设置占空比: 

 





串口初始化:

 





串口调试发送:

 

5.1 PID基本思路: 


PID算法有模拟型数字型 
模拟型主要是有RC网络构成的PID调节器,就是环路补偿在VFB和COMP接入的RC网络。 
数字型就是模拟型的离散化形式,积分用加法代替,微分用减法代替而成的。 
数字型PID分为有位置型增量型 
位置型: 

 


增量型: 

 


书上说位置型要比增量型运算量大,但是实际上位置型和增量型的复杂程度是一样的。增量型也不比位置型运算简便很多。 
本方案中的采用增量型PID算法 
由于PID算法存在一些问题,例如积分会饱和,微分作用时间短,输出会溢出等缺点,本PID采用的改进型的PID算法,主要有变速积分、积分分离、PWM死区、PWM限幅 
变速积分:变速积分指的是在积分项比较小的时候积分快一些,积分项比较大的时候积分慢一些。有助于防止饱和。 
积分分离:其实也是变速积分的一种,在积分项大于一定值时候,停止积分的作用 
PWM死区:设定一个不灵敏区域,就是输出的精度。死区越大,精度越低,但是系统越稳定。死区越小,精度越高,但系统月容易震荡。 
PWM限幅即限制PWM输出的极大值,防止占空比达到过高。 
另外,PID的参数采用浮点型,主要是为了减小误差,如果采用整型的话,小数点约去误差较大,尤其是积分环节。

 

5.2 变速积分:

传统的积分容易发生饱和,进而产生震荡,尤其是当积分量比较大的时候。变速积分法的基本思想是在偏差较大时积分慢一些,而在偏差较小时积分快一些,以尽快消除静差。
下图书使用matlab显示变速积分的函数。图中直线是y=x,没有使用变速积分。图中曲线是使用变速积分之后输出与输入的关系

 

5.3 恒压精度 


由于数字电路中,PWM是由定时器产生的,系统有一个时钟频率16MHz,当开关频率为100kHz的时候,PWM就一共有160格,也就是PWM的步进为1/160。 
模拟电路中就不存在这个问题,模拟电路中的PWM可以任意的步进。 
当pwm数值+1,输出电压就会增加一定的量。占空比越大,增加一格占空比导致输出电压的增加就越大。这个主要用来设定精度,也就是PID死区。 
下图是采用matlab计算恒压精度的代码: 






 



当Vin=10V,图如下: 

 




Vin=13V,图如下:

 






可见这个PWM恒压精度比较低,尤其是占空比较大的时候。不过本方案是恒流驱动,对限压要求不高。 
已知ADC电压采样精度=3.3/1024*21=0.068V(3.3为基准电压,1024为10位ADC2的10次方,21为分压电阻的比例)。 
可见PWM造成的输出电压精度远大于电压采样造成的输出电压精度。设定PID死区时候,不能设置的过小,否则会一直不停的震荡。 
增加这个精度有几种方法: 
一是改变拓扑,例如BUCK拓扑,PWM在0-100%内,精度都是相同的,而boost和buck-boost在占空比较小时候,精度高,占空比较大时候,精度低。 
二是增加PWM的分辨率,也就是增加MCU的主频,或者减小开关频率。 

三是PWM占空比抖动。PWM在一个非常非常小的范围内增加或减小进行小幅震荡,有利于增加输出电压精度,但是缺点是引起输出纹波略微增大。(


举一个简单的例子,0.01精度的PWM,实现0.001精度的输出:假如要实现0.567的占空比,就可以第(1~7)*n周期输出0.57,第(8~10)*n周期输出0.56。这样总的来说就是0.567的占空比了。可是输出会叠加开关频率*10的低频纹波。 

 

5.4 限流精度:


由于LED的伏安特性不是线性的,所以有PWM引起的恒流精度vs PWM的图像不好画出。这里只计算由于ADC造成的恒流精度:
ADC最小输入电压=3.3/1024=3.3mV;3.3mV在采样电阻上的电流=33mA。也就是说恒流精度最多为33mA。由于PWM分辨率原因,实际的恒流精度达不到这个值,稍微比0.033A大一些。
但是因为PID中具有积分作用,当PWM抖动时候,就可以达到这个精度了。本方案实际上恒流精度是可以达到33mA的。
恒流采用限流方式,把过流转换为过压,送往PID进行处理。当检测到电流超过0.7A时候,把测量的电压值赋值超过设定值,转换为电压超标。进而实现限流。

 

5.5 PID整定:
网上的整定方法如下图:







参数的影响:


PID
整定之前的准备:
首先调节恒压37V,限流0.7A。允许误差0.4V,接入LED:
输出电压和PWM数值通过串口发送出来,接收到之后,通过Excel表格画图,画出近似的波形。
PWM=160时候为占空比100%,设定PWM最大值为128,即80%

5.6 调节Kp
首先采样周期设置为最小。增大Kp,是环路震荡,再逐步减小Kp,直到不震荡为止。
环路震荡测试方法:
方法1:观察示波器的GS波形是否发抖。发抖则为震荡。
方法2:观察定时器PWM设置数值是否发生周期性的大幅变化。如果出现大幅变换,则震荡。如果小幅变化或者不变化,则基本稳定

由于调节Kp时候,存在稳态误差,输出电压可能达不到LED的开启电压,所以调节Kp时候,采用200欧姆电阻进行代替测试。

Kp=5,Ki=Kd=0;
输出电压为15V且存在稳态误差,环路震荡严重(GS波形有严重抖动),输出占空比在10~15之间跳变。
GS波形图:


PWM数值图:


经过不断调整,当Kp=0.5时候,震荡最小。这时候加入积分环节。

 

5.7 调节Ki
Ki的调节是在Kp的基础上,从小往大慢慢加,当达到正常输出,就OK 了。Ki不能太大,太大容易引起震荡。
经测试,Kp=0.5,Ki=0.01为最理想阶段。


PID参数:Kp=0.5,Ki=0.01,Kd=0;接入LED恒流阶段测试:
GS波形和恒流电流



输出PWM占空比数据:


输出PWM在103~105之间变动,这个是由于PID的积分作用,把误差进行累加产生的。

 

5.8 积分系数对PWM的影响:


如果增大积分系数,当积分系数过大,系统变得不稳定,震荡次数增多。
减小积分系数,启动速度会变慢。

以下是测试积分系数对PWM的影响。

积分系数过大效果:Kp=0.5,Ki=0.05,Kd=0;不稳定





积分系数过大效果:Kp=0.5,Ki=0.2,Kd=0;不稳定


积分系数过大效果:Kp=0.5,Ki=1,Kd=0;此时,由于积分作用过大,环路严重震荡。






积分系数过小效果:Kp=0.5,Ki=0.001,Kd=0,从开机到稳定的PWM数值。启动速度慢

 

5.9 比例系数进一步整定:
由于原先的Kp是在没有积分作用下整定的,驱动不了LED,在加入LED之后,需要重新整定Kp。
以下是接入LED之后,Kp测试数据,与不接入LED有所不同:
Kp=0.5;Ki=0.01;Kd=0;输出波动非常大。





Kp=0.1;Ki=0.01;Kd=0;输出波动5格。



Kp=0.05;Ki=0.01;Kd=0;输出波动2格。


Kp=0.01;Ki=0.01;Kd=0;输出波动1格。




由以上数据可见,减小Kp,可以增加系统的稳定性,输出波动变小,但是缺点是响应时间变慢。

Kd主要用来改善环路相应速度,但是缺点太多,暂且设置为0。

综合考虑,采用Kp=0.05;Ki=0.01;Kd=0;PWM输出波动2格。虽然这个波动会引起输出电压纹波的略微增大,但是它是积分作用的结果,有利于提恒流高精度至ADC采样精度。

 

六、波形与效率 


效率:
 


GS波形:




DS波形:




电感两端波形:
 

二极管两端波形:

七、特殊的MOSFET驱动电路 


由于单片机输出高低电平是0-3.3V,而MOSFET的驱动电压是0-10V,所以单片机到MOSFET需要一个驱动电路。
这个驱动电路不同于传统模拟芯片的MOSFET驱动,传统的MOSFET驱动电路一般都是图腾柱,但是MCU输出就不能直接接入图腾柱电路,需要一个特殊的驱动电路。
为什么不能直接采用图腾柱:因为图腾柱实际上是一个共集电极放大电路,只有电流放大能力,没有电压放大能力,输出电压略小于输入电压。如果输入高电平是3.3V,那么即使集电极的供电电压是12V,图腾柱的输出还是3.3V。这就是共集电极放大电路的特点。可是为什么模拟电源就可以使用图腾柱驱动呢?是因为模拟电源的控制器的输出本来就是10~20V的电压,通过图腾柱输出之后,还是10~20V。MCU则不同,MCU的输出是0~3.3V,如果采用图腾柱,那么输出还是在0~3.3V。
这里列出3个不同的驱动电路解决方案,各有千秋,各有所长。 

方案1:
一个最简单的思路就是:“MCU输出->电平转换->图腾柱”。电路图如下图。
R2、Q1、R1构成共射极放大电路,作用是反相器。MCU输出首先通过Q1反相,如果MCU输入 3.3V高电平,则Q1饱和导通,Q1的集电极输出0.1V饱和导通压降。如果MCU输入0V低电平, Q1截止,Q1集电极是R1上拉为12V供电电压。这样一个反相器就实现了电平转换的功能,缺 点是反相的。后级一个图腾柱跟上去就OK了。优点是电路最简单。缺点是参数不好调试。 
 


方案2:
为了解决上个电路反相和参数不好选择的缺点,本文使用的驱动电路是下图所示的电路。
当PWM输入3.3V高电平,Q2饱和导通,Q2集电极为0V,又导致Q3饱和导通,Q3集电极为Vcc=12V,通过D2、R5驱动MOSFET。当OWN输入低电平0V,Q2截止,Q3也截止,由于R4、R6的存在,使Q4导通,对MOSFET的G极进行放电。
下图是原理图和仿真的波形,可以点开大图查看。 


 




方案3:
这个方案最复杂,但是性能最好,采用的是共发射极放大电路,饱和压降可以做到很小,甚至比图腾柱效果还要好。缺点就是元件数目多,输入输出反相,低电平有电流流过MCU。
R1(1)接入单片机PWM, R(2)2接入单片机供电电压3.3V, Q4(E)接入MOS驱动供电电压12V。
R2、R3阻值相同,对3.3V进行分压,Q2、Q3基极电压就是3.3/2V。
当PWM是3.3V高电平,Q3导通,Q3集电极电压=3.3V,导致Q1导通,Q1集电极电压=0V,对MOSFET进行放电。
当PWM是0V低电平,Q2导通,Q2集电极电压=0V,导致Q4导通,Q4集电极电压=12V,对MOSFET进行充电。
电路图和仿真结果如下图所示。 



 



上三个图,各有优点和缺点,各有千秋。本方案采用的就是第二个图。
原理图和GS波形如下图所示: 

 

 

        本文转自21世纪电源网,作者forget。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多