数控直流电源的设计与实现一、实验目的1.了解数控技术和电源技术。2.熟悉微机原理及其接口技术。3.运用微机系统实现一个数控直流电源。二、实验内容与要求基于80x86实验箱平台设计并制作数控直流电源。要求由键盘预置输入直流电压在0~+9.9V之间的任意一个值,数控直流电源输出,且输出电压与给定值偏差不大于0.1V。主要技术指标:(1)输出电压:范围0~+9.9V,纹波不大于10mV,电压值由数码管显示;(2)具有“+”、“-”步进调整的功能,步进0.1V;(3)用自动扫描代替人工按键,实现输出电压变化(步进0.1V不变)。三、实验报告要求1.设计目的和内容2.总体设计3.硬件设计:原理图(接线图)及简要说明4.软件设计框图及程序清单5.设计结果和体会(包括遇到的问题及解决的方法)四、总体设计采用8086处理机构成该系统的核心——数控模块,与基本接口实验板相连,通过软件编译实现设计各种功能的实现,输出部分也不再采用传统的调整管方式,而是在D/A转换后,经过稳定的功率放大电路得到。由于使用了微处理器,整个系统可编程实现,系统的灵活性大大增加。系统设计框图如图1所示。图1方案三系统设计框图为实现数控直流电源的各项功能,系统分为三个组成部分:键盘/显示电路,数控模块,稳压输出电路。下面介绍系统各部分的基本功能:(1)键盘/显示电路:该电路的显示部分又可分为电压预制值显示电路和电压实际输出值显示电路。系统利用可编程并行接口8255单元电路构成实验板上4*4小键盘的接口和LED数码管电路的接口,从而识别键码同时显示电压预置值;在得到实际输出值后,实验板上提供了模数转换ADC0809单元电路,转化成数字量后传递给LED数码管就可以显示实际输出值。(2)数控模块:该部分主要由8086微处理器和数模转换DAC0832单元电路组成。其中通过编写汇编语言程序控制8086微处理器快速完成各功能所需的复杂运算,然后数模转换电路DAC0832可将运算所得的数字量转换为模拟量。(3)稳压输出电路:由于通过模数转换电路输出的电压值大小有限制,通过使用运算放大器作前缀的功率放大电路,即可满足系统所需电压,又可大大减小纹波电压。功率放大电路通过外扩电路实现。五、硬件电路设计本课题的设计可通过实验平台上的一些功能模块电路组成,由于各模块电路内部已经连接,用户在使用时只要设计模块间电路的连接,因此,硬件电路的设计及实现相对简单。完整系统的硬件连接如图2所示。图2完整系统硬件连接图R11KRf1KR2500输出数据总线-IOR-IOWRSTCS1CS2运放输出电路CS0CS1CS2CS3CS4CS5CS6CS7地址译码电路CS-55CS-DACS-ADDACS-DIADDA实验平台上用到的一些功能模块电路如下:地址译码电路:该单元通过三八译码器74LS138与可编程逻辑器件GAL20V8组成地址译码电路,产生CS0~CS7的地址片选口,为系统确定各芯片I/O地址提供了很大的方便。可编程并行接口8255单元电路:8255芯片是比较典型常用的并行接口芯片,可与实验平台上提供的4*4的键盘单元和LED数码管显示电路单元相连构成接口电路,实现对键盘和显示电路的控制。基本输入输出单元电路:通过74LS245以及74LS373组成基本的输入单元电路,可以方便的通过数据线读取或输出数据。在系统中通过74LS245读取了ADC0809的转换完成信号EOC。计数器(分频)电路单元:该单元电路由74LS393组成,对实验板上提供12MHz的时钟信号进行分频,产生Q0~Q7不同频率的时钟脉冲信号。在系统中选用Q2作ADC0809的外部时钟信号。从功能角度,该电路又可分为三个部分:键盘/显示电路、数控部分、稳压输出电路。下面就分别对这三个部分进行具体分析。1.键盘/显示电路的实现和电路连接该电路又可分为两个部分:电压预制值显示电路和电压实际输出值显示电路。下面分别说明:(1)电压预制值显示电路8255的方式0主要用于同步传输数据的场合,课题选用方式0即可。端口C的高4位和低4位分别连接4*4键盘的行、列接口,由于为非编码键盘,需采用行反转法(也可采用行扫描法)判断所按实验平台上的小键盘为何键,同时通过编程把键值转换为相应的数码管段码,实现数码管显示预置值。具体的电路连接如图3所示。图3电压预制显示电路连接图其中8255片选地址CS0为280H~283H,LED数码管段码输出选通的地址为284H~287H,数码管位选信号输出选通的地址为288H~28BH。(2)电压实际输出值显示电路要在数码管上显示实际电压输出值首先需要将输出电压转化为数字量,即完成A/D转换。实现A/D转换的方法很多,常用的有逐次逼近法、双积分法及电压频率转换法。其中逐次逼近法具有转换快、精度高、抗干扰差等特点。ADC0809就是一个逐次比较式的A/D转换器。其分辨率为八位,模拟输入电压范围为0~5V,对应转化值为00H~0FFH。有八个模拟输入通道,可在程序控制下对任意通道进行A/D转换。时钟频率10KHz~1280KHz。每次只能对一路信号进行转换,其通道号由地址信号A、B、C译码后选定。片内有地址锁存和译码器。转换结果送入三态输出锁存器,当输出允许信号OE有效时才输出到数据总线上。另外,还有一个EOC信号,当转换完成时,会发出转换结束状态信号,高电平有效,可以通过对该信号的检测来查询是否转换完成。ADC0809引脚连接如图4所示。图4ADC0809引脚连接图此连接中通道号来自地址总线,分别由读写控制信号来控制ST,ALE和OE等使能端。EOC信号送入74LS245总线控制器的输入DI0口,在程序中对74LS245总线控制器的输出口进行查询式读取EOC信号。本系统中ADC0809的输入信号来自DAC0832输出电压,具体的电路连接如图5所示。图5电压实际输出显示电路连接图其中由于ADC0809时钟频率范围为10KHz~1280KHz,计数器(分频)电路单元中Q2产生的时钟信号频率675KHz,因此可以选择Q2。DAC0832的片选地址为28CH~28FH,ADC0809片选地址为298H~29BH,74LS245总线控制器的片选地址为29CH~29FH。2.D/A数模转换电路的使用及具体电路连接本系统的核心是数控技术,数控模块关键的运算通过编程由8086微处理器完成,但系统的运算结果是八位数字量,必须经过数/模转换器后才能输出。采用双缓冲的D/A转换器DAC0832。本系统采用了单缓冲方式。DAC0832的输出是电流型的,而系统需要电压信号,可以通过运算放大器将其转换为单极性或双极性的输出电压。在单极性输出中,对应数字量00~0FFH的模拟电压V1的输出范围是0~REFV,输出端口为VOUT1;单极性输出电压V1再经过运算放大器电平偏移、放大后,对应数字量00~0FFH的模拟电压V2的输出范围是REFV~REFV,即双极性输出,输出端口为VOUT2。DAC0832引脚连接如图6所示。3.模拟信号放大电路的分析与设计由于DAC0832单极性输出的电压范围为0-5V,系统要求输出电压范围为0-9.9V,需通过运算放大电路实现。比例运算电路的输出电压与输入电压之间存在比例关系,从而可以实现信号的放大。对比例运算电路加以扩展或演变,可以得到求和、积分和微分电路、对数和指数电路等。对输入信号接法的不同,比例运算电路可以分为三种基本形式:反向输入、同向输入以及差分输入比例电路。比例运算电路使用范围广泛,运放芯片种类也较多,有LM741、LM324、NE5532等。通过比较,系统选用集成运算放大器LM741构建同向输入比例运算放大电路,放大两倍即可。LM741的引脚及同相比例运放电路具体连接如图7所示。图6DAC0832引脚连接图图7LM741的引脚及同相比例运放电路连接图如图7所示,同相比例运算放大倍数为:1f10ufRR1uuA根据设计要求:Auf=2,即可确定电路各参数:f1RR。系统选用1kRRf1,500//RRRf12。六、系统软件设计开始显示主菜单键盘按键读取键盘按键读取算法子程序启动模数、数模转换数码管显示左2位显示预置值右2位显示实际值反转法扫描平台键盘PC键盘输入回到DOS是A键是B键是C键是D键是E键是F键反转法扫描键盘重新开始程序步进+0.1V步进-0.1V步长0.1V的正向扫描步长0.1V的负向扫描描YNYYYYN键值9否键值9否有按键否是ESC否取平台键盘按键值输出三角波有按键否NNNNNYYYYNYNNY图8系统流程图系统软件主要完成的功能分为以下几部分:(1)并行接口单元电路8255连接小键盘,识别按键、产生键码并在数码管上显示;(2)启动DAC0832进行数模转换,将预置电压缩小1/2后单极输出;(3)将输出电压传递给模数转换电路,启动ADC0809进行转换,采样得到结果并在数码管上显示;(4)实现对整个系统的运行进行控制,完成系统步进、扫描、扩展输出电压等功能。系统软件设计主要由主程序,菜单界面子程序,行反转法键盘扫描子程序,键盘按键取值子程序,算法子程序,显示子程序,“+”、“-”步进子程序,“+”、“-”扫描子程序和三角波电压产生子程序组成,程序流程如图8所示。下面将对所涉及到几个重要子程序进行介绍。行反转法键盘扫描子程序(TESTKEY):该子程序通过行反转法检测实验平台键盘,取得键值。但该子程序不能判断键盘被多次按下时的键值,只能得到最后一次按键的键值,而系统要求预置值为两位数,因此还需再设计一个键盘按键取值子程序。键盘按键取值子程序(KEYINPUT):该子程序先调用一次键盘扫描子程序,但在取得键值后并非立即返回主程序,而是继续扫描键盘,直到确定键盘扫描子程序已经扫描不到按键为止。这样的作用是每调用一次键盘按键取值子程序就能取得一个键值,不会因为连续按键而将前面的键值覆盖。该子程序流程如图9所示。图9键盘按键取值子程序流程图算法子程序(COUNT):通过两个键盘按键取值子程序(键值为0~9)取得系统预置值,高位为in1V,低位为in2V,暂不考虑小数。但输入为十进制数,首先需转化为十六进制数,转换公式为:in2in1inV10*VV(4)由于DAC0832输入范围为00~0FFH,输出范围为0~+5V,即+5V对应的是数字量255(0FFH),每个数字量表示的模拟量为5/256V。由此可得出预置电压(inV)转换的相应数字量DATA公式为:DATA=2*5*10256*Vin=100256*Vin(5)经过DAC0832后就可得到范围在0~5V内的电压。再通过ADC0809转换后,得到相应的十六进制的8位实际输出电压数字量,为了在数码管上显示实际输出电压,要采用相反的转换分别得出十进制的实际输出电压高位、低位。“+”、“-”扫描子程序(FSCAN/BSCAN):该子程序只需循环调用相应的“+”、“-”步进子程序(JIAY/JIANY),在每次调用结束后根据系统所需间隔时间增加一个中断子程序或延时子程序(DELAY2)。以“+”扫描子程序为例,当键盘按键取值子程序返回的键值为0EH时,调用“+”扫描子程序。进入子程序后,循环调用键盘扫描子程序,如果返回的键值仍是0EH,则调用延时约为1秒的延时子程序、步长为0.1V的“+”步进子程序、算法子程序和显示子程序,即可实现间隔约为1秒的“+”扫描功能;如果键盘扫描子程序返回的键值不是0EH,则返回主程序。该子程序流程和具体程序如图10所示。图10“+”扫描子程序流程图和具体程序参考“+”、“-”扫描子程序即可得到三角波电压产生子程序(TRIANGLE)。该子程序用功能键B键控制,先循环调用正向步进子程序,循环调用过程中不加延时子程序,形成快速正向扫描,从示波器上可观察到电压扫描轨迹为一条斜率为1的直线;到最高值9.9V时循环调用反向步进子程序,同样不加延时子程序,形成快速反向扫描,此时从示波器上可观察到电压扫描轨迹为一条斜率为-1的直线,到最小值0V时,又开始循环调用正向步进子程序。如此往复,即可在示