第八章D/A、A/D转换及应用(DA,ADandapplications)§8.1概述(summarize)在实际控制系统中会大量遇到从时间到数值都连续变化的物理量,称为模拟量,如温度、压力、流量、位移、电压、电流等微机只能接收数字量处理,处理结果也只能以数字量输出实际控制系统过程:(见P310,F11-1)传感器——采集或检测现场模拟信号,并且转换为电信号放大器——将传感器信号(通常为mV~V级)放大到A/D转换所需范围低通滤波器——抑制干扰,提高信噪比多路开关——实现用一个A/D转换器处理多个现场参数的切换装置采样—保持电路——用于提高转换精度和消除转换时间的不确定性§8.2D/A转换(digital-analogconversion)一.D/A电路·数模转换器通常由四个部分组成,即权电阻网络、模拟开关、基准电源、运算放大器·数字量输入D/A转换器后,模拟开关根据二进制数的“1”或“0”状态来控制接基准电源或接地,权电阻网络通过模拟开关连接到基准电源上或接地转换成相应的电流输出,运算放大器则对各电流输出分量按权求和而输出模拟电压·集成的DAC器件主要用电流模拟开关电流相加型,不管哪种形式都需要一个数字变电流的电路D/I,然后将I变为电压,若I正比D,则V正比D1.权电阻网络D/A转换器(P313,F11-3)Ri=2n-1-i·R(n为位数)iiREIi1n0ii1n0iiREbIIbi=1,接-Ebi=0,接地运算放大器的两个基本特点是:①放大倍数很大,反相输入端电平接近于“地”(即虚地)②输入阻抗很高,输入电流接近0,有If=I输出电压为VOUT=If·Rf=I·RfN2ERR2b2ERRRE22bRR2EbRREbRRIV1nf1n0iii1nf1n0i1niif1n0ii1nif1n0iiifffOUT其中二进制数1n0iii2bN即是输入的二进制数字量即一个数字量N经D/A转换后可得到与N成正比的模拟量VOUT·电路缺点:位数越多,权电阻的阻值越多,精度要求很高2.T型R-2R电阻网络D/A转换器(P314,F11-4)运算放大器反相输入端相当于地,故不管开关在哪个位置,各电阻上电流都不变T型网络特点是,对其中任意一个节点,向右看去电阻都为2R,所以2REI3,R2EI21I2432R2EI21I1421,R2EI21I0410,即R2EIini总电流(基准电流)不变,为1n0iiII对于Rf上的电流If为NR2E2bR2ER2EbIbIn1n0i1n0iiinini1n0iiifENR2RIRVnfffOUT即数字量N经D/A转换后可得到与N成正比的模拟量调整Rf可得输出模拟量的范围,通常取Rf=R,有NE21VnOUT·电路优点:电阻只有两种阻值,容易生产二.DAC0832芯片8位数模转换芯片,20脚,可直接与系统总线连接1.组成(P316,F11-5)由8位输入寄存器、8位DAC寄存器和8位D/A转换器组成,可进行两次缓冲(LE=1时Q输出随D输入,LE=0时D端被锁存)8位D/A转换器即上述R-2R的T型电流型开关(还未经变换成电压)①特点输入8位二进制码数字量可选用二级缓冲型、单级缓冲型、直通型三种工作方式电流稳定时间为1s,线性度可调增益温度补偿0.002%FS/C(FS——FullScale满刻度)可与所有8位微处理机直接相连,所有电平与TTL兼容单一电源5~15V,功耗20mW②引脚D0~D7:8位输入数字信号,来自系统输入不足8位时,未用端应接地,否则悬空DAC识别为“1”CS:片选信号,输入低电平有效CS、ILE、WR1同时有效时,输入数字锁存到8位输入寄存器中ILE:允许输入锁存,与CS、WR1同时控制输入寄存器WR1:写信号1,对应输入寄存器WR2:写信号2,对应DAC寄存器XFER:传输控制信号,输入低电平有效XFER与WR2同时有效时,将输入寄存器中的数字再传送到8位D/A寄存器中锁存起来Iout1:输出电流1,当DAC寄存器全“1”最大,全“0”为0Iout2:输出电流2,与Iout1相加为一常数(总电流不变)Rfb:反馈电阻,作为直流运放反馈电阻VREF:参考电压输入,作为基准电压,要求高精度、高稳定性可在+10V~-10V范围选择Vcc:电源电压(数字量电源),在+5V~+15V选择,Vcc=15V状态最佳AGND:模拟量地DGND:数字量地一般情况下两地端相连,高要求场合应分开,两地分开可避免出现较大的接地电流和感应噪声2.DAC0832的三种工作方式①双缓冲工作方式(P318,F11-6)利用两个地址码进行二次输出完成转换REFREFfbOUTVRR256NV,N为二进制数字量如:MOVAL,DATAOUT20H,ALOUT21H,ALOUT信号使LE=1,Q=DOUT信号过后LE=0,D输入端被锁存②单缓冲工作方式i.一个寄存器直通,另一个受控如:XFER和WR2同时接地,DAC寄存器直通MOVAL,DATAOUT20H,AL又如:CS和WR1同时接地,输入寄存器直通MOVAL,DATAOUT21H,ALii.两个寄存器同时选通(合用一个地址)及锁存,即CS和XFER同时接地址端,WR1和WR2同时接CPU的WR③直通型工作方式将CS、WR1、WR2和XFER同时接地,ILE接高电平成直通方式,D/A转换器的输出随输入变化常用于连续反馈控制系统中三CPU与不带输入寄存器的D/A芯片的连接1.8位D/A转换器可用8212、74LS273、8255A等作锁存器2.10位D/A转换器对于大于8位的D/A转换器与8位数据总线的系统连接,应使用两级缓冲设上次转换的数据为0011110000下次要转换的数据为0100001011,在单级缓冲下,送出低8位时,与上次的高2位组成0000001011,D/A转换器瞬间输出低电压等高2位送出后才得0100001011使用两级缓冲可消除毛刺现象每级需用2个锁存器,在第一级分二次送低8位和高2位,第二级再一次送给D/A器件,所以10位D/A转换要执行三次输出命令MOVAL,DATAL;数据低8位OUT54H,ALMOVAL,DATAH;数据高2位OUT55H,ALOUT56H,AL;送往第二级进行D/A转换(该指令并不是把AL送56H,而是打开第二级缓冲器去D/A转换)四.D/A转换器的主要技术指标1.分辨率:通常用数字量的位数表示,如:分辨率为10位表示它可以对满量程的102412110增量作出反应也可定义为转换的最小电压与最大电压之比,如121n2.转换时间:数字量输入到完成转换输出达到稳定值所需时间常为几十纳秒到几微秒3.转换线性:数字量与模拟量按比例关系变化的程度,通常给出在一定温度下的最大非线性度,一般为0.01~0.03%4.输出电平:大部分为电压输出,一般5~10V,高压输出型为24~30V。部分为电流输出,低者20mA,高者可达3A(高速度在10MHz以上,高精度在16位以上)五.D/A应用举例用DAC0832接成单缓冲型工作方式(或直通方式加8255A作缓冲器),设口地址为90H若用8255A作缓冲器,则应初始化8255A1.方波发生器START:MOVAL,10H;方波低电平OUT90H,AL;延时CALLDELAYMOVAL,0A0H;方波高电平OUT90H,ALCALLDELAYJMPSTART2.锯齿波(正向)START:INCALOUT90H,ALJMPSTART它实际上是很密的阶梯来形成斜坡的,若在OUT指令后加入延时,可改变锯齿波斜率若把INCAL改成DECAL则可产生负向锯齿波·不满量程锯齿波:设满量程为10V,要求产生的锯齿波上限为8.5V,下限为1.5VDAC0832为8位D/A,每一数字增量的电压变化量为:V039.010V2561(最大输出为:9.96V10V256255)上限数字量:8.5V0.039V218=DAH下限数字量:1.5V0.039V38=26HSTART:MOVAL,26HREPT:OUT90H,AL8.5VINCALNOPNOP1.5VNOPCMPAL,0DBHJNZREPTJMPSTART3.三角波XORAL,ALUP:OUT90H,ALINCALJNZUPDOWN:DECALOUT90H,ALJNZDOWNJMPUP它是正向锯齿波和负向锯齿波组合起来的,但正向锯齿波部分不能写成例2形式,即UP:INCALOUT90H,ALJNZUP这样在AL=FFH后再加1会输出一个0电压,使波顶出现毛刺§8.3A/D转换器(A/Dconvertor)A/D转换通常采用四种方式1.计数比较式:简单,速度慢用计数器产生一个数字量经D/A转换为电压V0,然后和输入的模拟量电压比较,计数器数字量不断增加使V0与VIN相等,这时的数值即为与VIN对应的数字量2.双积分式(双斜型):精度高,抗干扰,噪声小,但速度慢积分器对输入模拟量进行固定时间积分,然后转换为对标准电压进行反向积分,可见,对大的VIN,反向积分时间就长,脉冲数就多得到的数字量就大3.逐位逼近式:转换速度较快,位数越多,精度越高(下面详细介绍)4.并行比较式:速度最快,但成本按位数增加成指数上升输入的模拟量电压与电阻分压器上的各个电压比较,若输入电压高,比较器出1,反之出0,各比较器输出送至寄存器,经编码电路得数字量,转换时间能达几十纳秒一.逐位逼近式A/D转换器(P321,F11-9)办法:从高位到低位把逐次设定在逐位逼近寄存器SAR中的试探值(数字量)经D/A转换成模拟电压送到比较器与真实的模拟量输入电压进行比较,是一种对半搜索的办法,即:先设SAR中最高位为1,其余位为0,即10000000,经D/A转换得V0,送比较器与VIN比较,若VINV0说明试探值太大该位应改为0,然后设下一位为1,即01000000若VINV0说明试探值合适该位应保留,然后设下一位为1,即11000000如此直到各位全部比较结束即得到与VIN对应的数字量,完成A/D转换例如,在8位情况下,转换一个相当于113的模拟电压试探值比较结果10000000(128D)113取D7=001000000(64D)113取D6=101100000(96D)113取D5=101110000(112D)113取D4=101111000(120D)113取D3=001110100(116D)113取D2=001110010(114D)113取D1=001110001(113D)=113取D0=1比较8次得转换结果01110001,对n位A/D转换只要比较n次即可完成对参考电压为10V的8位A/D转换器,所能分辨的电压增量为0.039V210V8,则对应数字113输入的模拟量电压是4.4V4.414VV2101138二.用软件实现逐位逼近式A/D转换由输入口、输出口、D/A转换器、比较器与CPU连接构成软件实现A/D转换必需的线路,比较器输出“0”时VINV0,输出“1”时VINV0.VIN当作一个关键字,用对半搜索(逐位逼近)的办法逼近它,也可用计数式逼近它,F结果送输入口的D0位START:XORAX,AX;AX清0MOVBL,80H;初值10000000BMOVCX,8;AGAIN:ADDAL,BL;计算试探值MOVBH,AL;保留试探值OUTPORT1,AL;送D/A转换INAL,PORT2;读比较状态ANDAL,01;取状态位JZNEXT;若D0=0则V0小,该位保留MOVAL,BL;D0=1,V0大NOTAL;不保留该位ANDBH,ALNEXT:RORBL,1;右移得下一试探位MOVAL,BHLOOPAGAINHLT软件A/D成本低,但速度慢,仅适用转换速度要求不高的场合三.ADC0809芯片8位A/D,28脚