什么是 ADC(模数转换器)及其工作原理?

要点

  • ADC 广泛用于将声音和光等模拟信号转换为可用于各种应用的数字值。
  • ADC 的采样率决定了每秒读取的读数数量,较高的采样率可实现更准确的信号表示。
  • ADC 的比特率会影响所获得样本的质量,位数越多,测量就越平滑、越精确。 不同类型的 ADC 在速度、精度和功耗方面提供不同的权衡。

模数转换器 (ADC) 对于将现实世界的现象转化为我们可以在编程项目中使用的值非常有用。 但是 ADC 如何将模拟信号转换为我们可以在任何地方使用的数字信号呢?

ADC 有何用途?

您会发现 ADC 几乎无处不在。 它们在您的手机上,将您的声音转换为一串二进制值。 它们在您的车内,测量车轮的旋转。 它们位于示波器中,帮助捕获信号并表示它们。 然而,大多数人使用它们的地方是视频和音频世界,其中将光和声音引入数字空间是至关重要的。

什么是采样率? 采样率如何影响 ADC?

ADC 最关键的主要指标之一是采样率:每秒读取的读数数量。

非常高端的示波器每秒可能采集一百亿个样本。 勇敢的小型 MCP3008 ADC 可以花费相对适中的 20 万。 在音频领域,典型的采样率为每秒 44,100 次 (44.1 kHz)。

我们采集的样本越多,我们就能更准确地表示信号。 有时,这是必要的; 有时,事实并非如此。 假设我们正在构建一个带有几十个电位器的推子组(旨在控制电子设备,就像您在灯光或音频桌上看到的那样)。 在这种情况下,我们需要测量的值不太可能每秒改变数百万次,因为我们的手指无法快速移动。 我们只需要足够的样本即可使结果平滑且响应灵敏。

什么是比特率? 比特率会影响 ADC 的质量吗?

我们还应该考虑我们获得的样本的质量。 这很大程度上取决于比特率,比特率告诉我们可以使用多少个开关状态来数字表示电压。 我们拥有的位数越多,我们可以在任何给定样本中记录的可能值就越多,最终结果也就越平滑和精确。

我们已经写过有关二进制及其工作原理的文章,因此如果您不确定,这是一个很好的起点。 我们需要多少位? 同样,这取决于我们想要实现的目标。 有时,我们可能会受到所使用的协议的限制。 例如,MIDI 1.0 协议仅限于七位(有时是十四位)值。 在其他情况下,限制因素可能是人类的感知。 如果增加的保真度没有对结果产生任何明显的改善,则可能不值得。

多路复用如何提高 ADC 质量?

流行的 ADC 芯片如 ADS1115MCP3008 提供许多投入。 但在幕后,它们实际上只包含一个 ADC。 这是可能的,因为这些设备内置了多路复用器。 多路复用器在电子和电信领域绝对无处不在。 它们是数字开关,充当 ADC 的流量控制。 ADC 可能会对一个通道进行采样,然后对下一个通道进行采样,然后再对下一个通道进行采样。 因此,如果您有 8 个通道且采样率为 200,000,则可以轮换所有通道,每个通道采集 25,000 个样本。

ADC 有哪些类型?

ADC 的工作方式多种多样,具体取决于所需的成本和功能。

闪存 ADC 通过非常复杂的分压器工作。 一组电阻器将参考电压分成多个增量,然后通过一组比较器针对输入进行测试。 闪存 ADC 速度快如闪电,但由于所需比较器的数量,它们在位深度方面受到限制。 出于同样的原因,他们也渴望权力。

分级 ADC 试图通过将工作分配给两个独立的单元来弥补这些弱点:一个单元粗略地计算出电压,第二个单元精确地计算出电压。 通过拆分,我们可以减少比较器的数量。 一些分级 ADC 会将工作分为三个阶段,并在此过程中内置纠错。

