外部 ADC 用例

电器工程 微控制器 ADC 模拟 成分
2022-01-07 19:00:37

大多数微控制器 (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 美元的价格购买带有 12 位 1Msps ADC(带内部参考)的 EFM32Z 部件,或者您可以以大约 3.50 美元的价格购买等效的 12 位 200ksps ADC (相同的速度(ish),相对相同的功率数等)和执行相同的任务(提取 ADC 数据)。

那么问题就变成了:当 uC 的 ADC 可以执行相同的功能时,工程师是否有令人信服的理由偏爱外部 ADC 而不是 uC 的 ADC?

4个回答

如果您的微控制器的内部 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 的另外几个原因:

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

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

  3. 即使内部 ADC 是 12 位宽,这通常也不意味着它的读数精确到 4096 中的一个部分。典型的外部 ADC 通常比内部 ADC 具有更好的规格,即使两者具有相同的广告位深度。

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

一些外部 ADC 存在的另一个原因是:它们的存在时间比具有内部 ADC 的微控制器要长得多,并且被设计到许多产品中。可能再长 20 年或 30 年。(可能连接的 SOIC 部件不是这种情况,尽管它可能是经典部件的现代化模具缩小变体)

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

即使对于新设计,最好重用运行良好的模块,而不是围绕较新的部件重新设计(即使由此产生的集成降低了 BOM 成本)。再造可能很昂贵;测试和监管审批流程,更是如此。

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

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

没错,如果外部版本在功能上完全等效,那么选择外部 ADC 将是不寻常的。然而,根据我的经验,低成本微控制器通常具有非常糟糕的 ADC,具有温度漂移、低位数(10 - 12 位)和来自 VCC 的噪声(在某些情况下为 +/- 20mV)......尽管反过来可能是正确的。 ..如果您过度采样并且存在噪声,则可以提高 S/N。在我们的产品开发活动中,我们很少根据内部 ADC 的质量来选择 MCU。通常更多的是关于工具链、成本、现有固件等。内部 ADC 通常仅限于读取电池电压等非关键任务。

对于各种微控制器,共享定时器也可能存在问题,需要独占以实现快速采样时间,但在独占 ADC 时会干扰 MCU 中的其他事物(软件串行端口、ISR 等)。

另外,什么是 VREF?如果您在固件中使用 VCC 作为参考,即使您校准到“真实”的 VCC,该值在操作过程中也会发生相当大的波动。如果您有一个使用大瞬态电流的板载大电流设备(收音机、wifi、MCU 等),则 VCC 在传输期间可能会下降到 4.8 伏,并且如果您的采样发生在该窗口期间,并且您天真地转换 0-1023 ADC 读取值到 ADC_VAL / 1023 * 5.0 的电压 - 你已经失去了高达 200mV 的精度。或者,如果您有不同的电源模式(USB、Wall wart、电池) - 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 总线速度的限制。即使以 1 位/秒的速度读取,16 位读取也需要非常长的时间。