基于单片机的数控直流稳压电源.docx

上传人:b****3 文档编号:4469286 上传时间:2022-12-01 格式:DOCX 页数:10 大小:258.99KB
下载 相关 举报
基于单片机的数控直流稳压电源.docx_第1页
第1页 / 共10页
基于单片机的数控直流稳压电源.docx_第2页
第2页 / 共10页
基于单片机的数控直流稳压电源.docx_第3页
第3页 / 共10页
基于单片机的数控直流稳压电源.docx_第4页
第4页 / 共10页
基于单片机的数控直流稳压电源.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

基于单片机的数控直流稳压电源.docx

《基于单片机的数控直流稳压电源.docx》由会员分享,可在线阅读,更多相关《基于单片机的数控直流稳压电源.docx(10页珍藏版)》请在冰豆网上搜索。

基于单片机的数控直流稳压电源.docx

基于单片机的数控直流稳压电源

 

基于单片机的数控直流稳压电源

利用LM317三端稳压器,设计制作一个数控稳压电源,要求:

1、输出电压:

2-15V,步进0.1V,纹波≤10mV;

2、输出电流0.5A;

3、输出电压值由数码管显示,由“+”、“-”键分别控制输出电压的步进

方案:

采用单片机控制此方案采用AT89C51单片机作为整机的控制单元,通过改变输入数字量来改变输出电压值。

这里主要利用单片机程控输出数字信号,经过D/A转换器(DA0832)输出模拟量,然后使用运算放大器把电流转换成电压,在通过三段稳压器LM317使得输出电压和输出电流达到稳压的目的。

方案论证:

1、输出模块:

使用运算放大器做前级的运算放大器,由于运算放大器具有很大的电源电压抑制比,可以减少输出端的纹波电压。

使用LM317做电流稳压器,把电流稳定到0.5A。

2、数控模块:

采用AT89C51单片机完成整个数控部分的功能,同时,AT89C51作为一个智能化的可编程器件,便于系统功能的扩展。

3、显示模块:

本来准备使用液晶显示,可是想想我们的层次不够,液晶现实的额程序不会写,只能退而其次,选择使用单片机通过锁存器控制8段LED数码管直接显示,这样可以精确的显示输出电压。

系统结构设计图如上图所示。

该系统主要由单片机最小控制系统、显示电路、独立按键、D/A转换电路、放大电路和稳压电路组成。

单片机设定预输出值,并可以通过独立键盘改变单片机的预设值。

然后通过DAC0832转化为模拟量,再经过运算放大和稳压稳流电路最后输出预设电压值,通过LED显示能够直观的看到预设值。

因为器材原因,我们设计的稳压电源采用的是外部稳压器提供的电源。

这样虽然算不上是一个完整的数控直流稳压电源,但是,除了这点,我们设计的电源基本已经复合要求。

1、最小系统控制电路设计:

最小控制系统由STC单片机、晶振、独立键盘和复位电路等组成。

如下图所示。

AT89C51的管脚排列如上图所示,9管脚接复位电路,18、19管脚为晶振的两个输入端,20管脚接地,40管脚接+5V。

晶振Y1和两个电容C2、C3构成自激震荡,连接到单片机的X1和X2端,电解电容C4、电阻R5和按键S5构成复位电路,连接到单片机的复位端。

当按键S5按下后,复位端通过R5与+5V电源接通,电容迅速放电,使RST管脚为高电平;当复位按键S5弹起后,+5V电源通过R6对电容C4重新充电,RST管脚出现复位正脉冲。

2、D/A转换电路设计:

如上图所示,DA0832的8位数据线D0~D7与单片机的P1口连接,1管脚(CS)和17管脚(Xfer)接地,8管脚(Vref)的参考电压为5V,则LSB=5V/2^8=0.02V,即最小分表率为0.02V。

11管脚(Iout1)和12管脚(Iout2)为电流输出端。

3、放大电路与稳压稳流电路设计:

如上图所示,本设计中将DAC0832的Iout2接地,采用Iout1输出,然后接运算放大LM358P将输出电流转化为电压。

经过LM358P转化后的电压值也为5V。

为了达到与单片机预设电压范围2~15V同步,输出端电压需要经过二级放大。

第一级不放大,直接将D/A输出的电流转化为电压,第二级放大,放大倍数

=R2/R1=5.5K/1.1K=5。

这里的R2由于找不到5.5K的电阻,所以用电位器代替。

因为DA0832转换后的电压的范围为0~5V,即DA0832的8位输入端全为高电平1时,输出电压为5V,输入端全为低电平0时,输出电压为0V,且呈线性变化。

为此为了使输出与LED显示同步,必须经过放大倍数

=5的二级放大。

