1. 从耳朵到示波器PWM啸叫到底在叫什么电机一转耳边就多了一种尖细的吱——声转速一变音调跟着变像是有只蚊子跟着转子跑。这个现象在电机驱动圈子里太常见了常见到很多人第一反应是电机质量不行换一个电机声音还在再怀疑驱动器换一块板子声音依旧。折腾一圈下来才发现问题既不在电机也不在驱动器本身而在两者之间的那根PWM信号线上。先把概念理清楚。PWM是脉冲宽度调制本质是用一串频率固定、占空比可调的方波去等效一个模拟电压或者控制一个功率开关。电机驱动器里PWM通常出现在两个位置一是控制器发给驱动芯片的调速信号二是驱动器内部H桥开关管的高频斩波。这两个位置的频率量级完全不同前者常见在1kHz到20kHz后者常见在8kHz到40kHz甚至更高。啸叫声的来源绝大多数就藏在这两个频率段里。人耳的听觉范围是20Hz到20kHz其中2kHz到5kHz这一段最敏感。当PWM频率落在这个区间或者它的谐波、边带分量落在这个区间而电机绕组、磁致伸缩效应、PCB板、电容又把这份能量转成了机械振动你就听到了啸叫。注意这里的关键词是转成了机械振动。电信号本身不发声发声的是被它激励起来的物理结构。所以消除啸叫的思路从来不是单纯把PWM关掉而是要么让激励频率离开人耳敏感区要么切断从电到声的转换路径。我见过太多人一上来就问PWM频率调到多少能消啸叫这个问题本身就不完整。频率只是变量之一占空比、死区时间、驱动电流、电机电感、绕组结构、安装方式每一个都会影响最终的声音表现。下面我会把这些变量一个个拆开结合常见的MCU配置场景比如STM32、HC32F460这类带高级定时器的芯片把从定位到解决的完整链路讲清楚。提示在动手改任何参数之前先用手机录一段啸叫音频用频谱分析类App看一下峰值频率。这个动作花不了两分钟但能帮你省掉大量盲调的时间。2. 啸叫的三种典型来源与各自的频率指纹2.1 调速PWM频率过低导致的基频啸叫这是最常见的一种。控制器输出的调速PWM频率如果只有1kHz到4kHz正好落在人耳最敏感的区域电机绕组在每一个PWM周期都会受到一次电流冲击产生周期性的电磁力绕组和铁芯随之微幅振动声音就出来了。这种啸叫的特点是频率稳定和PWM频率严格对应改变PWM频率音调立刻跟着变改变占空比音量会变但音调不变。判断方法很直接把调速PWM频率从2kHz改到20kHz如果啸叫消失或者变得几乎听不见那基本可以确认是这一类。但要注意频率提高不是没有代价的后面会专门讲。2.2 驱动器内部斩波频率与机械共振的耦合有些驱动器内部H桥的斩波频率是固定的比如16kHz或20kHz按理说已经在人耳敏感区边缘了但还是能听到声音。这时候要怀疑的是机械共振。电机绕组、转子、外壳、甚至安装支架都有自己的固有频率。如果斩波频率的某次谐波恰好接近某个结构的固有频率就会产生共振放大声音反而比基频还明显。这种啸叫的特点是频率不一定等于斩波频率可能是它的二倍、三倍或者表现为一种嗡嗡中夹杂尖啸的复合音。改变斩波频率声音可能变小也可能变大因为你在移动激励频率可能靠近也可能远离共振点。判断这类问题频谱分析几乎是必须的光靠耳朵很难分辨。2.3 死区时间与开关振铃引入的高频分量这个来源比较隐蔽。H桥上下管切换时为了防止直通会插入死区时间。死区期间电机电感中的电流通过体二极管续流会在开关节点产生振铃振铃频率通常在几百kHz到几MHz。这个高频振铃本身超出人耳范围但它的包络或者与PWM频率的调制产物可能落到音频段形成一种沙沙或吱吱的宽带噪声。这类啸叫的特点是往往伴随占空比变化而出现或消失在某个特定占空比附近最明显。用示波器看开关节点波形能看到明显的振铃。解决思路和前两类不同重点在缓冲电路和死区优化而不是简单调频率。啸叫类型频率特征与PWM频率关系快速验证方法基频啸叫单一音调稳定严格等于PWM频率改PWM频率音调跟随变化共振耦合复合音可能含嗡声等于斩波频率的谐波频谱分析找峰值微调频率看变化振铃调制沙沙声或宽带噪声与占空比强相关示波器看开关节点振铃3. 把PWM频率提上去最直接但也最容易踩坑的路3.1 频率选择的经验区间与计算逻辑既然啸叫主要来自音频段的激励最直觉的方案就是把PWM频率提到20kHz以上。这个思路没错但提到多少有讲究。提到20kHz只是刚过门槛考虑到频率容差和谐波实际建议至少22kHz起步常见做法是23kHz到25kHz。再往上比如40kHz、50kHz啸叫确实更彻底地消失但开关损耗会显著上升。开关损耗的估算不复杂。以MOSFET为例单次开关的能量损耗大致正比于频率频率翻倍开关损耗大致翻倍。假设原来16kHz时开关损耗是1W提到32kHz就变成约2W这2W全部变成热。对于小功率驱动器可能无所谓对于几安培以上的应用散热设计就得跟着改。所以频率不是越高越好而是在离开音频段和损耗可接受之间找平衡。我一般的做法是先试23kHz如果还有轻微声音再试25kHz很少需要超过30kHz。超过30kHz还解决不了说明问题不在基频得回到第2节去重新定位。3.2 提高频率后必须同步检查的三件事第一件是死区时间。频率提高周期变短如果死区时间不变它在周期中的占比就变大了会导致有效占空比范围缩小、波形畸变加重。比如原来20kHz周期50微秒死区1微秒占2%提到40kHz周期25微秒死区还是1微秒就占4%了。这时候要么适当减小死区要么接受占空比范围的损失。第二件是栅极驱动能力。频率高了MOSFET栅极充放电更频繁如果驱动电流不够开关沿会变缓开关损耗进一步增加还可能引起上下管同时导通的瞬间。检查驱动电阻和驱动芯片的峰值电流能力必要时减小栅极电阻但要小心振铃加重。第三件是电流采样。很多驱动器用采样电阻加运放做电流环频率提高后采样窗口变窄如果运放带宽不够或者采样时刻没对准电流环会震荡反而引入新的噪声。这一条特别容易被忽略我踩过不止一次。3.3 一个真实的调试记录之前调一块基于HC32F460的驱动器电机在低速时啸叫明显。最初把内部斩波从16kHz提到24kHz啸叫基本消失但电机发热明显增加。用热像仪一看下管温度比原来高了近20度。回头查死区发现配置里死区是固定1.2微秒频率提高后占比过大导致体二极管续流时间变长续流损耗增加。把死区改到0.6微秒同时把栅极电阻从10欧降到6.8欧温度回落了十几度啸叫也没有回来。这个案例说明频率调整从来不是孤立动作必须连带检查死区和驱动。4. 频率不能动的时候从波形和结构上做文章4.1 随机抖动与扩频把能量摊开有些应用PWM频率被系统其他需求锁死了比如要和某个采样周期同步或者受限于驱动器芯片的固定频率。这时候可以引入频率抖动让PWM频率在一个小范围内随机或周期性地变化比如中心24kHz上下浮动正负1kHz。这样原本集中在单一频率的能量被摊开到一段频带上每个频点的能量下降啸叫的尖锐感会明显减弱听起来从吱——变成更柔和的沙——。实现上如果MCU的定时器支持可以在每次周期更新时微调重装载值。以STM32的高级定时器为例可以在更新中断里对ARR值做一个小范围的伪随机扰动。注意扰动幅度不要太大否则会影响电机运行的平稳性一般正负3%到5%就够了。4.2 调整开关沿速率从源头减小激励开关沿越陡包含的高频分量越丰富越容易激励起各种振动。适当放慢开关沿可以减小高频能量。方法就是增大栅极电阻或者在栅源之间加小电容。但这把双刃剑的另一面是开关损耗增加所以要在啸叫和效率之间权衡。我的经验是如果啸叫主要来自振铃调制放慢开关沿往往比调频率更有效而且对电机运行影响小。4.3 机械与结构层面的处理电信号最终要通过结构发声所以结构上的改动有时能起到四两拨千斤的效果。常见的做法包括在电机和安装板之间加橡胶垫减振对绕组进行浸漆处理增加阻尼在PCB上对大面积覆铜做分割减少板子作为扬声器的振动。这些方法不改变电气参数属于切断传播路径的思路适合电气手段已经用尽的情况。注意浸漆和加垫这类改动会改变电机的散热和机械特性批量应用前一定要做充分的老化和温升测试不要只在样机上验证。5. 从MCU配置入手定时器参数里藏着的细节5.1 中心对齐与边沿对齐对噪声的影响很多MCU的PWM定时器支持边沿对齐和中心对齐两种模式。边沿对齐下每个周期只有一个沿在变化电流纹波的频率等于PWM频率。中心对齐下一个周期内有两个对称的沿电流纹波的频率实际上是PWM频率的两倍。这意味着同样设20kHz中心对齐模式下电流纹波的基频是40kHz更容易离开音频段。所以在条件允许时优先用中心对齐模式这是一个几乎不花成本的优化。5.2 死区配置的实操要点死区时间不是随便填的。太小会直通太大会畸变。合理的做法是先根据MOSFET的开关时间和驱动能力估算一个下限再留一定裕量。比如MOSFET开通延迟加上升时间约200纳秒关断延迟加下降时间约150纳秒那死区至少要大于350纳秒取500纳秒到800纳秒比较稳妥。频率提高后要重新核算不要沿用低频时的值。5.3 互补输出与刹车功能的正确使用高级定时器的互补输出和刹车输入是保护电机和驱动器的关键。刹车功能在过流时能快速封锁PWM但刹车后的恢复策略要设计好否则恢复瞬间的电流冲击可能引入新的噪声甚至啸叫。我一般会在刹车恢复时加一个软启动过程让占空比从零缓慢爬升避免突变。6. 排查链路一次完整的啸叫定位过程遇到啸叫不要东改一下西改一下按下面的顺序走效率最高。第一步确认啸叫是否与PWM相关。让电机停转但保持PWM输出如果声音还在说明是纯电气激励如果声音消失说明和转动有关可能是机械或气动噪声。这一步能排除掉相当一部分误判。第二步用频谱App测峰值频率。把测到的频率和PWM频率、斩波频率对比判断属于第2节里的哪一类。第三步做频率扫描。在允许范围内缓慢改变PWM频率观察声音的变化。如果音调跟随是基频啸叫如果某个频率点声音突然变大是共振如果变化无规律考虑振铃调制。第四步针对性处理。基频啸叫优先提频率或加抖动共振优先微调频率避开共振点或做结构阻尼振铃调制优先调栅极电阻和死区。第五步验证与回归。改完之后不仅听声音还要测温升、测电流波形、测效率确认没有引入新问题。这个链路我用了很多次基本能在半小时内定位到方向。最怕的是一上来就乱调参数改了一堆东西最后不知道是哪个起了作用下次遇到同样问题还是不会。7. 几个容易被忽略的细节和我的经验之谈第一个细节是电源。PWM频率提高后驱动器从电源抽取电流的频率也提高如果电源去耦不足电源线上会出现更大的纹波这个纹波可能耦合到其他电路也可能通过电源线辐射出去。我习惯在驱动器电源入口放一个足够大的电解电容并联小陶瓷电容频率改动后重新检查电源纹波。第二个细节是布线。PWM信号线如果和敏感的模拟线比如电流采样线平行走线高频PWM会耦合过去轻则影响采样精度重则引起震荡。保持距离、垂直交叉、必要时加地线隔离这些都是老生常谈但确实有效。第三个细节是电机本身的电感。电感小的电机电流纹波大同样的PWM频率下噪声更明显。如果可选选电感大一些的电机对降噪有帮助但会影响动态响应要综合权衡。第四个细节是负载。空载和带载时啸叫表现可能完全不同。我遇到过空载啸叫明显、带载反而安静的情况原因是带载后电流连续纹波减小。所以测试一定要在实际负载下做不要只看空载。最后说一个心态上的经验。啸叫这个问题很多时候没法做到完全消除只能做到听不见或者可接受。追求绝对的静音往往要付出巨大的成本和体积代价。工程上的目标应该是满足使用场景的要求而不是追求理论上的完美。我在实际项目里通常把目标定为一米之外听不到这个标准对大多数应用已经足够实现起来也现实得多。
阅读完成 · 觉得有帮助?