Ch.8 模拟量的输入输出
本章内容
模拟量输入输出通道的组成
D/A转换器
原理及连接使用方法
A/D转换器
原理及连接使用方法
模拟量 I/O接口的作用:
实际工业生产环境 ——连续变化的模拟量
例如:电压、电流、压力、温度、位移、流量
计算机内部 ——离散的数字量
二进制数、十进制数
工业生产过程的闭环控制概述模拟量 D/A传感器 执行元件A/D 数字量 数字量 模拟量模拟量输入
(数据采集 )
模拟量输出
(过程控制 )
计算机
8.1 模拟量 I/O通道的组成模拟接口电路的任务模拟电路的任务
00101101
10101100工业生产过程传感器放大滤波多路转换
&
采样保持
A/D
转换放大驱动
D/A
转换输出接口微型计算机执行机构输入接口物理量变换信号处理信号变换
I/O
接口输入通道输出通道模拟量输入通道
传感器( Transducer)
非电量 → 电压、电流
变送器( Transformer)
转换成标准的电信号
信号处理( Signal Processing)
放大、整形、滤波
多路转换开关( Multiplexer)
多选一
采样保持电路( Sample Holder,S/H)
保证变换时信号恒定不变
A/D变换器( A/D Converter)
模拟量转换为数字量模拟量输出通道
D/A变换器( D/A Converter)
数字量转换为模拟量
低通滤波
平滑输出波形
放大驱动
提供足够的驱动电压,电流
8.2 数 /模( D/A)变换器
8.2.1 D/A变换器的基本原理及技术指标
D/A变换器的基本工作原理
组成:模拟开关,电阻网络,运算放大器
两种电阻网络:权电阻网络,R-2R梯形电阻网络
基本结构如图:
Vref
Rf
模拟开关电阻网络
VO
数字量 ∑
D/A变换原理
运放的放大倍数足够大时,输出电压 Vo与输入电压 Vin的关系为:
f
O in
RV = - V
R
式中,Rf 为反馈电阻
R为输入电阻 Vin
Rf
Vo

R
若输入端有 n个支路,则输出电压 VO与输入电压 Vi的关系为:
n
0 f in
i = 1 i
1
V = - R V
R
Vin
Rf
VO

R1式中,Ri 为第 i支路的输入电阻
Rn

令每个支路的输入电阻为 2iRf,并令 Vin为一基准电压 Vref,则有
如果每个支路由一个开关 Si控制,Si=1表示
Si合上,Si=0表示 Si断开,则上式变换为

nn
0 f r e f r e fii
i = 1 i = 1f
11V = - R V = - V
2 R 2
n
0 i r e fi
i = 1
1
V = - S V
2
若 Si=1,该项对 VO有贡献若 Si=0,该项对 VO无贡献
2R
4R
8R
16R
32R
64R
128R
256R
Vref
Rf
VO
S1
S2
S3
S4
S5
S6
S7
S8
与上式相对应的电路如下 (图中 n=8):
图中的电阻网络就称为 权电阻网络
如果用 8位二进制代码来控制图中的 S1~
S8(Di=1时 Si闭合; Di=0时 Si断开 ),那么根据二进制代码的不同,输出电压 VO也不同,
这就构成了 8位的 D/A转换器。
可以看出,当代码在 0~ FFH之间变化时,
VO相应地在 0~ -(255/256)Vref之间变化。
为控制电阻网络各支路电阻值的精度,实际的 D/A转换器采用 R-2R梯形电阻网络 (见下页 ),它只用两种阻值的电阻 (R和 2R)。
R-2R梯形电阻网络
R
f
V
i
V
0

