技术文章翻译 “使用PWM输出构造DAC”

原文链接:“Turn Your PWM into a DAC

如果你的微控制器没有数模转换器,你可以用一个脉宽调制信号和一个低通滤波器来做一个合格的替代品。

支持信息

当您缺少 DAC 时

即使在这个高度集成的混合信号集成电路时代,不包含数模转换器的微控制器也并不罕见。可编程逻辑在这方面问题更大;我从未听说过具有 DAC 模块的 FPGA 或 CPLD。即使微控制器确实有 DAC,也可能只有一个或两个通道 – 与集成 ADC 外设相反,后者通常包含一个多路复用器,允许一个 ADC 模块将模拟信号连接到几个甚至几十个端口引脚。那么,当您找到一个除了没有集成 DAC 之外在各方面都非常适合您的应用的微控制器时,您应该怎么做?嗯,最明显的选择是使用外部 DAC。快速的 Digi-Key 搜索表明您至少有 1000 个可供选择,其中一些成本不到 1 美元,并采用微型 SC70、MSOP、SOT 或 DFN 封装。但有时你真的不想在设计中添加另一个芯片。也许您的微控制器没有 SPI 通信所需的三个未使用的引脚;也许您很着急,不想支付隔夜运费;也许您需要六个独立的 DAC 输出,但没有足够的板空间容纳六通道设备。无论如何,如果根本不可能使用外部 DAC,那么您还有其他选择。也许您的微控制器没有 SPI 通信所需的三个未使用的引脚;也许您很着急,不想支付隔夜运费;也许您需要六个独立的 DAC 输出,但没有足够的板空间容纳六通道设备。无论如何,如果根本不可能使用外部 DAC,那么您还有其他选择。也许您的微控制器没有 SPI 通信所需的三个未使用的引脚;也许您很着急,不想支付隔夜运费;也许您需要六个独立的 DAC 输出,但没有足够的板空间容纳六通道设备。无论如何,如果根本不可能使用外部 DAC,那么您还有其他选择。

PWM、电阻、电容

这里的最低要求是一个电阻器、一个电容器和某种脉宽调制功能。如果您使用 FPGA 或 CPLD,您肯定不会缺少 PWM 功能。对于处理器,我认为我曾经使用过的每个微控制器都包含 PWM 硬件,但我想肯定有些部分没有。所以这是要检查的第一件事——如果你的微控制器没有 PWM,那么你就不走运了(除非你想安装某种 bit-banging PWM 例程,但说真的,如果你只是在那条船上使用外部 DAC)。接下来,您需要一种对 PWM 信号进行低通滤波的方法。如果您不介意输出上的一些纹波,一个基本的单极 RC 滤波器就可以了,所以如果您的电路板或预算中只有一个电阻器和电容器,那么 PWM DAC 仍然是一个可行的选择。

PWM——基础知识

您可能已经知道什么是脉宽调制;不过,我们将简要回顾基本概念,以确保我们在了解低通滤波器如何将数字信号转换为可编程模拟电压时打下坚实的基础。

%title插图%num

典型的数字时钟信号是一系列周期,其中逻辑高电压的持续时间等于逻辑低电压的持续时间。相反,PWM信号是一系列周期,其中逻辑高(或逻辑低)电压的持续时间根据外部条件而变化,这些变化可用于传输信息。如果您熟悉无线电电路,就会知道信息是通过应用某种调制的正弦信号传输的。这种情况类似于 PWM 功能——我们有脉冲宽度而不是幅度频率调制调制。您可能会发现从概念上的相似性来思考会很有帮助:我们都知道,模拟音频信号可以通过首先调制载波然后处理接收到的信号从天线传输到汽车收音机,从而消除载体并恢复原始音频信息。同样,我们可以通过对数字载波进行脉宽调制,然后将该调制信号“传输”到低通滤波器来生成可编程模拟电压。

在上图中,逻辑高电平被识别为“ON”或激活状态,逻辑低电平被识别为“OFF”或非激活状态。在第一时段,活动状态的持续时间等于非活动状态的持续时间。然后,对于接下来的两个周期,活动状态持续时间增加一个网格宽度;这意味着非活动状态持续时间必须减少一个网格宽度,因为 PWM 载波频率(以及因此 PWM 周期)是恒定的。在我们的 PWM DAC 的上下文中,我们真的不需要知道绝对有效和无效持续时间;重要的是持续时间之间的比率,我们根据 PWM 占空比进行讨论:

%title插图%num

从占空比到模拟电压

在低通滤波器的输出端观察到的标称 DAC 电压仅由两个参数决定,即占空比和 PWM 信号的逻辑高电压;在图中,这个逻辑高电压用 A 表示,表示“幅度”。占空比、幅度和标称 DAC 电压之间的关系相当直观:在频域中,低通滤波器抑制输入信号的高频分量。这种效应的时域等效项是平滑或平均——因此,通过对 PWM 信号进行低通滤波,我们可以提取其平均值。假设占空比为 50%(即活动持续时间等于非活动持续时间),并且我们正在使用 3.3 V 逻辑。您可能会猜到标称 DAC 电压是多少:1.65 V,因为信号的一半时间在 3.3 V 和一半在 0 V,因此,平滑的版本将在中间结束。我们可以概括如下:

