4、选型核心参数(中):频率范围、占空比分辨率(位宽)、精度与抖动、更新速率

好,咱们接着聊选型参数。上一章讲了电压、电流这些“硬指标”,这一章我带你看看几个更“软”但同样要命的参数。说白了,PWM 信号好不好用,很多时候就取决于这几个东西。

本章核心脉络:频率范围决定你能控什么负载;占空比分辨率决定你能控多细;精度和抖动决定信号干不干净;更新速率决定你反应快不快。这四个参数互相牵制,选型时得一起看。

PWM 选型核心参数(中)知识体系 PWM 信号质量 频率范围 占空比分辨率 精度与抖动 更新速率 电机:1kHz ~ 100kHz LED:100Hz ~ 1kHz 电源:100kHz ~ 2MHz 8位:256级 10位:1024级 16位:65536级 周期抖动 占空比精度 非线性误差 影子寄存器 同步加载 突发模式

4.1 频率范围:不是越高越好,也不是越低越好

频率范围这个参数,数据手册上都会写。但很多人拿到手就犯愁——到底选多少合适?我个人的习惯是,先看负载类型。

举个例子。你驱动一个直流有刷电机,频率太低,比如 50Hz,电机会发出“嗡嗡”的噪音,听着就难受。频率太高呢?比如 100kHz 以上,MOSFET 的开关损耗会急剧上升,发热严重。我做过一个项目,一开始图省事用了 20kHz,结果电机倒是安静了,但驱动芯片烫得能煎鸡蛋。后来降到 8kHz,问题才解决。

这里有个经验值,我整理了一下:

应用场景 推荐频率范围 注意事项
直流电机调速 1kHz ~ 20kHz 低于 1kHz 可能抖动,高于 20kHz 开关损耗大
LED 调光 100Hz ~ 1kHz 低于 100Hz 人眼会察觉闪烁
开关电源 100kHz ~ 2MHz 高频可减小变压器体积,但 EMI 更难处理
舵机控制 50Hz(标准) 脉宽范围 1ms ~ 2ms,频率固定
音频 D 类功放 200kHz ~ 1MHz 需远超人耳听觉上限,避免可闻噪声

我的小技巧:选型时别只看“最大频率”,要看“可用频率范围”。有些芯片标称能到 10MHz,但到了高频段占空比分辨率会严重缩水。我建议你重点看数据手册里的“频率 vs 分辨率”曲线图。

4.2 占空比分辨率(位宽):你调得够细吗?

占空比分辨率,说白了就是你能把占空比分成多少级。8 位就是 256 级,10 位就是 1024 级,16 位就是 65536 级。数字越大,调得越精细。

但这里有个坑——分辨率不是越高越好。为什么?因为分辨率越高,计数器的时钟频率就得越高,或者 PWM 频率就得越低。你想想看,一个 16 位的 PWM,如果频率要跑到 1MHz,那计数时钟得跑到 65.536 GHz,这基本不现实。

我记得有一次选型,客户要求 LED 调光要 16 位分辨率,同时又要求 PWM 频率不低于 20kHz。我算了一下,需要的时钟频率是 20kHz × 65536 ≈ 1.31 GHz。当时市面上能跑到这个频率的 MCU 凤毛麟角,而且价格感人。最后我们妥协到 12 位分辨率,人眼根本看不出区别,成本却降了一大截。

所以我的建议是:

  • LED 调光:10 位(1024 级)足够,人眼分辨不出更细的差别
  • 电机控制:8 位 ~ 10 位,配合电流环使用
  • 精密电源:12 位 ~ 16 位,需要高精度输出
  • 音频应用:16 位以上,但通常用 Δ-Σ 调制而非纯 PWM

避坑指南:我曾经遇到过一款芯片,数据手册上写着“16 位 PWM”,但实际测试发现,在高频模式下分辨率自动降到了 10 位。仔细看手册才发现,那行小字写着“16-bit resolution at ≤ 1kHz”。所以,一定要看“全温度、全频率范围”下的分辨率保证。

4.3 精度与抖动:信号干不干净,就看它俩

精度和抖动,这两个词经常被混用,但其实是两码事。

精度指的是实际占空比和理论值的偏差。比如你设了 50% 占空比,实际输出是 49.8%,那误差就是 0.2%。这个误差通常来自时钟源的不准、计数器的不匹配、或者输出驱动电路的延迟。

抖动呢,指的是每个周期的占空比或周期长度在随机变化。你设了 50%,这一周期是 50.1%,下一周期是 49.9%,再下一周期又是 50.0%。这种随机变化就是抖动。

我做过一个项目,用 PWM 控制一个精密加热器。温度老是稳不住,上下波动。查了半天,发现是 PWM 抖动太大。每次占空比都在 ±1% 范围内随机跳,加热器的热惯性虽然能滤掉一部分,但还是有残留波动。后来换了一颗低抖动的 PWM 芯片,问题就解决了。

数据手册里怎么看这两个参数?

  • 精度:通常用“DNL(微分非线性)”和“INL(积分非线性)”表示,单位是 LSB
  • 抖动:通常用“周期抖动(Period Jitter)”或“占空比抖动(Duty Cycle Jitter)”表示,单位是 ps 或 %
参数 含义 典型值(中等性能) 典型值(高性能)
DNL 相邻两个码之间的步长误差 ±0.5 LSB ±0.1 LSB
INL 整体传输曲线的线性偏差 ±1 LSB ±0.2 LSB
周期抖动 每个周期长度的随机变化 ±100 ps ±10 ps
占空比抖动 每个周期占空比的随机变化 ±0.5% ±0.05%

记住:对于电机控制,抖动大一点问题不大,电机本身的惯性就是天然滤波器。但对于精密电源、音频、测量设备,抖动和精度就是命根子,必须选高性能的芯片。

4.4 更新速率:你反应得够快吗?

更新速率,也叫“PWM 更新频率”或“影子寄存器加载速率”。它决定了你改变占空比之后,PWM 输出多久能响应。

这里有个常见的误解:很多人以为 PWM 频率就是更新速率。其实不是。PWM 频率是载波频率,更新速率是你修改占空比的速度。举个例子,PWM 频率是 20kHz,但更新速率可能只有 1kHz——也就是说,你每秒只能改 1000 次占空比,尽管载波每秒钟有 20000 个周期。

为什么会这样?因为很多芯片用了“影子寄存器”机制。你写入占空比寄存器时,数据先存到影子寄存器里,等到下一个 PWM 周期开始或者某个同步事件发生时,才真正加载到工作寄存器。这样做的好处是防止在 PWM 周期中间切换导致输出毛刺。坏处就是更新有延迟。

我遇到过最极端的情况,是在一个伺服电机项目里。我用了一颗普通的 MCU,PWM 频率设到 10kHz,但更新速率只有 200Hz。结果电机响应指令总是慢半拍,位置控制根本稳不住。后来换了一颗带“即时更新”模式的芯片,更新速率直接拉到 10kHz,问题才解决。

选型时,我建议你关注以下几点:

  • 影子寄存器:是否有?加载时机是什么?是周期开始加载还是立即加载?
  • 同步加载:多个 PWM 通道能否同步更新?这在电机控制中很重要
  • 突发模式:有些芯片支持在特定事件触发时批量更新多个参数

我的经验:如果你做的是快速响应的应用,比如伺服电机、数字电源,尽量选支持“立即更新”或“周期同步更新”的芯片。如果只是 LED 调光、风扇调速,普通的影子寄存器机制完全够用,不用纠结。