其他
嵌入式er必知:模数采样知多少(最全总结)
啥是ADC
KTV中麦克风将你唱歌的声音转成数字音频信号,经由信号处理,功放再播放出来 数码相机将物体表面反射的光线转换为数字信号,从而成像 疫情期间必用物资额温枪,将人体红外辐射经由光电转换成电压,最终转换为数字信号进行温度显示 .......举不胜举。
ADC将连续时间和连续幅度的模拟信号转换为离散时间和离散幅度的数字信号。转换涉及输入的量化,因此必然会引入少量的误差或噪声。此外,ADC不会连续执行转换,而是定期进行转换,对输入进行采样,从而限制了输入信号的允许带宽。
ADC带宽 (Band width):ADC的带宽主要由其采样率来表征。 ADC的SNR:SNR(signal noise ratio)是指信噪比,受许多因素影响,包括分辨率,线性度和准确性(量化级别与真实模拟信号的匹配程度),混叠和抖动。ADC的SNR通常以其有效位数( effective number of bits:ENOB),它返回的每个度量的位数平均来表示,而不是噪声。理想的ADC的ENOB等于其分辨率。
故,选择ADC以匹配待数字化信号的带宽和所需的SNR。如果ADC的采样率大于信号带宽的两倍,那么根据Nyquist–Shannon采样定理,就可以实现完美的重构。量化误差的存在甚至限制了理想ADC的SNR。但是,如果ADC的SNR超过输入信号的SNR,则其影响可能会被忽略,从而导致模拟输入信号的本质上是完美的数字表示。
须理解的指标
分辨率
这便是分辨率的概念。模数转换器的分辨率表示在模拟值范围内它可以产生的离散值的数量。该分辨率决定了量化误差的大小,因此决定了不使用过采样的理想ADC的最大平均信噪比。
这个公式简单解读:就是将参考电压按照进行等分,比如10位ADC,就是将参考电压等分成1024份,输入电压与参考电压之比乘以1024,即为ADC的值。故
量化误差
精度
非线性度
差分非线性误差DNL(Differential Non-Linearity):当ADC输出在应该改变的时候没有改变,就会出现DNL误差。例如,假设给定输入的当前输出代码是01101100,并且输入值增加了半步量化。代码应该是01101100 + 1位,或者01101101。当输入电压低于当前输入电压时,也会发生相反的情况。此时由于种种原因,这种情况可能不会发生。在本例中,ADC的误差为±1位DNL。 积分非线性误差INL(Integral Non-Linearity):如果量化水平在整个输入范围内分布不均匀,就会出现INL误差。例如,某ADC具有12位(4096个计数)分辨率和4.096V的参考电压。每个比特数正好表示输入电压变化的1.000mV,因此,输入电压为4096 mV,输出电压为1111 1111 1111,即0xFFF。对于某些adc,输入4095mV,甚至4094mV,仍然会得到0xFFF的数字输出。实际情况是,在整个输入范围内,1位的值发生了非常微小的变化,比如1.001mV或0.999mV。积累的误差会导致一个或两个比特精度的全量程误差。
应用实施策略:将上述k/b,利用两个点进行校准,将校准数据k/b存储在非易失存储器中。补充说一下:工程实践中需要校准的原因还因为选取的外围电阻、电容器件都有误差,所以这也是另一个需要标定的重要原因。
采样率
混叠
过采样
过采样可以更轻松地实现模拟抗混叠滤波器 降低的噪声,尤其是在过采样之外还采用噪声整形处理后。
ADC类型
积分型ADC
优点:
积分型ADC分辨率高,位数可做到12位甚至更高 线性度非常好。本质上,输入端与一个集成的参考电压相比较来决定输出端,所以线性度将取决于比较器的精度。 电路实现拓扑简单,用于实现这些设备的元件相对较少,因此电路相对简单且生产成本较低。 缺点:
主要缺点是转换速度慢。N位ADC,输出可能需要长达2个N的时钟周期来转换单个采样点
转换原理都是基于对电压积分并将积分后电压与另一电压比较以控制计数,计数输出即为ADC输出。积分对象要么是基于参考电压,要么是基于参考电压和输入电压。 主要用于传感器应用和诸如电压表和电流表等设备,在这些设备中,精度比速度更重要。换句话说积分型ADC采样速度比较低,但精度非常高 积分型ADC有不同的种类,常见的有单、双斜率积分等。增加一个“斜率”,以牺牲转换时间为代价而增加精度。
单斜率积分ADC
双斜率积分ADC
Sigma-Delta Σ-∆ ADC
Σ-∆ ADC 对所处理信号进行过采样(这个概念见模数采样知多少),并对待处理信号进行低通滤波。通常,在过滤器之后使用Flash ADC转换的比特数小于所需的比特数。所产生的信号连同由FLASH离散电平产生的误差,被反馈回并从输入中做差然后输入到滤波器。这个负反馈的可对噪声形成抑制作用,使它不出现在期望的信号频率。ADC之后的数字滤波器(利用抽取滤波器)可降低采样率,滤除不想要的噪声信号并提高输出分辨率(故称为sigma-delta调制,也称为delta-sigma调制)。
Flash ADC也称直接比较型
二分法在硬件中体现
首先,将输入信号与恰好位于半的电平集进行比较。如果它更低,那么最高有效的位MSB,被设置为0,输入被馈送到一个比较器链与参考电压设置为,以转换得到其余的位。 如果输入信号高于,则将MSB设置为1,从输入信号中减去。比较器链再次用于获取剩余的位。所以,本质上,半步FLASH ADC,以牺牲一个额外的比较,来节省一半比较器。这种思路还可以继续推演扩展,比如4分 FLASH ADC等等。
逐次逼近寄存器SAR
Pipelined ADC
先描述一下坑
采集电池电压,利用两个电阻将电池电压分压,然后送入单片机,当电阻如上分别取4M欧/1M欧时,ADC采集到的ADC值与万用表测得的ADC输入端相差很大,取30K欧以及10k欧时,则相差变小。
STM32 ADC:
电气特性
ADC 可支持采样频率受供电电压影响,供电电压高,可支持采样频率范围更高 可支持输入电压范围须在参考电压范围内 外部输入阻阻抗最大为 开关切换阻抗 最大为 内部采样保持电容 为4pF
ADC精度vs.负注入电流:应该避免在任何模拟输入引脚上注入负电流,因为这会显著降低在另一个模拟输入上执行转换的精度。建议在模拟引脚上增加一个肖特基二极管(引脚接地),这可能会注入负电流。
Page 136 图例(上图中标识解释):
见表68 实际转移曲线的示例。 理想转移曲线 终点相关线 ET =未调整总误差:实际和理想传递曲线之间的最大偏差。EO =偏移误差:第一个实际过渡与第一个理想过渡之间的偏差。EG =增益误差:最后一个理想过渡与最后一个实际过渡之间的偏差。ED =微分线性误差:实际步长与理想步长之间的最大偏差。EL =积分线性误差:任何实际过渡和终点相关线之间的最大偏差。
寄生电容表示PCB的电容(取决于焊接和PCB布局质量)加上焊盘电容(大约5 pF)。寄生电容值高会降低转换精度。为了解决这个问题,应该减少fADC。
回到坑里
跳出坑里
总结一下
将输入短路,可测量热噪声。实际应用时,将输入端短路,采集一定数量的样本,由于热噪声符合高斯分布,可计算出其期望、方差,接入真实信号可以利用统计规律进行相应的噪声滤波处理。 量化噪声,可以通过输入一定幅度及频率的正弦波,进行度量系统的量化噪声。 设计ADC采样电路时,需要注意阅读芯片手册的电气特性参数,这个对于设计一个稳定的模数采集系统至关重要。
本文主要参考wikipedia, 加入了个人的理解,总结这个也是出于系统梳理知识的目的,并分享给小伙伴们,有喜欢的不妨点个在看,或者转发给需要的朋友。文中如有错误,也请联系我指出错误,不胜感激!
本文授权转载自公众号“嵌入式客栈”,作者逸珺
-END-
推荐阅读
【01】单片机软件模拟SPI接口【02】不用买开发板, 使用 SkyEye 模拟 ARM Linux【03】加深理解SPI总线协议,单片机软件模拟SPI接口【04】牛人在Ubuntu上模拟ARM开发环境【05】单片机软件模拟SPI接口—加深理解SPI总线协议