desired DAC voltage=A×duty cycle

分辨率呢?

在选择 DAC 时,您首先要看的规格之一是“分辨率”,这是一个有点模糊的术语,用有点模糊的“位”单位表示。“分辨率”的真正含义是“DAC 可以产生多少不同的输出电压(或电流)?” “位数”是指控制数模电路的数据寄存器,因此 10 位 DAC 可以产生 2 10 = 1024 个不同的输出电压。如果您了解这一点,您会发现我们可以很容易地确定 PWM DAC 的等效分辨率。

%title插图%num

让我们假设图中所示的 PWM 信号被限制为一个网格的倍数的脉冲宽度。这意味着占空比可以采用 8 个不同的值:0%、~14%、~29%、~43%、~57%、~71%、~86% 和 100%。每个占空比对应一个特定的输出电压,所以我们这里有一个 3 位 DAC,因为 2 3 = 8。

要确定实际 PWM DAC 的分辨率,只需应用相同的分析:您可以生成多少不同的占空比?回答这个问题通常并不难,因为标准 PWM 硬件模块中的核心元件是一个 N 位计数器,用于控制脉冲宽度,这意味着等效 DAC 分辨率为 2 N。例如,Atmel 的 SAM4S 微控制器系列的数据表包括以下 PWM 控制器特性:

%title插图%num

该 16 位计数器意味着 16 位分辨率,即 2 16 = 65,536 个不同的电压,范围从 0 V 到 VDDIO(可以是 1.62 V 到 3.6 V)。再举一个例子,Silicon Labs 的 EFM8UB1 微控制器具有可变 PWM 分辨率,因此参考手册明确说明了分辨率规格:

%title插图%num
%title插图%num

结论

在这一点上,当您可以从 PWM 加 RC 滤波器实现中获得 16 位分辨率时,普通 DAC 似乎几乎没有任何用处。但当然,这还不是全部——DAC 不仅仅是分辨率。在下文中,我们将使用仿真来更深入地探索与 PWM 数模转换相关的概念、电路和性能限制。

频域中的 PWM

在上文中,我们看到脉宽调制信号可以“平滑”成相当稳定的电压,范围从地到逻辑高(例如,3.3 V);平滑是通过一个简单的低通滤波器完成的。因此,我们可以通过固件或硬件根据以下关系改变PWM占空比来实现数模转换:

desired DAC voltage=A×duty cycle

其中 A(“幅度”)是逻辑高电压。

让我们通过查看 PWM 信号的频域表示来开始对 PWM DAC 进行更彻底的探索。这是LTspice原理图:

%title插图%num

正如您在 PULSE 特性中看到的,脉冲宽度为 5 µs,周期为 10 µs。因此,占空比为 50%,PWM 载波频率为 100 kHz。另请注意,A = 3.3 V,上升和下降时间均为 10 ns。这是时域信号:

%title插图%num

这是 FFT:

%title插图%num

您可能会将此频谱视为我们期望从方波中获得的一般模式,即载波频率处的尖峰,然后是载波频率乘以 3、载波频率乘以 5 的幅度减小的谐波,等等。然而,LTspice FFT 没有向我们显示 DC 分量,该分量非零,因为该方波关于 x 轴不对称。我修改了下一个图以包含直流分量:

%title插图%num

所以我们想要的是最左边稳定的 1.65 V,我们不想要的是 100 kHz 的麻烦尖峰(以及所有更高频率的尖峰)。在这一点上,您可能会明白为什么我们在 PWM DAC 中使用低通滤波器:滤波器保留直流分量,同时抑制其他一切。如果我们有一个完美的滤波器,我们就会有一个完全稳定的 DAC 电压——只要回顾一下前面的图,想象一个“砖墙”滤波器,它在 50 kHz 时从无衰减过渡到完全衰减。信号的所有非直流分量都将被消除,我们将得到 1.65 V 的直流电压。

此时,您可能想知道频谱如何随着脉冲宽度的变化而变化。如果频率分量四处移动以致低通滤波器变得不那么有效怎么办?考虑以下两个适用于 10% 和 90% 占空比的 FFT:

%title插图%num
%title插图%num

频谱肯定会相对于 50% 的占空比发生变化,但有一点不会改变:第一个尖峰出现在载波频率上。因此,无论占空比如何,我们都有一个相当大的频带——在这种情况下,从 DC 到 100 kHz——低通滤波器可以在其中从无衰减过渡到显着衰减。

纹波和单极响应

让我们看看使用基本 RC 滤波器可以获得什么样的 DAC 质量。我们将从直流到载波频带中间的截止频率(用 f c表示)开始:

%title插图%num
%title插图%num

不太好 。. . 显然我们需要比这更多的衰减。让我们将截止频率移至 1 kHz:

%title插图%num
%title插图%num

