24小(xiǎo)时联系電(diàn)话:18217114652、13661815404
中文(wén)
- 您当前的位置:
- 首页>
- 電(diàn)子资讯>
- 公司新(xīn)闻>
- 单片机开发设计模数转...
公司新(xīn)闻
单片机开发设计模数转换器(ADC)简介
模数转换器或ADC有(yǒu)许多(duō)不同的实现。本文(wén)概述了主要类型,它们的特征和局限性。
几乎所有(yǒu)的微控制器都有(yǒu)内置的ADC。即使是基于AVR ATMega系列的小(xiǎo)型Arduino,也拥有(yǒu)它们。本文(wén)的最后一部分(fēn)讨论了使用(yòng)此类ADC时应注意的一些问题。但是首先我们将回顾模数转换的基础。
模拟到数字转换的基础
ADC由图1中的示意图符号表示。它仅显示了一个模拟输入及其等效的数字输出。所示示例為(wèi)一个N位ADC。N通常是6到24之间的任何值,常见的是8、10、12或16。
输入是電(diàn)压,范围為(wèi)0到最大值,取决于实际ADC。假设有(yǒu)N位,则可(kě)能(néng)有(yǒu)2 N个数字值,则以1位表示的值為(wèi)(V ADCMAX / 2 N)。
作為(wèi)一个例子,如果给定ADC的最大输入值是5.0V,并且所述ADC是10位类型的,则每个比特代表(5V / 2 10),5.00 / 1024,或约4.89mV。因此,该特定ADC的分(fēn)辨率或量化步長(cháng)為(wèi)4.89mV。这是其绝对的理(lǐ)论分(fēn)辨率。
在这种特殊情况下,无法将信号解析為(wèi)优于±(4.89mV / 2)的分(fēn)辨率。此限制称為(wèi)量化误差,并且所有(yǒu)ADC甚至是完美ADC都具有(yǒu)一定程度的量化误差,具體(tǐ)取决于ADC的分(fēn)辨率。
实用(yòng)的ADC具有(yǒu)更多(duō)的误差源。两个这样的错误是:差分(fēn)非線(xiàn)性(DNL)和积分(fēn)非線(xiàn)性(INL)错误。在為(wèi)特定应用(yòng)指定ADC时必须考虑这些因素。
当ADC输出应保持不变时,DNL错误就会发生。例如,假设给定输入的当前输出代码為(wèi)01101100,并且输入值增加了量化步長(cháng)的一半。然后,代码应為(wèi)01101100 +1位或01101101。
当输入電(diàn)压低于当前输入電(diàn)压时,也会发生相反的情况。有(yǒu)时,由于各种原因不会发生这种情况。在这种情况下,据说ADC具有(yǒu)±1位DNL误差。
如果量化级别未在整个输入范围内均匀分(fēn)布,则会发生INL错误。例如,假设某个特定的ADC具有(yǒu)12位或4096个计数的分(fēn)辨率和4.096V基准電(diàn)压。每个位数精确地代表了1.000mV的输入電(diàn)压变化。
因此,4096 mV的输入電(diàn)压应提供1111 1111 1111的输出,即0xFFF。对于某些ADC,4095mV甚至4094mV的输入仍将提供0xFFF的数字输出。发生的是,在整个输入范围内,1位的值变化很(hěn)小(xiǎo),只有(yǒu)1.001mV或0.999mV。累积的误差导致一到两位精度的满量程误差。
稍后将看到,有(yǒu)许多(duō)外部因素会进一步降低ADC输出精度。
ADC实施
有(yǒu)多(duō)种实现ADC的方法。接下来的几节介绍了一些较常见的部分(fēn)。為(wèi)了使本文(wén)相对简短,仅给出每个此类实现的简单且有(yǒu)些不完整的描述。
单斜率和双斜率积分(fēn)ADC
单斜率ADC的框图如图2所示。基本操作非常简单。電(diàn)容器从输入源充電(diàn),直到其電(diàn)压达到V Ref為(wèi)止,此时比较器跳闸。充電(diàn)时,由时钟供電(diàn)的数字计数器也在进行计数。当比较器跳闸时,它将停止计数,此时达到的计数代表模拟输入。
图2 –单斜率积分(fēn)ADC的框图
这种方法最常见的变體(tǐ)之一是双斜率积分(fēn)ADC。在其中,電(diàn)容器放電(diàn),然后对计数器值求平均值。此技术减轻了积分(fēn)電(diàn)容器中介電(diàn)吸收的影响,介電(diàn)吸收的影响可(kě)能(néng)导致ADC读数错误。
这种类型的ADC是准确的,但是非常慢。例如,它最常用(yòng)于万用(yòng)表中,其中精度比速度更重要。
Sigma-Delta Σ-ΔADC
Sigma-Delta或Σ-∆ ADC框图如图3所示。从输入端开始,差动放大器产生的输出為(wèi) V in和DAC输出。
1位DAC的输出可(kě)以是以下两个值之一:-V Ref或+ V Ref。在这种情况下,最好将积分(fēn)器视為(wèi)取前一个值和当前输入值的移动平均值。
所以,开始,假设 V in固定在高于0V的很(hěn)小(xiǎo)一点,以便比较器跳闸。其值将為(wèi)高或1。然后DAC输出為(wèi)+ V参考。在下一轮中,将从当前值V in中减去该值。由于先前的值為(wèi)0V,因此积分(fēn)器输出现在将為(wèi)– V ref。比较器输出现在将為(wèi)0,而DAC输出将為(wèi)at – V参考。
在下一个样本中,由于先前的值是– V Ref,并且差动放大器实际上减去-V Ref,因此将V Ref加到V in。比较器输出将因此為(wèi)1。
此过程继续进行,因此,对于0V的V in,比较器输出将為(wèi)101010…的稳定流。记住逻辑1意味着V Ref,0表示-V Ref,则如果取N个样本并取平均值,则很(hěn)容易发现平均值為(wèi)0V。比较器之后的处理(lǐ)块将简单地将其输出為(wèi)单个值0000 ...假定為(wèi)(V Ref – -V Ref)或2 x V Ref。
现在,假设V in為(wèi)1V,这是一个5V ADC;±V Ref為(wèi)±2.5V。按照与之前相同的步骤进行操作,输出将為(wèi):1011101…该输出為(wèi)1.07V。
但是,如果采样更多(duō),则精度会更高,并且该值接近1.00V。因此,Sigma-Delta需要许多(duō)样本才能(néng)生成一个输出。换句话说,需要对输入信号进行过采样以减少ADC转换误差。
Sigma-Delta ADC通常用(yòng)于数字化音频信号,并在某些微控制器中用(yòng)作ADC。
图3 – Sigma-Delta ADC的框图
闪存ADC
闪存ADC的操作也许是最容易理(lǐ)解的。图4给出了闪存ADC的框图。仅仅是许多(duō)比较器,每个比较器都被提供了比前一个電(diàn)压高一个位值的参考電(diàn)压。因此,对于一个8位ADC,需要256个这样的比较器。对于10位,则需要1024。
闪存转换器速度很(hěn)快。它无需任何采样或繁重的后处理(lǐ)即可(kě)直接转换输入。问题在于它需要大量的比较器,并且许多(duō)比较器占用(yòng)了芯片上的大量硅面积。因此,仅在需要其他(tā)ADC实现方法无法达到的极高速度时才使用(yòng)闪存ADC。
刚刚描述的内容实际上称為(wèi)全闪存ADC。一种常用(yòng)的变體(tǐ)是半闪存ADC。它使用(yòng)两步过程将实际转换链中所需转换器的数量减少一半。
首先,将输入信号与精确设置為(wèi)一半V Ref的電(diàn)平进行比较。如果它较低,则最高有(yǒu)效位MSb设置為(wèi)0,并且将输入電(diàn)压馈送到比较器链,参考電(diàn)压设置為(wèi)V Ref / 2实际获得剩余位。
如果输入信号高于V Ref / 2,则MSb设置為(wèi)1,从输入信号中减去V Ref / 2。例如,可(kě)以通过使基准電(diàn)阻的下端偏移+ V Ref / 2来实现。
比较器链再次用(yòng)于获取其余位。因此,从本质上讲,这使用(yòng)的是全闪存比较器数量的一半,但要付出额外的比较代价。例如,该技术还可(kě)扩展為(wèi)具有(yǒu)四分(fēn)之一闪存ADC。
图4 –全闪存ADC
逐次逼近寄存器(SAR)
这是中速ADC中最常使用(yòng)的ADC技术。SAR ADC的框图如图5所示。SAR操作是该ADC的关键。最初,它设置為(wèi)DAC范围的中点。
比较器输出将為(wèi)高電(diàn)平或低電(diàn)平,具體(tǐ)取决于输入是高于还是低于DAC输出電(diàn)平。
现在,输入位于DAC范围的上半部或下半部。现在,将DAC设置為(wèi)DAC输入所处正确范围的上半部或下半部的中点,从而有(yǒu)效地将该范围减小(xiǎo)到整个范围的四分(fēn)之一。
重复此过程,依次缩小(xiǎo)输入所处的范围,直到放大到正确的值為(wèi)止。
另一种看待这种情况的方式是说,在第一次迭代之后,将知道输入的MSbit,根据比较器输出是低電(diàn)平还是高電(diàn)平,它的值為(wèi)0或1。在下一次迭代之后,将知道下一个MSbit。重复该过程,直到所有(yǒu)输出位都已知為(wèi)止。
未提及的一件事是“跟踪并保持”或“ T&H”块。如果在ADC转换过程中更改输入值,则迭代过程将被中断。T&H块仅在转换开始时捕获输入值,并在整个转换过程中保持该值。
如图6所示。T&H输出将输入信号的值保持在被触发的点,而不管输入信号随后的作用(yòng)如何。转换完成后,T&H将再次返回以跟踪输入信号。
SAR ADC是使用(yòng)最广泛的ADC,并且是大多(duō)数微控制器的内置ADC中发现的一种。有(yǒu)些使用(yòng)Sigma-Delta ADC,但大多(duō)数使用(yòng)SAR ADC。
图5 – SAR ADC的框图
图6 – T&H框图
微控制器ADC
几乎所有(yǒu)的微控制器都有(yǒu)内置的ADC,大多(duō)数具有(yǒu)多(duō)路复用(yòng)输入。為(wèi)了有(yǒu)效使用(yòng),应考虑其局限性。
首先,根据目前為(wèi)止的内容,很(hěn)明显,输入范围不能(néng)超过ADC V Ref,必须遵守ADC的转换速率限制。
例如,Arduino Uno的最大ADC转换速率小(xiǎo)于10KHz。因此,根本无法通过该ADC采样20Hz至20KHz带宽的完整音频。
基于微控制器的ADC的问题全部归结為(wèi)微控制器是CMOS器件这一事实,并且用(yòng)于制造微控制器的硅工艺与实现模拟電(diàn)路模块不太兼容。
因此,例如,DAC和比较器不使用(yòng)精密電(diàn)阻器,因為(wèi)这些電(diàn)阻实际上很(hěn)难在CMOS硅工艺中实现。取而代之的是,它们采用(yòng)了功能(néng)等效的设计,即使用(yòng)電(diàn)容器。最终结果是微控制器的ADC输入具有(yǒu)相对较低的阻抗,该阻抗也是電(diàn)容性的。
更重要的是,输入阻抗在转换过程中会有(yǒu)所变化。这一切都意味着,如果信号源的输出阻抗很(hěn)高,则ADC倾向于给出相差甚遠(yuǎn)的转换结果。图7举例说明了这一点。
在此示例中,ADC用(yòng)于读取6V電(diàn)池電(diàn)压。為(wèi)了不使電(diàn)池过度放電(diàn),将R1和R2都选择為(wèi)20KΩ,以便在電(diàn)池電(diàn)压為(wèi)6V时ADC输入為(wèi)3.0V。ADC的V Ref為(wèi)3.3V;因此,一切都应该正常工作。
但是,典型的微控制器ADC的输入阻抗约為(wèi)10KΩ,如图所示,它与R2并联。这将在電(diàn)池電(diàn)压读数中引起很(hěn)大的误差。这种情况下的解决方案是使用(yòng)一个外部缓冲器来驱动ADC输入。
图7 – ADC输入阻抗影响的图示
使用(yòng)微控制器ADC时应考虑的最后一件事是ADC参考。在某些微控制器中,这只是微控制器VDD。
可(kě)以肯定的是,微控制器VDD来自稳压器,但是稳压器与适当的参考電(diàn)压之间存在很(hěn)大差异。
这很(hěn)容易导致至少两位精度损失。因此,现在12位微控制器ADC更像是10位ADC,并且没有(yǒu)计算DNL和INL错误贡献。
最重要的是要意识到这些限制,并确定微控制器ADC是否适合该应用(yòng)。