最近在了解下ADC,整理学习笔记在此分享,本文写的ADC基础概念知识,希望对你有所帮助。
现在我们对测温已经习以为常,电子温度计对着你手腕,或额头,或耳朵,滴的一声,温度就显示出了,这个过程就涉及本文要介绍的模数转换。
模数转换,即Analog-to-Digital Converter,常称ADC,是指将连续变量的模拟信号转换为离散的数字信号的器件,比如将模温度感器产生的电信号转为控制芯片能处理的数字信号0101,这样ADC就建立了模拟世界的传感器和数字世界的信号处理与数据转换的联系。
在汽车上,温度传感器和压力传感器通常都采用模拟信号形式,会使用ADC将传感器信号转换成ECU可识别的二进制格式的数字信号。即:首先,这些传感器将温度和压力转换为一定范围内的电压信号;然后通过线束和接插件将电压信号传给ECU,最后ECU的ADC模块将电压信号转换为数字量。
ECU的模数转换部分示意
这里,传感器信号在输入到ADC模块前,需要经过调理电路处理,因为传感器产生的电压信号可能只有几十mV,必须要经过调理电路放大到0-5V,才能输入到ADC。
传感器模拟量采集示意,引自[1]
关于信号调理电路,可参考以上两个链接,再了解ADC概念之后,接下来详细了解ADC处理的基础内容。
ADC处理一般要经过采样,保持,量化和编码四个步骤,如下所示:
ADC处理过程示意,引自[2]
采样是将时间上连续变化的信号,转换为时间上离散的信号,即将时间上连续变化的模拟量转换为一系列等间隔的脉冲,脉冲的幅度取决于输入模拟量。这里采样需遵循采样定理,即当采样频率大于模拟信号中最高频率成分的两倍时,采样值才能不失真的反映原来模拟信号。
信号的采样与保持示意,引自[2]
模拟信号经采样后,得到一系列样值脉冲,如上右上图。采样脉冲宽度一般是很短暂的,在下一个采样脉冲到来之前,应暂时保持所取得的样值脉冲幅度,如上右下图,以便进行转换。因此,在采样电路之后须加保持电路。
采样保持电路原理示意,引自[3]
输入的模拟信号电压经过采样保持后,得到的是阶梯波。而该阶梯波仍然是一个可以连续取值的模拟量。但n位数字量只能保持 2^{n} 个数值。因此,用数字量来表示连续变化的模拟量时就有一个类似于四舍五入的近似问题。将采样后的样值脉冲电平归化到与之接近的离散电平之上,这个过程称为量化。指定的离散电平称为量化电平 U_{q} ,两个量化电平之间的差值称为量化单位 Delta ,即1LSB ,位数越多,量化等级越细,Delta就越小。
引自[2]
采样保持后未量化的 U_{o} 值与量化电平U_{q}值通常是不相等的,其差值称为量化误差 varepsilon ,即 varepsilon = U_{o} – U_{q} 。量化的方法一般有两种:只舍不入法和四舍五入法。
1)只舍不入法:当 U_{o} 的尾数小于 Delta 时,舍尾取整。这种方法 varepsilon 总为正值, varepsilon_{max} =Delta 。以ADC为例,设输入信号的变化范围为0~1V,那么 Delta = 1 / 2^{3} = 1/8 V ,量化中不足量化单位部分舍弃,如数值在0~1/8V之间的模拟电压都当作 0Delta ,用二进制数000表示,而数值在1/8~2/8V之间的模拟电压都当作 1Delta ,用二进制数001表示,以此类推,数值在7/8~8/8V之间的模拟电压都当作 7Delta ,用二进制数111表示,如下所示:
引自[5]
2)四舍五入法:当 U_{o} 的尾数小于 Delta / 2 时,舍尾取整;当 U_{o} 的尾数不小于 Delta / 2 时,舍尾入整。这种方法 varepsilon 可正可负,但是 |varepsilon_{max} |=Delta / 2 ,可见它的误差要小。仍以3位ADC为例,设输入信号的变化范围为0~1V,那么 Delta / 2= (1 / 2^{3}) /2 = 1/16 V ,量化中不足量化单位部分舍弃,如数值在0~1/16V之间的模拟电压都当作 0Delta ,用二进制数000表示,而数值在1/16~3/16V之间的模拟电压都当作 1Delta ,用二进制数001表示,以此类推,如下所示:
引自[5]
通过以上两种量化方法的解释,不难发现,对于一个N位ADC,已知其参考电压,确定了量化方法,就能进行编码,比如 U_{o} = 2.1V ,采用下图所示的量化标准,则编码为010; U_{o} = 5.2V ,则编码为101。
引自[2]
(1) 分辨率resolution
ADC的分辨率表示ADC对输入信号的分辨能力,其根据满程电压和ADC输出二进制数的位数决定,如下所示:不同的满程电压下,分辨率不同;不同的ADC输出二进制数的位数,分辨率也不同。
引自[5]
(2)转换误差
转换误差通常是以输出误差的最大值形式(即上面所述的量化误差)给出。它表示ADC实际输出的数字量和理论上的输出数字量之间的差别。例如量化误差为pmDelta / 2 或 pm LSB/2,这就表明实际输出的数字量和理论上应得到的输出数字量之间的误差小于 Delta / 2 或 LSB/2 。
转速速率是指ADC从转换控制信号到来开始,到输出端得到稳定的数字信号所经过的时间的倒数。ADC的转换速率与转换电路的类型有关,不同类型的转换器转换速度相差甚远。这里所提到的转换电路,也就是ADC实现的电路将在《一篇易懂的模数转换器(ADC)学习笔记2》介绍。
总体来说不同的分辨率和转换速率的对比情况,如下所示:
引自[2]
附:若想更深入了解未提及的如下所示关键内容和参数,需要该资料请先一键三连,并留邮箱(* ̄︶ ̄)
source: Understanding Data Converters,application report, from TI
[1] 英飞凌多核单片机应用技术
[2] Analog to Digital Converters.pdf
[3] (推荐)采样保持电路
[4] adc转换原理 – 张凌001 – 博客园
[5] ADC和DAC(模数和数模转换器)_哔哩哔哩_bilibili
关于ADC相关的知乎回答和文章:
慕容团长:一个芯片工程师的ADC学习笔记 (一)
慕容团长:一个芯片工程师的ADC学习笔记 (二)
JunfengFang2017:谈谈ADC的相关性能参数(一)
智果小芯:单片机ADC常用的10大滤波算法
宇文青霜:ADC杂谈(一)Sigma-Delta ADC
陈小挺:ADC模数转换(一)——独立模式单通道电压采集实验
为什么高精度 ADC 这么重要,想要学习 ADC 应用设计该如何入手?
【芯片硬核科普】如何设计一个高精度模数转换芯片ADC?