再经过运放放大后的电压已经复合要求,可是电流却没有复合要求,这就要用到了三段稳压器LM317。

在这里,LM317作为电流稳压器,其应用电路如下图所示,其中

所以R1的值应该为2.5Ω。

可是,我们在实验室能找到的最小电阻是200Ω,这还是远远大于2.5Ω。

所以我们的输出电流才6ma。

这里还要说的是,本来我们采用的运算放大器是Lm324n,可是,因为我的不小心,在测试运放放大的时候,把芯片烧坏了。

并且我们手头没有多余的芯片,幸亏和我们做同一方案的同学有运放Lm358p,所以我们也采用了Lm358p。

4、显示模块设计:

如上图所示,显示部分采用数码管sr410561k,锁存器74HC573。

数码管段码A~DP接锁存器1的Q0~Q7,数码管的位选1~3接锁存器2的Q0~Q3。

P0接锁存器1、2的D0~D7。

锁存器1的LE接单片机P2^2,锁存器2的LE接单片机P2^3。

数码管的a~dp接锁存器1的Q0~Q7,数码管的位选1~3分别接锁存器2的Q0~Q3。

在使用数码管的过程中,我们发现数码管的位选直接接到单片机的P2口上,会使数码管的亮度不够。

现在我们有2种方法解决。

第一,接上拉电阻,经计算,200Ω左右的电阻可使数码管达到最亮,为了保险起见,可以使用400Ω的电阻。

但当时我们手头刚好没有400Ω的电阻,所以我们采用了第二种方法,把数码管的位选接锁存器上。

(4)软件设计:

程序流程图设计:

程序设计流程图下图所示。

程序开始以后,首先程序初始化,显示LED预设的初始电压值。

然后进行按键检测,如果没有按键按下,LED显示的电压不变;如果有按键按下,确认当前LED的调整值。

接着启动D/A转换,将转换后的模拟量送给系统最终输出端。

程序代码:

在附录

 

(5)系统调试:

显示模块调试:

算出数码管的段码,位选,使数码管能正确的显示预设值。

按键模块调试:

消除抖动,使我们按一下按键的加、减键时,能实现显示程序的步进0.1。

放大稳压电路调试:

为了使输出电压和显示模块对应,我们要调节放大电路的方法倍数。

假使显示的电压为11.3v,那么因为三端稳压器的自带电压为1.25v,所以放大电路输出电压因为11.3-12.5≈10v,所以一级放大的输出电压应为-2v,二级放大的电压应为10v。

稳流方面,因为器材的原因,我们只能把电流稳定在6ma。

(6)系统测试:

各个模块连接起来后,因为电路的改变,可能会改变输出值的大小,所以我们要进行整体的测试:

先测试放大电路的第一级放大,然后调整LM358P和DAC0832连接的那个电位器,使输出电压再次达到预想值。

再调整第二级放大,把放大倍数再次调为5倍。

把程序下载到硬件电路,测试最后输出值,是否为我们的预想值

三、总结

 

附录:

程序代码:

#include

#defineuintunsignedint

#defineucharunsignedchar

#defineDAC0832_PORTP1

sbitduanxuan=P2^6;

sbitweixuan=P2^5;

sbitcs=P2^2;

sbitwr1=P2^3;

sbitS1=P2^0;//加

sbitS2=P2^1;//减

ucharnum=20;

ucharcodetable[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};

voiddelay(uintz)//延时zms子程序

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

init()//初始化子函数

{

P1=num;

}

ucharkeyscan()//键盘扫描程序

{

if(S1==0)

{

delay(10);//键盘按键消抖

if(S1==0)

{

if(num==150)

{

num=20;

}

else

{

num++;

}

}

while(!

S1);//松手检测

}

if(S2==0)

{

delay(10);

if(S2==0)

{

if(num==20)

{

num=150;

}

else

{

num--;

}

}

while(!

S2);//松手检测

}

return(num);

}

voiddisplay()//显示程序

{

duanxuan=1;

P0=table[num/100];//十位

duanxuan=0;

weixuan=1;

P0=0x80;

weixuan=0;

delay

(1);

 

duanxuan=1;

P0=((table[num%100/10])&0xfe);//个位

duanxuan=0;

weixuan=1;

P0=0x40;

weixuan=0;

delay

(1);

duanxuan=1;

P0=table[num%10];//小数

duanxuan=0;

weixuan=1;

P0=0x20;

weixuan=0;

delay

(1);

}

uchardazh(ucharn)//D/A转换子程序

{cs=0;选定芯片

wr1=0;允许写入

n=num-13;输出电压值

DAC0832_PORT=n;//把n送给給DA

}

//主程序//

voidmain()

{

init();

while

(1)

{keyscan();

display();

dazh();

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1