在单片机检测和控制系统中,许多被测量往往是模拟量。它们经过预处理(放大、I/V转换等)之后,在进入单片机之前必须经过A/D转换变成数字量。A/D转换接口是模拟通道中的主要环节。A/D转换接口技术的主要内容是合理选择A/D转换器和其他外围器件,实现与单片机的正确连接以及编制转换程序。
A/D转换器是一种能把输入模拟电压或电流变成与其成正比的数字量的电路芯片,即能把被控对象的各种模拟信息变成计算机可以识别的数字信息。A/D转换器种类很多,从原理上通常可分为以下四种:计数器式A/D转换器,双积分式A/D转换器,逐次逼近式A/D转换器,并行A/D转换器。
计数器式A/D转换器结构很简单,但转换速度很慢,所以很少采用。双积分式A/D转换器抗干扰能力强,转换精度也很高,但速度不够理想,常用于数字式测量仪表中。计算机中广泛采用逐次逼近式A/D转换器作为接口电路,它的结构不太复杂,转换速度也高。并行A/D转换器的转换速度最快,但因结构复杂而造价较高,故只用于那些转换速度极高的场合。
1.概述
(1)A/D转换器的技术指标
1)量化误差与分辨率。A/D转换器的分辨率表示输出数字量变化一个相邻数码所需输入模拟电压的变化量,习惯上以输出二进制位数或满量程与2 n之比(其中n为A/D转换器的位数)表示。例如A/D转换器AD574A的分辨率为12位,即该转换器的输出数据可以用212个二进制数进行量化,其分辨率为1LSB(1LSB=VFS/2 n)。如果用百分数来表示分辨率,其分辨率为:
一个满量程10V的12位ADC能够分辨输入电压变化的最小值为2.4mV。
量化误差和分辨率是统一的,量化误差是由于有限数字对模拟数值进行离散取值(量化)而引起的误差。因此量化误差理论上为一个单位分辨率,即±1/2LSB。提高分辨率可减少量化误差。
2)转换精度。A/D转换器转换精度反映了一个实际A/D转换器在量化值上与一个理想A/D转换器进行模/数转换的差值,由模拟误差和数字误差组成。模拟误差是比较器、解码网络中电阻值以及基准电压波动等引起的误差;数字误差主要包括丢失码误差和量化误差,丢失码误差属于非固定误差,由器件质量决定。
3)转换时间与转换速率。A/D转换器完成一次转换所需要的时间为A/D转换时间,是指从启动A/D转换器开始到获得相应数据所需时间(包括稳定时间)。通常,转换速率是转换时间的倒数,即每秒转换的次数。
(2)A/D转换器选择要点A/D转换是前向输入通道中的一个环节,但是并不是所有前向输入通道中都必须配备A/D转换器,只有模拟量输入通道,并且输入单片机接口不是频率量而是数字量时,才用到A/D转换器。另外,随着超大规模集成电路技术的发展,使A/D转换器的发展速度惊人,新型A/D转换器不断涌现。因此在确定前向输入通道结构方案后,如何选择使用A/D转换器,以满足应用系统的设计要求呢?下面介绍选择A/D转换器芯片的几个要点。
1)确定A/D转换器精度及分辨率。用户提出的测控精度要求是综合精度要求,它包括了传感器精度、信号调节电路精度和A/D转换精度及输出电路、伺服机构精度,而且还包括测控软件的精度。应将综合精度在各个环节上进行分配,以确定对A/D转换器的精度要求,据此确定A/D转换器的位数。通常A/D转换器的位数至少要比综合精度要求的最低分辨率高一位,而且应与其他环节所能达到的精度相适应。
2)确定A/D转换器的转换速率。通常根据被测信号的变化率及转换精度要求,确定A/D转换器的转换速率,以保证系统的实时性要求。用不同原理实现的转换器,其转换速率是不一样的,如积分型的、跟踪比较型的A/D转换器转换速率较慢,转换时间一般为几毫秒到几十毫秒,常用于温度、压力、流量等缓变参量的检测;计算机中广泛采用逐次逼近式A/D转换器为中速转换器,常用于工业多通道单片机测控系统等;并行A/D转换器的转换速度最快,故常用于实时瞬态记录等转换速度极高的场合。
3)确定环境参数。根据使用环境条件,确定A/D转换芯片要求的一些环境参数,如工作温度、功耗、可靠性等级等。
4)其他因素。注意考虑A/D转换器的成本、资源、是否是流行芯片等因素。
2.A/D转换器原理
模/数(A/D)转换电路的种类很多,如前所述。选择A/D转换器件,主要是从速度、精度和价格上考虑。下面,主要介绍一种典型A/D转换电路芯片与8051单片机的接口及程序设计方法。
逐次逼近法A/D转换器,在精度、速度和价格上都适中,是最常用的A/D转换器件。
逐次逼近法A/D转换器是一种速度快、精度较高的A/D转换器,它是通过最高位(DN-1)至最低位(D0)的逐次检测来逼近被转换的输入电压。一个N位的逐次逼近法A/D转换器的原理图如图10-4所示。
图10-4 逐欠逼近法A/D转换器原理图
这种A/D转换器是以D/A转换为基础,加上比较器、N位逐次逼近寄存器、置数控制逻辑电路以及时钟等组成,其转换原理如下:
在启动信号的控制下,置数控制逻辑电路置N位寄存器最高位(DN-1)为1,其余位清0,N位寄存器的内容经D/A转换后得到整个过程的一半的模拟电压VN,与输入电压Vx比较。若Vx≥VN时,则保留DN-1=1;若Vx<VN时,则DN-1位清0。然后控制逻辑使寄存器下一位(DN-2)为1,与上次的结果一起经D/A转换后与Vx比较,重复上述过程,直至判别出D0位取1还是0为止,此时DONE发出信号表示转换结束。这样经过N次比较后,N位寄存器的状态就是转换后的数字量数据,经输出缓冲器读出。整个转换过程是经过搜索—比较—逼近来实现的,其转换速度由时钟频率决定,一般在几微秒到上百微秒之间。例如ADC0809,当时钟频率为640kHz时,转换时间为64μs。
3.A/D转换器典型芯片
A/D转换器也有两大类:一类是在电子线路中使用,不带使能控制端;另一类带有使能控制端,可和单片机直接接口。ADC0809芯片是一种8位逐次逼近式A/D转换器芯片,可以和单片机直接接口。
(1)内部结构ADC0809芯片由8路模拟开关、地址锁存与译码器、比较器、256电阻阶梯、树状开关、逐次逼近式寄存器SAR、控制电路和三态输出锁存器等组成,如图10-5所示。
1)8路模拟开关及地址锁存与译码器。8路模拟开关用于IN0~IN7上8路模拟电压的分时输入。地址锁存和译码器在ALE信号控制下可以锁存ADDA、ADDB和ADDC上地址信息,经译码后控制IN0~IN7上某一路模拟电压送入比较器即实现通道选择。例如:当ADDA、ADDB和ADDC均为低电平0以及ALE为高电平时,地址锁存和译码器输出使IN0上模拟电压送到比较器输入端VIN。
2)256电阻阶梯和树状开关。下面以二位电阻阶梯和树状开关为例说明256电阻阶梯和树状开关的作用原理如图10-6所示。图中,四个分压电阻使A、B、C和D四点分压成2.5V、1.5V、0.5V和0V。逐次逼近寄存器SAR,高位D1控制左边两只树状电子开关,低位D0控制右边四只树状开关。各开关旁的0和1表示树状开关闭合条件,由D1、D0状态决定。例如D1=1,则上面开关闭合而下面开关断开,D1=0时的情况正好与此相反。树状开关输出电压VST和D1、D0关系见表10-2。
图10-5 ADC0809内部结构框图
图10-6 二位电阻阶梯和树状开关
表10-2 VST和D1、D0的关系表
对于8位A/D转换器ADC0809,SAR为8位,有28=256电阻阶梯、形成256个标准电压供给树状开关使用,树状开关输出电压VST送给比较器输入端。
3)逐次逼近寄存器和比较器。逐次逼近寄存器SAR在A/D转换过程中存放暂态数字量,在A/D转换完成后存放数字量,并可送到“三态输出锁存器”。
A/D转换前,SAR为0。A/D转换开始时,控制电路使SAR最高位为1,并控制树状开关的闭合和断开,产生树状开关输出电压VST送给比较器。比较器对输入模拟电压VIN和VST进行比较。若VIN<VST,则比较器输出逻辑0而使SAR最高位由1变为0;若VIN≥VST,则比较器输出使SAR最高位保留1。此后,控制电路保持最高位不变,依次对次高位、次次高位……最低位重复上述过程,就可在SAR中得到A/D转换完成的的数字量。
4)三态输出锁存器和控制电路。三态输出锁存器用于锁存A/D转换完成后的数字量。CPU使OE引脚变为高电平就可以从“三态输出锁存器”取走A/D转换的数字量。控制电路用于控制ADC0809芯片的操作过程。
(2)引脚功能 ADC0809芯片为28条引脚双列直插式封装,如图10-7所示。(www.xing528.com)
1)IN0~IN7(8条)。IN0~IN7为8路模拟电压输入引脚,用于输入被转换的模拟电压。对输入量的要求是单极性、电压范围0~5V,如果信号过小还需进行放大处理。另外,如果输入的模拟量变化较快,即模拟量信号保持时间小于转换时间,需在转换前增加采样保持电路。
2)地址输入和地址锁存控制引脚(4条)。ALE为地址锁存允许信号输入引脚,高电平有效。当ALE地址线为高电平时,ADDA、ADDB和ADDC 3条地址线上地址信号得以锁存,经译码后控制8路模拟通道的选择。ADDA、ADDB和ADDC为地址输入引脚,用于选择IN0~IN7上的一种模拟电压送给比较器进行A/D转换。ADDA、ADDB和ADDC对IN0~IN7的选择见表10-3。
图10-7 ADC 0809芯片引脚图
表10-3 被选模拟量路数和地址的关系
3)数字量输出及控制引脚(11条)。“START”为启动脉冲输入引脚,该引脚上正脉冲由CPU送来,宽度应大于100ns,上升沿所有内部寄存器清零,下降沿启动ADC工作,在A/D转换期间,START引脚应保持低电平。EOC为转换结束输出引脚,该引脚上高电平表示A/D转换已结束,数字量已锁入“三态输出锁存器”,因此该引脚在使用中既可作为查询的状态标志,又可作为中断请求信号。2-1~2-8为数字量输出引脚,为三态缓冲输出,可直接和单片机的数据线相连,2-1为最高位。OE“输出允许”引脚,高电平时能使2-1~2-8引脚上输出转换后的数字量,低电平时,输出引脚为高阻态。
4)电源线及其他引脚(5条)。“CLOCK”为时钟输入引脚,用于为ADC0809提供逐次比较所需640kHz时钟脉冲序列。VCC为+5V电源输入引脚,GND为地线。VREF(+)和VREF(-)为参考电压输入引脚,用于给电阻阶梯网络供标准电压。VREF(+)常和VCC相连,VREF(-)常接地。
(3)MCS-51系列单片机与ADC0809芯片的接口MCS-51系列单片机和ADC接口必须弄清和处理好3个问题:要给START线送一个100ns宽的启动正脉冲;获取EOC线上的状态信息,因为它是A/D转换的结束标志;要给“三态输出锁存器”分配一个端口地址,也就是给OE线上送一个地址译码器输出信号。
MCS-51系列单片机和ADC接口通常可以采用定时、查询和中断三种方式。
1)定时传送方式。对于每种A/D转换器,转换时间作为一项技术指标,是已知的和固定的。如ADC0809的转换时间为128μs,相当于MCS-51系列单片机(fosc=6MHz)64个机器周期,可以设计一延时子程序,当启动转换后,CPU调用该延时子程序或用定时器定时,延时时间或定时时间稍大于A/D转换所需时间。等时间一到,转换已经完成,就可以从“三态输出锁存器”读取数据。这种方法电路连接简单,但CPU费时较多。
2)查询方式。采用查询法就是将转换结束信号接到I/O接口的某一位,或经过三态门接到单片机数据总线上。A/D转换开始之后,CPU查询转换结束信号,即查询EOC引脚的状态:若为低电平,表示A/D转换正在进行,则MCS-51系列单片机应当继续查询;若查询到EOC变为高电平,则给OE线送一个高电平,以便从2-1~2-8线上提取A/D转换后的数字量。采用查询方法占用CPU时间,但设计程序比较简单,故也常用这种方法。
3)中断方式。采用中断方式传送数据时,将转换结束信号接到单片机的外中断源上,当转换结束时申请中断,CPU响应中断后,通过执行中断服务程序,使OE引脚变高电平,以提取A/D转换后的数字量。采用中断方法的优点是在A/D转换过程中不占用CPU的时间,且实时性强。
不管哪种方式,只要一旦确认转换完成,就可以通过指令MOVX进行数据采集。首先送出口地址并以作为选通信号,使OE引脚有效,把转换的数据送到数据总线上,传入单片机。
如前所述,ADC0809内部有一个8位“三态输出锁存器”可以锁存A/D转换后的数字量,可以直接和MCS-51系列单片机接口,图10-8所示是AT89S51和ADC0809的接口。由图可见,START和ALE互连可使ADC0809在接收模拟量输入通道地址时启动工作。START启动信号由AT89S51的和译码器输出端F0H经或门M2产生。平时,START因译码器输出F0H上高电平而封锁。当AT89S51执行如下程序时,由AT89S51 WR和译码器输出端F0H经或门M2产生START启动信号,START上正脉冲启动ADC0809工作,随后P0接口送出的07H,通过ADDA、ADDB和ADDC引脚,以选中IN7路模拟电压送入比较器。显然,此时AT89S51是把ADDA、ADDB和ADDC上地址作为数据来处理的。
图10-8 AT89S51和ADC0809的接口
从图10-8中还可看到:EOC线经过反相器和AT89S51的线相连,这就说明AT89S51是采用中断方式来和ADC0809传送A/D转换后的数字量的。为了给OE线分配一个地址,图中把AT89S51的和译码器输出F0H经或门M1和OE相连。平时,因译码器输出F0H为高电平而使OE处于低电平封锁状态。在响应中断后,AT89S51执行中断服务程序中如下两条指令就可以使OE变为高电平,从而打开三态输出锁存器,让CPU提取A/D转换后的数字量。
图10-9 ADC0809和AT89S51的接口工作方式
例如:分别采用不同方式对8路模拟信号轮流采样一次,并依次把转换后的数据存放到数据存储区。
ADC0809与AT89S51接口工作方式如图10-9所示。
EOC:开始转换时为低电平,当转换结束时为高电平。
查询方式:查询EOC引脚,接P1.0。
中断方式:EOC经反相器接AT89S51的外部中断引脚。
ALE=START=+
OE=+
端口地址确定应使P2.7=A15=0,A0、A1、A2给出被选择的模拟通道地址。
1)定时传送方式参考程序如下:
2)查询方式参考程序如下:
3)中断方式参考程序如下:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。