简易数控直流电源设计下载word文档Word文档下载推荐.docx
- 文档编号:16201425
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:28
- 大小:360.39KB
简易数控直流电源设计下载word文档Word文档下载推荐.docx
《简易数控直流电源设计下载word文档Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《简易数控直流电源设计下载word文档Word文档下载推荐.docx(28页珍藏版)》请在冰豆网上搜索。
数控直流电源的硬件电路组成框图如图3.1所示,它包括电源模块、控制电路、键盘电路、显示电路、数/模转换电路以及电压放大电路。
图3.1电路组成框图
数控电源输出电压用键盘控制,实现电压的可预置输入或步进调整,显示电路将用来显示输出的电压值,输出的电压通过D/A转换和放大电路转换成所需要的电压值
3.2控制电路的设计
控制电路主要由单片机组成,现在市场上较多的是AT系列单片机,但是其内部没有自带的串行通信协议,不能直接用软件将程序通过串口写入程序存储器,需要使用专用的程序烧写器才能将程序写入,这受到设备条件的限制而难以实现,而STC系列单片机则可以通过串口直接将程序写入,所以本设计中采用STC89C52RC单片机。
3.2.1STC89C52RC单片机简介
1.ST89C52RC的内部结构
ST89C52RC的内部结构如图3.2所示,它包括:
◆一个8位CPU;
◆一个片内振荡器及时钟电路;
◆8KBFLASH程序存储器,1KEEPROM存储器;
◆512字节RAM数据存储器;
◆并且可寻址64KB外部RAM或ROM空间;
◆4个8位可编程I/O口;
◆3个16位的定时/计数器;
◆一个可编程全双工串口;
◆8个中断源、4个中断优先级。
图3.2ST89C52RC的内部结构
2.STC89C52RC的功能
STC89C52RC单片机同样采用的是8051的内核,与其他大部分单片机兼容,并且功能也比普通单片机强大,其存储器(包括数据存储器和程序存储器)容量比普通的51单片机要大,程序存储器主要采用FLASH存储器,可方便的擦写程序,同时还带一个8位的A/D转换器,最重要的是它采用ISP在线编程,配备了专门的程序下载软件,可直接通过串口将程序下载到单片机的FLASH程序存储区,并且掉电后不会丢失,大大降低了系统设计对设备的要求,这也是在本设计中采用此单片机的重要原因。
STC89C52RC单片机ISP编程原理图如图3.3所示:
图3.3STC89C52RC单片机ISP编程原理图
3.3键盘电路的设计
本设计采用基于中断方式的矩阵键盘电路,键盘电路使用STC89C52RC单片机的外部中断1,利用中断来判断是否有键按下,并确定键值。
键盘电路如图3.4所示,包括按键、上拉电阻和四输入与门(CD4082)。
图3.4键盘电路
3.3.1CD4082芯片简介
该芯片采用DIP-14封装,是一个标准逻辑门器件,它包含两组四输入与门,用它可实现四线状态的判断,其真值表如表3.1所示。
表3.1CD4082真值表
输入
输出
A
B
C
D
OUT
×
1
由表3.1可以看出,当输入有一路为低电平,不管其它三路为何值,输出都为低电平,只有当输入全为高电平时,输出才为高电平,可见用CD4082可以方便读取按键信号,从而通过中断实现对按键对的控制。
3.3.2键盘原理
采用矩阵键盘可以在使用单片机较少I/O口的情况下实现多个按键,电路结构和软件结构也较简单。
将各按键分别和单片机的P1口相连,高四位接4个上拉电阻,并接到CD4082的输入口IN2上,低四位通过程序保持在低电平状态,当有键按下时,该按键的高电平端必然被拉为低电平,即CD4082的其中一个输入口为低电平,通过逻辑与运算后,OUT2端输出低电平,将其与单片机的INT1相连,即可实现对键盘的控制,再通过程序对键值进行扫描,即可判断是哪个键按下。
3.3.3键盘功能设置
确定是哪个键按下后,还要知道该建是什么功能,才能进行相应的处理。
键盘各按键的功能分别是启动键(STARTUP)、加键(+)、减键(-)、清除键(CLEAR)、确定键(ENTER)以及数字键0~9。
启动键实现系统的启动,以改变输出电压的值,即必须在按下启动键后,才能对当前电压值的改变,这样可以防止在不需要改变电压值时不小心按下数据键或加、减键,从而改变电压值;
加键(+)实现对输出电压加0.1V操作;
减键(-)实现对输出电压减0.1操作;
清除键(CLEAR)可清除在操作过程中错输入的数据;
确定键(ENTER)实现对已设置好的数据的输入操作。
由于本设计要求数控电源的输出电压调整范围为0.0V~9.9V,步进值为0.1V,如果要实现从0.0V调整到9.9V,则需要重复操作99次,由此可见,仅使用加键或减键来实现对数据加1或减1操作将会很麻烦,为了减少按键的次数,可采用分档输入方式,即增加一个换档键,在个位和十分位之间进行切换,再分别对个位或十分位的数据进行加、减操作,这样相对于仅使用加减键来实现数据调整明显要方便很多,但是要实现输出电压从0.0V调整到最大输出值9.9V也要重复18次操作,还是不够方便。
另一种方式是直接输入想要的数据,即通过数字键0~9直接输入电压值,这样就使操作变得非常方便,只需两次就可以输入一个数据,大大减少了按键次数。
因此,本设计采用可预置输入方式。
在操作过程中,若要改变当前输出电压的值,应先按下启动键(STARTUP),让系统进入数据设置状态,数码管显示开始闪烁,然后输入想要输出的电压值,同时,两个数码管会显示所输入的数据,当然,如果想要设置的值比当前值大(或小)的不多,则可利用加(或减)键将数据调整为目的值,然后在按下确定键(ENTER),即可输出目的电压值,这时数码管停止闪烁。
3.4显示系统设计
由于本系统设计的是数控电源,随时都要知道所输出的电压值,所以,显示电路是少不了的,这里是用译码器译码后用LED数码管进行显示,下面将分别介绍。
3.4.1译码电路
在本设计中的显示译码电路采用集成电路CD4511,译码器CD4511是专为共阴数码管输出显示信号的七段译码器,用它可方便的进行数据显示。
CD4511真值表如表3.2所示。
表3.2译码器CD4511真值表
输入
输出
LE
BI
LT
a
b
d
e
f
g
显示内容
8
Blank
2
3
4
5
6
7
9
*
译码器CD4511有3个控制信号端,由真值表可以看出,当控制信号LT为0时,不管其他两个控制信号端和数据输入端为何值,输出都全部为高电平,也就是数码管全部亮;
当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数码管是由七个发光二极管按段数码形式组成的器件,有共阴极CC(CommonCathode)和共阳极CA(CommonAnode)两种,如图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数码管
由于译码器CD4511输出的驱动电压为5V,如果直接将数码管与译码器相连的话,电流将会很大,但是LED发光二极管所能承受的电流有限(通常点亮一个LED的电流为5~50mA),所以,必须在数码管和译码器之间接上一个一定大小的限流电阻,才能保证数码管正常工作。
2.显示方式
LED显示电路有静态显示和动态显示,静态显示是指所有的LED数码管同时显示,这种显示方法使得软件结构比较简单,显示效果好,不过电路结构比较复杂,占用处理器的端口较多,功耗也较大。
动态显示是指处理器定时地对LED数码管扫描,数码管分时工作,每次只有一个数码管显示,由于扫描的频率比较高,又因人眼的视觉暂留,所以,看起来,似乎所有的数码管同时在显示,采用这种方法的电路结构变得较简单,占用处理器的端口较少,功耗也较低,不过软件结构比较复杂,必须要在软件中消隐,而且显示的效果受到扫描频率的影响。
由于本系统中要显示的数据只有两位,若采用静态显示,由于前级要接译码器,只需一个8位I/O口即可,电路结构不是很复杂,分别将两个译码器并接到单片机的P0口上即可,而且软件结构也很简单。
显示电路如图3.6所示。
图3.6显示电路
3.5数/模转换电路设计
由于数控电源输出的是模拟信号,而单片机输出的是数字信号,所以,必须要通过数/模转换。
数/模转换芯片众多,有电流输出,也有电压输出,分辨率也有所不同,有8位,12位,16位等等,不同的分辨率,价格也有很大的差距,因数控电源输出的精确度要求不是很高,且从成本上考虑,这里使用8位的数/模转换器DAC0832即可。
3.5.1DAC0832的结构及引脚功能
DAC0832是用CMOS工艺制成的8位D/A转换芯片,其内部结构如图3.7所示,它主要包括两个8位寄存器和一个8位D/A转换器构成,其两个寄存器可以进行两次缓冲操作,使器件的操作有更大的灵活性。
图3.7DAC0832结构及引脚图
DAC0832芯片采用20引脚双列直插封装,各引脚功能如下:
CS:
片选信号(低电平有效)。
ILE:
输入锁存允许信号。
WR1:
写信号1(低电平有效)。
由图3.7可见,当ILE=1时,且当CS与WR1同时有效才能把数字量锁存到8位输入寄存器中;
当WR1为高电平时输入数据锁存到输入寄存器中。
以上三个信号构成一级输入锁存。
XFER:
控制传送信号。
WR2:
写信号2(低电平有效),用于将锁存在输入寄存器数据送到DAC寄存器中,只有在XFER和WR2同时有效时才把输入寄存器中的数据锁入DAC寄存器中。
这样构成了二级锁存。
D0~D7:
8位数据输入线,TTL电平。
Iout1和Iout2:
输出电流。
其中Iout1在D/A寄存器内容全为1时,输出电流最大;
Iout2
在D/A寄存器内容全为0时,输出电流最大,Iout1和Iout2之和为常数。
AGND:
模拟信号地。
DGND:
数字地。
UREF:
基准电压。
一般为-10V~+10V。
Rfb:
反馈电阻。
该电阻被制作在芯片内,用作运算放大器的反馈电阻。
3.5.2DAC0832的工作方式
1.直通工作方式
将CS,WR1,WR2和XFER引脚都直接接数字地,ILE引脚接高电平,芯片处于直通状态。
此时,8位数字量只要输入到DI7~DI0端,就立即进行D/A转换,但在此种方式下,DAC0832不能直接与单片机的数据总线连接,故很少采用。
2.单缓冲工作方式
此方式是使两个寄存器中的一个处于直通状态,另一个工作于受控锁存状态,或两个寄存器同时受控打开、关闭。
一般是使DAC寄存器处于直通状态,即把WR2和XFER端接数字地,或者将两个寄存器的控制信号并接,使之同时选通,此时,数据只要写入DAC芯片,就立刻进行转换,这种工作方式接线比较简单,适合于一路模拟量输出或几路模拟量非同步输出的应用场合。
3.双缓冲工作方式
在双缓冲工作方式下,单片机要对两个寄存器分别控制,要进行两步写操作:
先将数据写入输入寄存器,再将输入寄存器中的内容写入DA寄存器并启动转换。
双缓冲工作方式可以使数据接收和启动转换异步进行,在D/A转换的同时,接收下一个转换数据,因而提高了通道的转换速率。
在要求多个输出通道同时进行D/A转换时使用双缓冲工作方式。
3.5.3DAC0832的数字接口
因在本系统中,单片机不仅要送D/A转换数据,还要送显示数据,且都是和P0口相连,而且,数控电源的转换速率要求不高,输出也只有一路,因此,本系统采用单缓冲工作方式DAC0832与单片机的连接电路图如图3.8所示。
图3.8DAC0832与单片机的连接电路图
当需要进行转换时,CS和WR有效,单片机从P0口输出数据到DAC0832上,并启动转换,
这时,DAC0832将转换后的电流值从Iout1和Iout2输出。
3.5.4DAC0832的模拟输出
DAC0832转换器输出的是电流信号,因此必须要经过电流-电压转换才能输出电压信号,电流-电压转换电路如图3.9所示。
图3.9电流-电压转换电路
DAC0832是8位数/模转换器,基准电源为+5V时,其输出电压的计算公式为
D—输入数据;
u—输出电压.
因为DAC0832的分辨率不是很高,所以转换精度必然有些欠缺,不过由于数控电源的电压输出范围为0.0V~9.9V,步进电压调整值为0.1V,而DAC0832的输出模拟电压步进值约为0.02V,若再放大5倍,则刚好使数控电源的步进值为0.1V,当输入数据为65H(十进制101)时,输出电压u=
≈1.98V,再放大5倍后约为9.9V,即为要求的最大值。
因此,DAC0832转换器的数据输入范围为00~65H,以提供100个调整步进。
3.6放大电路设计
数控电源要求的输出电压范围为0.0V~9.9V,而经数/模转换后输出的电压最大值只有5V,因此必须经过放大才能达到要求。
放大电路如图3.10所示。
图3.10放大电路
放大电路采用集成运算放大器LM358进行放大,LM358是通用单电源双集成运算放大器,可以方便的实现比例运算放大。
本设计采用反向比例运算放大电路,如图10所示。
这里采用的是反向比例运算电路,在反向输入端接上一个10K的电阻,再在输入端和输出端接上一个50K的反馈电阻,这样就可以得到输出电压
=
=5
即输出电压是输入电压的5倍,因经数/模转换单元输出的电压步进值约为0.02V,这时经放大电路输出电压的步进调整值就约为5×
0.02V=0.1V,即可达到设计要求。
3.7电源电路设计
作为一个电路系统来说,电源当然是必不可少的,这里需要三电源供电,即+5V、±
15V。
+5V供数字部分使用,±
15V供模拟放大部分使用,三种电压都共用一个地。
电源电路如图3.11所示,首先采用带中间抽头的15V变压器,获得±
15V的交流电压,再通过整流、滤波电路,获得±
15V的直流电压,这时已经获得了两个电压值,再利用所获得的电压进行处理,即可获得+5V电压,这里采用三端稳压器LM7805,LM7805的稳压输出值为+5V,正好符合要求,它的体积较小,且只有三个引脚,即输入、接地和输出,接线比较方便,重要的是用它来降压可使电路结构很简单。
图3.11电源电路
四.软件系统设计
4.1程序流程图
对于单片机控制系统来说,软件系统的设计是必不可少的,这里采用Keil软件为开发平台,C语言为程序设计语言,以模块化结构进行程序设计。
不过这里Keil软件不包含STC系列单片机,因此,在程序编译成功后,要通过STC系列单片机专用的下载软件将程序写入单片机的Flash程序存储区域。
程序分为几大模块,包括主程序、中断服务程序、键盘扫描程序、键值处理程序。
程序流程图4.1所示:
图4.1程序流程图
本系统是将按键信号与外部中断1口相连,这样程序的设计就方便许多,在无键按下时,程序不做任何处理,只保持显示当前数据状态,当操作者按下键后,单片机将自动进入外部中断1的中断服务程序。
中断服务程序中只作设置一个标志位的操作,让系统知道已经有键按下,然后,在主程序中调用键值扫描和键值处理程序,以判断按键为何种功能,进而进行相应的操作。
在进行预输出的电压值的设置过程中,系统会同步显示当前所输入数据值,当按下确定键后,系统立刻启动D/A转换,并输出相应的电压值,并且系统恢复初始状态。
4.2程序设计
各关键程序段如下:
1.主程序:
#include“define.h”
externCtrPower_Deal();
externScan_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;
TR0=1;
EX1=1;
IT1=1;
EA=1;
}
voidmain()
INIT();
while
(1)
{
if(Int_flag==1)
{
Scan_Key();
CtrPower_Deal();
Int_flag=0;
}
P0=DispData;
}
2.外部中断1服务程序:
voidint1(void)interrupt2
EX1=0;
Int_flag=1;
3.定时器0中断服务程序:
#include”define.h”
voidt0(void)interrupt1
ET0=0;
TR0=0;
LedCnt++;
if(LedCnt==30)
LED=~LED;
if(Fun_flag==1)
DIS=~DIS;
LedCnt=0;
ET0=1;
4.键盘扫描程序:
dly(uintn)
uchari;
while(n--)
for(i=0;
i<
=125;
i++)
{;
voidScan_Key()
uchari,j,m,n;
m=P1&
0xf0;
if(m!
=0x
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易 数控 直流电源 设计 下载 word 文档