AD转换实验

AD转换

1.基本概念

什么是AD转换?

  • A(A,analog,模拟的,D,digital,数字的)
  • 现实世界是模拟的,连续分布的,无法被分成有限份;
  • 计算机世界是数字的,离散分布的,是可以被分成有限份的;
  • AD转换就是把一个物理量从模拟的转换成数字的。即模拟信号到数字信号的转换

    在仪器仪表系统中,常常需要将检测到的连续变化的模拟量如:温度、压力、流量、速度、光强等转变成离散的数字量,才能输入到计算机中进行处理。这些模拟量经过传感器转变成电信号(一般为电压信号),经过放大器放大后,就需要经过一定的处理变成数字量。实现模拟到数字量转变的设备通常称为模数转换器(ADC),简称A/D

  • ADC主要应用在(低速)数字万用表、电子称等;(中速)工业控制、实验设备等;(高速)数字通信、导弹测距等;(超高速)数字音频、视频信号变化、气象数据分析处理。
  • ADC输入的是模拟量,输出的是数字量
  • ADC输出的数字量可视为输入电压(电流)与基准电压(电流)相比所占的比例。
  • 输出和输入关系可表示如下:


    在模拟转换器ADC中,由于模拟信号是时间上和数值上均为连续的物理量,而数字信号是时间上和数值上均为离散的物理量

    要进行模数转换时,先要按一定的时间间隔对模拟电压(或电流)进行采样,室其变为时间上离散的信号,然后将采样的电压(或电流)值保持,并同时对采样进行量化和编码,如此经量化、编码后的信号就成为了时间上和幅值上都离散的数值信号了。

通常情况下,A/D转换一般要经过取样、保持、量化及编码4个过程。

取样

  • 取样是将随时间连续变化的模拟量转换为时间离散的模拟量。取样过程示意图如下所示。图(a)为取样电路结构,其中,传输门受取样信号S(t)控制,在S(t)的脉宽τ期间,传输门导通,输出信号vO(t)为输入信号v1,而在(Ts-τ)期间,传输门关闭,输出信号vO(t)=0。电路中各信号波形如图(b)所示。

取样电路结构(a)

取样电路中的信号波形(b)

通过分析可以看到,取样信号S(t)的频率愈高,所取得信号经低通滤波器后愈能真实地复现输入信号。但带来的问题是数据量增大,为保证有合适的取样频率,它必须满足取样定理。

  • 取样定理:设取样信号S(t)的频率为fs,输入模拟信号v1(t)的最高频率分量的频率为fimax,则fs与fimax必须满足下面的关系\(f_s≥2f_{imax}\),工程上一般取\(f_s=(3-5)f_{imax}\)
  • 将取样电路每次取得的模拟信号转换为数字信号都需要一定时间,为了给后续的量化编码过程提供一个稳定值,每次取得的模拟信号必须通过保持电路保持一段时间。
  • 取样与保持过程往往是通过取样-保持电路同时完成的。取样-保持电路的原理图及输出波形如图所示。

取样-保持电路原理图(a)

取样-保持电路波形图(b)
  • 电路由输入放大器A1、输出放大器A2、保持电容CH和开关驱动电路组成。电路中要求A1具有很高的输入阻抗,以减少对输入信号源的影响。为使保持阶段CH上所存电荷不易泄放,A2也应具有较高输入阻抗,A2还应具有低的输出阻抗,这样可以提高电路的带负载能力。一般还要求电路中AV1·AV2=1。

  • 现结合图(a)来分析取样-保持电路的工作原理。

    • 在t=t0时,开关S闭合,电容被迅速充电,由于AV1·AV2=1,因此v0=vI,在t0~t1时间间隔内是取样阶段。
    • 在t=t1时刻S断开。若A2的输入阻抗为无穷大、S为理想开关,这样可认为电容CH没有放电回路,其两端电压保持为v0不变,图(b)中t1到t2的平坦段,就是保持阶段。
  • 取样-保持电路以由多种型号的单片集成电路产品。如双极型工艺的有AD585、AD684;混合型工艺的有AD1154、SHC76等。