V
re f
n - 1
2 1 0
2 R 2 R 2 R2 R
R R
R
V
n -1
V
2
V
1
V
0
2 R
+
-
D/A转换器的主要技术指标
分辨率( Resolution)
输入的二进制数每 ± 1个最低有效位 (LSB)使输出变化的程度。
一般用输入数字量的位数来表示,如 8位,10位例:一个满量程为 5V的 10位 DAC,± 1 LSB的变化将使输出变化
5/(210-1)=5/1023=0.004888V=4.888mV
转换精度(误差)
实际输出值与理论值之间的最大偏差。
一般用最小量化阶 ⊿ 来度量,如 ± 1/2 LSB
也可用满量程的百分比来度量,如 0.05% FSR
LSB,Least Significant Bit
FSR,Full Scale Range)
转换时间
从开始转换到与满量程值相差 ± 1/2 LSB所对应的模拟量所需要的时间
t
V
1/2 LSB
tC
VFULL
0
8.2.2 典型 D/A转换器
DAC0832
特性:
8位电流输出型 D/A转换器
T型电阻网络
差动输出
引线图见教材 p351
DAC0832内部结构输 入 数 据

4 7~
1 3 1 6
1 9
1
2
1 8
1 7
X F E R
W R 2
W R 1
C S
I L E
& ≥ 1≥ 1
L E 1
L E 2
R f b
8 位输 入寄 存器
8 位
D A C
寄 存器
8 位
D / A
转 换器
V
R E F
I O U T 2
I O U T 1
R f b
A G N D ( 模 拟 地 )
V C C ( + 5 V 或 + 1 5 V )
2 0
1 0
3
9
1 1
1 2
8
D A C 0 8 3 2 框 图
D G N D ( 数 字 地 )
D 0 D 7
~~
引脚功能
D7~ D0:输入数据线
ILE:输入锁存允许
CS#:片选信号 用于把数据写入到输入锁存器
WR1#:写输入锁存器
WR2#:写 DAC寄存器
XFER#:允许输入锁存器的数据传送到 DAC寄存器上述二个信号用于启动转换
VREF:参考电压,-10V~ +10V,一般为 +5V或 +10V
IOUT1,IOUT2,D/A转换差动电流输出,接运放的输入
Rfb:内部反馈电阻引脚,接运放输出
AGND,DGND:模拟地和数字地工作时序
D/A转换可分为两个阶段:
CS#=0,WR1#=0,ILE=1,使输入数据锁存到输入寄存器;
WR2#=0,XFER#=0,数据传送到 DAC寄存器,并开始转换。
D 0 D 7

C S
W R 1
I L E
( 高 电 平 )
W R 2
X F E R
( 模 拟 输 出 电 流 变 化 )
写输入寄存器写 DAC
寄存器工作方式
单缓冲方式
使输入锁存器或 DAC寄存器二者之一处于直通 。 CPU只需一次写入即开始转换。控制比较简单。见教材 p352图。
双缓冲方式(标准方式)
转换要有两个步骤:
将数据写入输入寄存器
CS#=0,WR1#=0,ILE=1
将输入寄存器的内容写入 DAC寄存器
WR2#=0,XFER#=0
优点:数据接收与 D/A转换可异步进行;
可实现多个 DAC同步转换输出 ——分时写入,同步转换
直通方式
使内部的两个寄存器都处于直通状态。模拟输出始终跟随输入变化。
不能直接与数据总线连接,需外加并行接口 (如 74LS373,8255等 )。
双缓冲方式 —— 同步转换举例
A10-A0
译码器
0832-1
0832-2
port1
port2
port3
双缓冲方式的程序段示例本例中三个端口地址的用途:
port1 选择 0832-1的输入寄存器
port2 选择 0832-2的输入寄存器
port3 选择 0832-1和 0832-2的 DAC寄存器
MOV AL,data ; 要转换的数据送 AL
MOV DX,port1 ; 0832-1的输入寄存器地址送 DX
OUT DX,AL ; 数据送 0832-1的输入寄存器
MOV DX,port2 ; 0832-2输入寄存器地址送 DX
OUT DX,AL ; 数据送 0832-2的输入寄存器
MOV DX,port3 ; DAC寄存器端口地址送 DX
OUT DX,AL ; 数据送 DAC寄存器,并启动同步转换
HLT
D/A转换器的应用
函数发生器
只要往 D/A转换器写入按规律变化的数据,即可在输出端获得正弦波、三角波、锯齿波、方波、
阶梯波、梯形波等函数波形。
直流电机的转速控制
用不同的数值产生不同的电压,控制电机的转速
其他需要用电压 /电流来进行控制的场合例子参见 p354-p356。
8.3 模 /数( A/D)转换器
用途
将连续变化的模拟信号转换为数字信号,以便于计算机进行处理。
常用于数据采集系统或数字化声音。
A/D转换的四个步骤
采样 → 保持 → 量化 → 编码
采样 /保持:由采样保持电路( S/H) 完成
量化 /编码:由 ADC电路完成( ADC,AD变换器)
1) 采样和保持
采样
将一个时间上连续变化的模拟量转为时间上断续变化的
(离散的)模拟量。
或:把一个时间上连续变化的模拟量转换为一个脉冲串,
脉冲的幅度取决于输入模拟量。
保持
将采样得到的模拟量值保持下来,使之等于采样控制脉冲存在的最后瞬间的采样值。
目的,A/D转换期间保持采样值恒定不变。
对于慢速变化的信号,可省略采样保持电路采样保持电路( S/H)
由 MOS管采样开关 T,保持电容 Ch和运放构成的跟随器三部分组成。
采样控制信号 S(t)=1时,T导通,Vin向 Ch充电,Vc和 Vout跟踪 Vin变化,即对 Vin采样。 S(t)=0时,T截止,Vout将保持前一瞬间采样的数值不变。


