1、简易数控直流电源一.绪论1.1 设计背景随着电子技术的迅猛发展,各种电子产品层出不穷,不过不管是哪种电子产品或设备,都需要电源供电才能进行正常的工作,而且对于不同的产品或设备来说,其需要不同的工作电源,但是往往市面上的很多电源模块都只能输出固定而单一的电压,从而不能提供各种不同数值的电压,因此,在这里做一个数控直流电源的设计。该数控电源采用步进调整方式,调整范围为0.0V9.9V,调整手段采用按键进行调整,当需要改变电压值时,启动数控系统,输入想要得到的电压值,再按下确定键,即可输出相应的电压。该系统采用单片机作主控器件,结合软件和硬件设计方法,使该系统的结构较简单,可控性强,使用也很方便。1
2、.2 设计任务1. 基本功能实现:(1) 可输出电压:范围09.9V,步进0.1V,纹波不大于10mV;(2) 可输出电压值由数码管显示; (3) 由“+”、“-”两键分别控制输出电压步进增减; (4) 为实现上述几部件工作,自制一稳压直流电源,输出输出 15v,+5v; (5) 自拟验收方案:对基本功能实现证明。 2扩展功能与创新:(1)输出电压可预置在09.9v之间的任意一值。二.方案论证实现某一种系统功能或技术指标都具有多种可行的设计方案,每一种设计方案针对不同的应用场合都具有它自己的优缺点,在设计的过程中要考虑到其功能、技术指标、成本和所需求的技术条件等方面的因素电源输出的调整方式有连
3、续调整和步进调整两种,前者适合采用模拟电路来实现,而后者适合采用数字电路来实现,由于本设计要求电源输出电压的调整方式为步进调整方式,因此,这里采用数字电路来实现对出电压的控制。数字集成电路包括标准逻辑器件、微处理器和可编程逻辑器件,标准逻辑器件是数字系统中使用较普遍的器件,其优点是工作速度快,但是集成度低,器件功能固定,使用它将使电路中器件数量增多,从而导致系统体积较大,成本也较高,并且不易改变系统功能。微处理器和可编程逻辑器件可以克服上诉缺点。可编程逻辑器件工作速度快,但是实现信号处理比较麻烦,价格也较昂贵;微处理器实现信号处理较方便,其中单片微型计算机的使用较为普遍,单片机是在一块芯片上集
4、成了计算机的主要功能部件,它的指令系统是按照工业控制要求设计,可通过软件方便的实现多种功能,使硬件系统电路结构变得简单,且价格较便宜,是一个性价比较高的微处理器,它虽然工作速度较慢,但由于数控电源属于低速系统,对工作速度要求不高,使用单片机完全可以达到要求,因此,在这里采用单片机做数控直流电源的主控器件。由于单片机输出的信号为数字信号,而所需要的是模拟信号,所以,经过单片机输出的数据必须经过数/模转换电路转换成标准的电压信号。三.硬件系统设计3.1 总体设计框图数控直流电源的硬件电路组成框图如图3.1所示,它包括电源模块、控制电路、键盘电路、显示电路、数/模转换电路以及电压放大电路。 图 3.
5、1 电路组成框图数控电源输出电压用键盘控制,实现电压的可预置输入或步进调整,显示电路将用来显示输出的电压值,输出的电压通过D/A转换和放大电路转换成所需要的电压值32 控制电路的设计 控制电路主要由单片机组成,现在市场上较多的是AT系列单片机,但是其内部没有自带的串行通信协议,不能直接用软件将程序通过串口写入程序存储器,需要使用专用的程序烧写器才能将程序写入,这受到设备条件的限制而难以实现,而STC系列单片机则可以通过串口直接将程序写入,所以本设计中采用STC89C52RC单片机。3.2.1 STC89C52RC单片机简介 1ST89C52RC的内部结构 ST89C52RC的内部结构如图3.2
6、所示,它包括: 一个8位CPU; 一个片内振荡器及时钟电路; 8KB FLASH程序存储器,1K EEPROM存储器; 512字节RAM 数据存储器; 并且可寻址64KB外部RAM或ROM空间; 4个8位可编程I/O口; 3个16位的定时/计数器; 一个可编程全双工串口; 8个中断源、4个中断优先级。图3.2 ST89C52RC的内部结构2STC89C52RC的功能 STC89C52RC单片机同样采用的是8051的内核,与其他大部分单片机兼容,并且功能也比普通单片机强大,其存储器(包括数据存储器和程序存储器)容量比普通的51单片机要大,程序存储器主要采用FLASH存储器,可方便的擦写程序,同时
7、还带一个8位的A/D转换器,最重要的是它采用ISP在线编程,配备了专门的程序下载软件,可直接通过串口将程序下载到单片机的FLASH程序存储区,并且掉电后不会丢失,大大降低了系统设计对设备的要求,这也是在本设计中采用此单片机的重要原因。STC89C52RC单片机ISP编程原理图如图3.3所示: 图 3.3 STC89C52RC单片机ISP编程原理图3.3 键盘电路的设计 本设计采用基于中断方式的矩阵键盘电路,键盘电路使用STC89C52RC单片机的外部中断1,利用中断来判断是否有键按下,并确定键值。键盘电路如图3.4所示,包括按键、上拉电阻和四输入与门(CD4082)。图 3.4 键盘电路3.3
8、.1 CD4082芯片简介 该芯片采用DIP-14封装,是一个标准逻辑门器件,它包含两组四输入与门,用它可实现四线状态的判断,其真值表如表3.1所示。表 3.1 CD4082真值表输 入输 出ABCDOUT0000000011111 由表3.1可以看出,当输入有一路为低电平,不管其它三路为何值,输出都为低电平,只有当输入全为高电平时,输出才为高电平,可见用CD4082可以方便读取按键信号,从而通过中断实现对按键对的控制。3.3.2 键盘原理 采用矩阵键盘可以在使用单片机较少I/O口的情况下实现多个按键,电路结构和软件结构也较简单。将各按键分别和单片机的P1口相连,高四位接4个上拉电阻,并接到C
9、D4082的输入口IN2上,低四位通过程序保持在低电平状态,当有键按下时,该按键的高电平端必然被拉为低电平,即CD4082的其中一个输入口为低电平,通过逻辑与运算后,OUT2端输出低电平,将其与单片机的INT1相连,即可实现对键盘的控制,再通过程序对键值进行扫描,即可判断是哪个键按下。3.3.3 键盘功能设置 确定是哪个键按下后,还要知道该建是什么功能,才能进行相应的处理。键盘各按键的功能分别是启动键(STARTUP)、加键(+)、减键(-)、清除键(CLEAR)、确定键(ENTER)以及数字键09。启动键实现系统的启动,以改变输出电压的值,即必须在按下启动键后,才能对当前电压值的改变,这样可
10、以防止在不需要改变电压值时不小心按下数据键或加、减键,从而改变电压值;加键(+)实现对输出电压加0.1V操作;减键(-)实现对输出电压减0.1操作;清除键(CLEAR)可清除在操作过程中错输入的数据;确定键(ENTER)实现对已设置好的数据的输入操作。 由于本设计要求数控电源的输出电压调整范围为0.0V9.9V,步进值为0.1V,如果要实现从0.0V调整到9.9V ,则需要重复操作99次,由此可见,仅使用加键或减键来实现对数据加1或减1操作将会很麻烦,为了减少按键的次数,可采用分档输入方式,即增加一个换档键,在个位和十分位之间进行切换,再分别对个位或十分位的数据进行加、减操作,这样相对于仅使用
11、加减键来实现数据调整明显要方便很多,但是要实现输出电压从0.0V调整到最大输出值9.9V也要重复18次操作,还是不够方便。另一种方式是直接输入想要的数据,即通过数字键09直接输入电压值,这样就使操作变得非常方便,只需两次就可以输入一个数据,大大减少了按键次数。因此,本设计采用可预置输入方式。 在操作过程中,若要改变当前输出电压的值,应先按下启动键(STARTUP),让系统进入数据设置状态,数码管显示开始闪烁,然后输入想要输出的电压值,同时,两个数码管会显示所输入的数据,当然,如果想要设置的值比当前值大(或小)的不多,则可利用加(或减)键将数据调整为目的值,然后在按下确定键(ENTER),即可输
12、出目的电压值,这时数码管停止闪烁。3.4 显示系统设计 由于本系统设计的是数控电源,随时都要知道所输出的电压值,所以,显示电路是少不了的,这里是用译码器译码后用LED数码管进行显示,下面将分别介绍。3.4.1 译码电路 在本设计中的显示译码电路采用集成电路CD4511,译码器CD4511是专为共阴数码管输出显示信号的七段译码器,用它可方便的进行数据显示。CD4511真值表如表3.2所示。表3.2 译码器CD4511真值表输入输出LEBILTDCBAabCdefg显示内容011111118010000000Blank0110000111111000110001011000010110010110
13、1101201100111111001301101000110011401101011011011501101100011111601101111110000701110001111111801110011110011901110100000000Blank01110110000000Blank01111000000000Blank01111010000000Blank01111100000000Blank01111110000000Blank111 译码器CD4511有3个控制信号端,由真值表可以看出,当控制信号LT为0时,不管其他两个控制信号端和数据输入端为何值,输出都全部为高电平,也就是
14、数码管全部亮;当LT为1,BI为0时,不管LE和输入端为何值,输出全部为低电平,也就是数码管全灭;当LE为0,BI和LT为1时,译码器为数码管输出显示数据,当LE、BI和LT都为1时,不管输入是何值,输出都为高阻状态。由以上分析可以看出,用BI端可以控制数码管显示的亮灭状态,因此,在本设计中,将控制信号端LE直接接地,LT直接接电源,再把控制信号端BI与单片机I/O口相连,即可在正常显示数据的同时,用程序控制数码管的亮灭。3.4.2 显示电路在本设计中,因为需要显示的内容只有两位数据,所以用两个七段LED数管显示即可。1. LED数码管七段LED数码管是由七个发光二极管按段数码形式组成的器件,
15、有共阴极CC(Common Cathode)和共阳极CA(Common Anode)两种,如图3.5所示。共阴极的LED数码管,应把公共端COM接地,当某个阳极上接到高电平,相对应的这一段就亮,如图3.5(a)所示。相反,共阳极的LED数码管,应把公共端COM接高电平,当某个二极管的阴极接到低电平,相对应的这一段就亮,如图3.5(b)所示。本设计采用的是共阴LED数码管,工作时,将数码管的公共端com接地,段选a、b、c、d、e、f、g端分别和译码器CD4511的输出端a、b、c、d、e、f、g相连,便可显示。不过 (a)共阴极 (b)共阳极 (c)引脚结构图3.5七段LED数码管由于译码器C
16、D4511输出的驱动电压为5V,如果直接将数码管与译码器相连的话,电流将会很大,但是LED发光二极管所能承受的电流有限(通常点亮一个LED的电流为550mA),所以,必须在数码管和译码器之间接上一个一定大小的限流电阻,才能保证数码管正常工作。2. 显示方式 LED显示电路有静态显示和动态显示,静态显示是指所有的LED数码管同时显示,这种显示方法使得软件结构比较简单,显示效果好,不过电路结构比较复杂,占用处理器的端口较多,功耗也较大。动态显示是指处理器定时地对LED数码管扫描,数码管分时工作,每次只有一个数码管显示,由于扫描的频率比较高,又因人眼的视觉暂留,所以,看起来,似乎所有的数码管同时在显
17、示,采用这种方法的电路结构变得较简单,占用处理器的端口较少,功耗也较低,不过软件结构比较复杂,必须要在软件中消隐,而且显示的效果受到扫描频率的影响。由于本系统中要显示的数据只有两位,若采用静态显示,由于前级要接译码器,只需一个8位I/O口即可,电路结构不是很复杂,分别将两个译码器并接到单片机的P0口上即可,而且软件结构也很简单。显示电路如图3.6所示。图3.6 显示电路3.5 数/模转换电路设计 由于数控电源输出的是模拟信号,而单片机输出的是数字信号,所以,必须要通过数/模转换。 数/模转换芯片众多,有电流输出,也有电压输出,分辨率也有所不同,有8位,12位,16位等等,不同的分辨率,价格也有
18、很大的差距,因数控电源输出的精确度要求不是很高,且从成本上考虑,这里使用8位的数/模转换器DAC0832即可。3.5.1 DAC0832的结构及引脚功能 DAC0832是用CMOS工艺制成的8位D/A转换芯片,其内部结构如图3.7所示,它主要包括两个8位寄存器和一个8位D/A转换器构成,其两个寄存器可以进行两次缓冲操作,使器件的操作有更大的灵活性。图3.7 DAC0832结构及引脚图DAC0832芯片采用20引脚双列直插封装,各引脚功能如下: CS:片选信号(低电平有效)。ILE:输入锁存允许信号。WR1:写信号1(低电平有效)。由图3.7可见,当ILE=1时,且当CS与WR1同时有效才能把数
19、字量锁存到8位输入寄存器中;当WR1为高电平时输入数据锁存到输入寄存器中。以上三个信号构成一级输入锁存。XFER:控制传送信号。WR2:写信号2(低电平有效),用于将锁存在输入寄存器数据送到DAC寄存器中,只有在XFER和WR2同时有效时才把输入寄存器中的数据锁入DAC寄存器中。这样构成了二级锁存。D0D7:8位数据输入线,TTL电平。Iout1和Iout2:输出电流。其中Iout1在D/A寄存器内容全为1时,输出电流最大;Iout2在D/A寄存器内容全为0时,输出电流最大,Iout1和Iout2之和为常数。AGND:模拟信号地。DGND:数字地。UREF :基准电压。一般为-10V+10V。
20、Rfb :反馈电阻。该电阻被制作在芯片内,用作运算放大器的反馈电阻。3.5.2 DAC0832的工作方式 1直通工作方式 将CS,WR1,WR2和XFER引脚都直接接数字地,ILE引脚接高电平,芯片处于直通状态。此时,8位数字量只要输入到DI7DI0端,就立即进行D/A转换,但在此种方式下,DAC0832不能直接与单片机的数据总线连接,故很少采用。 2单缓冲工作方式 此方式是使两个寄存器中的一个处于直通状态,另一个工作于受控锁存状态,或两个寄存器同时受控打开、关闭。一般是使DAC寄存器处于直通状态,即把WR2和XFER端接数字地,或者将两个寄存器的控制信号并接,使之同时选通,此时,数据只要写入
21、DAC芯片,就立刻进行转换,这种工作方式接线比较简单,适合于一路模拟量输出或几路模拟量非同步输出的应用场合。 3双缓冲工作方式 在双缓冲工作方式下,单片机要对两个寄存器分别控制,要进行两步写操作:先将数据写入输入寄存器,再将输入寄存器中的内容写入DA寄存器并启动转换。 双缓冲工作方式可以使数据接收和启动转换异步进行,在D/A转换的同时,接收下一个转换数据,因而提高了通道的转换速率。在要求多个输出通道同时进行D/A转换时使用双缓冲工作方式。3.5.3 DAC0832的数字接口 因在本系统中,单片机不仅要送D/A转换数据,还要送显示数据,且都是和P0口相连,而且,数控电源的转换速率要求不高,输出也
22、只有一路,因此,本系统采用单缓冲工作方式DAC0832与单片机的连接电路图如图3.8所示。图 3.8 DAC0832与单片机的连接电路图 当需要进行转换时,CS和WR有效,单片机从P0口输出数据到DAC0832上,并启动转换,这时,DAC0832将转换后的电流值从Iout1和Iout2输出。3.5.4 DAC0832的模拟输出 DAC0832转换器输出的是电流信号,因此必须要经过电流-电压转换才能输出电压信号,电流-电压转换电路如图3.9所示。图3.9 电流-电压转换电路 DAC0832是8位数/模转换器,基准电源为+5V时,其输出电压的计算公式为 D输入数据; u输出电压.因为DAC0832
23、的分辨率不是很高,所以转换精度必然有些欠缺,不过由于数控电源的电压输出范围为0.0V9.9V,步进电压调整值为0.1V,而DAC0832的输出模拟电压步进值约为0.02V,若再放大5倍,则刚好使数控电源的步进值为0.1V,当输入数据为65H(十进制101)时,输出电压u=1.98V,再放大5倍后约为9.9V,即为要求的最大值。因此,DAC0832转换器的数据输入范围为0065H,以提供100个调整步进。3.6 放大电路设计 数控电源要求的输出电压范围为0.0V9.9V,而经数/模转换后输出的电压最大值只有5V,因此必须经过放大才能达到要求。放大电路如图3.10所示。图 3.10 放大电路放大电
24、路采用集成运算放大器LM358进行放大,LM358是通用单电源双集成运算放大器,可以方便的实现比例运算放大。本设计采用反向比例运算放大电路,如图10所示。这里采用的是反向比例运算电路,在反向输入端接上一个10K的电阻,再在输入端和输出端接上一个50K的反馈电阻,这样就可以得到输出电压= =5即输出电压是输入电压的5倍,因经数/模转换单元输出的电压步进值约为0.02V,这时经放大电路输出电压的步进调整值就约为50.02V=0.1V,即可达到设计要求。3.7 电源电路设计 作为一个电路系统来说,电源当然是必不可少的,这里需要三电源供电,即+5V、15V。+5V供数字部分使用,15V供模拟放大部分使
25、用,三种电压都共用一个地。电源电路如图3.11所示,首先采用带中间抽头的15V变压器,获得15V的交流电压,再通过整流、滤波电路,获得15V的直流电压,这时已经获得了两个电压值,再利用所获得的电压进行处理,即可获得+5V电压,这里采用三端稳压器LM7805,LM7805的稳压输出值为+5V,正好符合要求,它的体积较小,且只有三个引脚,即输入、接地和输出,接线比较方便,重要的是用它来降压可使电路结构很简单。图 3.11 电源电路四.软件系统设计4.1 程序流程图对于单片机控制系统来说,软件系统的设计是必不可少的,这里采用Keil软件为开发平台,C语言为程序设计语言,以模块化结构进行程序设计。不过
26、这里Keil软件不包含STC系列单片机,因此,在程序编译成功后,要通过 STC系列单片机专用的下载软件将程序写入单片机的Flash程序存储区域。程序分为几大模块,包括主程序、中断服务程序、键盘扫描程序、键值处理程序。程序流程图4.1所示:图 4.1 程序流程图 本系统是将按键信号与外部中断1口相连,这样程序的设计就方便许多,在无键按下时,程序不做任何处理,只保持显示当前数据状态,当操作者按下键后,单片机将自动进入外部中断1的中断服务程序。中断服务程序中只作设置一个标志位的操作,让系统知道已经有键按下,然后,在主程序中调用键值扫描和键值处理程序,以判断按键为何种功能,进而进行相应的操作。在进行预
27、输出的电压值的设置过程中,系统会同步显示当前所输入数据值,当按下确定键后,系统立刻启动D/A转换,并输出相应的电压值,并且系统恢复初始状态。4.2 程序设计各关键程序段如下:1.主程序:#include “define.h”extern CtrPower_Deal();extern Scan_Key();INIT() P1=0xf0; DIS=1; DispData0=0; DispData1=0; DispData=0; Fun_flag=0; Int_flag=0; DataCnt=0; TMOD=0x01; TH0=0xDB; TL0=0xFF; /*定时10mS*/ ET0=1; TR
28、0=1; EX1=1; IT1=1; EA=1;void main() INIT(); while(1) if(Int_flag=1) Scan_Key(); CtrPower_Deal(); Int_flag=0; P0=DispData; 2.外部中断1服务程序:#include “define.h”void int1(void) interrupt 2 EX1=0; Int_flag=1; EX1=1;3.定时器0中断服务程序:#include”define.h”void t0(void) interrupt 1 ET0=0;TR0=0; LedCnt+; if(LedCnt=30) LED=LED; if(Fun_flag=1) DIS=DIS; LedCnt=0; TH0=0xDB; TL0=0xFF; TR0=1;ET0=1;4.键盘扫描程序:#include”define.h”dly(uint n) uchar i ; while(n-) for(i=0;i=125;i+) ; void Scan_Key() uchar i,j,m,n; m=P1&0xf0; if(m!=0xf0)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1