《基于参考资料单片机的数控直流稳压电源.docx》由会员分享,可在线阅读,更多相关《基于参考资料单片机的数控直流稳压电源.docx(14页珍藏版)》请在三一文库上搜索。
1、基于单片机的数控直流稳压电源一、引言( 1)题目要求:利用LM317三端稳压器,设计制作一个数控稳压电源,要求:1、输出电压:2-15V,步进0.1V,纹波0 10mV2、输出电流0.5A ;3、输出电压值由数码管显示,由“ +”、 “-”键分别控制输出电压的步进( 2) 概况 : 直流稳压电源是电子技术常用的设备之一,广泛的应用于教学、科研等领域。传统的多 功能直流稳压电源功能简单、难控制、可靠性低、干扰大、精度低且体积大、复杂度高。普通直流稳压电源品种很多但均存在以下问题: 输出电压是通过粗调 (波段开关) 及细调 (电 位器)来调节。这样,当输出电压需要精确输出,或需要在一个小范围内改变
2、时(如 1.021 03V) ,困难就较大。 另外, 随着使用时间的增加, 波段开关及电位器难免接触不良, 对输出会有影响。 常常通过硬件对过载进行限流或截流型保护, 电路构成复杂, 稳压精度也 不高。 本文设计了一种以单片机为核心的智能化高精度简易直流电源,克服了传统直流电压源的缺点,具有很高的应用价值。二、系统设计( 1) 方案论证:方案:采用单片机控制此方案采用AT89C51单片机作为整机的控制单元,通过改变输入数字量来改变输出电压值。 这里主要利用单片机程控输出数字信号,经过D /A 转换器 ( DA0832) 输出模拟量,然后使用运算放大器把电流转换成电压,在通过三段稳压器LM317
3、使得输出电压和输出电流达到稳压 的目的。方案论证:1、输出模块:使用运算放大器做前级的运算放大器,由于运算放大 器具有很大的电源电压抑制比,可以减少输出端的纹波电压。使用LM317做电流稳压器,把电流稳定到 0.5A。2、数控模块:采用AT89C51单片机完成整个数控部分的功能,同 时,AT89C51作为一个智能化的可编程器件,便于系统功能的扩展。3、显示模块:本来准备使用液晶显示,可是想想我们的层次不够, 液晶现实的额程序不会写,只能退而其次,选择使用单片机通过锁存器控制 8段LE躁码管直接显示,这样可以精确的显示输出电压。(2)系统结构:系统结构设计图如上图所示。该系统主要由单片机最小控制
4、系统、显示电路、 独立按键、D/A转换电路、放大电路和稳压电路组成。单片机设定预输出值,并 可以通过独立键盘改变单片机的预设值。然后通过DAC0832转化为模拟量,再经过运算放大和稳压稳流电路最后输出预设电压值,通过LED显示能够直观的看到预设值。因为器材原因,我们设计的稳压电源采用的是外部稳压器提供的电 源。这样虽然算不上是一个完整的数控直流稳压电源,但是,除了这点,我们设 计的电源基本已经复合要求。(3)硬件设计:1、最小系统控制电路设计: 最小控制系统由STC单片机、晶振、独立键盘和复位电路等组成。如下图所示1以。VCCPl.lMOP12PG1P1JPftJDl dM %i j.3456
5、Bl s闻iDI *闻;sPL?PHKESET_PflJP3,ORSD或VPFP3JW ALE 丽国丽n 3 NffP:.7nPLAP5JTL_PIJP5jfr OPI.4P3.7/ 雅P:,5XTAL2P:,2XTAL1P2.1CKDP2.0gIDn121314-*15,IS221tf17S3IS口L性_A15for.卡.即u89C51ll5户AT89C51的管脚排列如上图所示,9管脚接复位电路,18、19管脚为晶振的 两个输入端,20管脚接地,40管脚接+5V。晶振Y1和两个电容C2、C3构成自激震荡,连接到单片机的 X1和X2端, 电解电容C4、电阻R5和按键S5构成复位电路,连接到单片
6、机的复位端。当按 键S5按下后,复位端通过R5与+5V电源接通,电容迅速放电,使 RST管脚为 高电平;当复位按键S5弹起后,+5V电源通过R6对电容C4重新充电,RST管 脚出现复位正脉冲。2、D/A转换电路设计:1II-&UE 1isbEiiaADllE512ELfbDI3DI4VrefDI5DI6ma-bD I 7WTL2CSWRIXflaP3-1 ron P3-Z- ecTo P3 JznTri 3.4irro P3.5.nri P3 0 WR P3_7/RD XTAL2 XTAJL1 GMD89C51Pl-OPl-1 Pl Pl-3 Fl电Pl-5Pl.Pl.7 RESJET F3.
7、O.TtXD如上图所示,DA0832的8位数据线D0D方单片机的P1 口连接,1管脚(CS 和17管脚(Xfer)接地,8管脚(Vref)的参考电压为5V,贝U LSB=5V/2A8=0.02V, 即最小分表率为0.02V。11管脚(loutl )和12管脚(Iout2 )为电流输出端。3、放大电路与稳压稳流电路设计:如上图所示,本设计中将DAC0832勺Iout2接地,采用Iout1输出,然后接 运算放大LM358P等输出电流转化为电压。经过LM358P专化后的电压值也为5V。 为了达到与单片机预设电压范围 275V同步,输出端电压需要经过二级放大。第 一级不放大,直接将 D/A输出的电流转
8、化为电压,第二级放大,放大倍数 n=R2/R1=5.5K/1.1K=5。这里的R2由于找不到5.5K的电阻,所以用电位器代替。因为DA0832转换后的电压的范围为05V,即DA0832的8位输入端全为高电平1 时,输出电压为5V,输入端全为低电平0时,输出电压为0V,且呈线性变化。为此为了使输出与LED显示同步,必须经过放大倍数n=5的二级放大。再经过运 放放大后的电压已经复合要求,可是电流却没有复合要求,这就要用到了三段稳 压器LM31%在这里,LM317作为电流稳压器,其应用电路如下图所示,其中l outIAdj1.2V一R一,所以R1的值应该为2.5 Q。可是,我们在实验室能找到的最小电
9、阻是200。,这还是远远大于2.5 Q。所以我们的卒&出电流才6ma 这里还要说的是,本来我们采用的运算放大器是Lm324n可是,因为我的不小心,在测试运放放大的时候,把芯片烧坏了。并且我们手头没有多余的芯片,幸 亏和我们做同一方案的同学有运放 Lm358P所以我们也采用了 Lm358P104、显示模块设计:5 uUNDE即521 ra二 456 丁 DCI-I6CC mZDm4DSDfiDmmSSC51RESETP3.0.KKDP3.1.TKD3 二 INTCEAVPPALE PROG- PBENU4*51?1.Q Pl-1 P1J2 P13 Pl-4 P15 Pl.6 Pl-7C01 二3
10、4-二白- 3po,po,psmpo.mpo.po.011trP三三!NII P3.4.T0 P3J T1P3.6.亘P3.T丽 XTAL2 XTAL1 GND292E2726251CP1rT1Q2Q3O及丝铝bbq1Ei151E441.555L中6E1.771-SEm b u defg-151514Iz12-Jr JJ- UN 口0101如上图所示,显示部分采用数码管 sr410561k,锁存器74HC573数码管段 码ADP接锁存器1的Q0Q7,数码管的位选13接锁存器2的Q0Q3。P0接 锁存器1、2的D0D7。锁存器1的LE接单片机P2A2,锁存器2的LE接单片 机P2A3。数码管的a
11、dp接锁存器1的Q0Q7,数码管的位选13分别接锁存 器2的Q0Q3o在使用数码管的过程中,我们发现数码管的位选直接接到单片 机的P2 口上,会使数码管的亮度不够。现在我们有 2种方法解决。第一,接上 拉电阻,经计算,200Q左右的电阻可使数码管达到最亮,为了保险起见,可以 使用400。的电阻。但当时我们手头刚好没有 400。的电阻,所以我们采用了第 二种方法,把数码管的位选接锁存器上。(4)软件设计:程序流程图设计:程序设计流程图下图所示。程序开始以后,首先程序初始化,显示LED预设的初始电压值。然后进行按键检测,如果没有按键按下,LED显示的电压不变;如果有按键按下,确认当前 LED的调整
12、值。接着启动D/A转换,将 转换后的模拟量送给系统最终输出端。程序代码:在附录(5)系统调试:显示模块调试:算出数码管的段码,位选,使数码管能正确的显示预 设值。按键模块调试:消除抖动,使我们按一下按键的加、减键时,能实现 显示程序的步进0.1。放大稳压电路调试:为了使输出电压和显示模块对应,我们要调节放大电路的方法倍数。假使显示的电压为 11.3v,那么因为三端稳压器的自带电压 为1.25v,所以放大电路输出电压因为11.3-12.5 M0v,所以一级放大的输出电压应为-2v,二级放大的电压应为10vo稳流方面,因为器材的原因,我们只能 把电流稳定在6ma(6)系统测试:各个模块连接起来后,
13、因为电路的改变,可能会改变输出值的大小,所以我 们要进行整体的测试:先测试放大电路的第一级放大,然后调整LM358P和DAC08321接的那个电位器,使输出电压再次达到预想值。再调整第二级放大, 把放大倍数再次调为5倍。 把程序下载到硬件电路,测试最后输出值,是否为 我们的预想值三、总结附录:即匕4-用 R.,然一,I 4T 土上后+1,II I 11 EIDm n4D:D阳 P 出程序代码:#include#define uint unsigned int#define uchar unsigned char#define DAC0832 PORT P1sbit duanxuan=P2A6;
14、sbit weixuan=P2A5;sbit cs=P2A2;sbit wr1=P2A3;sbit S1=P2A0;/力口sbit S2=P2A1;/减uchar num=20;uchar code table=0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09;void delay(uint z) / 延时 z ms 子程序uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);init()/ 初始化子函数P1=num;uchar keyscan()/键盘扫描程序if(S1=0)delay(10);/键盘按键消抖if(S
15、1=0)if(num=150)elsenum+;while(!S1);/松手检测if(S2=0)delay(10);if(S2=0)if(num=20)num=150;elsenum-;while(!S2);/松手检测return(num);void display()/ 显示程序12duanxuan=1;P0=tablenum/100;/ 十位duanxuan=0;weixuan=1;P0=0x80;weixuan=0;delay(1);duanxuan=1;P0=(tablenum%100/10)&0xfe);/ 个位duanxuan=0;weixuan=1;P0=0x40;weixuan=0;delay(1);duanxuan=1;P0=tablenum%10;/ 小数duanxuan=0;weixuan=1;P0=0x20;weixuan=0;delay(1);uchar dazh( uchar n)/D/A 转换子程序cs=0;选定芯片wr1=0; 允许写入n=num-13;输出电压值DAC0832_PORT=把 n 送给给 DA/ 主程序 /void main()init();while(1) keyscan();display();dazh();14
链接地址:https://www.31doc.com/p-11732053.html