Ch
T VoutV
in
采样控制
S(t)
采样保持电路的波形
Vin
S(t)
Vout?进行 A/D转换时所用的输入电压,就是对保持下来的采样电压(每次采样结束时的输入电压)进行转换。
采样周期的确定
采样通常采用等时间间隔采样。
采样频率 fs不能低于 2fimax( fimax为输入信号 Vin的最高次谐波分量的频率);
fs的 上限受计算机的速度、存储容量、器件速度的限制。
实际中一般取 fs为 fimax的 4-5倍。
2) 量化和编码
量化 就是用基本的量化电平的个数来表示采样到模拟电压值。即把时间上离散而数值上连续的模拟量以一定的准确度变换为时间上、数值上都离散的具有标准量化级的等效数字值。(量化电平的大小取决于 A/D变换器的字长)
只有当电压值正好等于量化电平的整数倍时,量化后才是准确值,
否则量化后的结果都只能是输入模似量的近似值。这种由于量化而产生的误差叫做量化误差。量化误差是由于量化电平的有限性造成的,所以它是原理性误差,只能减小,而无法消除。为减小量化误差,根本的办法是减小量化电平(即增加字长)。
编码 是把已经量化的模拟数值 (它一定是量化电平的整数倍 )
用二进制码,BCD码或其它码来表示。
A/D转换器的分类
根据 A/D转换原理和特点的不同,可把 ADC
分成两大类,直接 ADC和 间接 ADC。
直接 ADC是将模拟电压直接转换成数字量,常用的有:
逐次逼近式 ADC,计数式 ADC,并行转换式 ADC等。
间接 ADC是将模拟电压先转换成中间量,如脉冲周期 T,脉冲频率 f,脉冲宽度 τ等,再将中间量变成数字量。常见的有:
单积分式 ADC,双积分式 ADC,V/F转换式 ADC等。
各种 ADC的优缺点
计数式 ADC,最简单,但转换速度最慢。
并行转换式 ADC,速度最快,但成本最高。
逐次逼近式 ADC,转换速度和精度都比较高,且比较简单,
价格低,所以在微型机应用系统中最常用。
双积分式 ADC,转换精度高,抗干扰能力强,但转换速度慢,一般应用在精度高而速度不高的场合,如测量仪表。
V/F转换式 ADC,在转换线性度、精度、抗干扰能力等方面有独特的优点,且接口简单、占用计算机资源少,缺点也是转换速度慢。在一些输出信号动态范围较大或传输距离较远的低速过程的模拟输入通道中应用较为广泛。
8.3.1 工作原理及技术指标
逐次逼近型 A/D转换器
结构:由 D/A转换器、比较器和逐次逼近寄存器
SAR组成。见 P360页图。
Vi -
+
逐次逼近寄存器
D/A转换器
Vc
比较器数字量输出控制电路模拟量输入工作原理类似天平称重量时的尝试法,逐步用砝码的累积重量去逼近被称物体。 例如:
用 8个砝码 20g,21g,…,27g,可以称出 1~ 255g之 间的物体。现有一物体,用砝码称出其重量(假定重量为 176g)。
1) ADC从高到低 逐次给 SAR的每一位“置 1”(即加上不同权重的砝码),SAR相当于放法码的称盘;
2)每次 SAR中的数据经 D/A转换为电压 VC ;
3) VC与输入电压 Vi比较,若 VC≤Vi,保持当前位的‘ 1’,否则当前位‘置 0’;
4)从高到低逐次比较下去,直到 SAR的每一位都尝试完;
5) SAR内的数据就是与 Vi相对应的 2进制数。
主要技术指标
精度
量化间隔 (分辨率 ) = Vmax/电平数 (即满量程值 )
例:某 8位 ADC的满量程电压为 5V,则其分辨率为
5V/255=19.6mV
量化误差,用数字(离散)量表示连续量时,由于数字量 字长有限 而无法精确地表示连续量所造成的误差。
(字长越长,精度越高 )
绝对量化误差 = 量化间隔 /2 = (满量程电压 /(2n-1))/2
相对量化误差 = 1/2 * 1/量化电平数目 * 100%
例:满量程电压 =10V,A/D变换器位数 =10位,则绝对量化误差 ≈ 10/211 = 4.88mV
相对量化误差 ≈ 1/211 *100% = 0.049%
主要技术指标(续)
转换时间
转换一次需要的时间。精度越高(字长越长),转换速度越慢。
输入动态范围
允许转换的电压的范围。如 0~ 5V,-5V~
+5V,0~ 10V等。
典型的 A/D转换器简介
ADC0809
8通道( 8路)输入
8位字长
逐位逼近型
转换时间 100μs
内置三态输出缓冲器(可直接接到数据总线上)
外部引脚见教材 p359
引脚功能
D7~ D0:输出数据线(三态)
IN0~ IN7,8通道(路)模拟输入
ADDA,ADDB,ADDC:通道地址(通道选择)
ALE:通道地址锁存
START:启动转换
EOC:转换结束,可用于查询或作为中断申请
OE:输出允许(打开输出三态门)
CLK:时钟输入( 10KHz~ 1.2MHz)
VREF(+),VREF(-):基准参考电压
ADC0809内部结构
START EOC CLK OE
D7
D0
VREF(+) VREF(-)
ADDC
ADDB
ADDA
ALE
IN0
IN7
比较器
8路模拟开关树状开关电阻网络三态输出锁存器时序与控制地址锁存及译码
D/A
8
个模拟输入通道
8选 1
逐位逼近寄存器
SAR
工作时序启 动地 址锁 存
A D D A A D D C
A L E / S T A R T
E O C
O E
D 0 D 7

