简易数控直流电源.docx

上传人:b****5 文档编号:8564750 上传时间:2023-01-31 格式:DOCX 页数:28 大小:358.98KB
下载 相关 举报
简易数控直流电源.docx_第1页
第1页 / 共28页
简易数控直流电源.docx_第2页
第2页 / 共28页
简易数控直流电源.docx_第3页
第3页 / 共28页
简易数控直流电源.docx_第4页
第4页 / 共28页
简易数控直流电源.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

简易数控直流电源.docx

《简易数控直流电源.docx》由会员分享,可在线阅读,更多相关《简易数控直流电源.docx(28页珍藏版)》请在冰豆网上搜索。

简易数控直流电源.docx

简易数控直流电源

一.绪论

1.1设计背景

随着电子技术的迅猛发展,各种电子产品层出不穷,不过不管是哪种电子产品或设备,都需要电源供电才能进行正常的工作,而且对于不同的产品或设备来说,其需要不同的工作电源,但是往往市面上的很多电源模块都只能输出固定而单一的电压,从而不能提供各种不同数值的电压,因此,在这里做一个数控直流电源的设计。

该数控电源采用步进调整方式,调整范围为0.0V~9.9V,调整手段采用按键进行调整,当需要改变电压值时,启动数控系统,输入想要得到的电压值,再按下确定键,即可输出相应的电压。

该系统采用单片机作主控器件,结合软件和硬件设计方法,使该系统的结构较简单,可控性强,使用也很方便。

1.2设计任务

1.基本功能实现:

(1)可输出电压:

范围0~+9.9V,步进0.1V,纹波不大于10mV;

(2)可输出电压值由数码管显示;

(3)由“+”、“-”两键分别控制输出电压步进增减;

(4)为实现上述几部件工作,自制一稳压直流电源,输出输出±15v,+5v;

(5)自拟验收方案:

对基本功能实现证明。

2.扩展功能与创新:

(1)输出电压可预置在0~9.9v之间的任意一值。

 

二.方案论证

实现某一种系统功能或技术指标都具有多种可行的设计方案,每一种设计方案针对不同的应用场合都具有它自己的优缺点,在设计的过程中要考虑到其功能、技术指标、成本和所需求的技术条件等方面的因素

电源输出的调整方式有连续调整和步进调整两种,前者适合采用模拟电路来实现,而后者适合采用数字电路来实现,由于本设计要求电源输出电压的调整方式为步进调整方式,因此,这里采用数字电路来实现对出电压的控制。

数字集成电路包括标准逻辑器件、微处理器和可编程逻辑器件,标准逻辑器件是数字系统中使用较普遍的器件,其优点是工作速度快,但是集成度低,器件功能固定,使用它将使电路中器件数量增多,从而导致系统体积较大,成本也较高,并且不易改变系统功能。

微处理器和可编程逻辑器件可以克服上诉缺点。

可编程逻辑器件工作速度快,但是实现信号处理比较麻烦,价格也较昂贵;微处理器实现信号处理较方便,其中单片微型计算机的使用较为普遍,单片机是在一块芯片上集成了计算机的主要功能部件,它的指令系统是按照工业控制要求设计,可通过软件方便的实现多种功能,使硬件系统电路结构变得简单,且价格较便宜,是一个性价比较高的微处理器,它虽然工作速度较慢,但由于数控电源属于低速系统,对工作速度要求不高,使用单片机完全可以达到要求,因此,在这里采用单片机做数控直流电源的主控器件。

由于单片机输出的信号为数字信号,而所需要的是模拟信号,所以,经过单片机输出的数据必须经过数/模转换电路转换成标准的电压信号。

 

三.硬件系统设计

3.1总体设计框图

数控直流电源的硬件电路组成框图如图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

0

×

×

×

0

×

0

×

×

0

×

×

0

×

0

×

×

×

0

0

1

1

1

1

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

D

C

B

A

a

b

C

d

e

f

g

显示内容

×

×

0

×

×

×

×

1

1

1

1

1

1

1

8

×

0

1

×

×

×

×

0

0

0

0

0

0

0

Blank

0

1

1

0

0

0

0

1

1

1

1

1

1

0

0

0

1

1

0

0

0

1

0

1

1

0

0

0

0

1

0

1

1

0

0

1

0

1

1

0

1

1

0

1

2

0

1

1

0

0

1

1

1

1

1

1

0

0

1

3

0

1

1

0

1

0

0

0

1

1

0

0

1

1

4

0

1

1

0

1

0

1

1

0

1

1

0

1

1

5

0

1

1

0

1

1

0

0

0

1

1

1

1

1

6

0

1

1

0

1

1

1

1

1

1

0

0

0

0

7

0

1

1

1

0

0

0

1

1

1

1

1

1

1

8

0

1

1

1

0

0

1

1

1

1

0

0

1

1

9

0

1

1

1

0

1

0

0

0

0

0

0

0

0

Blank

0

1

1

1

0

1

1

0

0

0

0

0

0

0

Blank

0

1

1

1

1

0

0

0

0

0

0

0

0

0

Blank

0

1

1

1

1

0

1

0

0

0

0

0

0

0

Blank

0

1

1

1

1

1

0

0

0

0

0

0

0

0

Blank

0

1

1

1

1

1

1

0

0

0

0

0

0

0

Blank

1

1

1

×

×

×

×

译码器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服务程序:

#include“define.h”

voidint1(void)interrupt2

{

EX1=0;

Int_flag=1;

EX1=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;

}

TH0=0xDB;

TL0=0xFF;

TR0=1;ET0=1;

}

4.键盘扫描程序:

#include”define.h”

dly(uintn)

{

uchari;

while(n--)

{

for(i=0;i<=125;i++)

{;}

}

}

voidScan_Key()

{

uchari,j,m,n;

m=P1&0xf0;

if(m!

=0xf0)

{

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1