外部ADC的用例


9

大多数微控制器(uC)的外围设备均具有模数转换器(ADC),这是惊人的,因为它将两个组件集成到一个封装中。这些ADC通常也进行寄存器映射,从而可以快速,轻松地提取数据。

尽管紧密集成,您仍然可以购买外部ADC。我可以看到几种情况:

  • ADC需要与uC隔离。
  • ADC样本的位深度必须高于uC的ADC。
  • 感应电压远离微控制器,较长的模拟线路是不可接受的。
  • 感应电压处于不适合uC的恶劣环境中。
  • 外部ADC的采样速度比uC的ADC快得多。
  • 某些样品的参考电压与其他样品的参考电压不同,需要多个Vref引脚(因此需要多个外部ADC)。
  • 当前的uC没有足够的ADC通道,放置新uC的成本高得令人望而却步。
  • 外部ADC的功耗比uC的ADC少(我需要一个例子来相信它)。
  • ADC通道必须同时采样(罕见情况)。
  • 在制造时对固件进行编程的成本超过了较昂贵的ADC部件的成本(不太可能)。
  • PCB具有空间限制,没有uC可以容纳(不太可能)。

这一切都很好,但是让我感到奇怪的是,外部ADC通常比uC同类产品贵很多,但是却提供了等效的功能。例如,您可以以约$ 1的价格购买带有12bit 1Msps ADC(带有内部参考)的EFM32Z部件,或者以约$ 3.50的价格购买等效的12bit 200ksps ADC (相同速度(ish),相对相同的功率数字等),以及执行相同的任务(提取ADC数据)。

问题就变成了:当一个微处理器能够执行相同的功能时,是否有令人信服的理由使工程师更喜欢一个外部ADC而不是一个uC的ADC?


1
实际上,在某些应用程序空间(例如信号处理)中,同步采样实际上是很常见的情况。
杰森R

Answers:


12

如果您的微控制器的内部ADC执行了您需要的工作,则不需要,则无需外部ADC。但是,那不是他们的目标。

您已经介绍了使用外部ADC的大部分原因,但还有更多原因,我认为,这是一些最重要的原因:

  1. 您需要不同的采样技术-例如内部ADC是SAR,但是您需要做Delta Sigma。
  2. 内部ADC由于是内部的,并且与主MCU共享同一芯片,因此永远不会100%不受其余MCU的噪声的影响,因此,外部ADC可能会产生超低噪声
  3. 您选择的微控制器/ SoC / FPGA没有ADC。后两者极有可能-最常见的SoC和FPGA根本没有任何ADC。是的,您可以获得可以做到的事情,但很多却没有。因此,您添加了一个外部的。

对于第3点,以Raspberry Pi为例。那根本没有可用的ADC,您必须添加一个外部ADC才能完成任何模拟工作。


现在很有趣。当涉及到噪声时,无需花费很多钱就可以得到一个外部ADC,而可以通过获得一个更高位深度的uC ADC并忽略采样结果的最低有效位来获得相同的结果(这显然是假定了额外的转换时间附加位不是障碍因素)。
TRISAbits 2014年

3
事后信号处理只能帮助处理与采样时序无关的噪声(并因此产生“随机”噪声)。处理器系统中的大部分噪声将是电源和接地负载变化的结果,这些变化在某种程度上与采样过程同步。避免它们的唯一方法是让ADC使用其自己的分离电源轨。注意,由于许多ADC可以轻松地在模拟VDD / VSS和数字VDD / VSS之间承受100mV左右的电压,因此不需要完全隔离。
supercat 2014年

9

支持外部ADC的其他几个原因:

  1. 许多外部ADC部件包括差分输入,而微控制器的内置转换器通常不包括。在输入具有很多共模噪声的情况下,这可能非常重要。

  2. 许多外部ADC部件在转换器本身之前包括一个放大器级,因此允许转换器直接测量高阻抗信号。在许多微控制器上,对输入信号进行采样的行为可能会干扰它。根据输入信号的性质,这可能会大大增加进行精确测量所需的采集时间。

  3. 即使内部ADC的宽度为12位,这通常也并不意味着它将读数精确到4096的一部分。典型的外部ADC的规格通常要比内部ADC的规格好,即使两者具有相同的标称比特深度。

将ADC集成到微控制器很容易。集成一个好的 ADC要困难得多。猜猜哪个更常见。