量化与编码

  • 数字信号不仅在时间上是离散的,而且在幅值上也是不连续的。任何一个数字量的大小只能是某个规定的最小数量单位的整数倍。为将模拟信号转换为数字量,在A/D转换过程中,还必须将取样-保持电路的输出电压,按某种近似方式归化到相应的离散电平上,这一转化过程称为数值量化,简称量化。量化后的数值最后还需通过编码过程用一个代码表示出来。经编码后得到的代码就是A/D转换器输出的数字量。

  • 量化过程中所取最小数量单位称为量化单位,用△表示。它是数字信号最低位为1时所对应的模拟量,即1LSB。

  • 在量化过程中,由于取样电压不一定能被△整除,所以量化前后不可避免地存在误差,此误差称之为量化误差,用ε表示。量化误差属原理误差,它是无法消除的。A/D 转换器的位数越多,各离散电平之间的差值越小,量化误差越小。

  • 量化过程常采用两种近似量化方式:只舍不入量化方式四舍五入的量化方式

1.只舍不入量化方式

    以3位A/D转换器为例,设输入信号v1的变化范围为0~8V,采用只舍不入量化方式时,取△=1V,量化中不足量化单位部分舍弃,如数值在0~1V之间的模拟电压都当作0△,用二进制数000表示,而数值在1~2V之间的模拟电压都当作1△,用二进制数001表示……这种量化方式的最大误差为△。

2.四舍五入量化方式

    如采用四舍五入量化方式,则取量化单位△=8V/15,量化过程将不足半个量化单位部分舍弃,对于等于或大于半个量化单位部分按一个量化单位处理。它将数值在0~8V/15之间的模拟电压都当作0△对待,用二进制000表示,而数值在8V/15~24V/15之间的模拟电压均当作1△,用二进制数001表示等。

3.比较

    采用前一种只舍不入量化方式最大量化误差│εmax│=1LSB,而采用后一种有舍有入量化方式│εmax│=1LSB/2,后者量化误差比前者小,故为多数A/D转换器所采用。

2.A/D转换器的基本原理和分类

   根据A/D转换器的原理可将A/D转换器分成两大类。一类是直接型A/D转换器将输入的电压信号直接转换成数字代码,不经过中间任何变量;另一类是间接型A/D转换器将输入的电压转变成某种中间变量(时间、频率、脉冲宽度等),然后再将这个中间量变成数字代码输出


分类

   尽管A/D转换器的种类很多,但目前广泛应用的主要有三种类型:

  • 逐次逼近式A/D转换器
  • 双积分式A/D转换器
  • V/F(电压-频率)变换式A/D转换器
  • 另外,近些年有一种新型的Σ-Δ型A/D转换器异军突起,在仪器中得到了广泛的应用。

   逐次逼近式(SAR)A/D转换器(SAR)的基本原理是:将待转换的模拟输入信号与一个推测信号进行比较,根据二者大小决定增大还是减小输入信号,以便向模拟输入信号逼进。推测信号由D/A转换器的输出获得,当二者相等时,向D/A转换器输入的数字信号就对应的时模拟输入量的数字量。这种A/D转换器一般速度很快,但精度一般不高。常用的有ADC0801、ADC0802、AD570等。

  双积分式A/D转换器的基本原理是:先对输入模拟电压进行固定时间的积分,然后转为对标准电压的反相积分,直至积分输入返回初始值,这两个积分时间的长短正比于二者的大小,进而可以得出对应模拟电压的数字量。这种A/D转换器的转换速度较慢,但精度较高。由双积分式发展为四重积分、五重积分等多种方式,在保证转换精度的前提下提高了转换速度。常用的有ICL7135、ICL7109等。

   Σ-Δ型AD由积分器、比较器、1位D/A转换器和数字滤波器等组成。原理上近似于积分型,将输入电压转换成时间(脉冲宽度)信号,用数字滤波器处理后得到数字值。电路的数字部分基本上容易单片化,因此容易做到高分辨率。主要用于音频和测量。这种转换器的转换精度极高,达到16到24位的转换精度,价格低廉,弱点是转换速度比较慢,比较适合用于对检测精度要求很高但对速度要求不是太高的检验设备。常用的有AD7705、AD7714等。

   V/F转换器是把电压信号转换成频率信号,由良好的精度和线性,而且电路简单,对环境适应能力强,价格低廉。适用于非快速的远距离信号的A/D转换过程。常用的有LM311、AD650等。


