数控直流稳压电源.docx
《数控直流稳压电源.docx》由会员分享,可在线阅读,更多相关《数控直流稳压电源.docx(27页珍藏版)》请在冰豆网上搜索。
数控直流稳压电源
数控直流稳压电源
摘要本系统以直流电压源为核心,80C51单片机为主控制器,通过键盘来设置直流电源的输出电压,输出电压范围为0—9.9V,并可由液晶屏显示实际输出电压值。
本系统由单片机程控输出数字信号,经过D/A转换器(TLC5615)输出模拟量,再经过运算放大器隔离放大,控制输出功率管的基极,随着功率管基极电压的变化而输出不同的电压。
实际测试结果表明,本系统实际应用于需要高稳定度小功率恒压源的领域。
关键字直流稳压电源单片机数字控制
1、引言
电源技术尤其是数控电源技术是一门实践性很强的工程技术,服务于各行各业。
电力电子技术是电能的最佳应用技术之一。
当今电源技术融合了电气、电子、系统集成、控制理论、材料等诸多学科领域。
随着计算机和通讯技术发展而来的现代信息技术革命,给电力电子技术提供了广阔的发展前景,同时也给电源提出了更高的要求。
随着数控电源在电子装置中的普遍使用,普通电源在工作时产生的误差,会影响整个系统的精确度。
电源在使用时会造成很多不良后果,世界各国纷纷对电源产品提出了不同要求并制定了一系列的产品精度标准。
只有满足产品标准,才能够进入市场。
随着经济全球化的发展,满足国际标准的产品才能获得进出的通行证。
数控电源是从80年代才真正的发展起来的,期间系统的电力电子理论开始建立。
这些理论为其后来的发展提供了一个良好的基础。
在以后的一段时间里,数控电源技术有了长足的发展。
但其产品存在数控程度达不到要求、分辨率不高、功率密度比较低、可靠性较差的缺点。
因此数控电源主要的发展方向,是针对上述缺点不断加以改善。
单片机技术及电压转换模块的出现为精确数控电源的发展提供了有利的条件。
新的变换技术和控制理论的不断发展,各种类型专用集成电路、数字信号处理器件的研制应用,到90年代,己出现了数控精度达到0.05V的数控电源,功率密度达到每立方英寸50W的数控电源。
从组成上,数控电源可分成器件、主电路与控制等三部分。
目前在电力电子器件方面,几乎都为旋纽开关调节电压,调节精度不高,而且经常跳变,使用麻烦。
数字化智能电源模块是针对传统智能电源模块的不足提出的,数字化能够减少生产过程中的不确定因素和人为参与的环节数,有效地解决电源模块中诸如可靠性、智能化和产品一致性等工程问题,极大地提高生产效率和产品的可维护性。
2、系统方案论证与比较
方案一:
采用各类数字电路来组成键盘控制系统,进行信号处理,如选用CPLD等可编程逻辑器件。
本方案电路复杂,灵活性不高,效率低,不利于系统的扩展,对信号处理比较困难。
方案二:
采用80C51单片机作为整机的控制单元,通过改变TLC5615的输入数字量来改变输出电压值,从而使输出功率管的基极电压发生变化,间接地改变输出电压的大小。
为了能够使系统具备检测实际输出电压值的大小,可以将输出电压经过TLC1543进行模数转换,间接用单片机实时对电压进行采样,然后进行数据处理及显示。
此系统比较灵活,采用软件方法来解决数据的预置以及电压的控制,使系统硬件更加简洁,各类功能易于实现,能很好地满足题目的要求。
比较以上两种方案的优缺点,方案二简洁、灵活、可扩展性好,能达到题目的设计要求,因此采用方案二来实现。
3、总体方案框图
本系统以80c51为核心,包括四个功能模块:
处理键盘数据、控制D/A、A/D输入输出、LED显示,系统总体框图如图1所示。
由键盘输入控制数据;单片机与TLC5615连接实现将CPU运算预置数字大小转换成对应的数字电压;控制电压输出到稳压电路,使基准电压发生变化,经过稳压管调整后输出;TLC1543采样电阻信号,将模拟信号转换为数字信号,经过单片机处理后,输出到LED显示,显示当前电压并与键盘输入电压相比较,作出相应的反应。
系统框图图1
4、系统部分功能设计
4.1稳压输出部分
这部分将数控部分送来的电压控制字转换成稳定电压输出。
D/A转换部分的输出电压作为稳压输出电路的参考电压。
稳压输出电路的输出与参考电压成比例。
稳压输出电路如图2,在电路中,LM324为比较放大器,R3、R8组成反馈网络。
D/A转换电路的输出电压DAOUT接到U1A的同向端,稳压电源的输出经R3、R8组成的取样电路分压后送到运放U2A的反向端,经运放比较放大后。
路平衡时,D/A电路的输出电压与取样后的电压相等。
稳压输出原理与电路图2
4.2数字控制部分
4.2.1单片机80C51芯片
Vss(20脚):
接地(介绍如图3)
VCC(40脚):
主电源+5V
XTAL1(19脚):
接外部晶体的一端。
在片内它是振荡电路反相放大器的输入端。
在采用外部时钟时,对于HMOS单片机,该端引脚必须接地;对于CHMOS单片机,此引脚作为驱动端。
XTAL2(18脚):
接外部晶体的另一端。
在片内它是一个振荡电路反相放大器的输出端,振荡电路的频率是晶体振荡频率。
若需采用外部时钟电路,对于HMOS单片机,该引脚输入外部时钟脉冲;对于CHMOS单片机,此引脚应悬浮。
RST(9脚):
单片机刚接上电源时,其内部各寄存器处于随机状态,在该脚输入24个时钟周期宽度以上的高电平将使单片机复位(RESET)
PSEN(29脚):
外部程序存储器选通信号输出引脚。
ALE/PROG(30脚):
地址锁存允许信号输出引脚/编程脉冲输入引脚。
EA/VPP(31脚):
内外存储器选择引脚/片内EPROM(FlashROM)编程电压输入引脚
并行I/O引脚(32个,分4个8位口)
P0.0—P0.7(39脚—32脚)
P1.0—P1.7 (1脚—8脚)
P2.0—P2.7 (26脚—21脚)
P3.0—P3.7 (10脚—17脚)
AT80C51芯片图3
单片机的连接图4
4.2.2单片机控制连接
控制部分是系统整机协调工作和智能化管理的核心部分。
如图4,采用AT80c51单片机实现控制功能是其关键,采用单片机不但方便监控,并且大大减少硬件设计。
4.3D/A转换部分
4.3.1TLC5615芯片介绍
系统设置D/A转换接口,采用10位模数转换器TLC5615。
TLC5615为美国德州仪器公司1999年推出的产品,是具有串行接口的数模转换器,其输出为电压型,最大输出电压是基准电压值的两倍。
带有上电复位功能,即把DAC寄存器复位至全零。
引脚图如5引脚功能说明如下:
TLC5615芯片图5
(1)DIN:
串行数据输入端;
(2)SCLK:
串行时钟输入端;
(3)CS:
芯片选用通端,低电平有效;
(3)DOUT:
用于级联时的串行数据输出端;
(4)AGND:
模拟地;
(6)REFIN:
基准电压输入端
TLC5615的特点:
(1)10位CMOS电压输出;
(2)5V单电源供电;
(3)与CPU三线串行接口;
(4)最大输出电压可达基准电压的二倍;
(5)输出电压具有和基准电压相同极性;
(6)建立时间125μs;
(7)内部上电复位;
(8)低功耗,最大仅175mW。
由时序图图6可以看出,当片选CS为低电平时,输入数据DIN由时钟SCLK同步输入或输出,而且最高有效位在前,低有效位在后。
输入时SCLK的上升沿把串行输入数据DIN移入内部的16位移位寄存器,SCLK的下降沿输出串行数据DOUT,片选CS的上升沿把数据传送至DAC寄存器。
当片选CS为高电平时,串行输入数据DIN不能由时钟同步送入移位寄存器;输出数据DOUT保持最近的数值不变而不进入高阻状态。
由此要想串行输入数据和输出数据必须满足两个条件:
第一时钟SCLK的有效跳变;第二片选CS为低电平。
这里,为了使时钟的内部馈通最小,当片选CS为高电平时,输入时钟SCLK应当为低电平。
TLC5615时序图图6
4.3.2TLC5615与单片机的连接如图7
TLC5615与单片机的连接图7
4.4A/D转换部分
4.4.1TLC1543芯片介绍
TLC1543美国TI司生产的多通道、低价格的模数转换器。
采用串行通信接口,具有输入通道多、性价比高、易于和单片机接口的特点,可广泛应用于各种数据采集系统。
TLC1543为20脚DIP装的CMOS10位开关电容逐次A/D逼近模数转换器,引脚排列如图8所示
TLC1543芯片图8
A0~A10(1~9、11、12脚)为11个模拟输入端,
REF+(14脚,通常为VCC)
REF-(13脚,通常为地)为基准电压正负端
CS(15脚)为片选端,在CS端的一个下降沿变化将复位内部计数器并控制和使能ADDRESS、I/OCLOCK(18脚)和DATAOUT(16脚)。
ADDRESS(17脚)为串行数据输入端,是一个1的串行地址用来选择下一个即将被转换的模拟输入或测试电压。
DATAOUT为A/D换结束3态串行输出端,它与微处理器或外围的串行口通信,可对数据长度和格式灵活编程。
I/OCLOCK数据输入/输出提供同步时钟,系统时钟由片内产生。
芯片内部有一个14通道多路选择器,可选择11个模拟输入通道或3个内部自测电压中的任意一个进行测试。
片内设有采样-保持电路,在转换结束时,EOC(19脚)输出端变高表明转换完成。
内部转换器具有高速(10µS转换时间),高精度(10分辨率,最大±1LSB不可调整误差)和低噪声的特点。
TLC1543工作时序
TLC1543工作时序如图9示,其工作过程分为两个周期:
访问周期和采样周期。
工作状态由CS使能或禁止,工作时CS必须置低电平。
CS为高电平时,I/OCLOCK、ADDRESS被禁止,同时DATAOUT为高阻状态。
当CPU使CS变低时,TLC1543开始数据转换,I/OCLOCK、ADDRESS使能,DATAOUT脱离高阻状态。
随后,CPU向ADDRESS提供4位通道地址,控制14个模拟通道选择器从11个外部模拟输入和3个内部自测电压中选通1路送到采样保持电路。
同时,I/OCLOCK输入时钟时序,CPU从DATAOUT端接收前一次A/D转换结果。
I/OCLOCK从CPU接收10时钟长度的时钟序列。
前4个时钟用4位地址从ADDRESS端装载地址寄存器,选择所需的模拟通道,后6个时钟对模拟输入的采样提供控制时序。
模拟输入的采样起始于第4个I/OCLOCK下降沿,而采样一直持续6个I/OCLOCK周期,并一直保持到第10个I/OCLOCK下降沿。
转换过程中,CS的下降沿使DATAOUT引脚脱离高阻状态并起动一次I/OCLOCK工作过程。
CS上升沿终止这个过程并在规定的延迟时间内使DATAOUT引脚返回到高阻状态,经过两个系统时钟周期后禁止I/OCLOCK和ADDRESS端。
TLC1543工作时序图图9
4.4.2TLC1543与单片机的连接如图10
TLC1543与单片机的连接图10
4.5键盘部分
由于要实现人机对话,要显示0—9.9V的电压值,我们自制4*4按键的键盘来完成整个系统控制。
电路原理如图11所示
键盘部分图11
按键的具体意义如下:
0
1
2
3
4
5
6
7
8
9
/
/
/
确定键
返回键
复位键
4.6显示部分
本方案采用LM016L型LED,可直接显示,界面友好,支持串并行两种连接方式,其电路连接如图12所示
显示部分图12
5、软件实现流程图
软件流程图图13
6、电源测试结果分析
电压显示与比较
预置电压(V)
显示电压(V)
测量电压(V)
1
0.998
1
1.2
1.193
1.2
1.4
1.399
1.4
1.6
1.594
1.6
1.8
1.8
1.8
2
1.996
2.0
2.6
2.602
2.6
3
3.004
3.0
3.7
3.698
3.7
5
5.00
5.
7
6.996
7
8
8.004
8
9
8.992
9
9.9
9.403
9.9
用单片机控制电源时,输出直流0-9.9V,液晶屏显示清晰正确,误差较小,完美的实现了数控恒压源这一课题。
但在功能上还不够强大,没有显示预置电压等等,还可以进一步得到提高。
致谢
经过2个月的努力我的本科毕业论文终于顺利完稿。
在此我要对所有帮助我的人表示忠心感谢没有他们我无法想象我的论文会如此顺利完稿。
尤其要感谢我的指导老师徐正坤老师,本文是在徐正坤老师的精心指导和大力支持下完成的,在此期间徐老师丰富的专业知识和严谨的治学态度给我留下了深刻的印象。
参考文献
[1]徐丽萍.电子综合电路设计与安装调试[M].中国劳动和社会保障出版社,2007
[2]刘桂英,刘高潮.串联型直流稳压电源的仿真分析[M].广西师范学院学报2004,第21卷
[3]胡贵阳,卢月琼,李昌禧.用单片机制作的直流稳压可调电源[J].电子世界,2005,第11期
[4]李全利,迟志强.单片机原理及接口技术[M].高等教育出版社,2003
[5]黄智伟.全国大学生电子设计竞赛电路设计[M].北京航空航天大学出版社,2006
[6]刘文涛.单片机语言C51典型应用设计[M].北京邮电人民出版社,2006
[7]王振红,张常年.综合电子设计实践[M].清华大学出版社,2008
[8]王振红,张斯伟.电子综合设计实例集萃[M].化学工业出版社,2008
[9]马忠梅.单片机的C语言应用设计[M].北京航天航空大学出版社,2003
HighstabilityDCpowersupply
MAYing-shang
ChongqingThreeGorgesCollegeInstituteofTechnologyGrade2006wanzhouchongqing404000
AbstractThesystemforDCvoltagesourceasthecore,80C51microcontroller-basedcontroller,throughthekeyboardtosettheoutputvoltageofDCpowersupply,setuptosteplevel0.1V,outputvoltagerangeof0-9.9V,andcanbefromtheliquidcrystalscreendisplaystheactualoutputvoltage.ThissystemiscomposedofMCUProgrammableoutputdigitalsignal,afterD/Aconverter(TLC5615)analogoutput,andthenzoomthroughtheop-ampisolation,control,outputpowertubebase,withthepowertransistorbasevoltagechangesintheoutputofdifferentvoltage.Actualtestresultsshowthatthesystempracticalapplicationsrequireahighstabilityconstantvoltagesourceoflow-powerfield.
KeywordsDCPowerSupplysingleChipDigitalcontrol
附录
附录1电路原理图:
附录2
源程序:
#include
#include"task.h"
#include"lcd1602.h"
#include"INIT.h"
#include"SCAN_KEY.h"
#include"SHOW_LCD.h"
#include"ADC.h"
#include"DAC.h"
#include"FENG_MING_QI.h"
voidmain(void)
{
unsignedchari;
timer0_init();//定时器初始化
lcd_init();//液晶显示屏初始化
for(i=25;i>0;i--)//延时并显示初始界面
{
print_lcd_xyns(1,5,9,"Welcome!
");
print_lcd_xyns(2,1,16,"Pleaseputdata!
");
}
lcd_init();
num=1;key_input_display=1;//键盘初始化
EA=1;//开中断
while
(1)
{//TIME_PER_SEC=200
if(task_delay[0]==0)input_dac_value();//键盘的扫描任务
if(task_delay[1]==0){SHOW_LCD();task_delay[1]=TIME_PER_SEC/100;}//LCD显示
if(task_delay[2]==0){ADCH();task_delay[2]=TIME_PER_SEC/40;}//AD输出
if(task_delay[3]==0){DACH();task_delay[3]=TIME_PER_SEC/30;}//DA输出电压采集
if(task_delay[4]==0){FENG_MING_QI();task_delay[4]=TIME_PER_SEC/20;}//蜂鸣器4HZ
}
}
/*
功能:
AD转换
*/
#ifndef__AD_H__
#define__AD_H__
#include"math.h"
//接口定义
sbitSDO=P3^4;//数据输出口
sbitADD=P2^4;//通道选择
sbitCS_1543=P2^5;//启动
sbitCLK=P2^6;//时钟时序
sbitEOC=P3^5;//为高时轮换结束
unsignedcharF3=0;
//读ADDR中的数据
unsignedintget_data(unsignedcharADDR)
{
unsignedchari;
unsignedinttemp=0;
ADDR<<=4;//4有效地址左对齐
CLK=0;
CS_1543=1;
CS_1543=0;
delay_1
(1);
for(i=0;i<10;i++)
{
temp<<=1;
ADD=(bit)(ADDR&0X80);
CLK=1;
SDO=1;
temp=temp^SDO;
CLK=0;
ADDR<<=1;
}
delay_1
(1);
CS_1543=1;
return(temp);
}
voidADCH(void)//AD转换程序
{
unsignedchari=0;
if(key_input_display==0)da5615(dac_value*0.1024);//DA转换
for(i=0;i<3;i++)//AD转换
{
adc_value=get_data(0);
adc_value=adc_value*9.785171064;//扩大量程
}
if((dac_value>adc_value)&&(key_input_display==0))//输入与输出差值是否超过1V,是则清零输入与输出,并报警
if((dac_value-adc_value)>1000)
{
dac_value=0;
da5615(0);
num++;
F3=1;//报警标志位
key_input_display=1;
};
if((adc_value>dac_value)&&(key_input_display==0))//输入与输出差值是否超过1V,是则清零输入与输出,并报警
if((adc_value-dac_value)>1000)
{
dac_value=0;
da5615(0);
num++;
F3=1;//报警标志位
key_input_display=1;
};
}
#endif
/*
功能:
DA转换
*/
#ifndef__DA_H__
#define__DA_H__
sbitDA=P3^2;
sbitCK=P3^0;
sbitCS_5615=P3^1;
//数据写入
voidda5615(unsignedintda)
{
unsignedchari;
da<<=6;//10有效数据左对齐
CS_5615=0;
CK=0;
for(i=0;i<12;i++)
{
DA=(bit)(da&0x8000);
CK=1;
da<<=1;
CK=0;
}
CS_5615=1;
CK=0;
}
voidDACH(void)//DA转换程序
{
if(key_input_display==0)
da5615(dac_value*0.1024);
}
#endif
/*
功能:
定时器初始化以及中断服务程序
*/
#ifndef__INIT_H__
#define__INIT_H__
#include"reg51.h"
/*内部定时器T0的初始化*/
voidtimer0_init(void)
{
unsignedchari;
for(i=0;iTMOD=(TMOD&0XF0)|0X01;//定时器T0的工作模式1
TH0=256-CLOCK/TIME_PER_SEC/12/256;//设初值;即开始计时了
TL0=256-CLOCK/TIME_PER_SEC/12%256;
TR0=1;//启动T0
ET0=1;//允许T0中断
}
/*系统OS定时中断服务*/
voidtimer0(void)interrupt1
{
unsignedchari;
TH0=256-CLOCK/TIME_PER_SEC/12/256;//初值为;即计时
TL0=256-CLOCK/TIME_PER_SEC/12%256;
for(i=0;i//每节拍对任务延时变量减一,减到0后,任务就绪。
}
#en