1
SAR ADC受电荷注入的影响很小,因为将采样电容器阵列瞬时连接到输入会干扰正在测量的内容。如果输入源恢复得不够快,则会导致测量错误。更高的分辨率通常需要更大的内部采样电容。Δ-Σ分辨率仅取决于扩展数字计数器。(尽管要达到良好的高分辨率INL / DNL规范并
非易事

@supercat:我从未考虑过将放大阶段作为转换的一部分。这打开了有趣的电路采样途径。
TRISAbits 2014年

2
@MarkU:我已经观察到某些电路中的电荷注入问题。奇怪的是,一些转换器似乎试图将输入的电荷计入先前的采样值(从最后一次采样的输入中取值),有些转换器试图将其充电至零,并且至少有一个似乎将其任意(“随机”)计入较高的值。或更低的电压,我觉得很烦。我不明白为什么一部分会做后者。即使它必须向某种事物收费,始终向零收费也比向某个“随机”值收费要好。
supercat 2014年

4

存在一些外部ADC的另一个原因:它们比带有内部ADC的单片机的寿命长很多,并且已被设计成许多产品。可能会延长20或30年。(虽然可能是经典零件的现代化缩模变体,但所链接的SOIC零件可能不是这种情况)

如果ADC没有出色的分辨率,精度或速度,但却要付出高昂的代价,这可能就是原因。

即使对于新设计,也可能最好重用效果良好的模块,而不是围绕更新的部件进行重新设计(即使所产生的集成降低了BOM成本)。重新设计可能会很昂贵;测试和监管审批流程,甚至更多。

现在,如果您是从头开始,并且您选择的微控制器具有足够满足您要求的ADC通道,则以上都不适用。


2

我意识到这是一个非常老的问题,但这是我们内部经常进行辩论的问题。

没错,如果外部ADC的功能完全相同,则选择外部ADC是不寻常的。但是,以我的经验,低成本的微控制器通常具有相当差的ADC,具有温度漂移,低位计数(10-12位)和来自VCC的噪声(在某些情况下为+/- 20mV)……尽管反之亦然。 ..如果您过度采样并存在噪声,则可以提高信噪比。在我们的产品开发活动中,很少会根据内部ADC的质量来选择MCU。通常,它更多地与工具链,成本,现有固件等有关。内部ADC通常仅限于非关键任务,例如读取电池电压。

对于各种微控制器,共享计时器也可能存在一些问题,需要为快速采样时间而对其进行独占,但是在为ADC独占时,它们会干扰MCU中的其他事物(软件串行端口,ISR等)。

另外,什么是VREF?如果您将VCC用作固件参考,即使您校准到“实际”的VCC,该值在操作过程中也会有很大的波动。如果您使用的板载高电流设备(无线电,wifi,MCU等)具有较大的瞬态电流使用,则在传输过程中VCC可能会降至4.8伏,并且如果您的采样发生在该窗口内,那么您会天真的转换0-1023 ADC读取值到ADC_VAL / 1023 * 5.0的电压-您失去了高达200mV的精度。或者,如果您具有不同的电源模式(USB,壁式电源适配器,电池)-MCU上的VCC可能会更改(尤其是USB)。外部ADC(即使具有相同的位数)也可以在VCC波动的情况下提供坚如磐石的内部vref。

分辨率非常重要。我想在10-12位的分辨率下(在现实世界中)会有一些用途,但是对于任何现实世界的应用(气体检测,声学测量,加速度计测量,精确温度测量等),通常16位达到足够的信噪比和分辨率特性所需的最小分辨率。甚至像Atmel的SAMD这样的非常好的32位MCU都限于12位内部ADC。

时钟抖动也是一个问题,当需要其他8位微控制器提供12位宽的读数并且需要至少2个时钟周期来操纵12位值时,也存在一些固有的不准确性。使用外部ADC(因为它们可以具有内部振荡器)。

在某些情况下,与传感器的物理距离以及与MCU的隔离也很重要。一些非常灵敏的换能器需要使用自己的调节功率,隔离的接地层和具有0.01%无源的极其灵敏的跨阻斩波放大器。

有时,使用内部ADC的原因非常令人信服。DMA是一个原因……采样率是另一个原因。轻松进行过采样是另一回事。以高数据速率连接外部ADC会消耗大量有价值的复用I / O引脚,从而使设计变得更加复杂。另外,我们使用的许多ADC都是基于I2C的,因此采样率受到I2C总线速度的很大限制。即使以1mbits / sec的速度读取16位数据,也要花费很长时间。


这是极好的见解!随着岁月的流逝(我的经验不断增长),我必须同意:内部MCU ADC可能会很糟糕。
TRISAbits
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.