ADC总结
ADC简介
51 单片机系统内部运算时用的全部是数字量,即0 和1,因此对单片机系统而言,我们无法直接操作模拟量,必须将模拟量转换成数字量。所谓数字量,就是用一系列 0 和 1 组成的二进制代码表示某个信号大小的量。用数字量表示同一个模拟量时,数字位数可以多也可以少,位数越多则表示的精度越高,位数越少表示的精度就越低。
ADC(analog to digital converter)也称为模数转换器,是指一个将模拟信号转变为数字信号。单片机在采集模拟信号时,通常都需要在前端加上A/D芯片。
ADC的主要技术指标:
(1)分辨率
ADC 的分辨率是指对于允许范围内的模拟信号,它能输出离散数字信号值的个数。这些信号值通常用二进制数来存储,因此分辨率经常用比特作为单位,且这些离散值的个数是 2 的幂指数。
例如:12 位 ADC 的分辨率就是 2^12(4096),或者说分辨率为满刻度的1/(2^12)。一个 10V 满刻度的 12 位 ADC 能分辨输入电压变化最小值是:
10V×1/(2^12 )=2.4mV。
(2)转换误差
转换误差通常是以输出误差的最大值形式给出。它表示A/D 转换器实际输出的数字量和理论上的输出数字量之间的差别。常用最低有效位的倍数表示。例如给出相对误差≤±LSB/2,这就表明实际输出的数字量和理论上应得到的输出数字量之间的误差小于最低位的半个字。
(3)转换速率
ADC 的转换速率是能够重复进行数据转换的速度,即每秒转换的次数。而完成一次 A/D 转换所需的时间(包括稳定时间),则是转换速率的倒数。
ADC转换原理
在 A/D 转换器中,因为输入的模拟信号在时间上是连续的,而输出的数字信号代码是离散的,所以 A/D 转换器在进行转换时,必须在一系列选定的瞬间(时间坐标轴上的一些规定点上)对输入的模拟信号采样,然后再把这些采样值转换为数字量。因此,一般的 A/D 转换过程是通过采样保持、量化和编码这三个步骤完成的,即首先对输入的模拟电压信号采样,采样结束后进入保持时间,在这段时间内将采样的电压量转化为数字量,并按一定的编码形式给出转换结果,然后开始下一次采样。
量化:数字信号不仅在时间上是离散的,而且数值上的变化也不是连续的。这就是说,任何一个数字量的大小,都是以某个最小数量单位的整倍数来表示的。因此,在用数字量表示采样电压时,也必须把它化成这个最小数量单位的整倍数,这个转化过程就叫做量化。
编码:所规定的最小数量单位叫做量化单位,用△表示。显然,数字信号最低有效位中的 1 表示的数量大小,就等于△。把量化的数值用二进制代码表示,称为编码。这个二进制代码就是 A/D 转换的输出信号。
既然模拟电压是连续的,那么它就不一定能被△整除,因而不可避免地会引入误差,我们把这种误差称为量化误差。在把模拟信号划分为不同的量化等级时,用不同的划分方法可以得到不同的量化误差。
假定需要把 0至1V 之间的模拟电压信号转换成三位二进制代码,这时便可以取△=(1/8)V,并规定凡数值在 0至(1/8)V 之间的模拟电压都当做OX△看待,用二进制的 000 表示:凡数值在((1/8)至(2/8) V 之间的模拟电压都当做1X△看待,用二进制的 001 表示,……,不难得出,最大的量化误差可达△,即(1/8)V。
好困,艹
为了减少量化误差,通常取量化单位△=(2/15)V,并将 000 代码所对应模拟电压规定为 0(1/15) V,即0△/2。这时,最大量化误差将减少为△/2= (1/15) V。这个道理不难理解,因为现在把每个二进制代码所代表的模拟电压值规定为它所对应的模拟电压范围的中点,所以最大的量化误差自然就缩小为△/2 了。
ADC 内转换方式主要有 2 种:逐次逼近式 ADC 和双积分式ADC。
逐次逼近式ADC有点像数学的2分法,逐次逼近式AD转换器中有一个逐次逼近寄存器SAR,其数字量是由它产生的。SAR使用对分搜索法产生数字量,以8位数字量为例,SAR首先产生8位数字量的一半,即8’b1000000,试探模拟量Vi的大小。若Vo>Vi,清楚最高位;反之,则保留最高位。在最高位确认后,SAR又以对分搜索法确定次高位,即以7位数字量的一半8’by1000000(y由前面的过程已确认)试探模拟量Vi的大小。依此类推,直到确定了bit0为止,转换结束。
栗:输入模拟量是4.48V,量程为5V的转换器怎么知道它是4.48V呢?按照逐次逼近法:
1、第一次,DA转换器输出电压是2.5V,因为4.48>2.5V,所以判定数值在2.5至5之间;
2、第二次,取其中间值3.75V,因为4.48>3.75V,所以判定数值在3.75至5之间;
2、第三次,取其中间值4.375V,因为4.48>4.375V,所以判定数值在4.375至5之间;
……依此类推,确定到第8次时就很接近这个数值了。ADC有多少位就可以判定多少次,8位的ADC精度为1/(2^8)=1/256,约为0.004,精度已经足够日常使用了
XPT2046 芯片介绍
XPT2046 是一款 4 线制电阻式触摸屏控制器,内含12 位分辨率125KHz转换速率逐步逼近型 A/D 转换器。XPT2046 支持从 1.5V 到5.25V 的低电压I/O 接口。
内部自带 2.5V 参考电压,可以作为辅助输入、温度测量和电池监测之用,电池监测的电压范围可以从0V 到6V。
工作温度范围为-40℃~+85℃。与 ADS7846、TSC2046、AK4182A 完全兼容。
主要特性
①工作电压范围为 1.5V~5.25V
②支持 1.5V~5.25V 的数字 I/O 口
③内建 2.5V 参考电压源
④电源电压测量( 0V~6V)
⑤内建结温测量功能
⑥触摸压力测量
⑦采用 3 线制 SPI 通信接口
⑧具有自动省电功能
参考电压值直接决定 ADC 的输入范围,参考电压可以使用内部参考电压,也可以从外部直接输入 1V~VCC 范围内的参考电压(要求外部参考电压源输出阻抗低)。
X、Y、Z、VBAT、Temp 和AUX 模拟信号经过片内的控制寄存器选择后进入 ADC,ADC 可以配置为单端或差分模式。选择VBAT、Temp和 AUX 时应该配置为单端模式;作为触摸屏应用时,应该配置为差分模式,这可有效消除由于驱动开关的寄生电阻及外部的干扰带来的测量误差,提高转换精度。
PT2046 数据接口是串行接口,处理器和转换器之间的的通信需要 8 个时钟周期,可采用 SPI、SSI 和 Microwire 等同步串行接口。一次完整的转换需要 24 个串行同步时钟(DCLK)来完成。
前 8 个时钟用来通过 DIN 引脚输入控制字节。当转换器获取有关下一次转换的足够信息后,接着根据获得的信息设置输入多路选择器和参考源输入,并进入采样模式,如果需要,将启动触摸面板驱动器。3 个多时钟周期后,控制字节设置完成,转换器进入转换状态。这时,输入采样-保持器进入保持状态,触摸面板驱动器停止工作(单端工作模式)。接着的 12 个时钟周期将完成真正的模数转换。如果是度量比率转换方式(SER/DFR=0),驱动器在转换过程中将一直工作,第 13 个时钟将输出转换结果的最后一位。剩下的3 个多时钟周期将用来完成被转换器忽略的最后字节(DOUT 置低)。
硬件电路
由图可见,该模块电路是独立的,所以XPT2046芯片的控制管脚接可以使用任意单片机管脚连接。
栗:首先独立模块必须配备电源,所以5、13、14和10引脚用来供电,要使用ADC采集模式,就需要使用单片机的任意3个管脚与芯片的 DIN 管脚、CS 管脚和CLK管脚连接,来达到配置ADC采集模式;最后整个电路是用来采集电位器信号并输出采集到的数值的,所以使用单片机的任意1个管脚与芯片输出的管脚DO连接,让单片机获取改电路输出的内容;而6号引脚为输入端,接到电位器上的输出即可。
另外,如果想将以上所得到的的数值转换成电压,那么用电压值乘以参考电源的电压值(用5V举例),要想转换为电压值只需根据公式:V=5*(AD/4096) 计算,在程序中要注意设置V 变量为浮点,然后强制转换 AD 为浮点数,否则计算出来的电压值就会把小数部分滤除掉。