一、数字电源的优缺点:
数字电是以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%
.6 调节Kp
首先采样周期设置为最小。增大Kp,是环路震荡,再逐步减小Kp,直到不震荡为止。
环路震荡测试方法:
方法1:观察示波器的GS波形是否发抖。发抖则为震荡。
方法2:观察定时器PWM设置数值是否发生周期性的大幅变化。如果出现大幅变换,则震荡。如果小幅变化或者不变化,则基本稳定
由于调节Kp时候,存在稳态误差,输出电压可能达不到LED的开启电压,所以调节Kp时候,采用200欧姆电阻进行代替测试。
|