书城工业技术智能仪器设计基础
19100400000017

第17章 输出及执行装置的接口技术(1)

5.1概述

数据采集系统和模拟量输出系统是单片机两个不同的重要应用领域,前者延伸到了仪表测试技术、传感器技术、模拟信号处理技术领域,而后者延伸到了电机电器、伺服驱动、控制工程等技术领域。

单片机能够处理的都是数字量,直接输出并行数值代码是最方便的。但是,若单片机用于工业过程控制,需要与检测仪表、显示仪表及执行装置接口,而这些仪表和装置的信号多半是模拟电压量或电流量。这就要求单片机要配备有数据采集系统和模拟量输出系统。

5.1.1模拟量输出系统的特点

根据单片机的输出和控制对象对控制信号的要求,模拟量输出系统具有以下特点:

(1)小信号输出,大功率控制。基于目前单片机输出功率的限制,不能输出控制对象所要求的功率信号。

(2)是一个输出通道。输出伺服驱动控制信号,而伺服驱动系统中的状态反馈信号通常是作为检测信号输入通道。

(3)接近控制对象,环境恶劣。控制对象多为大功率伺服驱动机构,电磁、机械干扰较为严重。

5.1.2输出系统的结构

根据单片机的输出信号形式和控制对象的特点。

单片机在完成控制处理后,总是以数字信号通过I/O口或数据总线送给控制对象。这些数字信号形态主要有开关量、二进制数字量和频率量,可直接用于开关量、数字量系统及频率调制系统,但对于一些模拟量控制系统,则应通过D/A转换器变成模拟量控制信号。

5.1.3输出系统应解决的问题

根据单片机输出信号形态及控制对象要求,输出系统应解决如下3个问题:

(1)功率驱动。将单片机输出的信号进行功率放大,以满足伺服驱动的功率要求。

(2)干扰防治。主要防治伺服驱动系统通过信号通道、电源以及空间电磁场对计算机系统的干扰。通常采用信号隔离、电源隔离和对大功率开关实现过零切换等方法进行干扰防治。

(3)数/模转换。对于二进制输出的数字量采用D/A转换器;对于频率量输出则可以采用F/V转换器变成模拟量。

5.2D/A转换器及其接口

5.2.1D/A转换器主要性能指标

D/A转换器的主要性能指标有静态指标、动态指标以及环境和工作条件指标。

5.2.1.1D/A转换器的静态指标

1.分辨率

D/A转换器的分辨率定义为:输入数字量发生单位数码变化即LSB位产生一次变化时,所对应模拟量(电压或电流)的变化量。对于线性D/A转换器来说,其分辨率Δ与数字量输出的位数n呈下列关系:

Δ=模拟量输出满量程值/2n

在实际使用中,表示分辨率高低常用的方法是采用输入数字量的位数或最大输入码的个数表示。例如,8位二进制D/A转换器,其分辨率为8位,Δ=1/256FS=0.39%FS。

BCD码输入则用其最大输入码个数表示,例如4字位9999D/A转换器,其分辨率为Δ=1/9999FS=0.01%FS。显然,位数越多,分辨率就越高。

2.标称满量程和实际满量程

标称满量程(NFS)是指相应于数字量标称值2n的模拟输出量。但实际数字量最大为2n-1,要比标称值小1个LSB,因此,实际满量程(AFS)要比标称满量程(NFS)小1个LSB增量。

即AFS=NFS-1LSB增量=2n-1/2n×NFS

例如,1个8位D/A转换器,参考电压为-5V时,其标称满量程为+5V,而实际满量程为255/256×(+5V)=+4.98V。

3.精度

D/A转换器的转换精度与D/A转换集成芯片的结构和接口配置的电路有关。一般来说,不考虑其他D/A转换误差时,D/A的转换精度即为其分辨率的大小,故要获得高精度的D/A转换结果,首先要保证选择有足够分辨率的D/A转换器。但是,D/A转换精度还与外电路的配置有关,当外电路的器件或电源误差较大时,会造成较大的D/A转换误差。

在D/A转换中,影响转换精度的主要误差因素有失调误差、增益误差、非线性误差和微分非线性误差。