~ 转 换 时 间①② ③ ④ ⑤
ADC0809的工作过程
根据时序图,ADC0809的工作过程如下:
① 把 通道地址送到 ADDA~ ADDC上,选择一个模拟输入端;
② 在通道地址信号有效期间,ALE上的 上升沿 使该地址锁存到内部地址锁存器;
③ START引脚上的 下降沿 启动 A/D变换;
④ 变换开始后,EOC引脚呈现 低电平,EOC重新变为 高电平 时表示转换结束;
⑤ OE信号打开 输出锁存器的三态门送出结果 。
ADC0809与系统的连接
模拟输入端 INi
单路输入
模拟信号可连接到任何一个输入端;
地址线可根据输入固定连接;也可以由 CPU给一个固定地址。
多路输入
模拟信号按顺序分别连接到输入端;
要转换哪一路输入,就将其编号送到地址线上 (动态选择 )。
单路输入时
ADDC
ADDB
ADDA
IN4
ADC0809
输入多路输入时
ADDC
ADDB
ADDA
IN0
IN1
IN2
IN3
IN4
ADC0809
输入 0
输入 1
输入 2
输入 3
输入 4
CPU指定通道号
+5V
地址线 ADDA-ADDC
多路输入时,地址线不能固定连接到+ 5V或地线,而是要通过一个接口芯片与数据总线连接。接口芯片可以选用:
锁存器 74LS273,74LS373等(要占用一个 I/O地址)
可编程并行接口 8255(要占用四个 I/O地址)
CPU用一条 OUT指令把通道地址通过接口芯片送给 ADC0809
ADDC
ADDB
ADDA
IN0
IN1
IN2
IN3
IN4
ADC0809
输入
DB
74LS273
Q2
Q1
Q0CP
来自 I/O
译码
D0-D7
ADDC
ADDB
ADDA
IN0
IN1
IN2
IN3
IN4
ADC0809
DB
8255
PB2
PB1
PB0CS#
来自 I/O
译码
D0-D7
A1
A0
A1
A0
用锁存器作为 ADC0809的接口 用 8255作为 ADC0809的接口
数据输出线 D0-D7
内部已接有三态门,故可直接连到 DB上
也可另外通过一个外部三态门与 DB相连
上述两种方法均需占用一个 I/O地址
D0-D7
ADC0809
DB
OE来自 I/O译码
D0-D7
ADC0809
DB
OE
来自 I/O
译码直接与 DB相连 通过三态门与 DB相连
74LS244
+5V
DIDO
E1#
E2#
地址锁存信号 ALE和启动转换信号 START
两种连接方法:
分别连接:用两个信号分别进行控制 ——需占用两个 I/O端口或两个 I/O线 (用 8255时 );
统一连接:用一个脉冲信号的上升沿进行地址锁存,下降沿实现启动转换 ——只需占用一个 I/O端口或一个 I/O线 (用
8255时 ),参见教材 p362图。
ADC0809
ALE
START
独立连接来自 I/O
译码 1
来自 I/O
译码 2
ADC0809
ALE
START
统一连接来自 I/O
译码
转换结束 EOC
软件延时等待 (比如延时 1ms)——不用 EOC信号
CPU效率最低,只能按最大转换时间延时
简单,容易实现
软件查询 EOC状态
EOC通过一个三态门连到数据总线的 D0(或 D1,D2等 )
三态门要占用一个 I/O端口地址
CPU效率低
把 EOC作为中断申请信号,向 CPU申请中断
在中断服务程序中读入转换结果,效率高
D0
IN0
A15-A0
IOR#
IOW#
D7-D0 D7-D0
EOC
OE
START
ALE
ADDC
ADDB
ADDA
译码器
ADC0809
一个连接实例(用查询方式)
模拟信号输入进行一次 A/D转换的程序 (以上图为例 )
用延时等待的方法
……
MOV DX,start_port
OUT DX,AL ;启动转换
CALL DELAY_1MS ;延时 1ms
MOV DX,oe_port
IN AL,DX ;读入结果
……
用查询 EOC状态的方法
……
MOV DX,start_port
OUT DX,AL ;启动转换
LL,MOV DX,eoc_port
IN AL,DX ;读入 EOC状态
AND AL,01H ;测试第 0位 (EOC状态位 )
JZ LL ;未转换完,则循环检测
MOV DX,oe_port
IN AL,DX ;读入结果
……
进一步应考虑的问题
多个模拟通道时,程序怎样编写?
ADC位数大于 8位应怎样处理?
用 8255时程序应怎样编写?
以上三个问题留作思考题作业
P364
8.4,8.10,8.11,8.14