数字式DCDC降压开关电源.docx
- 文档编号:6984257
- 上传时间:2023-01-14
- 格式:DOCX
- 页数:27
- 大小:369.33KB
数字式DCDC降压开关电源.docx
《数字式DCDC降压开关电源.docx》由会员分享,可在线阅读,更多相关《数字式DCDC降压开关电源.docx(27页珍藏版)》请在冰豆网上搜索。
数字式DCDC降压开关电源
数字式直流开关稳压电源(A题)
2017年5月1日
摘要
关键字:
BUCK同步整流,PID,蓝牙通讯,电源管理APP
摘要:
本系统是基于BUCK同步整流拓扑结构,以STM32为控制核心,蓝牙传输与手机端APP相配合,从而形成了整个无线数字式开关电源。
手机APP开启电源,STM32通过电压采样将采集到的数据送入PID算法进行处理后,实时动态调整输出的PWM的占空比,进而实现可控稳压。
同时可通过手机APP端设置输出电压和上限电流,并实时显示当前电压和电流值,当电流超过设定值时,手机端会语音报警,并点亮APP中的过流指示灯,并立即关断电压。
Keywords:
BUCKsynchronousrectifier,PID,Bluetoothcommunication,powermanagementAPP
Abstract:
thissystemisbasedontheBUCKsynchronousrectifiertopology,withSTM32asthecontrolcore,theBluetoothtransmissionandmobilephoneendAPPmatch,thusformingtheentirewirelessdigitalswitchingpowersupply.First,themobilephoneAPPtoopenthepowersupply,STM32throughthevoltagesamplingwillbecollectedintothePIDalgorithmfordataprocessing,real-timedynamicadjustmentoftheoutputofthePWMdutycycle,andthusachievearegulatedvoltage.AtthesametimethroughthemobilephoneterminalAPPtosettheoutputvoltageandcurrentlimit,anddisplaythecurrentvoltageandcurrentvalue,whenthecurrentexceedsthesetvalue,themobilephoneterminalcanvoicealarm,andlightinAPPflowindicator,andimmediatelyturnoffvoltage.
数字式直流开关稳压电源
1系统方案
本系统主要由DC-DC结构、MOS管驱动电路、电压采样电路、电流采样电路、控制系统、无线模块组成,下面分别论证这几个模块的选择。
1.1DC-DC结构的论证与选择
方案一:
半桥隔离式开关电源。
半桥隔离式开关电源由两个开关管交替工作,相当于两个开关电源同时输出功率,因此其输出功率很大,当电源利用率比较低,不宜用在工作电压较低的场合。
另外,半桥电路的两个开关器件没有公共地,与驱动信号的连接比较麻烦。
方案二:
BUCK同步整流降压斩波式开关电源。
BUCK电路是一种降压斩波器,属于非隔离式的开关电源,降压变换器输出电压平均值Uo总是小于输入电压Uin,通常电感中的电流是否连续,取决于开关频率、滤波电感L和电容C的数值。
输出电压取决于占空比的大小,电路简单易于实现,。
BUCK同步整流是在金典BUCK电路的基础上改进而来,用MOS管代替二极管续流,这样可以大大降低功率损耗。
综合以上两种方案,选择方案二。
1.2MOS管驱动电路的论证与选择
方案一:
光耦隔离驱动。
使用光耦进行隔离驱动是最常用的一种驱动方式,但是由于光耦工作频率很低,响应速度慢,而开关电源工作在较高频率,且要求响应速度快,所以我们不采用这种方案。
方案二:
变压器隔离驱动。
使用变压器隔离驱动虽然解决了光耦驱动的不足,但是绕制变压器非常复杂,如果制作不是很规范,就容易导致驱动波形失真,所以,我们不采取这种方案。
方案三:
驱动芯片驱动。
由于BUCK同步整流的上管属于高端悬浮驱动,电压是浮动的,如果采用分立结构,这样就造成了电路结构复杂,所以我们选择使用驱动芯片,可以大大提升驱动稳定度,减小开关损耗,而且可以产生带死区时间的互补PWM波,与驱动信号隔离。
综合以上三种方案,选择方案三。
1.3电压采样电路的论证与选择
方案一:
直接采样。
由于使用电阻分压之后可以达到控制芯片的I/O上限电压以下,而且要求采样电路响应速度快,所以直接采样是最简单可靠的方法。
1.4电流采样电路的论证与选择
方案一:
使用电流采样芯片。
TI的电流检测芯片INA282,是一款高精度、宽共模范围、双向电流并联监视器。
不过电阻在大电流通过时发热造成阻值升高均会使结果出现误差。
方案二:
使用运算计放大器采样。
LM358内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源电流与电源电压无关。
综合考虑电流采样选用LM358芯片
1.5控制系统的论证与选择
方案一:
STC89C52。
传统的51单片机为8位单片机,价格便宜,控制简单,但是处理速度较慢,片内资源少,存储容量小,难以存储大体积的程序和快速计算。
并且I/O口资源偏少,扩展起来也较为麻烦。
ADC精度达不到我们想要的结果。
方案二:
STM32F103。
STM32F103系列微处理器是首款基于ARMv7-M体系结构的32位标准RISC(精简指令集)处理器,具有执行代码效率高,外设资源丰富等众多优点。
该系列微处理器工作频率设定在72MHZ,具有执行代码效率高,外设资源丰富等众多优点。
综合考虑采用STM32F103系列芯片
1.6无线模块的论证与选择
方案一:
基于蓝牙传输的无线模块
采用无线数据采集传输蓝牙模块,蓝牙模块具有功耗低,可靠性高和高安全性的优点,可以用作无线数据传输系统的数据收发端。
2系统理论分析与计算
2.1BUCK电路的分析
2.1.1占空比
根据BUCK电路的特性可以得出:
Uo=D*Uin;我们可以计算得出,占空比D=Uo/Uin=60%。
2.1.2电感
通过buck电路结构和原理分析可以得到电感的计算公式为:
其中Dmax为Buck电路最大占空比,k:
0.05~0.1,fs为开关管的开关频率,Imax为最大输出电流,Ui为输入电压。
2.1.3电容
而关于滤波电容的选择,电容需要滤掉主要的开关纹波,选择电容C足够大,以使开关频率时的电容值阻抗远小于负载阻抗R,因此几乎所有的电感电流纹波流经电容,而流经负载电阻阻抗R的纹波非常小,电容电流波形ic(t)等于电感电流波形去掉直流成分后的交流成分。
输出滤波电容的选取决定了输出纹波电压,纹波电压与电容的等效的串联电阻ESR有关,电容的纹波电流要大于电路中的纹波电流。
这里选取两个470uf/35V的电容并联,这样就可以降低了等效的串联电阻。
2.2驱动电路的计算
2.2.1自举电容的选取
下列公式列出了自举电容应该提供的最小电荷要求:
其中:
Qg:
高端器件栅极电荷
f:
工作频率
Icbs(leak):
自举电容漏电流
Iqbs:
高端驱动电路静态电流。
Qls:
每个周期内,电平转换电路中的电荷要求500V/600VIC为5nc
1200VIC为20nc
自举电容必须能够提供这些电荷,并且保持其电压。
否则Vbs将会有很大
的电压纹波,并且可能会低于欠压值Vbsuv,使高端无输出并停止工作。
因此
Cbs电容的电荷应是最小值的二倍,最小电容值可以由下式计算:
其中:
Vf:
自举二极管正向压降
VLS:
低端器件压降或高端负载压降
由上式计算的Cbs电容值是最小的要求,由于自举电路的固有工作原理,低容值可能引起过充电,从而导致IC损坏。
为了避免过充电和进一步减小Vbs纹波,由上式计算的容值应乘一个系数15。
2.2.2自举二极管的选取
在高端器件开通时,自举二极管必须能够阻止高压,并且应是快恢复二极
管,以减小从自举电容向电源Vcc的回馈电荷。
如果电容需要长期贮存电荷
时,高温反向漏电流指标也很重要。
二极管的额定电流值式
(1)和工作频率的
乘积得到。
其中:
二极管特性
VRRM=功率端电压
最大trr=100ns
IF=Qbs×f
由上式计算得知,自举电容C=0.22uF,自举二极管选取快恢复二极管HER308。
2.3电流采样电路的计算
采样电阻为0.02R,对于STM32的ADC采样来说,就算电流达到了2A,那么采集到康铜丝的电压才0.04V,ADC精度是达不到的,所以电流采集我们采用运放构成差动放大电路对采样信号进行放大,然后通过软件来处理电压到电流的转换关系。
3电路与程序设计
3.1电路的设计
3.1.1系统总体框图
系统总体框图如图3.1.1所示,
12V
3.3V
电压、电流
无线通信
图3.1.1系统总体框图
3.1.4电源
控制系统的电源是由LM2596DC-DC模块经过降压给STM32F103和蓝牙模块提供3.3V的电压,给驱动芯片提供12.0V的电压。
3.2程序的设计
3.2.1程序功能描述与设计思路
1、程序功能描述
软件部分分为电源控制端和手机APP端。
控制端选用STM32F103系列控制芯片,控制端做好PWM、定时器、ADC、蓝牙等初始化后,等待手机端APP通过蓝牙进行连接通讯。
在手机端发出开始工作命令后,开始ADC采样,一路ADC采集输出端电压,另两路ADC通过采集康铜丝两端电压做差后转化为输出端电流数据。
通过PID控制算法将输出端电压Pv和设定电压Sv传入PID算法进行相应算法处理,最终来控制PWM输出占空比,从而达到动态调整和稳定电压的作用。
ADC采样,PID算法,PWM输出构成一个闭环控制系统。
与此同时,通过定时器设定每500ms向APP发送一次数据,数据包含实时电压、电流、是否过载等信息。
APP端也可动态调整输出电压和上限电流值。
除了满足发挥部分一二项要求外,还额外增加了控制输出开关、上限电流设定和过流保护报警功能,一旦电流值超过上限电流,控制端自动关闭电压输出,APP端过流保护指示灯亮红灯,同时语音报警。
APP端采用易语言进行编写,进行了美观大方的界面设计。
1)控制端实现功能:
动态调节电压和稳定电压,接收APP端命令,回传电流、电压、过载信息
2)APP端:
显示实时电压、电流、是否过流等信息,设定输出电压、上限电流,紧急关闭电压输出和恢复输出功能
2、程序设计思路
1)控制端程序设计
①ADC采样
ADC采样使用STM32F103芯片内部自带的12位ADC,为了减小ADC的误差,在软件上使用了滤波算法并进行了ADC校准。
滤波算法采用防脉冲干扰平均滤波算法,又称中位值平均滤波算法,其实际上相当于中位值滤波法与算数平均滤波法的融合,方法是连续采集N个数据,去掉一个最大值和最小值,然后计算N-2个数据的算数平均值。
为了能够更加快速的找到N个数据的最大最小值,舍弃了常用的冒泡排序算法,采用快速排序算法,即通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
②PID算法
为了控制电压的精准舍弃了一般的算法而采用PID算法。
PID算法是由比例算法(P)和积分算法(I)和微分算法(D)构成,比例算法反映的是当前状态的情况,也就是设定电压Sv与输出电压Pv的差值(Ek=Sv-Pv),Pout=Kp*(Sv-Pv),Kp为比例系数,在本系统最佳比例系数Kp=0.2。
积分算法反映的是过去状态的情况,也就是所有设定电压与输出电压差值的和的情况,Iout=Kp*Ti*SEK。
微分算法反映的对未来情况的预测,即Dout=Kp*Td*DelEk(DelEk=Ek-Ek_1)考虑到当仅存在比例算法时若调节达到了预设值将会失去比例调节的作用,此时应该有其它的调节部分来弥补,故本系统最终采用的是比例加上积分及微分的算法模式,使三种算法优缺互补。
③蓝牙通讯协议
蓝牙采用HC-05,为了防止发送过程中信息的丢失或错误,对蓝牙通讯双方进行了简单的通讯协议规定,规定控制端向手机APP端发送实时数据的协议为:
引导码EF+引导码EE+电压信息+电流信息+是否过流+结束码FF。
规定手机端APP向控制端发送控制数据的协议为:
引导码EF+引导码EE+控制命令+结束码FF。
2)手机端程序设计
手机端APP程序设计采用的是易语言,易语言同其他面向对象的高级语言(如JAVA)一致,在手机端APP编程时都只需要对某一个对象,如按钮等进行这个对象相应的编程控制即可,调用相应的API函数即可完成对蓝牙的控制。
此处仅对蓝牙接收关键代码进行简要分析,蓝牙接收到数据后,首先判断发送过来的数据是否是完整的12位数据,若是则进行下一步验证,即提取数据中的前四位与EFEE进行比较,最后两位与FF进行比较,若正确则说明收到的数据完整则调用解析数据的过程。
此处附上手机APP端蓝牙接收数据时对引导码解析的截图:
3.2.2程序流程图
总体程序流程图
图3.2.1程序流程图
4测试方案与测试结果
4.1测试方案
1、硬件测试
焊好电路,确认电路连接无误,无虚焊,漏焊。
2、软件仿真测试
采用Proteus进行简单的功能仿真分析,检查设计的理论可行性,并采用keil进行断点调试,确保程序逻辑正确。
3、硬件软件联调
①、无法下载程序:
检查时钟电路是否正常:
晶振是否起振,起振电容是否正确。
②、某个芯片无法使用:
首先检查硬件电路,其次检查程序逻辑,必要时可以采用示波器、逻辑分析仪等仪器抓取芯片引脚波形,然后进行分析处理。
、后期界面优化、用户体验、容错处理等。
4.2测试条件与仪器
测试条件:
检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。
测试仪器:
高精度学生电源,高精度的数字毫伏表,模拟示波器,数字示波器,数字万用表,指针式万用表,大功率负载。
4.3测试结果及分析
4.3.1测试结果(数据)
6Ω负载测试结果好下表所示:
(单位:
电压/V电流/A)
输入电压
0
18.6
19.0
20.0
21.0
21.6
输入电流
0.01
1.47
1.38
1.32
1.26
1.21
输出电压
0
11.98
11.98
11.98
11.95
11.95
输出电流
0
1.98
1.92
2.03
1.99
1.98
输出纹波(mV)
0
510
510
520
534
510
4.3.2测试分析与结论
根据上述测试数据,输出电压误差在100mV之内,负载和电源变化时,电压不会有太大的波动,由此可以得出以下结论:
1、输出电压误差很小,控制系统响应速度快。
2、电源调整率和负载调整率得到很好的表现
3、电源效率比预期要求要高。
综上所述,本设计达到设计要求。
附录1:
电路原理图
附录2:
PCB图
附录3:
控制端源程序
main.c
#include"delay.h"
#include"adc.h"
#include"timer.h"
#include"string.h"
#include"usart3.h"
#include"hc05.h"
#include
typedefstructPID
{
unsignedintSv;
unsignedintPv;
intEk;
intEk_1;
intDelEk;
intSEK;
floatKp;
floatTi;
floatTd;
intOUT;
unsignedintOUTput;
unsignedintProutput;
}PID_Define;
PID_DefinePID_Value;
voidPID_Init(void)
{
PID_Value.Sv=2478;
PID_Value.Ek_1=0;
PID_Value.DelEk=0;
PID_Value.SEK=0;
PID_Value.Kp=0.2;
PID_Value.Ti=0;
PID_Value.Td=0;
PID_Value.Proutput=2160;
}
voidPID_Caculate(void)
{
PID_Value.Ek=PID_Value.Sv-PID_Value.Pv;
PID_Value.SEK+=PID_Value.Ek;
PID_Value.DelEk=PID_Value.Ek-PID_Value.Ek_1;
if(PID_Value.Ek<15&&PID_Value.Ek>-15)
{
if(PID_Value.Ek>0)
PID_Value.OUT=PID_Value.Proutput+2;
else
PID_Value.OUT=PID_Value.Proutput-2;
if(PID_Value.OUT>1170)
{
PID_Value.OUTput=1170;
}
else
if(PID_Value.OUT<25)
{
PID_Value.OUTput=25;
}
else
PID_Value.OUTput=PID_Value.OUT;
}
else
if(PID_Value.Ek<35&&PID_Value.Ek>-35)
{
if(PID_Value.Ek>0)
PID_Value.OUT=PID_Value.Proutput+20;
else
PID_Value.OUT=PID_Value.Proutput-20;
if(PID_Value.OUT>1170)
{
PID_Value.OUTput=1170;
}
else
if(PID_Value.OUT<25)
{
PID_Value.OUTput=25;
}
else
PID_Value.OUTput=PID_Value.OUT;
}
else
{
PID_Value.OUT=(int)(PID_Value.Kp*(float)PID_Value.Ek)+PID_Value.Proutput+PID_Value.Ti*PID_Value.Kp*PID_Value.SEK+PID_Value.Td*PID_Value.Kp*PID_Value.DelEk;
if(PID_Value.OUT>1170)
{
PID_Value.OUTput=1170;
}
else
if(PID_Value.OUT<25)
{
PID_Value.OUTput=25;
}
else
PID_Value.OUTput=PID_Value.OUT;
}
PID_Value.Ek_1=PID_Value.Ek;
}
intmain(void)
{
chara[3],b[3],c[3];
u8reclen=0;
u16adcx,adcy,adcz;
inttemp;
floatCurrent=2.5;
floatV,A;
unsignedcharPower=0;
delay_init();//延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:
2位抢占优先级,2位响应优先级
uart_init(115200);//串口初始化为115200
PID_Init();
TIM1_PWM_Init(1199,0);
Adc1_Init();//ADC初始化
Adc2_Init();//ADC初始化
Adc3_Init();
HC05_Init();
TIM3_Int_Init(4999,7199);
delay_ms(1000);
USART3_RX_STA=0;
while
(1)
{
if(USART3_RX_STA&0X8000)//接收到一次数据了
{
reclen=USART3_RX_STA&0X7FFF;//得到数据长度
USART3_RX_BUF[reclen]=0;//加入结束符
if(strcmp((constchar*)USART3_RX_BUF,"O")==0)
{
Power=1;
TIM1_PWM_Init(1199,0);
TIM_SetCompare1(TIM1,725);
}
if(strcmp((constchar*)USART3_RX_BUF,"F")==0)
{
Power=0;
TIM_Cmd(TIM1,DISABLE);
GPIO_ResetBits(GPIOA,GPIO_Pin_8);
}
if(strcmp((constchar*)USART3_RX_BUF,"A")==0)PID_Value.Sv=PID_Value.Pv+207;
if(strcmp((constchar*)USART3_RX_BUF,"B")==0)PID_Value.Sv=PID_Value.Sv-207;
if(strcmp((constchar*)USART3_RX_BUF,"C")==0)Current=Current+0.1;
if(strcmp((constchar*)USART3_RX_BUF,"D")==0)Current=Current-0.1;
USART3_RX_STA=0;
}
if(Power==1)
{
adcx=Get_Adc1_Average(ADC_Channel_7);
adcy=Get_Adc2_Average(ADC_Channel_6);
adcz=Get_Adc3_Average(ADC_Channel_0);
adcx=adcx-(adcy-adcz);
if(flag==1)
{
flag=0;
V=adcx*3.3*6/4096;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字式 DCDC 降压 开关电源
![提示](https://static.bdocx.com/images/bang_tan.gif)