51单片机读取转换结果的方式:延时方式查询方式中断方式

  1. 查询法

采用查询法就是将转换结束信号接到I/O接口的某一位,或经过三态门接到单片机数据总线上。A/D转换开始之后,CPU就查询转换结束信号,即查询EOC引脚的状态:若它为低电平,表示A/D转换正在进行,则MCS-51应当继续查询;若查询到EOC变为高电平,则给OE线送一个高电平,以便从线上提取A/D转换后的数字量。

  • 优点:接口电路设计简单。

  • 缺点:A/D转换期间独占CPU,致使CPU运行效率降低。

  1. 延时法

对于每种A/D转换器,转换时间作为一项技术指标,是已知的和固定的。如ADC0809的转换时间为128us。可以设计一个延时子程序,当启动转换后,CPU调用该延时子程序或用定时器定时,延时时间或定时时间稍大于A/D转换所需时间。等时间一到,转换已经完成,就可以从“三态输出锁存器”读取数据。

  • 优点:接口电路设计比查询法简单,不必读取EOC的状态。

  • 缺点:A/D转换期间独占CPU,致使CPU运行效率降低;另外还必须知道A/D转换器的转换时间。

  1. 中断法

采用中断方式传送数据时,将转换结束信号接到单片机的中断申请端,当转换结束时申请中断,CPU响应中断后,通过执行中断服务程序,使OE引脚变高电平,以提取A/D转换后的数字量。

  • 优点:A/D转换期间CPU可以处理其它的程序,提高CPU的运行效率。

  • 缺点:接口电路复杂。

3.ad转换的步骤

  • 对于 ALE 信号是上升沿有效,锁存地址并选中相应通道。clk:时钟信号,可由单片机ale信号分频得到。

  • 而对于ST 信号来说是下将沿有效有效,然后开始转换。A/D转换期间ST为低电平。

  • 此时,我们还需要知道 EOC 信号,也就是高电平结束,输出高电平,表示转换结束。

  • 然后对于 OE 信号 来说是高电平允许输出有效,允许输出转换结束。电压输出DAC。

注意事项

  • 不同信号作用不同。
  • 不同信号转换结束代表不同。

A/D转换器主要参数指标

  1. 分辨率
  • 分辨率为A/D转换器对输入信号的分辨能力,其计算公式如下,其中n为A/D转换器的位数:
    $分辨率=\frac{1}{2^n} $

  • 当A/D转换器支持输入负电压时,第一位代表正负,则分辨率的计算公式为:
    $分辨率=\frac{1}{2^{n-1}} $

  • 可以求得模拟电压的最小值如下, 满刻度为输入的模拟电压最大值:
    \(变化最小值=满刻度×分辨率\)

2.转换误差

  • 转换误差表示A/D转换器实际输出的数字量与理论输出量的区别。分为量化误差、偏移误差和满刻度误差。其中偏移误差和满刻度误差合称为非线性误差。

3.转换精度

  • 转换精度为实际模拟量输入与理论模拟输入之差的最大值。对于A/D转换器而言,可以在每个阶梯的水平中点进行测量,它包括了所有误差。

4.转换时间

  • 即完成一次A/D转换所需要的时间(包括稳定时间)。而转换时间的倒数为转换速率,即每秒转换的次数。

