数控稳压电压源实验报告
电子信息工程专业中期实习报告》
题 目数控直流稳压电源的设计与实现
学 号
姓 名
班 级
指导教师
同组 人
电子工程系
《
目 录
一、概述 . ................................................................................................................ 3
(一)设计意义 . ............................................................................................. 3
(二)设计任务与要求 . ................................................................................. 3
二、电路设计方案 . ................................................................................................ 4
三、硬件设计与仿真 . ............................................................................................ 4
(一)相关应用芯片介绍 . ............................................................................. 4
(二)系统工作原理 . ..................................................................................... 6
(三)具体硬件电路的实现 . ......................................................................... 7
1. 单片机数字控制电路 . ............................................................................................ 7
2. 键盘显示电路 . ........................................................................................................ 8
3.D/A转换电路 ......................................................................................................... 9
4. 稳压电路 . .............................................................................................................. 10
四、软件设计与调试 . .......................................................................................... 12
(一)软件实现的功能: . ........................................................................... 12
(二)软件实现流程图: . ........................................................................... 12
五、系统联调 . ...................................................................................................... 13
(一)D/A转换器电路调试 . ....................................................................... 13
(二)可调稳压电源部分调试 . ................................................................... 13
六、测试结果 . ...................................................................................................... 13
七、实习总结 . ...................................................................................................... 14
八、附录 . .............................................................................................................. 15
附录1:软件实现程序 . ................................................................................ 15
附录二:实际搭建电路仿真图 . ................................................................... 19
数控稳压电压源
摘要:本设计是基于AT89C51的数控稳压电源,它具有实际的可操作性,其
输出电压不仅要求用数字显示,同时要求能够用“+”、“-”两键实验步进
控制输出电压的步进,在本设计当中利用AT89C51做数字控制,74LS244驱
动数码管显示输出,DAC0832做数模转换,NE5532做电压放大,配合稳压,
过流保护电路实现设计要求。
关键字:数控稳压电压源 AT89C51 74LS244 DAC0832 NE5532
一、概述
(一)设计意义
1、培养综合性电子线路的设计能力。
设计性实验为主,元器件发给学生,仪器2人1组,实验室开放。老师
给出题材学生自己设计实验电路的参数,装调实验电路,测量技术指标。了
解AT89C51、74LS244、NE5532和DAC0832芯片的功能。
2、掌握综合性电子线路的安装和调试方法。
软件的仿真是进行硬件搭板的前提,各单元电路调试之后逐步扩大到整
体电路的联调。联调主要是观察动态结果,测试电路的性能指标,检查电路
的测试指标与设计指标是否相符,逐一对比,找出问题,然后进一步修改参
数,直至满意为止。
(二)设计任务与要求
1. 输出电压:范围0~+9.9V ,步进0.1V ,纹波不大于10mV ;输出电
流:500mA 。
2. 输出电压分为100个档位,从00-99;可任意调到要求的一档输出电
压,并用七段数码管显示。
3. 由键盘控制档位的步进增减,以控制输出电压的步进增减。档位控
制要求:选择键来输入档位,档位值由0键到9号键输入,再按D 键,输出
档位立即跳到输入的数值,F 、E 号键控制1个档位步进的增加和减小。
4. 有过流保护功能,过电流时软硬件保护电路开始工作,产生中断信
号使档位置“0”,从而使输出电压值0。
二、电路设计方案
采用单片机作为整机的控制单元,通过改变DAC0832的输入数字量来改
变输出电压值,从而使输出功率管的基极电压发生变化,间接改变输出电压
的大小。此系统比较灵活,采用软件方法来解决数据的预置以及电压的步进
控制,使系统硬件更加简洁,各类功能易于实现,能很好地满足题目的要求。
三、硬件设计与仿真
(一)相关应用芯片介绍
本设计当中数控部分采用AT89C51
芯片实现控制电路,用72LS244芯片实
现驱动七段数码管显示,用DAC0832实
现D/A转换,用NE5532实现放大功能,
其中各芯片功能介绍如下。
1.AT89C51
图1.AT89C51引脚图
AT89C51是一种带4K 字节FLASH 存储器的低电压、高性能CMOS 8位微
处理器。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用
ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS-51
指令集和
输出管脚相兼容。它可与MCS-51兼容,是4K 字节可编程FLASH 存储器,其
全静态工作频率为0Hz-24MHz ,具有128×8位内部RAM ,32可编程I/O线。
2.74LS244
74LS244是一种三态八缓冲器/线驱动器/线接收器(3S,两组控制) ,244
为三态输出的八组缓冲器和总线驱动器, 其逻辑图如下图所示。
图2. 74LS244引脚图
极限值:
电源电压 7V 输入电压5.5V 输出高阻态时高电平电压5.5V
3.DAC0832
设计要求电压输出范围是0.0V ~9.9V ,步进0.1V ,共有100种状态,因
此采用8位的D/A转换器就能满足设计要求。本设计中采用常用的DAC0832
芯片。8位字长的D/A转换器DAC0832具有256种状态,能满足设计要求。
DAC0832芯片是具有两个输入数据寄存器
的8位DAC ,它能直接与AT89S51单片机
相连接。它具有8位分辨率,输出属于电
流型,稳定时间为1us ,可双缓冲输入,
单缓冲输入或直接数字输入,在本设计当
中采用直接数字输入,其单一电源供电范
围为(+5~+15V)。
图3.DAC0832引脚图
4.NE5532
由于DAC0832输出级没有加集成运放,所以需外加NE5532
相配使用。
NE5532封装如下图所示。IN-为反相输入端,IN+为同相输入端;OUT 为输出端;Vcc-和Vcc+为正负电源提供;NE5532是一种双运放高性能低噪声运算放大器。
图4.NE5532引脚排列及封装
(二)系统工作原理
本设计以一稳压电源为基础,以C51单片机系统为控制核心,稳压驱动放大电路、过流保护电路为外围的硬件系统,在检测与控制软件的支持下实现对电压输出的数字控制,通过对稳压电源输出的电压进行数据采样与给定数据比较,从而调整和控制稳压电源的工作状态及监测开关电路的输出电流大小。
数控直流稳压电源主要包括四部分:数字控制部分、键盘显示部分、D/A转换部分和稳压电路部分。
数字控制部分用“+” 、“-”按键控制二进制计数器,二进制计数器的输出输入到D/A变换器,经D/A变换器转换相应的电压,此电压经过放大到合适的电压值后,去控制稳压电源的输出,使稳压电源的输出电压以0.1V 的步进值增或减。
D/A转换部分采用了NE5532等元件组成的电路作为输出,最后在数码管上显示。
数控电源与常规可调电源不同,它通过数字量控制可调电压,因此其输出电压不是连续可调,而是步进增减的,根据课题要求,输出电压应从0V 调到9.9V ,每步0.1V, 总计100步。
总体设计框图如图5所示。
图5. 总体设计框图
(三)具体硬件电路的实现
1. 单片机数字控制电路
利用键盘控制单片机输入欲置电压值,实现电压输入、过流控制及复位功能。单片机小系统电路如下图3所示。其中P0.0~P0.7口输出信号给D/A转换模块,但由于该口电压较小,故需要加上拉电阻增加其输入电压值;P1.0~P1.7到P2.0~P2.7口输出信号给两个数码管;P3.0~P3.7口作为键盘输入,其中列扫描端口需要接上拉电阻。
图6 单片机小系统电路图
2. 键盘显示电路
本模块利用键盘控制输入数值,利用74LS244译码通过七段数码管输出预置电压数值。键盘的作用是对单片机输入数据,设计中要求能是电压进行“+”,“-”,及电压值的设定,所以采用键盘为4×4的矩阵键盘,按键后送AT89C51的并行口P3, P3.0~P1.7作为键盘输入口。
单片机控制键盘显示系统,该模块可以对不同的按键进行实时显示,其核心是单片机和键盘矩阵电路部分,主要对按键与显示电路的关系、矩阵式技术及设备系统的硬件、软件等各个部分进行实现。该模块主要由矩阵式键盘电路、译码电路、显示电路等组成,软件选用C 语言编程。单片机将检测到的按键信号转换成数字量,显示于七段数码管上。
(1)矩阵式键盘电路
利用4*4矩阵式键盘控制输入电路,如图3所示,使用C51的P3.0~P3.7口作4*4盘的扫描,P3.0~P3.3设置为输出口,接行扫描线;P3.4~P3.7设置为带下拉电阻的输入口,接列扫描线。该模块采用行列扫描法完成检测是否有键按下和识别按键的功能。
先使行扫描线全部输出低电平,然后读取列扫描线的状态,得到与行对应的列号。若有键被按下,则对应的列读回低电平,若无键按下,列号为1。如果检测到有键按下,则利用延时消抖操作消除按键时带有的抖,一般延时采用10ms 左右。延时消抖动之后如果还检测到有按键按下,则确定当前有键按下,进入获取键值的操作。利用行列依次扫描获取键值,首先使第一行扫描线输出低电平,其它的行扫描线输出高电平,然后读取列扫描线的状态,得到列码;如果本行无键按下,则得到的列码为全1,并扫描下一行,即置第二行扫描线输出低电平,其它行扫描线输出高电平,其它类似。如本行有键按下,则会读取到对应的列码值,并退出扫描,进行键值计算。在行列扫描时,用一个变量记录下当前扫描的行号,在计算键值时,可以利用此行号以及读回的列码按键号。
图7 键盘电路
(2)译码和显示电路
本设计利用74LS244译码驱动数码管输出,以单片机的P1.0~P1.7和P2.0~P2.7口作为信号输出端,通过两块74LS244译码输出二进制数,分别将二进制数送入两个七段数码管进行数据显示。具体的电路如图8所示:
图8 译码和显示电路
3.D/A转换电路
数模转换电路采用DAC0832集成块,它是一个8位数/模转换电路。由于DAC0832不包含运算放大器,所以需要外接一个运算放大器相配,才构成完整的D/A转换器。运放采用具体有调零的低噪声高速优质运放NE5532。
DAC0832最具特色是输入为双缓冲结构,数字信号在进入D/A转换前,需经过两个独立控制的8位锁存器传送。其优点是D/A转换的同时,DAC 寄存
器中保留现有的数据,而在输入寄存器中可送入新的数据。系统中多个D/A转换器内容可用一公共的选通信号选通输出。
由于DAC0832输出级没有加集成运放,所以需外加NE5532相配使用。D/A转换部分的输出电压作为稳压输出电路的参考电压。稳压输出电路的输出与参考电压成比例。8位字长的D/A转换器具有256种状态,在本设计当中可分别用0、2、4......198表示输出电压0~9.9V,当电压输入为198时V0=198/256×5=3.867V。
每路电压输出值的计算:V0=REF×Data/256(REF 为参考电压,Data 为输入8位的比特数据,我们这里用的REF=5V)。当步进变化时,输出电压也相应改变,若要求输出电压增或减,步进增或减即可。
具体的实现如图9所示:
图9 D/A转换电路
4. 稳压电路
稳压电路是将单片机D/A转换器输出的电流转换成稳定的电压输出,电压的输出范围是0-9.9V ,共有100种输出状态,D/A输出的电流随设定的档位值变化,因为最后需要得到的是电压,所以还需利用运放将电流转换成电压。稳压输出电路采用串联负反馈稳压电路,电路如图10所示,这部分电路由运放、三极管组成Q1与Q2构成复合调整管。在这个电路中由有三极管Q3和电阻R4构成的保护电路,当输出电流增加到Im 时,电阻R4两端的电压使三极管Q3导通,从而分掉电路中复合管基极一部分电流使输出电流不再增
加。
图10 稳压电路
供电部分主要是输出整个电路系统所需的三种电压:15V 、-15V 和-5V,-5V 主要是给单片机供电,由利用LM336产生,+/-15V主要是给集成运放供电,直接由微机电源产生提供。
总体电路如图11所示,实际电路搭接图如附录二所示。
图11 总体电路
四、软件设计与调试
(一)软件实现的功能: 1. 实现键盘扫描功能。
2. 对4*4键盘上的建号赋予特定的功能。 3. 实现D/A转换功能。 (二)软件实现流程图:
图12 软件实现总流程
具体的软件程序如附录1所示。
五、系统联调
(一)D/A转换器电路调试
输入不同的二进制数DAC0832输出了很稳定的直流电压。输入数字00000000,用数字万用表检测,是输出电压V0=0;输入数字11000110,调整电阻式输出电压V0达到预定的满量程9.9V 。并且二进制数每增加2其电压值的大小相对应得增加0.1V 。 (二)可调稳压电源部分调试
将电路连接好,在运算放大器同相输入端加入一0~10V 的直流电压,用示波器观察输出稳压电压值的变化情况。当存在误差时,通过改变电阻的阻值来稳定电压输出。
六、测试结果
稳压电路实际输出电压值与理论电压值:
测试结果显示随着输入电压的增大电压误差逐渐增大,在实际测试当中可以通过调节可变电阻,使输出值达到预期数值。
七、实习总结
在这次设计最后电路板得搭建过程中实验了两个环节:一个是按键控制数码显示,并且实现步进增减功能,另一个就是实验数模转换数字输出电压。在实验过程中选择正确的芯片。一般来说完成题目的要求的前提,在此之前了解所有芯片的资料是非常重要的一个准备工作,它会让你在课程设计中节省很多的时间,一般来说,芯片资料通过PDF 来了解很方便的。软件的仿真电子电路实验是由老师提供的典型电路一般来说我们是可以直接来用的只是稍微的加以改变下。
按顺序调试模块,键盘模块,输出数码管模块,A/D数字转换模块,过流保护模块。整个过程中注意书面记录,以便产生结题报告。充分利用数字万用表观察输出电压的变化是否与按键的输入值是佛一一对应,测量数据,发现问题解决问题。
当我们在面包板上连接电路时,因为电源和板子的影响,一般来说数码管显示的数字比较暗这就需要我们接上上拉电阻。在调试电路过程,防止烧芯片是个很重要的工作。故障的诊断与排除方法,缩小故障范围逐级对个个模块进行检查,掌握正确的方法是一个重要的功课。
在最初给芯片加电前要反复检查电路是否正确,然后在加电时先加负电压或者地,再试探性加正电压,密切注视电源的电流变化,并且可以用手触摸芯片感觉其温度是否过热,若电流有不规则现象,要在检查电路之后继续调试。另外一点也要特别注意,就是地线要尽可能的短,只有这样,干扰才会降到最低所以参与了这个过程,就有了收获,而且这个收获终身受用的。
八、附录
附录1:软件实现程序 #include #include
#define uchar unsigned char #define uint unsigned int uchar shu[5]=0,i=0,k=0; uint key,keyvalue,sure=1;
unsigned char table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed, 0xfd,0x87,0xff,0xef};
unsigned char table2[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d, 0x7d,0x07,0x7f,0x6f};
void delay_100us(uint z) //延时函数,z=1,对应的是100us { uchar x,y; for(x=0;x
for(y=0;y
}
void keyscan()//键盘扫描函数 { while(sure==0) {uchar temp_h,temp_l,temp; P3=0xf0;
//置行线为0,列线为1 temp_h=P3&0xf0; //读取P3上的高四位值 if(temp_h!=0xf0)
//判断是否有键按下
{ delay_100us(10); //延时消抖
temp_h=P3&0xf0; //再次读取
if(temp_h!=0xf0) //是否真的有键按下
temp_h=P3&0xf0; //temp_h最终值 P3=0x0f;
//置列线为0,行线为1
temp_l=P3&0x0f; // 读取P3上的低四位 temp=temp_h+temp_l; // 组合两次读取的数值
while(temp_l!=0x0f) //等待按键松开,没有松开的话,一直
停留在循环中
{ }
switch(temp) //判断键值 {
case 0x77: key=0;if(i==0){shu[i]=key;i++; } temp_l=P3&0x0f;
else {shu[i]=key;i=0;}
break;
case 0x7b: key=1;if(i==0){shu[i]=key;i++; }
else {shu[i]=key;i=0;}
break;
case 0xbb: key=2;if(i==0){shu[i]=key;i++; }
else {shu[i]=key;i=0;}
break;
case 0xdb: key=3;if(i==0){shu[i]=key;i++; }
else {shu[i]=key;i=0;}break;
case 0x7d: key=4;if(i==0){shu[i]=key;i++; }
else {shu[i]=key;i=0;}
break;
case 0xbd: key=5;if(i==0){shu[i]=key;i++; }
else {shu[i]=key;i=0;}
break;
else {shu[i]=key;i=0;}
break;
case 0x7e: key=7;if(i==0){shu[i]=key;i++; }
else {shu[i]=key;i=0;}
break;
case 0xbe: key=8; if(i==0){shu[i]=key;i++; }
else {shu[i]=key;i=0;}
break;
case 0xde: key=9;if(i==0){shu[i]=key;i++; }
else {shu[i]=key;i=0;}
break; case
0xb7:
key=10;
if(shu[1]
{shu[1]+=1;
sure=1;}
else if(shu[1]==9)
{if(shu[0]==9) {shu[0]=shu[1]=9;} else
{shu[0]++;shu[1]=0;sure=1;}
}break;
case
0xd7:
key=11;if(shu[1]>0)
{shu[1]-=1;
sure=1;}
else if(shu[1]==0) {if(shu[0]==0)
{shu[0]=shu[1]=0;}
else {shu[0]--;shu[1]=9;sure=1;}
}break;
case 0xe7: key=12;sure=1;break;
case 0xeb: key=13;shu[0]=shu[1]=0;sure=1;break;
default
:key=0;break;
}
}
}
}
sure=0; }
uchar key_value(uchar key1,uchar key2) //数字键值计算
{
keyvalue=(key1*10+key2)*2; return(keyvalue); }
void main() { key=0; P3=0xff; P0=0x00; P1=0x00; P2=0x00; while(1) { keyscan();
key_value(shu[0],shu[1]); P0=keyvalue; P1=table1[shu[0]]; P2=table2[shu[1]];
}
}
附录二:实际搭建电路仿真图