SAR(逐次逼近寄存器)ADC 通过一种二分搜索来完成工作。 假设我们有八位需要填充。 SAR 将从 10000000 开始,即中间值(00000000 为底部,11111111 为顶部)。 如果电压超过这个中点,SAR 将保持最左边的数字为 1; 如果没有,SAR 会将最左边的数字设置为 0。我们可以对下一个数字重复该过程,依此类推。 这将导致猜测值逐渐接近实际值:

通过这种方式,我们不断缩小搜索范围,将可能性分成两半,并询问结果是否高于或低于中点。 在本例中,该值介于 0 到 255 之间; 经过几次迭代后,ADC 计算出它在 77 左右。

Sigma-Delta 转换器可能是最难理解的。 它们用于高精度音乐和信号测量应用。 它们的工作原理是对信号进行过采样,并使用极其复杂的滤波和数学来细化结果。 这个过程有效地降低了采样率,同时提高了精度。 当噪声和精度比速度更重要时,这些 ADC 非常有用。

最后,我们有积分 ADC,它甚至比 Σ-Δ ADC 还要慢。 它们在电容器的帮助下工作,电容器的充电速率可用于确定输入电压。 这里的采样率通常与电源频率同步,这可用于将噪声保持在绝对最小值。

什么是奈奎斯特-香农理论?

假设我们想要以数字方式描述模拟信号。 为此,每个给定循环至少需要两个点:一个在顶部,一个在底部。 因此,我们的采样频率必须至少是我们期望测量的最高频率的两倍。

这被称为奈奎斯特频率,以瑞典裔美国物理学家哈利·奈奎斯特的名字命名。 该理论以奈奎斯特和克劳德·香农(杰出的数学家和密码学家)的名字命名,但不是以埃德蒙·惠特克的名字命名,后者在他们之前提出了这个想法。

无论我们相信谁提出了这个理论,它都存在问题。 不可能提前知道波形的顶部和底部何时到达。 如果我们在输入波形的中间采样会怎样? 观察输入信号的变化如何使我们捕获的结果完全变平:

或者甚至产生以前不存在的新波形的幻觉:

这些幻觉被称为别名。

别名问题

您可能会熟悉拍摄旋转物体时有时会出现的“马车车轮”错觉。 汽车的轮子或直升机的叶片似乎正在向后转动——只是非常缓慢。 在某些情况下,刀片可能会完全停止(坦率地说,结果很奇怪——请查看下面的视频!)。

在玩较旧的视频游戏时,您可能还注意到平行线有时会产生奇怪的扭曲伪影。 栅栏、楼梯和条纹毛衣开始看起来确实很奇怪。 或者,当您通过质量较差的数字连接听到某人说话时,有时会听到奇怪的口哨声,那又如何呢? 这是一种扭曲,而且是一种特殊的扭曲。 噪音中出现的那些难看的频率是怎么回事? 如果您正在聆听和谐丰富的内容(例如鼓组),效果会更加明显,尤其是在高端。

如果您了解其中之一的原因,您就可以了解所有这些原因。 对于马车车轮来说,固定的帧速率意味着我们无法正确捕捉运动。 如果某个物体每帧旋转 350°,那么很自然地会感觉到它实际上向后移动了 10°。 换句话说,没有足够的信息来忠实地反映正在发生的事情。 我们采集的样本与我们想要测量的样本不一致。

这并不是模数转换特有的问题。 在许多情况下,我们将一种数字信号转换为另一种数字信号。

那么,解决办法是什么呢? 有几个。 我们可以应用特殊的过滤器来处理这些伪影,这就是许多 ADC 的幕后做法。 或者,我们可以采集比我们需要的更多的样本。 我们采集的样本越多,我们对波的图像就越准确:

更高质量的样品以获得最佳结果

如果您觉得这类事情很有趣,那么好消息是我们刚刚涉足这个主题。 这里有一些深度需要探索:ADC 极其复杂。

但从最终用户或普通 Arduino 爱好者的角度来看,它们也非常简单。 电压输入,数字输出。 因此,无论您想要测量什么,无论是一块土壤的水分含量、人声箱的振动,还是通过镜头折射的光子流,很可能都有一个 ADC 可以满足您的需求。工作。