4.ADC0809工作流程

  • ADDA、ADDB、ADDC 输入的通道地址在 ALE 有效时被锁存,经地址译码器译码从 8 路模拟通道中选通一路。
  • 启动信号 START(高脉冲)的上升沿使逐次逼近寄存器复位,下降沿启动 A/D 转换, 并使 EOC 信号在 START 的下降沿到来 10μs 后变为无效的低电平,这要求查询程序待 EOC 无效后再开始查询。
  • 当转换结束时,转换结果送入到输出三态锁存器中,并使 EOC 信号为高电平。通知 CPU 已转换结束。
  • 当 CPU 执行一条读数据指令后,使 OE 为高电平,则从输出端 D0~D7 读出数据。

5.本次实验

一.实验要求

  • 利用实验板上的ADC0809做A/D转换器,利用实验板上的电位器W1提供模拟量输入。编制程序,将模拟量转换成二进制数字量,用发光二极管显示。

二.实验目的

  1. 掌握A/D转换与单片机的接口方法。

  2. 了解A/D芯片ADC0809转换性能及编程。

  3. 通过实验了解单片机如何进行数据采集。

三.实验电路及连线

  1. 连线:将P1.0 ~ P1.7连至L0~L7上:将 ADCO809旁的/EOC连至 P3.3;把 ADCO809 的0通道 IN3 接至电位器模拟电压产生区 Vout插孔(O ~ 5V);ADCO809的时钟 CLK_0809 插孔与固定脉冲输出端 500KHz 相连;ADC 0809 的片选端CS_0809连至系统译码器输出端YO。
  2. 启动Keil uvision 2,建立工程,编辑、保存源程序(.ASM),并将源程序添加到工程。方法请参照实验一;
  3. 按照实验一的方法设置工程属性;
  4. 点击Keil uvision 2主窗口中的开始调试工具栏按钮版将目标程序下载到实验箱中的仿真机;
  5. 点击Keil uvision 2主窗口中的运行程序工具栏按钮运行程序;
  6. 调节电位器旋钮,以改变电位器输出的模拟电压值。用万用表测量电位器的输出电压;
  7. 根据L0~L7的亮灭情况,将其转换成十六进制数,即为电位器输出的模拟电压所对应的数字量;
  8. 观察并记录实验结果:电压值与其对应的数字量。

实验说明

  • ADC0809是八位逐次逼近法A/D转换器,每采集一次一般需100us。中断方式下,A/D转换结束后会自动产生EOC信号,经一级74LS14反向后与8031的INT0相接。本实验采取了中断处理来正确读取A/D转换的结果

原理利用实验系统上的ADC0809作为A/D转换器,实验系统的电位器提供模拟量输入,编制程序,将模拟量转换成数字量并显示

	ORG 0000H
	LJMP MAIN
	ORG 0013H
	LJMP INT1P
	ORG 0040H
MAIN:	MOV SP,#50H	;设置堆栈指针
	MOV IE,#84H 	;允许外接中断1
	SETB IT1	;设置外中断1的触发方式为下降沿有效
	MOV P1,#00	;关闭所有LED
	MOV A,#03H	;使用ADC0809的通道3进行转换
	MOV DPTR,#8003H
	MOVX @DPTR,A	;启动第一次转换
DISP:	MOV P1,30H	;将转换结果通过P1口输出,使用八个LED显示转换结果
	SJMP DISP		;外中断1服务子程序
INT1P:	MOV DPTR,#8003H 	;读取转换结果
	MOVX A,@DPTR
	MOV 30H,A		;将转换结果保存到内部RAM30H单元
	MOV A,#03H		;选择通道3
	MOV DPTR,#8003H	;启动下一次转换
	MOVX @DPTR,A	;中断返回
	RETI
	END

如何用查询的方式读取A/D转换结果?


posted @ 2021-11-19 22:09  subeiLY  阅读(2375)  评论(0编辑  收藏  举报