0%

ch12ADDA转换

模/数和数/模转换

数据采集基本概念

ADDA_contro

传感器: 物理量转换成电信号

多路模拟开关: 模拟信号源—>转换成数字形式

信号调理器(SIGNAL CONDITIONING ):

  • 信号的电平、极性等转换,以便与A/D变换器所需的电平极性匹配
  • 阻抗变换作用,隔离后面的负载对传感器的影响
  • 抑制干扰,提高信噪比
  • 防止混叠现象

采样保持(Sample/Hold)电路:

  • A/D进行转换时间内,保持输入信号不变

  • 采样模式: 输出随输入变化,通常增益为1

    在保持模式: 采样保持电路的输出保持命令发出时的输出值

    sample_holder

eg : 高速多通道数据采集系统

multi_AD

eg: 多通道共用A/D变换器

multi_AD2

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)

  • 三态输出锁存器。

    ADC0809

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;

ADC574_logic

eg. $\overline{CS}$=0,$R/\overline{C}$=0,CE由0—>1,启动一次转换;

若此时A0=1,表明进行8bit转换; A0=0,表明进行12bit转换

转换开始后,STS==1,直到转换周期完成STS==0;

[转换期间,忽略新转换启动信号,不允许输出数据缓冲器输出]

ADC574_eg1

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

    ADC0809_8255A

    ADC0809_8255A2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	MOV AL, 98H     ;8255A控制字	
MOV DX, 0FFFFH ;控制字端口地址
OUT DX, AL
MOV AL, 0BH ;选IN3输入端和地址锁存信号
MOV DX, 0FFFDH
OUT DX, AL
MOV AL, 1BH ;start PB4=1
OUT DX, AL ;启动A/D转换
MOV AL, 0BH
OUT DX, AL
MOV DX, 0FFFEH
TEST: IN AL, DX ;读C端口状态
AND AL, 10H ;测试EOC状态(PC4)
JZ TEST
MOV DX, 0FFFCH
IN AL, DX ;读转换结果
HLT
  • AD574与8086CPU [8283:带锁存器的缓冲器 8286:数据收发器]

    AD574_8086

  • AD574与8088CPU

    AD574_8088

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梯形电阻

DAC0832

DAC0832_2

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寄存器

    DAC0832_2buf

    1
    2
    3
    4
    5
    A0832   EQU 228H
    MOV DX, A0832+0 ;A0=0
    OUT DX, AL ;AL的值为待转换的数字
    MOV DX, A0832+1 ;A0=1
    OUT DX, AL ;AL的值无关
  • 单缓冲工作方式

    DAC0832_1buf

    eg. 设D/A转换端口号为PORTDA,设需转换的数据放在1000H单元,则D/A转换程序为

    1
    2
    3
    4
    MOV BX, 1000H
    MOV AL, [BX]
    MOV DX, PORTDA
    OUT DX, AL

    eg. 工作在单缓冲方式下。

    设D/A转换端口地址为200H,设需转换的数据量为10H,则D/A转换程序为

    1
    2
    3
    4
    MOV AL, 10H
    MOV DX, 0200H
    OUT DX, AL
    HLT

    eg. 利用D/A转换器可以输出不同的电压波形,输出三角波的程序段如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    TRG0:    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

DAC1210_2

12位D/A转换器DAC1210与CPU的接口

DAC1210

eg. DAC占用220H~222H三个端口地址。

A0地址线不参与I/O地址译码,反相—>$B1/\overline{B2}$。

设BX寄存器的低12位为待转换的数字量,完成一次转换输出的程序段如下:

1
2
3
4
5
6
7
8
9
10
11
MOV	DX, 220H             
MOV CL, 4
SHL BX, CL
MOV AL, BH ;送高8位数据
OUT DX, AL
INC DX ;送低4位数据
MOV AL, BL
OUT DX, AL
INC DX
OUT DX, AL ;启动D/A转换
HLT