我正在寻找最佳 RC 时间常数及其在 PWM 中基于占空比和频率以及其他参数将数字信号转换为模拟信号的原因。PWM 频率为 10 kHz。
如何确定 PWM 数模低通滤波器中的 RC 时间常数?
最好的 RC 是无限的,那么你就有一个完美的无纹波直流输出。问题是它还需要永远响应占空比的变化。所以它总是一个权衡。
一阶 RC 滤波器的截止频率为
\$ f_c = \dfrac{1}{2 \pi RC} \$
以及 6 dB/倍频程 = 20 dB/十年的滚降。该图显示了 0.1 Hz(蓝色)、1 Hz(紫色)和 10 Hz(另一种颜色)截止频率的频率特性。
所以我们可以看到,对于 0.1 Hz 滤波器,PWM 信号的 10 kHz 基波被抑制了 100 dB,这还不错;这将产生非常低的纹波。但!
该图显示了三个截止频率的阶跃响应。占空比的变化是直流电平的一个步骤,以及 10 kHz 信号的谐波的一些变化。具有最佳 10 kHz 抑制的曲线响应最慢,x 轴为秒。
该图显示了 30 µs RC 时间(截止频率 5 kHz)对 50 % 占空比 10 kHz 信号的响应。有一个巨大的纹波,但它会在 2 个周期或 200 µs 内响应从 0 % 占空比的变化。
这是一个 300 µs RC 时间(截止频率 500 Hz)。仍有一些纹波,但从 0% 到 50% 占空比需要大约 10 个周期或 1 ms。
将 RC 进一步增加到毫秒将进一步降低纹波并增加反应时间。这完全取决于您可以承受多少纹波以及您希望滤波器对占空比变化做出反应的速度。
该网页计算出,对于 R = 16 kΩ 和 C = 1 µF,我们的截止频率为 10 Hz,90% 的稳定时间为 37 ms,最大 5 V 时的峰峰值纹波为 8 mV。
编辑
您可以通过更高的订单来改进您的过滤器:
蓝色曲线是具有 20 dB/十年滚降的简单 RC 滤波器。二阶滤波器(紫色)具有 40 dB/十倍频程滚降,因此对于相同的截止频率,在 10 kHz 时将具有 120 dB 的抑制,而不是 60 dB。这些图表非常理想,可以通过有源滤波器(如 Sallen-Key)获得最佳效果。
方程
一阶 RC 滤波器的峰峰值纹波电压作为 PWM 频率和 RC 时间常数的函数:
\$ V_{波纹} = \dfrac{ e^{\dfrac{-d}{f_{PWM} RC}} \cdot (e^{\dfrac{1}{f_{PWM} RC}} - e^{ \dfrac{d}{f_{PWM} RC}}) \cdot (1 - e^{\dfrac{d}{f_{PWM} RC}}) }{1 - e^{\dfrac{1}{f_ {PWM} RC}}} \cdot V_+\$
E&OE。“d”是占空比,0..1。纹波在 d = 0.5 时最大。
对 99% 最终值的阶跃响应为 5 x RC。
Sallen-Key 滤波器的截止频率:
\$ f_c = \dfrac{1}{2 \pi \sqrt{R1 \text{ } R2 \text{ } C1 \text{ } C2}} \$
对于巴特沃斯滤波器(最大平坦度):R1 =R2,C1 = C2
正如 Steven 所说,这是衰减 PWM 频率与响应时间之间的权衡。这就是为什么任何此类决定都必须从您想要从生成的模拟信号中得到什么的规范开始。它需要多大的信噪比,或者至少可以容忍多少 PWM 频率的噪声?它必须以多快的速度达到本底噪声水平?或者反过来说,你关心的上限频率是多少?
请注意,特定的 PWM 输出可能无法满足特定的一组标准。假设您想要高质量的语音输出。我们会说这是高达 8 kHz 和 60 dB 的信噪比。任何具有 20 kHz PWM 的合理可控的模拟滤波器都不会发生这种情况,当然也不会像单个 R 和 C 那样简单。
例如,让我们向后工作,看看 PWM 特性必须是什么才能使用单个 R、C 滤波器支持上述语音示例。我们已经说过 -3 dB 滚降频率是 8 kHz,所以这就是我们将 R 和 C 设置为的值。单个 R,C 滤波器的滚降频率为:
F = 1 / (2 π RC)
当 R 以欧姆为单位,C 以法拉为单位时,则 F 以赫兹为单位。很明显,这个方程可以重新排列以求解给定其他两个的 R、C 或 F 中的任何一个。我将 1/(2 π) = .15915 始终保存在计算器的寄存器中,因为这种计算经常出现在电子设备中。然后我只需将其除以 R、C 或 F 中的两个即可得到第三个。
我们有两个自由度,上面的方程只确定了其中一个。另一个可以被认为是您希望得到的信号具有的阻抗。让我们拍摄大约 10 kΩ,这就是我们将制作 R 的值,只是为了看看 C 的结果:
1 / (2 π 8kHz 10kΩ) = 1.99 nF
这基本上是 2 nF 的标准电容值,所以我们就照着做吧。如果它没有达到一个共同的值,我们会选择一个接近的值,然后返回并相应地调整 R。电阻器比普通电容器具有更精细的变化和更高的容差,因此您通常会找到一个接近的电容器值,然后让它驱动精确的电阻器值。
因此,我们已确定 R = 10 kΩ 和 C = 2 nF。请注意,这来自 8 kHz 的上限频率要求。我们没有更多的选择可以做,所以稳定时间和信噪比将是它的样子。我们现在所能做的就是确定它是否足够好,或者相反,需要哪些 PWM 特性来支持输出信号规格。
由于规格是 60 dB 的信噪比,这意味着噪声必须小于 1000 电压的一部分,这意味着 PWM 频率必须衰减那么多。在滚降频率之后,单个 R、C 滤波器的衰减与频率成反比。这是一个近似值,在滚降频率附近及以下中断,但在大多数情况下,在滚降频率超过一两个八度之后就足够了。换句话说,16 kHz 将衰减 2 并产生一些误差,32 kHz 衰减 4 则误差更小,之后您几乎可以将感兴趣的频率除以滚降频率来获得衰减。我们希望 PWM 频率衰减 1000,这意味着它需要为 8 MHz 或更高。这很高,但对于某些处理器是可行的。例如,
现在让我们看看 PWM 分辨率。同样,这是由 60 dB 信噪比规格驱动的,我们已经知道这意味着 1:1000。这将需要至少 999 的 PWM 分辨率(您总是得到比 PWM 分辨率高一个的输出电平)。这意味着内部 PWM Slice 时钟需要运行 8 MHz PWM 输出频率的 999 倍,或者基本上是 8 GHz。合理可用的现成零件不会发生。
但是,有一种方法可以绕过这些限制,那就是不仅仅使用单个 R、C 滤波器。当我想要一个好的模拟信号时,我通常会连续使用其中的两个或三个。让我们看看使用三个连续的 R,C 过滤器如何改变事情。
我们最初说我们感兴趣的上限频率是 8 kHz,这意味着我们可以容忍降低 3 dB,除非我们另有说明。单个 R,C 滤波器将在滚降频率处衰减 3 dB,因此我们将其设置为 8 kHz。我们不能在 8 kHz 处设置三个滤波器,因为它们加起来会衰减 9 dB。因此,我们将滤波器移出极点数(在这种情况下是单独的 R、C 滤波器)。
因此,三个 R、C 滤波器(三个极点)的频率为 24 kHz。这样做似乎我们失去了基础,但最大的优势是,高于该频率的频率现在被立方比衰减,而不是像单极点那样仅衰减。同样,我们希望 PWM 频率衰减 1000,即 10^3,因此我们只需要超出滤波器滚降频率的 10 倍,这意味着 240 kHz 就足够高了。这与 8 MHz 有很大的不同。现在内部 PWM 时钟或 PWM Slice 频率只需为 240 MHz。这仍然很高,但可以实现。
希望这能让您对这些问题有所了解。如果您提供具体的规格,我们可以为您的案例提供特定的值。
通过使用级联 RC 级,可以提高单个 RC 的性能。在纯多级 RC 无源滤波器中无法获得与有源滤波器一样好的性能,但性能可能仍优于单级。不幸的是,我不知道计算最佳 RC 值的任何特别好的方法。
另一件需要注意的是,虽然脉宽调制是占空比调制的最常见形式,但它并不是唯一的。在目标输出电压不会经常变化并且输出更可能靠近范围中心而不是边缘的情况下,一种非常有用的简单方法是生成一组信号通过计算(当前计数器值“而不是”先前的计数器值),并将该信号与所需数据值的位以相反的顺序与(以便数据值的 MSB 与当前计数器的异或LSB 和前一个)。使用这种方法与例如六位占空比调制将意味着 32/64 占空比波将由 PWM 时钟的一半频率表示,而不是频率为 PWM 时钟 1/64 的方波。33/64 占空比主要由 PWM 时钟频率的一半表示,但会引入一些额外的高脉冲。
这是我正在谈论的内容的演示。
迄今为止给出的所有很好的答案,写得很好且相关,但通常最好的答案需要一个更好的问题。
当您考虑“最佳 RC 量?”时,任何设计都需要考虑哪些假设;
滤波器的阻抗相对于源和负载的阻抗是多少?
如果不重要,请在源和负载之间选择 R。但是假设 CMOS 驱动器的值是 10~100 Ω,负载为 100KΩ,但您希望 DC 损耗的精度为 0.3%,然后选择 R << 0.3% 的 R-load,或者我称之为“阻抗比法”出于负载考虑,此处 R < 0.003 * 1e5 = 300Ω。R 的选择并不重要,但您必须注意不要加载滤波器,因此您可以根据阻抗比进行选择,以便快速计算直流损耗和交流抑制。
- 如果您希望 10KHz PWM 的噪声小于源的 1%,那么对于串联 RC LPF,选择 Zc(f) 的阻抗小于 R 的 1%。
- 如果您出于干扰原因希望在 0.5 MHz 以上的所有谐波上纹波 > 80dB,例如在 AM 无线电或 FCC/CE EMC 测试中,请再次查看电容的阻抗比,包括 ESR 相对于 R 估计 C 的值,然后选择稍大温度裕度。公差并考虑您需要多少保证金。您知道一阶滤波器的斜率为 20dB/decade,然后您可以决定一阶滤波器是否足够。级联 RC 滤波器必须考虑每个阶段的负载效应。LC 滤波器成本更高,可能需要有源滤波器。
假设您知道一个电容器阻抗比标准的阻抗是一个简单的解决方案。否则,要在源和负载中间找到阻抗,请考虑一种方法 Rf = √(Rs*Rl),其中 Rf 是源的滤波器 RC 值,Rs 和负载 Rl 作为中间范围的一种方法。
设计的好处在于,取决于您的标准,RC 值通常有多个“最佳”答案。:)