数控直流稳压电源毕业设计文档格式.docx
《数控直流稳压电源毕业设计文档格式.docx》由会员分享,可在线阅读,更多相关《数控直流稳压电源毕业设计文档格式.docx(37页珍藏版)》请在冰豆网上搜索。
1、基本要求:
1)当输入交流电压为220v±
10%时,输出电压在3-13v可调;
2)额定电流为0.5A,且纹波不大于10mV;
3)使用按键设定电压,同时具有常用电平快速切换功能(3v、5v、6v、9v、12v),设定后按键可锁定,防止误触;
4)显示设定电压和测量电压,显示精度为0.01v。
2、扩展要求:
1)输出电压在0-13v可调;
2)额定电流为1A,且纹波不大于1mV;
3)掉电后可记忆上次的设定值;
4)两级过流保护功能,当电流超过额定值的20%达5秒时,电路作断开操作;
当电流超过额定值的50%时,电路立即断开。
具有光提示(如LED);
5)其他创新。
三、说明
禁止直接使用220v直接电阻分压的作法,注意用电安全。
摘要
直流稳压电源是常用的电子设备,它能保证在电网电压波动或负载发生变化时,输出稳定的电压。
一个低纹波、高精度的稳压源在仪器仪表、工业控制及测量领域中有着重要的实际应用价值。
本设计给出的稳压电源的输出电压范围为0~18V,额定工作电流为0.5A,并具有“+”、“-”步进电压调节功能,其最小步进为0.05V,纹波不大于10mV,此外,还可用LCD液晶显示器显示其输出电压值。
本设计给出了一种以STC89S52单片机为核心,并通过控制比较调整单元基准电压的变化来来实现高可靠、小纹波和高精度电压控制的直流数显可调稳压电源的硬件电路组成和软件设计流程。
关键词:
直流数控;
稳压电源;
单片机STC89C52;
Digest:
TheDCregulatedpowersupply
isafamiliarelectricequipment
thatcanofferstablevoltagewheninputvoltagefluctuatesoritsloadchanges.ThedesignofDCregulatedpowersupplycanoffervoltagesfrom0to12.5V,ratedworkingcurrent0.5A,withthefunctionof“+”“-”stepvoltagesregulator.Itsminimumsteppedvoltageis50mV,ripplewavevoltagelessthan10mV.Also,wecanknowitsoutputvoltagebyseeingthelcd.Thissystemgivesadesignprocess.Thisisareliable,lowripplewaveandhighly-stableelectricequipment.
Keyword:
DCregulatedpowersupply,STC89C52
一、方案论证与比较
1.1系统供电部分
由于该电源总共需要+21V,+15V,-15V,+5V电压,所以我们采用双220V/18V变压器,经桥式整流滤波后得到21V电压;
由三端稳压器7815,7915和7805分别得到+15V,-15V和+5V电压。
1.2控制器部分
方案一应用mega16作为控制器。
AVR是51的升级版,具有速度快,且自带512字节的EEPROM,不需要另外接扩展的EEPROM的优点;
缺点是,我们对AVR的使用不太熟悉,价格比较贵。
方案二采用STC89C52作为控制器。
优点:
技术比较熟练,使用广泛,价格便宜,而且功能上也完全满足本系统的要求;
缺点:
需要连接扩展EEPROM。
因为本系统对单片机的速度要求不是很高,而且连接扩展EEPROM也不复杂,经过比较,我们选用方案二。
1.3显示部分
方案一使用LED显示。
可视角度宽,介格便宜;
显示的内容少,介面呆板,而且占用较多的IO口资源。
方案二应用1602液晶显示模块。
界面美观,可显示文字及数字;
价格较贵。
通过比较,我们选节方案二。
1.4键盘部分
方案一利用I/O口直接连接的独立式键盘,每键都有相应的I/O口对应,编程容易控制,实现方便;
方案二利用P3口接成4*2键盘。
利用6个IO口得到8个按键,可使操作介界变得简单,操作也方便;
软件处理比独立按键复杂。
通过比较,结合本设计不需要太多IO口,方案一为最佳方案。
1.5数模/模数转换部分
方案一采用PCF8591芯片。
集AD,DA于一身;
价格昂贵,且操作不熟悉。
方案二数模转换部分采用DAC0832芯片;
模数转换部分采用TLC1543芯片。
两芯片均为常用芯片,操作简单,软件编程简单;
占用比较多的IO口,为PCB布线带来困难。
经过比较,方案二位最佳。
1.6掉电记忆部分。
我们选用应用最广泛的ST24c02芯片。
该芯片价格便宜,操作简单,抗干扰强,数据能保持一百年。
二、系统的具体设计及实现
2.1系统总框图
市电
变压
取样
D/A转换
系
统
电
源
比较放大
电压调整及过流保护
整流
键盘
电压显示
A/D转换
AT89S51
+21V
+15V
-15V
+5V
U0
2.2硬件设计
本系统由电源模块,调压模块,DA转换模块,键盘模块,EEPROM拓展模块与显示模块组成。
2.2.1电源模块
220V市电经过双18V变压器转换后的到+-18V电压,再经过桥式整流滤波电路,得到18*1.2=21.6(V)电压。
其中+21V电压经过7815转换得到稳定+15V电压,再经7805转换得到稳定+5V电压;
-21V电压经过mc7915转换得到稳定的-15V电压。
其中,+21V为系统供电,+15V,-15V,+5V分别为个独立元件供电。
2.2.2DA转换模块
DA转换模块由DAC0832,两级运放UA741组成。
DAC0832具有8位分辨率,有3种工作方式(单缓冲,双缓冲,直通)。
本设计中DAC工作于直通工作方式。
UA741为常用运放,由美国fairchild公司生产,具有低漂移,稳定等优点,可外置调零电路以抑制零点漂移。
DAC0832和运放UA1将单片机发出的八位二进制数转换成0—5V负电压,再经过反向比例放大器UA2将负电压转换成0—10V正电压。
经过两级运放放大后,DAC0832的转换分辨率为10/(2^8-1)=0.04V。
即单片机向DAC送出的数据变化1BIT,运放UA2输出的电压值改变0.04V。
滑动变阻器VR2的作用为调零电路以抑制零点漂移。
2.2.3电压调整模块
本设计的电压调整模块如上图所示。
T1,T2组成复合管,以实现大电流输出。
由于该设计预定额定电流为0.5A,最大输出电压为12.5V,所以要求T1管射极最大功率Pmax=0.5*12.5=6.25W,所以选取TIP41c。
T3管9013和电阻R9为限流保护部分。
当输出电流大于0.7A时,R9上的压降为0.7V使得T3管导通,T3管集电极对T2管基极分流,使得T2管基极电流明显变小使得输出电流变小,从而达到过流保护的功能。
发光二极管起过流提醒作用。
电压调整模块的核心部分是NE5534。
NE5534生产于美国德州半导体公司,具有共模抑制比高,响应速度快和压摆率高等优点,常用于音响,耳机等设备。
由DA及运放转换后的电压U1输入到NE5534的正向输入端,R10R22R11组成NE5534的取样电路。
由于NE5534T1T2及取样电路构成负反馈,由运放的“虚短”特点,NE5534的反向输入端的电压U2为正向输入端的电压大小U1。
由于运放还有“虚断”的特点,运放的输入端对流经取样电路的电流不起分流作用,所以输出电压U0/U2=(R10+R11+R22)/(R11+R22)=1.25。
即U2每改变0.04V,U0改变0.05V。
由于单片机输入到DAC0832的二进制数据每改变1BIT,U1改变0.04V即U2改变0.04V,所以U0改变0.05V。
因此,该设计最小步进电压为0.05V。
电容C16的作用为抑制输出纹波电压。
2.2.4键盘模块
系统共设置了9个独立按键,实现了常用电压设定,电压“+”“—”设定及正常关机辨别的功能。
2.2.5EEPROM拓展模块
为了实现设定电压数据的掉电保护,我们在系统中连接了扩展EEPROM24C02B,保证了在行驶过程中,如果数控电源意外掉电,已经设定的电压数据能够保存下来。
24C02B是ATMEL公司生产的一款256byte的串行EEPROM,能重复擦写1,000,000次,记录的信息能保存100年以上,而且与单片机的连接只需要2根线。
24C02B的接图如上图所示。
2.2.6显示模块
上图为显示模块的接图。
显示模块主要由TLC1543及LCD液晶显示屏组成。
由美国德州公司生产的TLC1543,是具有10位分辨率的AD转换器,,它具有11路模拟输入通道及3路内置自测试方式,具有显著的优点。
LCD液晶屏幕采用1602,能够显示16X2个字符。
由输出端采样得到的模拟信号,输入到TLC1543的其中一路模拟输入通道INT0,。
通过AD的转换,TLC1543将模拟量转化为10位数字量输入到单片机相应的IO口。
通过处理,单片机将模拟量值通过1602液晶显示出来。
2.3软件设计
2.3.1主程序流程
主程序流程图如下图:
开始
初始化
读取上次关机设定值
DA输出
TLC1543检测实际输出值
误差小于50mV?
调整TLC1543的输出值
N
Y
(1)
2.3.2键盘程序流程图
本系统中键盘程序分为键盘扫描子程序和按键功能执行子程序。
键盘扫描子程序流程图如下图2-3-2所示,按键功能子程序流程图如下图2-3-3所示:
图2-3-2键盘扫描子程序流程图
图2-3-3按键功能执行子程序流程图
2.3.3EEPROM读写程序流程
24C02B读写程序流程图如下图2-3-4和图2-3-5所示。
图2-3-424C02B写入程序流程图
图2-3-524C02B读取程序流程图
2.3.4DAC0832程序流程
DAC0832的程序流程图如下所示:
2.3.5TLC1543程序流程
TLC1543的小程序流程图如下所示:
开始
CLK发送脉冲信号
发送4位地址
读取前四位数据
读取后6位数据
结束
三、测试、结果及分析
观察系统运行状况,并辅助示波器、万用表得到以下结果。
3.1基本功能
表3-1
要求实现功能
测试结果
当输入交流电压为220v±
10%时,输出电压在3-13v可调
输出电压在3-13v可调
额定电流为0.5A,且纹波不大于10mV
额定电流为0.5A,纹波电压为8.2mV
使用按键设定电压,同时具有常用电平快速切换功能
具有3V,6V,9V,12V常用电平按键
显示设定电压和测量电压,显示精度为0.01v
能显示出0.05V电压的变化
3.2发挥功能部分
表3-2
功能
是否实现及描述
输出电压在0-13v可调
基本实现了,但只是0-12.5V可调
额定电流为1A,且纹波不大于1mV;
掉电后可记忆上次的设定值;
掉电记忆部分实现了
两级过流保护功能,当电流超过额定值的20%达5秒时,电路作断开操作;
具有光提示
仅实现了一级过流保护功能
3.3其他发挥部分
表3-3
描述
精调粗调电压功能
实现0.05V电压精调功能及1V电压粗调功能
3.4详细的测试数据:
(1)开机,LCD显示欢迎界面
Setvalue:
10.00v
Output:
10.01v
(2)按下粗调电压+键,显示电压改变1V
(3)按下精调电压+键,显示电压改变0.05V
(3)按下精调电压-键,显示电压改变0.05V
(4)按下粗调电压-键,显示电压改变1V
(5)按下常用电压3V键,显示电压改变
(6)按下常用电压6V键,显示电压改变
(7)按下常用电压9V键,显示电压改变
(7)按下常用电压12V键,显示电压改变
(8)若此时掉电,下次开机时,显示电压为
四.总结
本设计基本完成数控直流稳压电源的基本功能和发挥功能,采用1602液晶显示,可视面积大,界面美观。
采用NE5534作为电压调整模块的核心,使得输出电压极为稳定。
还扩展了精调粗调功能,使用户能对电压进行更加详细地设置。
经过调试,系统运行稳定,各项功能都比较完美地实现了。
经过本次设计,我对8952单片机有了更深层次的了解!
参考文献:
[1]求是科技、C程序设计完全手册北京:
人民邮电出版社2006
[2]张毅刚、彭喜元新编MCS-51单片机应用设计(第3版)哈尔滨:
哈尔滨工业大学出版社2008
[3]马忠梅籍顺心张凯马岩、单片机的C语言应用程序设计(第3版)北京:
北京航空航天大学出版社2003
附录一本设计的电路原理图。
附录二完整的系统源代码:
#include<
reg52.h>
intrins.h>
math.h>
#defineuintunsignedint
#defineucharunsignedchar
typedefunsignedcharBYTE;
typedefunsignedintWORD;
typedefbitBOOL;
BYTEcodedis1[]={"
PowerSupply"
};
BYTEcodedis2[]={"
welcome!
"
BYTEcodedis3[]={"
Pleasewait..."
BYTEcodedis4[]={"
SetValue:
"
BYTEcodedis5[]={"
BYTEsetv[6],getv[6];
//LCD输出字符组
floatn,setvalue;
//电压设定值
floatdq,dp,qq,pp,l,xx;
//转换传递参数
ucharctu,outv,inv;
//DA与AD部分传递参数
sbitTLCEOC=P2^4;
//TLC占用IO口
sbitTLCCL=P2^3;
sbitTLCAD=P2^2;
sbitTLCOUT=P2^1;
sbitTLCCS=P2^0;
sbitscl=P1^6;
//断电保存占用IO口
sbitsda=P1^7;
sbitDACS=P1^4;
//DA占用IO口
sbitDAWR=P1^5;
sbitrs=P2^7;
//液晶LCD占用IO口
sbitrw=P2^6;
sbitep=P2^5;
voiddelay(BYTEms)//延时子程序
{
BYTEi;
while(ms--)
{
for(i=0;
i<
250;
i++)
{
_nop_();
}
}
}
/***************************************************
*****************LCD显示子函数组****************
***************************************************/
BOOLlcd_bz()
{//测试LCD忙碌状态
BOOLresult;
rs=0;
rw=1;
ep=1;
_nop_();
result=(BOOL)(P0&
0x80);
ep=0;
returnresult;
lcd_wcmd(BYTEcmd)
{//写入指令数据到LCD
while(lcd_bz());
rw=0;
P0=cmd;
lcd_pos(BYTEpos)
{//设定显示位置
lcd_wcmd(pos|0x80);
lcd_wdat(BYTEdat)
{//写入字符显示数据到LCD
rs=1;
P0=dat;
lcd_init()
{//LCD初始化设定
lcd_wcmd(0x38);
//
delay
(1);
lcd_wcmd(0x0c);
lcd_wcmd(0x06);
lcd_wcmd(0x01);
//清除LCD的显示内容
*****************DA输出函数********************
voidwrite_da()
{
P0=outv;
DACS=0;
DAWR=0;
DAWR=1;
DACS=1;
*****************AD(TLC)读取函数**************
voidread_tlc()
floatvad;
inti;
i=2;
while(i)
uchartemp;
vad=0;
TLCEOC=1;
delay
(1);
TLCCL=0;
TLCCS=0;
//1
TLCAD=0;
temp=TLCOUT;
if(temp==1)
vad=vad+512;
TLCCL=1;
//2
vad=vad+256;
//3
vad=vad+128;
//4
TLCAD=1;