(1)失调误差(或称零点误差):失调误差定义为数字输入为全0码时,其模拟输出值与理论输出值之偏差值。对于单极性D/A转换,模拟输出的理想值为零伏点;对于双极性D/A转换,理想值为负域满量程。偏差值的大小一般用LSB的份数或用偏差值相对于满量程的百分数表示。

一定温度下的失调误差可以通过外部调整措施进行补偿。有些D/A集成芯片设置有调零端,外接电位器调零。有些转换器不设置专门的调零端,要求用户采取外接校正用偏置电路加到运算放大器求和端的办法来消除输出失调电压或电流。

(2)增益误差(或称标度误差):D/A转换器的输出与输入传递特性曲线的斜率称为D/A转换增益或标度系数,实际转换的增益与理想增益之间的偏差值称为增益误差。增益误差在消除失调误差后用满码(全1)输入时,其实际输出值与理想输出值(实际满量程)之间的偏差表示,一般也用LSB增量的份数或偏差值相对于满量程的百分数来度量。

(3)非线性误差:D/A转换器的非线性误差一般不能采用简单的外部校正办法实现完全补偿,但是可以通过调整零点或增益使非线性偏差值均匀散布在理想特性曲线的两侧而使非线性误差大大减小。

(4)微分非线性误差:微分非线性误差是指任意两个相邻数码所对应模拟量间隔(称为步长)与标准值之间的偏差。若步长为1LSB增量,则该转换器的微分非线性误差为零。若该步长为1LSB±ε的增量,则±ε为微分非线性误差,微分非线性误差也用LSB的份数来表示。

5.2.1.2D/A转换器的动态指标

1.建立时间(ts)

建立时间ts是描述D/A转换速率快慢的一个重要参数,一般所指的建立时间是指输入数字量变化后,输出模拟量稳定到相应数值范围内(稳定值±ε,通常ε=1/2LSB)所经历的时间。

2.尖峰

尖峰是输入数码发生变化时刻产生的瞬时误差。尖峰的持续时间虽然很短(一般在数十毫微秒数量级),但幅度可能很大。

5.2.1.3环境及工作条件影响指标

一般情况下,影响D/A转换精度的主要环境和工作条件因素是温度和电源电压变化。

5.2.2DAC0832及其接口

DAC0832是与单片机完全兼容的具有8位分辨率的D/A转换集成芯片。以其价廉、接口简单、转换控制容易等优点,在单片机应用系统中得到了广泛的应用。

5.2.2.1DAC0832的结构与应用特性

1.DAC0832的结构与管脚功能

它由8位输入寄存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成,为20脚双列直插式封装结构。

各管脚的功能如下。

DI0~DI7:8位数据输入端。

ILE:数据允许锁存信号。

CS:输入寄存器选择信号。

WR1:输入寄存器写选通信号,输入寄存器的锁存信号LE1,由ILE、CS、WR1逻辑组合产生,LE1为高电平时,输入寄存器状态随输入数据线变化,LE1的负跳变将输入数据锁存。

XFER:数据传送信号。

WR2:DAC寄存器的写选通信号,DAC寄存器的锁存信号LE2由XFER和WR2逻辑组合而成,LE2为高电平时,DAC寄存器的输出随寄存器的输入而变化,LE2为负跳变时,输入寄存器的内容打入DAC寄存器并开始D/A转换。

VREF:基准电源输入端。

RFB:反馈信号输入端。

IOUT1:电流输出端1,其值随DAC内容线性变化。

IOUT2:电流输出端2,IOUT1+IOUT2=常数。

VCC:电源输入端。

AGND:模拟地。

DGND:数字地。

2.0832的应用特性

(1)0832是单片机兼容D/A转换器,可以充分利用单片机的控制能力实现对D/A转换的控制,故这种芯片有许多控制引脚可以和单片机的控制线相连,接受单片机的控制,如ILE、CS、WR1、WR2、XFER端。

(2)有两级锁存控制功能,能够实现多通道D/A的同步转换输出。

(3)0832内部无参考电压,需外接参考电压电路。

(4)0832为电流输出型D/A转换器,要获得模拟电压输出时,需要外接转换电路。从a点输出为单极性模拟电压,从b点输出为双极性模拟电压。如果参考电压为5V,则a点输出电压为0V~-5V,b点输出为±5V电压。

5.2.2.2DAC0832和单片机的接口方法

