模/数和数/模转换
数据采集基本概念
传感器: 物理量转换成电信号
多路模拟开关: 模拟信号源—>转换成数字形式
信号调理器(SIGNAL CONDITIONING ):
- 信号的电平、极性等转换,以便与A/D变换器所需的电平极性匹配
- 阻抗变换作用,隔离后面的负载对传感器的影响
- 抑制干扰,提高信噪比
- 防止混叠现象
采样保持(Sample/Hold)电路:
A/D进行转换时间内,保持输入信号不变
采样模式: 输出随输入变化,通常增益为1
在保持模式: 采样保持电路的输出保持命令发出时的输出值
eg : 高速多通道数据采集系统
eg: 多通道共用A/D变换器
A/D转换器及其应用
AD转换器参数
- 量程:输入模拟信号幅度
- 带宽:输入模拟信号频率
- 转换速率:每秒能进行的转换次数
- 分辨率(Resolution): 位数8位,满量程5V,则其分辨率为8位,或
5V/(2^8-1)=19.6mV - 转换精度(Accuracy): 精度和分辨率的区别,例如某ADC具有24位的分辨率,但其精度相当于16位,低8位表征随机噪声的影响
ADC0809工作原理及接口
转换时间是100us,分辨率为8位,单5V供电,输入模拟电压范围为0—5V
8路模拟开关;
地址锁存与译码;
8位A/D转换;(DAC)
三态输出锁存器。
IN0~IN7: 输入,8路模拟输入
DB0~DB7 : 三态输出,A/D转换数据输出线;
ADD_A,ADD_B,ADD_C: 输入,模拟通道选择线;
ALE: 输入,地址锁存使能,上升沿将ADD_A、ADD_B、ADD_C三位地址信号锁存,译码选通对应的模拟通道;
REF(+)/REF(-): 输入,基准电压输入端,要求1/2[VREF(+)+VREF(-)]=1/2Vc
模拟输入与数字输出的关系为:N=(UIN - UREF-) / (UREF+ - UREF-)*28
START: 输入,脉冲上升使所有内部寄存器清零,下降沿使A/D转换开始
EOC: 输出,转换结束信号,EOC变为高电平
OE: 输入,输出允许
AD574A工作原理
12位的A/D转换芯片, 转换时间为35us, 输入模拟电压范围:单极性0~+10V或0~+20V;双极性±5V或±10V
[可直接与8位或16位微处理器接口, 集成时钟&基准电压电路, 输出可读全部12位数据,亦可两个8位方式读取]
DB0~DB11,三态输出数据线,DB0为LSB, DB11为MSB
CE,芯片使能输入, CE由0变1,启动一次转换
$\overline{CS}$,芯片选择输入,低电平有效
$R/\overline{C}$, =1 read && =0 convert
STS, 状态信号输出, 转换开始,STS=1; 转换周期完成, STS=0
A0和$12/\overline{8}$这两个信号控制转换的长度和数据的格式
$REF_{IN}$ 基准电压输入,在使用中,可在REF IN和REF OUT之间接一个100欧的可调电阻,进行增益微调;
$REF_{OUT}$ 基准电压输出,AD574A内有基准电压电路,以供DAC的基准电压,基准电压可以被调到10.00V±1%;
$BIP_{OFF}$ 双极性偏置, 在使用中用于偏置的调整;
DC: 数字公共端, AC: 模拟公共端;
Vlogic 逻辑电源,接+5V;
eg. $\overline{CS}$=0,$R/\overline{C}$=0,CE由0—>1,启动一次转换;
若此时A0=1,表明进行8bit转换; A0=0,表明进行12bit转换
转换开始后,STS==1,直到转换周期完成STS==0;
[转换期间,忽略新转换启动信号,不允许输出数据缓冲器输出]
eg. 读取周期自CE==1和$R/\overline{C}$==1时开始;
$12/\overline{8}$=1,表明是16位接口方式,12位转换结果一次读出;
$12/\overline{8}$=0,表明是8位接口方式,A0=0使能高8位, A0=1使能低4位数据
A/D转换器与系统的典型接口
ADC0809通过8255A与系统的接口(P521)
程序设定8255A的PA口和PC口为输入
[ADC0809的数据输出经8255A的PA输入给CPU]
[A/D转换状态信号EOC由PC4输入]
PB口为输出,均为方式0,
[ADDA、ADDB和ADDC以及地址锁存信号ALE由8255A的PB3~PB0输入]
以查询方式来读取A/D转换结果。
设8255A端口地址为0FFFCH~0FFFFH
1 | MOV AL, 98H ;8255A控制字 |
AD574与8086CPU [8283:带锁存器的缓冲器 8286:数据收发器]
AD574与8088CPU
D/A转换器及其应用
DAC指标
分辨率:满量程$V_{FS}$ ,N位的DAC,分辨率=$V_{FS}$/(2^N-1)
转换精度:
- 相对转换精度:用数字量最低有效位LSB的一半来表示,±0.5LSB=±0.5*(1/2^N)= ±1/2^(N+1);
- 绝对转换精度:相对转换精度对应的电压值表示,即±$V_{FS}$/2^(N+1);
转换速率和建立时间
线性误差:在整个量程上,转换输出偏离理想转换特性的最大值
DAC0832
8位数模转换芯片,片中有R-2R梯形电阻
DI0~DI7:8位数据输入线;
$\overline{CS}$:片选端,低电平有效,仅用于控制$\overline{WR1}$;
ILE:数据允许锁存信号,高电平有效;
$\overline{WR1}$:写信号1端,低电平有效。用于将输入数据锁存到输入寄存器中。必须与ILE、$\overline{CS}$同时有效;
$\overline{WR2}$:写信号2端,低电平有效。
$\overline{XFER}$:传送控制信号,低电平有效。用于控制$\overline{WR2}$
[$\overline{WR2}$和$\overline{XFER}$同时有效时,输入寄存器中的数据才能通过DAC寄存器进行D/A转换]
$V_{REF}$:参考电压,+10V~-10V,电压愈稳定模拟输出精度越高;
$I_{OUT1}$、$I_{OUT2}$:模拟电流输出端,与运放输入端相接;
$R_{fb}$: 反馈电阻接出端
两级输入锁存器:输入寄存器、DAC寄存器
三种工作方式:
双缓冲工作方式[转换输出模拟信号, 同时输入新的数据==>提高速度,多个输出通道同步]
eg. CS由A9~A1经译码产生,DAC的地址范围是228-22FH,实际只使用228H和229H两个地址:
在CPU执行OUT指令时
若A0=0,DAC0832内部LE1有效,数据总线上的值(AL)—>数据输入寄存器;
若A0=1,DAC0832内部LE2有效,数据输入寄存器的值 —>DAC寄存器
1
2
3
4
5A0832 EQU 228H
MOV DX, A0832+0 ;A0=0
OUT DX, AL ;AL的值为待转换的数字
MOV DX, A0832+1 ;A0=1
OUT DX, AL ;AL的值无关单缓冲工作方式
eg. 设D/A转换端口号为PORTDA,设需转换的数据放在1000H单元,则D/A转换程序为
1
2
3
4MOV BX, 1000H
MOV AL, [BX]
MOV DX, PORTDA
OUT DX, ALeg. 工作在单缓冲方式下。
设D/A转换端口地址为200H,设需转换的数据量为10H,则D/A转换程序为
1
2
3
4MOV AL, 10H
MOV DX, 0200H
OUT DX, AL
HLTeg. 利用D/A转换器可以输出不同的电压波形,输出三角波的程序段如下:
1
2
3
4
5
6
7
8
9TRG0: MOV DX, 0200H
MOV AL, 0H
T1: OUT DX, AL
INC AL
JNZ T1
T2: OUT DX, AL
DEC AL
JNZ T2
JMP T1直通工作方式
12位D/A转换器DAC1210
12位D/A转换器DAC1210与CPU的接口
eg. DAC占用220H~222H三个端口地址。
A0地址线不参与I/O地址译码,反相—>$B1/\overline{B2}$。
设BX寄存器的低12位为待转换的数字量,完成一次转换输出的程序段如下:
1 | MOV DX, 220H |