纹波现在有了很大改善,但您可能注意到我们遇到了一个新问题:输出需要很长时间才能达到所需的 DAC 电压。这是因为 RC 滤波器中的较高电阻不仅降低了截止频率,而且还增加了时间常数——电阻越大意味着流向电容器的电流越少,因此电容器充电速度就越慢。下图有助于传达这对 DAC 施加的限制:

%title插图%num

您在该图中看到的是相当糟糕的“稳定时间”,这是一个说明 DAC 可以多快将其输出调整到新编程电压的规范。该图表明,当输出增加或减少满量程范围的一半时,该特定电路的建立时间几乎为 1 ms。现在不要误会我的意思,在许多应用中 1 ms 是完全可以接受的,但这并不能改变这样一个事实,即与您对典型 DAC 的期望相比,这种建立性能极其不起眼。

上述结果将我们带到了 PWM DAC 设计中涉及的两个主要权衡中的第一个。

  • 权衡#1:较低的截止频率意味着更少的纹波和更长的稳定时间;更高的截止频率意味着更大的纹波和更短的建立时间。因此,您必须考虑您的应用并决定是否需要响应更快或受输出纹波影响较小的 DAC。

两极比一极好吗?

让我们看一下相同两个截止频率的二极点滤波器结果。以下电路是一个 f c ≈ 50 kHz 的临界阻尼 RLC 滤波器(我使用这个在线滤波器计算器工具来确定元件值):

%title插图%num
%title插图%num

正如预期的那样,这是对单极 50 kHz 滤波器的显着改进;峰峰值纹波已从约 2.15 V 降至低于 900 mV。以下是 f c ≈ 1 kHz 的临界阻尼 RLC 滤波器的电路:

%title插图%num
%title插图%num

在这里,我们几乎消除了涟漪;如果放大,您会发现峰峰值纹波只有大约 500 µV。但是现在我们又遇到了建立时间问题(记住权衡#1):

%title插图%num

此时,您可能正在考虑如何改进此滤波器以实现快速响应和低纹波。也许您注意到之前的电路需要 2.2亨——这是一个很大的电感器。那么有源滤波器呢?萨伦-基?也许是一个 Sallen-Key 后跟一个 RC 滤波器?等等,为什么不直接使用开关电容滤波器呢?四极,甚至五极、七极。. . . 这给我们带来了第二个权衡:

  • 权衡#2:高阶过滤器提高了性能,但它们也增加了成本和复杂性。与其花时间和金钱为平庸的 PWM DAC 实现花哨的滤波器,我们应该只使用外部 DAC!在我看来,你不应该超越一个极点。外部 DAC(以及带有集成 DAC 的微控制器)价格实惠且应用广泛,如果 RC 滤波器无法满足您的性能要求,PWM DAC 将失去吸引力。

改善 PWM DAC 的简单方法

我们不必因权衡#2 而气馁,因为有一种直接的方法可以从 RC 滤波器中获得更多性能:只需增加 PWM 信号的频率!请记住,从直流到载波频率的 PWM 频谱是空的。因此,更高的载波频率意味着滤波器响应可以滚降的更宽频带——相同的滤波器、相同的建立时间、更多的衰减。让我们回到 f c ≈ 50 kHz 的 RC 滤波器,让我们将载波频率增加到 10 MHz。结果如下:

%title插图%num
%title插图%num

建立时间仅为 15 µs 左右,纹波仅为 25 mV(与我们使用载波频率为 100 kHz 的 50 kHz 滤波器时的 2.15 V 相比​​)。

实际限制

在我们结束之前,我应该指出,这些理想化的模拟并没有揭示理想的 PWM DAC 性能——即不可靠且因此不可预测的逻辑高电压和逻辑低电压。模拟输出电压与数字 PWM 幅度成正比,因此 PWM 信号的实际逻辑高和逻辑低电压的变化将导致 DAC 电压的相应变化。这个问题与电池供电的应用特别相关。如果微控制器直接由电池供电,则逻辑高电压将随着电池放电而逐渐降低。但是,即使使用稳压电源,您也可能不知道确切的电源电压——精度为 ±2% 的稳压器意味着(最多)精度为 ±2% 的 DAC 电压。即使您有一个非常精确的稳压器,并且没有因电池放电或环境条件变化而导致的显着电源变化,仍然,实际的逻辑高电压和逻辑低电压可能会受到产生 PWM 信号的设备(通常是微控制器)的运行状态的影响。缓解此问题的一种方法是使用外部缓冲器 IC,它可以帮助 PWM 信号保持可预测的电压水平,但此时您又处于权衡的领域——如果您在缓冲器 IC 上花费 40 美分,或 71 美分微型 8 位 DAC

结论

我们已经讨论了控制 PWM DAC 设计的两个主要权衡,并且我们已经看到更高的载波频率是提高性能的好方法。使用提供 16 位 PWM 分辨率的高速微控制器,您可以制作一个相当不错的 DAC,只需要一个 RC 滤波器。

《技术文章翻译 “使用PWM输出构造DAC”》有9条评论

发表评论