数控直流稳压电源最新.docx
《数控直流稳压电源最新.docx》由会员分享,可在线阅读,更多相关《数控直流稳压电源最新.docx(16页珍藏版)》请在冰豆网上搜索。
数控直流稳压电源最新
基于MCU的数控直流稳压电源设计
摘要:
本项目设计制作一个输出电压范围(6~12V)可调节和输出电流范围(0~500mA)可调节的数控直流稳压电源。
直流稳压电源通常是由四部分组成:
电源变压器、整流电路、滤波电路和稳压电路。
其中难点在第四部分,本项目设计制作的是一个串联型线性稳压电路,主要包括基准电压电路,调整管,比较放大,取样电路四个单元模块。
本项目将基准电压设计成一个数控基准电压,则稳压电路就可以构成一个数控的稳压电源。
此基准电压通过单片机的A/D转换实现,通过差动放大电路与取样电压进行比较放大,输出电压通过调整管得到稳定,并通过单片机的D/A转换将采样电压,采样电流转换成输出电压电流并用数码管显示出来。
本项目制作的数控直流稳压电源具有结构简单、调节方便、输出电压稳定性强、纹波电压小等优点。
关键字:
数控直流稳压电源;基准电压;取样电路;单片机
一、设计任务与要求
1、设计任务
设计并制作有一定输出电压调节范围和功能的数控直流稳压电源,其原理框图如
图1所示。
图1数控电源原理框图
2、基本要求
(21)输出直流电压调节范围+6V~+12V。
(22)最大输出电流为500mA。
(23)按键设定输出电压值,分辨率为0.1V。
(24)显示稳压电源实际输出电压值,要求精度为±(0.5%读数+2个字)。
(25)实时采样并显示输出电流,显示分辨率为1mA,要求精度为±(2%读数+2个字)。
(26)电压调整率≤0.2%(输入电压变化范围-10%~+10%下,空载到满载)。
(27)电流调整率≤1%(最低输入电压下,满载)。
(28)纹波电压(峰-峰值)≤10mV(最低输入电压下,满载)。
(29)具有过流保护功能;动作电流不大于600mA。
(动作电流为输出电压下降5%时,对应的输出电流值)
(10)要求一路单电源供电。
二、基本工作原理
一个直流稳压电源通常是由电源变压器、整流电路、滤波电路和稳压电路四个部分构成,前三部分电路的作用及工作原理较为简单。
稳压电路较常用的串联型线性稳压电路具有结构简单、调节方便、输出电压稳定性强、纹波电压小等优点,其原理图如图2所示。
输入电压为整流滤波电路的输出电压。
稳压电路的输出电压为:
Uz
图3采用差动放大电路的稳压电路
由上式可知输出电压与基准电压为线性关系,当改变Uz的大小,则输出电压也将发生变化。
如果此基准电压是一个数控基准电压,则此稳压电路就可以构成一个数控的稳压电源。
数控基准电压源的原理框图如图3所示。
图4数控基准电压源原
三、单元电路设计参考
(1)稳压电路
串联型稳压电路参见图2,其中调整管是核心元件,它的安全工作是电路正常工作的保证,它的选用主要考虑其极限参数ICM,U(BR)CEO和PCM。
调整管极限参数的确定,必须考虑到输入电压UI由于电网电压波动而产生的变化,以及输出电压的调节和负载电流的变化所产生的影响。
由图可知,调整管的发射极电流IE等于采样电阻R1中电流和负载电流IL之和,即IE=IR1+IL,调整管的管压降UCE等于输入电压UI与输出电压UO之差,即UCE=UI-UO。
显然,当负载电流最大时,流过调整管发射极的电流最大,即IEmax=IR1+Ilmax。
通常,R1电阻上电流可以忽略,且IEmax≈ICmax,所以调整管集电极最大电流为:
ICmax≈IEmax
(2)当电网电压最高,即输入电压最高同时输出电压最低时,调整管承受的管压降最大,即UCEmax=UImax-UOmin
(3)当晶体管的集电极电流最大,且调整管承受的管压降最大时,调整管的功率最大,即Pcmax=ICmaxUCEmax
(4)由以上几式即可确定调整管的极限参数。
实际选用时,还要考虑留一定的余量。
(5)电路设计的参数计算:
图中输出电压关系为:
=12+1.5+1=14.5V
取
取1.2
取43
取560
放大倍数为6倍,取
采样电阻取值:
要满足最大采样电压不超过2.4V避免烧坏单片机ADC0口
所以取值:
额定电流下(500mA)负载是R=
C=133
取100
具体电阻视实验室提供的大小进行调整!
四、稳压电源主要性能指标
直流电源的技术指标分为两种:
一种是特性指标,包括允许输入电压、输出电压、输出电流及输出电压调节范围等;另一种是质量指标,用来衡量输出直流电压的稳定程度,包括稳压系数(或电压调整率)、输出电阻(或电流调整率)、纹波电压及温度系数等。
稳压电源主要性能指标测试。
1、输出电压范围
在额定负载情况下,稳压电源输出电压可调范围。
2、输出最大电流
最大输出电流是指稳压电源正常工作的情况下能输出的最大电流,用Iomax表示。
一般情况下的工作电流Io<Iomax,稳压电路内部应有保护电路,以防止Io>Iomax或者输出端与地短路时损坏稳压器。
图5稳压电源性能指标测试电路
3、纹波电压
叠加在输出电压上的交流电压分量。
用示波器观测其峰峰值一般为毫伏量级。
也可用交流毫伏表测量其有效值,但因纹波不是正弦波,所以有一定的误差,一般直流电源的纹波电压VP-P≤10mV。
4、电压调整率
当输出电流和环境温度保持不变时,只考虑由于输入电压改变Ui所引起输出电压的变化量Uo与输出电压Uo的百分比,即
(5)
5、电流调整率
当输入电压和环境温度保持不变时,改变输出电流所引起输出电压的变化量Uo与输出电压Uo的百分比,即
(6)
该参数用于考核器件对应于负载变化而维持输出电压不变的能力。
6、输出最大电流
最大输出电流是指稳压电源正常工作的情况下能输出的最大电流,用Iomax表示。
一般情况下的工作电流Io<Iomax,稳压电路内部应有保护电路,以防止Io>Iomax或者输出端与地短路时损坏稳压器。
图15稳压电源性能指标测试电路
测试数据:
输入9V下降5%,即8.55V时,最大输出电流为594mA;
输入12V下降5%,即11.4V时,最大输出电流为598mA;
所以有上述数据得到:
最大输出电流小于600mA。
7、纹波电压
叠加在输出电压上的交流电压分量。
用示波器观测其峰峰值一般为毫伏量级。
也可用交流毫伏表测量其有效值,但因纹波不是正弦波,所以有一定的误差,一般直流电源的纹波电压。
测试数据:
输入6.0V,输出电流501mA时,示波器的波动电压为Vp-p=8mV
小于实验要求(10mV),所以达到实验要求。
五过流保护电路(硬件保护)
为了使电路安全工作,一般需要加入过流保护电路。
当调整管输出电压不变时,负载电阻RL变小输出电流就变大,极限情形负载电阻短路。
输出电流变大,图6中的电阻R上压降增大,使得Q2的ICE电流增大,从而流向调整管基极电流变少,从而限制了输出电流的增大。
极限情形当UR超过VBE时,三极管Q2饱和导通,调整管无电流输出。
图6过流保护电路图
相关计算如下:
(14)
根据实验室已有电阻,取R=1.2Ω
六、实验数据测量与记录
相对误差=|设定电压-实测电压|/实测电压
当输入电压为17V时的测量数据:
最大输出电流(mA)
设定电压(V)
数码管显示电压(V)
高精度万用表测量电压(V)
相对误差(设定电压与实测电压的误差)
504
6.00
6.07
5.91
1.52%
502
6.10
6.15
6.06
0.66%
507
6.20
6.22
6.15
0.81%
497
6.30
6.28
6.26
0.64%
503
6.40
6.45
6.41
0.16%
506
6.50
6.53
6.49
0.15%
502
7.00
6.97
6.98
0.28%
499
8.50
8.44
8.59
1.05%
501
9.00
8.98
9.09
0.99%
504
10.50
10.56
10.68
1.69%
503
11.00
11.05
11.08
0.72%
501
12.00
12.02
11.88
1.01%
小结:
由表中数据可知在误差允许范围内系统基本达到设计要求。
而且单片机测量值与使用高精度电压表的实测值很逼近。
系统设计达标。
当输入电压为15.3V时的测量数据
最大输出电流(mA)
设定电压(V)
数码管显示电压(V)
高精度万用表测量电压(V)
相对误差(设定电压与实测电压的误差)
495
6.00
6.14
6.01
0.17%
505
9.00
8.96
9.27
2.91%
500
12.00
11.90
12.80
6.25%
当输入电压为18.7V时的测量数据
最大输出电流(mA)
设定电压(V)
数码管显示电压(V)
高精度万用表测量电压(V)
相对误差(设定电压与实测电压的误差)
504
6.00
6.27
6.13
2.12%
503
9.00
9.06
9.45
4.76%
497
12.00
12.36
13.20
9.09%
空载时测量数据:
负载断开时(即输出电流0mA)
设定电压(V)
数码管显示电压(V)
高精度万用表测量电压(V)
相对误差(设定电压与实测电压的误差)
0mA
6.00
5.29
6.41
6.39%
0mA
9.00
7.87
9.37
3.95%
0mA
12.00
11.60
13.70
12.4%
满载时测量数据:
输出电流为额定电流时(500mA)
设定电压(V)
数码管显示电压(V)
高精度万用表测量电压(V)
相对误差(设定电压与实测电压的误差)
504
6.00
6.07
5.91
1.52%
499
9.00
8.98
9.09
0.99%
503
12.00
12.02
11.88
1.01%
过流保护时测量数据:
设定电压(V)
额定电流(mA)
额定电流500mA下测得的电压(V)
过流时电压(V)
过流电流(mA)
6.00
503
6.06
6.06(1-5%)=5.75
590
9.00
497
8.87
8.87(1-5%)=8.43
594
12.00
502
11.97
11.97(1-5%)=11.37
598
小结:
由以上几个表格的数据可看出,本实验设计基本合理能够达到设计要求。
七、元器件(设计过程用分立元件实现)
三极管:
90133个,BD6811个,导线、电阻若干。
八、实验总结:
由上述原理分析知本项目设计制作一个输出电压范围(6~12V)可调节和输出电流范围(0~500mA)可调节的数控直流稳压电源。
由信号源提供一个直流电源设计制作一个串联型线性数控稳压电路,主要包括基准电压电路,调整管,比较放大,取样电路四个单元模块组成。
基准电压由单片机键盘数控输入提供,此基准电压通过单片机的A/D转换实现。
调整管采用9013三级管进行过流保护,比较放大器采用了由两个9013三极管构成的差动放大电路,与取样电压进行比较放大,输出电压通过调整管得到稳定,并通过单片机的D/A转换将采样电压,采样电流转换成输出电压电流并用数码管显示出来。
本项目制作的数控直流稳压电源达到了本实验的要求,具有结构简单、调节方便(采用单片机键盘数字输入控制)、输出电压稳定性强(电压调整率与电流调整率<1%)、纹波电压小(Vp-p=8mV)、有过流保护(IOmax<600mA)等优点。
附录:
单片机代码
#include
bitmodel=0;//定义model,0为输入数据,1为显示电压电流
bitflag1=0;//定义标志位作为INT7中断标志
chardata_10=0,data_1=0,data_01=0,date=0;//定义data表示输入三个数据的十位,个位和十分位
unsignedintDA_code=0,mun=0;//DA转化的数字量
intvoltage=0,current=0;//定义voltage、current表示测定的电压、电流值
intms=0;//定义ms为T0计时单位,每过10ms,ms加1
//时钟初始化,外部时钟12M
voidSYSCLK_Init(void)
{
inti;
OSCXCN=0x77;//外部时钟选择12M
for(i=0;i<256;i++);
while(!
(OSCXCN&0x80))//等待晶体震荡稳定
{;}
OSCICN=0x08;//切换到外部时钟
}
//IO端口初始化
voidPORT_Init(void)
{
XBR2=0x40;//使能交叉开关
P3MDOUT=0xff;//将P3设置为推挽输出
}
//DAC初始化
voidDAC1_Init()
{
REF0CN=0x03;//内部偏压发生器工作
DAC1CN=0x80;//使能DAC1,更新发生在在写DAC1H时。
}
//ADC0初始化
voidADC0_Init()
{
ADC0CN=0x80;//使能ADC0,向AD0BUSY写1启动ADC0转换,转化结果右对齐
REF0CN=0x03;//设置基准电压为内部偏压
AMX0SL=0x00;//通道选择,通道0,初始化为电压传感器
ADC0CF=0x28;//ADC0SC=5,ADC0的转化时钟为2M,PGA增益为1
}
//外部中断7初始化
voidINT7_Init()
{
EIE2=0x20;//使能外部中断7
EIP2=0x20;//设置外部中断7为高优先级
}
//定时器T0初始化
voidT0_Init()
{
CKCON=0x00;//定时器时钟选择,用系统时钟12分频
TMOD=0x01;//定时器方式设置为方式0
TH0=(65536-10000)/256;//为T0装初值
TL0=(65536-10000)%256;//
TR0=1;//开启T0
ET0=1;//允许T0中断
}
//数码管显示
voidDisplay()
{
inti;
if(model==0)//model=0显示设定电压值
{
ZLG7289_Download(1,0,0,data_10);
ZLG7289_Download(1,1,1,data_1);
ZLG7289_Download(1,2,0,data_01);
//ZLG7289_Hide(0x07);
}
else//model=1,显示电流电压值,0~3管显示电流,4~7管显示电压
{
ZLG7289_Download(1,0,0,current/1000);
ZLG7289_Download(1,1,0,(current%1000)/100);
ZLG7289_Download(1,2,0,(current%1000%100)/10);
ZLG7289_Download(1,3,0,current%1000%100%10);
ZLG7289_Download(1,4,0,voltage/1000);
ZLG7289_Download(1,5,0,(voltage%1000)/100);
ZLG7289_Download(1,6,1,(voltage%1000%100)/10);
ZLG7289_Download(1,7,0,voltage%1000%100%10);
}
}
//处理读按键值并更新DAC输出
voidRead()
{
charkey_data;
key_data=ZLG7289_Key();//读键值
switch(key_data)
{
case0:
model=!
model;break;
case1:
if(data_10==1)data_10=0;elsedata_10++;break;
case2:
if(data_10==0){if(data_1==9)data_1=0;elsedata_1++;}else{if(data_1==2)data_1=0;elsedata_1++;}break;
case3:
if(data_01==9)data_01=0;elsedata_01++;break;
//case5:
data_10=(data_10-1)%10;break;
//case6:
data_1=(data_1-1)%10;break;
//case11:
data_01=(data_01-1)%10;break;
default:
break;
}
if(data_10>1)
{
data_10=1;
data_1=2;
}
if(data_10==1&&data_1>2)
{
data_10=1;
data_1=2;
}
/*if(data_10==0&&data_1<6)
{
data_10=0;
data_1=6;
}*/
date=data_10*100+data_1*10+data_01;
Display();
DA_code=(4096*(data_10*10+data_1+data_01*0.1))/14.526;
DAC1L=DA_code%256;
DAC1H=DA_code/256;//向DAC1H写数据,DA更新输出
}
//调整输出
voidAdjust()
{
if(voltage>date)//当输出电压大于设定值时,减小输出DA数字量值