DAC0832和MCS51单片机有两种基本的接口方法:单缓冲器和双缓冲器同步方法。

1.单缓冲器方式接口

若应用系统中只有一路D/A转换或虽然是多路转换,但并不要求同步输出时,则采用单缓冲器方式接口。让ILE接+5V,寄存器选择信号CS及数据传送信号XFER都与地址选择相连(为P2.7),两级寄存器的写信号都由89C51的WR端控制。当地址线选择好0832后,只要输出WR控制信号,0832就能一步地完成数字量的输入锁存和D/A转换输出。

由于89C51具有数字量的输入锁存功能,故数字量可以直接从P0口送入。

执行下面几条指令就能完成一次D/A转换:

MOVDPTR,#7FFFH;指向0832MOVA,#data;数字量先装入累加器MOVX @ DPTR,A;数字量从P0口送至P2.7所指向的地址,WR有效时,完成一次D/A输入与转换。

2.双缓冲器同步方式接口

对于多路D/A转换接口,要求同步进行D/A转换输出时,必须采用双缓冲器同步方式。0832采用这种接法时,数字量的输入锁存和D/A转换输出是分两步完成的,即单片机的数据总线分时地向各路D/A转换器输入要转换的数字量并锁存在各自的输入寄存器中,然后单片机对所有的D/A转换器发出控制信号,使各个D/A转换器输入寄存器中的数据打入DAC寄存器,实现同步转换输出。

P2.5和P2.6分别选择两路D/A转换器的输入寄存器,控制输入锁存;P2.7连到两路D/A转换器的XFER端控制同步转换输出;WR端与所有的WR1、WR2端相连。在执行MOVX输出指令时,89C51自动输出WR控制信号。

执行下面8条指令就能完成两路D/A的同步转换输出。

MOVXDPTR,#0DFFFH;指向0832(1)

MOVA,#data1;#data1送入0832(1)中锁存

MOVX @ DPTR,A

MOVDPTR,#0BFFFH;指向0832(2)

MOVA,#data2;#data2送入0832(2)中锁存

MOVX @ DPTR,A

MOVDPTR,#7FFFH;给0832(1),0832(2)提供

MOVX @ DPTR,A;WR信号,同时完成D/A转换输出

5.2.2.3D/A转换器的典型应用

89C51的其他电路及引脚也被省略。

0832(1)的地址为DFFFH,0832(2)的地址为BFFFH,输出的双极性电压为±5V。

1.单路锯齿波电压输出

双极性D/A转换器输出可获得反向锯齿波、正向锯齿波和双向锯齿波信号输出。

其相应的程序清单如下(使用0832(1)):

反相锯齿波程序清单:

MOVDPTR,#0DFFFH

DA1:MOVR6,#80H

DA2:MOVA,R6

MOVX @ DPTR,A

DJNZR6,DA2

AJMPDA1

正向锯齿波程序清单:

DA1:MOVDPTR,#0DFFFH

MOVR6,#80H

DA2:MOVA,R6

MOVX @ DPTR,A

INCR6

CJNER6,#0FFH,DA2

AJMPDA1

双向锯齿波程序清单:

MOVDPTR,#0DFFFH

MOVR6,#00H

DA1:MOVA,R6

MOVX @ DPTR,A

INCR6

AJMPDA1

2.单路三角波电压输出

执行下列程序,在0832(1)的双极性端输出0~+5V变化的三角波。

MOVDPTR,#0DFFFH

DA1:MOVR6,#80H

DA2:MOVA,R6

MOVX @ DPTR,A

INCR6

CJNER6,#0FFH,DA2

DA3:DECR6

MOVA,R6

MOVX @ DRTR,A

CJNER6,#80H,DA3

AJMPDA1

3.单路正弦波电压输出

正弦波电压输出为双极性电压。最简单的办法是将一个周期内电压变化的幅值(-5V~+5V)按8位D/A分辨率分为256个数值列成表格,然后依次将这些数字量送入0832进行D/A转换输出。只要连续循环地送数,在双极性电压端就能获得连续的正弦波输出。

0832(1)正弦波电压输出程序清单如下:

MOVR5,#00H

SIN:MOVA,R5

MOVDPTR,#TABH

MOVCA,@ A+DPTR

MOVDPTR,#0DFFFH

MOVX @ DPTR,A

INCR5

AJMPSIN