ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

PWM啸叫排查指南:从频率、硬件到算法的电机噪声治理

PWM啸叫排查指南:从频率、硬件到算法的电机噪声治理

新做的一版驱动板第一次上电,电机刚转起来,实验室里立刻被一阵尖锐的“吱——”声灌满。示波器看PWM波形没毛病,电流波形也还算干净,可那声音就是赖着不走。这场景做电机驱动器的人都不陌生:PWM啸叫问题,研究工作本身不复杂,烦人程度却极高,几分钟耳朵就发麻。

很多人遇到啸叫的第一反应是“载频不够高,往上调”。真动手之后会发现,调载频只是出路之一,有时候调了反而更糟。因为这种声音的传递链不止“PWM频率是否落在人耳听域”这一环,而是由电气激励源、机械响应和声学辐射三个环节共同决定。想把它彻底消掉,得先搞清是哪一环在作怪。

下面这些内容不是单纯罗列方法,而是我在处理这类问题时的完整排查思路:怎么定位声源、怎么在频率上做实验、硬件和软件分别还有哪些招。适合正在调试电机控制系统(无刷、有刷、步进、永磁同步都适用)的朋友,也适合刚接手驱动项目的硬件工程师按步骤排查。

1. 先分清“嗓子”和“指挥”:啸叫背后的完整链路

1.1 人耳能听到的范围:为什么“听不到”不等于没问题

人耳的听觉范围一般在20Hz到20kHz之间,2k到5kHz又是人耳最敏感的区域,而这个区域恰好是电机运转噪声、电流环振荡、开关电源与电机PWM之间差拍最集中的地方。所以当你听到刺耳的“吱”,先别急着认为是PWM基频太高或太低,真正需要关注的往往是几百到几千赫兹的分量。

有人会说“我把PWM设成20kHz,人耳不是听不到了吗”,这句话在多数情况下成立,但有两个坑:一是20kHz只是大多数成年人的上限,年轻人和部分敏感人群依然能感知甚至出现不适;二是PWM本身会通过死区、电流纹波、电磁干扰等途径产生边带和包络分量,这些分量的频率完全可能落在可听范围内。也就是说,即使基频在20kHz以上,叫声照样能出现。

所以处理啸叫的第一步不是改参数,而是把“你听到的那个声音到底是什么频率”搞清楚。频率对了,后面所有的调整才有方向。我习惯在排查初期先用手机上的频谱类App录一段音频,看主峰在哪个频点,再决定下一步动谁。

1.2 电气激励→机械响应→声辐射:三级传导缺一不可

我习惯把啸叫看成一条三级链:电气激励源负责“发出命令”,机械体负责“执行动作”,空气和结构负责“传递和放大”。

第一级是电气激励。PWM的开关边沿、死区引起的电压误差、电流环的小幅振荡,都会在电机绕组、母线电容、功率电感上形成电气应力,这些应力的频率可能是十几kHz的基频,也可能是几百Hz的控制带宽。第二级是机械响应。电气应力作用到具体器件时,会通过三种方式变成机械振动:磁致伸缩,也就是磁性材料在交变磁通下自身长度发生变化;压电效应,陶瓷电容在电场变化时发生形变;还有电磁力,通电导体和磁场之间的相互作用。器件本身振动幅度通常非常小,比头发丝还细。

第三级是声辐射。微小的振动如果直接暴露在空气中,人耳几乎听不到,但它一旦通过PCB、散热器、外壳这些“音箱”结构放大,或者恰好踩中某个结构的固有频率,就会变成明显的啸叫。这也是为什么同一个驱动方案,换个外壳、改个螺丝固定位置,声音就会变化。

这个链条解释了一个反直觉现象:有时候你费了半天劲换电感、换电容,声音还是不绝,可能因为真正在“唱歌”的是外壳或散热器,而你换的电容电感只是驱动源,歌喉没换,换乐队指挥也没用。

1.3 啸叫不止一个频率:包络、拍频、死区畸变的叠加

啸叫最常见的听感有三种:持续的高频“吱”,低频“嗡”,还有周期性起伏的“呜呜”。它们对应的机理完全不同,误诊率也高,值得单独拿出来说。

持续高频“吱”通常和PWM基频直接相关,比如16kHz载波被听觉敏感的同事当场指出,频率一降声音就变调。低频“嗡”常见于电流环或速度环的振荡,振荡频率落在几百赫兹,正好压在人耳最敏感的区域,听感像变压器通电时的闷哼。周期性“呜呜”则多半是拍频,两个接近但不完全相等的频率叠加,产生差频包络,如果你的系统里既有电机PWM又有DCDC开关电源,二者频率接近时就容易出现。

死区造成的电压畸变也值得一提。死区时间会让输出电压产生奇次谐波误差,电流波形出现六倍频脉动,这类脉动的电磁力会生成一个可听的低频分量。很多“电机低速时嗡嗡响、速度一上来又好了”的案例,不是机械问题,而是死区补偿没有做好。这个问题在后文软件章节还会展开。

2. 载波频率怎么调:先做频率域的实验

2.1 把载频抬出听域:16k变20k的收益与代价

最直接的操作是在软件里把载波频率从16k抬到20k以上。我处理过一台样机,16k载波时啸叫尖锐,改到24k后基本安静,这其实是最常见也最省事的解法,很多量产产品就是这么定的。

但要算清楚代价。开关损耗和开关频率几乎成正比,工程估算可以用P ≈ 0.5 × C_ds × V² × f_sw 来算单个MOSFET的充放电损耗。母线电压越高,损耗涨得越凶。48V以下的应用通常无所谓,但三百多伏的高压驱动器,从16k提到24k,MOSFET的温升可能会直接增加十几度,散热系统必须跟着评估。

另外要注意,抬高清波后的代价会转移到电磁干扰上。20kHz以上的开关沿更容易耦合进周围电路,可能需要重新调吸收电路和磁珠,否则EMC测试容易翻车。这也是为什么很多高压驱动器宁愿用12k到16k的载频,也不轻易往上冲。

2.2 拍频问题:为什么单台不叫、两台一起就叫

这类问题在双电机、多轴设备上很常见。单台驱动器测试时安静得很,一装进整机、一排柜子跑起来,就出现有节奏的“呜呜”声,节奏还会随着负载变化。

原因就是拍频。驱动A的PWM频率是15.6kHz,驱动B是16.2kHz,两者差600Hz,600Hz正好落在人耳敏感区,于是你听到的不是两个高频音,而是600Hz的强度起伏。这种情况只调一台没什么用,因为另一台还在原来的频率附近,你抬一台到20k,与另一台16.2k之间的差频变成了3.8kHz,虽然高于敏感区,但声音依然存在。

解决办法最好是同步。多台驱动器共用一个外部时钟,或者用主从同步信号把PWM相位和频率对齐,让它们“齐唱”而不是“斗嗓”。如果硬件上实在做不了同步,退而求其次把两个频率差拉大,让差频落在听域之外,比如一台用20k,另一台用32k,虽然不够优雅,但能在多数场景起效。做系统集成时,建议在方案阶段就把所有开关频率约定好,别等设备装完再来改。

2.3 随机载波与频率抖动:把尖叫摊平成底噪

随机载波,也叫扩频PWM,思路不是让声音消失,而是让声音从“尖锐的单音”变成“宽的底噪”。原理很简单:载波频率每隔几个周期在不大的范围内随机跳变,原来集中在某一点的能量被扩散到一个频带里,人耳对这种“沙沙”声的敏感度远低于尖叫声。

具体实现一般是在定时器周期里加一个伪随机量,比如20kHz中心、±15%的抖动,也就是在17k到23k之间跳变。实测下来峰值声压能降好几个分贝,听感会“变闷变糊”,这在追求工控体验的场景里往往就能接受。

这个方案要注意电流环的配合。载频随机跳动意味着采样点也跟着变,如果采样没有对齐PWM中心,会引入明显的电流噪声,轻则影响FOC解算精度,重则诱发环路振荡。我自己的习惯是:启用随机载波之后,一定要用示波器观测电流波形,确认纹波包络没有异常,再交给代码测试,不要只凭耳朵判断“好转了”就收工。

2.4 按工况动态切载波:低速和高速不该用同一个频率

很多驱动器从头到尾只用一个载频,这其实浪费了不少裕量。低速大转矩工况下,电流环需要更好的纹波抑制能力,载频高一些更稳;高速大功率工况下,开关损耗占主导,此时可以把载频降下来,但要注意降频不能低于某个门槛,否则电流环带宽不够,电流波形会明显变差。

动态切换最怕“反复横跳”。如果切换逻辑只看转速,到了临界点附近,转速一波动,载频就会在两个值之间来回切,切换瞬间的PWM突变反而会引发新的啸叫,甚至电流冲击。工程上必须给切换逻辑加迟滞带:上升沿在低速切高速设为一个阈值,下降沿回切设为更低的阈值,中间留出足够的回差,比如5%到10%的额定转速区间。

载频切换时还要做平滑处理,最好在几个开关周期内把载频渐变过去,而不是一步跳到新频率。一步跳变会在电流波形里留下一个明显的“坎”,这个坎的频率分量会以可听噪声的形式冒出来,得不偿失。

3. 硬件层面的排查与整改:谁在当“扩音器”

3.1 电机本体:“嗡”声最容易被误判为驱动器问题

调试中我常遇到一种情况:驱动器自己空载时不叫,一带上电机就嗡。很多人都以为问题出在驱动器的功率级,实际上声音是电机定子发出来的,驱动器只是提供了激励。

电机会发声的本质是电磁力波。定子绕组通交变电流后,与磁场相互作用产生径向力波,力波作用在定子铁芯和机壳上,机壳像一个圆筒音箱把声音辐射出去。力波的频率和电流中的谐波、载波边带都有关系,所以PWM参数一变,电机的声音就会跟着变,这也是为什么很多人把“电机叫”误判成“驱动器叫”。

要区分是不是电机本体,最干净的办法是把电机从驱动器上断开,用直流稳压电源或调压器给电机绕组通以低频交流,如果电机本身有异响,那是机械或磁路问题;如果只有驱动器带着跑时才叫,那才轮到驱动器背锅。另一种快速判断是保持电机转速和负载功率近似,换一台相同规格的电机测试,如果声音差异很大,说明电机本体的定子结构、磁路设计差异才是主要因素,靠改驱动器很难完全解决。

3.2 MLCC与功率电感:驱动器上最容易忽略的两个“嗓子”

功率电感和陶瓷电容是驱动器板上最常见的两个“嗓子”,但它们往往不被注意,因为不起眼。

MLCC的问题出在压电效应。X7R、X5R这类陶瓷介质在电场作用下会产生机械形变,母线电容在PWM纹波电压下反复伸缩,如果PCB又把它贴得很紧,形变会直接传给板子辐射出声音。我踩过一次很典型的坑:某驱动板上用了6颗10uF、0805封装的X7R做母线电容,上电后板子就吱吱叫,用手摸电容本体有细微麻感,一开始还以为是MOS管响,后来把电容换成铝聚合物电容,声音当场没了。

功率电感则是磁致伸缩和气隙漏磁在起作用。铁氧体材料的磁致伸缩效应明显,线圈里的PWM纹波电流让磁芯像肌肉一样收缩舒张;带气隙的磁棒,气隙附近的漏磁场会产生周期力,把磁芯和线圈都带动。如果你的驱动板有颗大电感且交接点在惨叫,多半就是它。排查时建议先把驱动器单独上电,不接电机,用听诊器逐个听MOS管、电感、电容,声音最大的就是真凶。这个步骤比用示波器还快。

3.3 输出滤波与缓冲吸收:把PWM毛刺拦在电机外面

如果声源在电机侧,且电机本身确认没问题,可以考虑在驱动器和电机之间加输出滤波。最常用的是每相一个LC低通滤波器,截止频率设在PWM基频的1/5到1/10附近,比如20k载波配2k到4k截止频率,这样电机端看到的基本是正弦电流,PWM纹波被大幅削弱,电机自然安静很多。

代价是体积、成本和电感压降。滤波电感在输出电流下会有压降,低速大扭矩时影响明显,需要把电感压降补偿进占空比计算,否则扭矩会缩水。另一个副作用是多了一个谐振腔,LC谐振频率如果在电流环带宽内,会引发振荡,设计时必须让谐振频率远离电流环带宽,一般留出三倍以上裕量比较稳妥。

RC吸收也很常用,放在功率管的漏源之间或二极管两端,专门镇压开关振铃。振铃本身频率可能在几十MHz,人耳听不到,但它会耦合到地平面和电机线缆,再通过周围金属件解调出可听分量,所以吸收电路对某些“说不清来源”的啸叫有奇效。吸收元件的取值需要在功耗和效果之间平衡,RC时间常数要和振铃周期匹配,通常先看波形再定参数。

3.4 结构、PCB与地的隐藏放大作用

如果你把发声元件换了一圈,啸叫还在,该检查结构了。机壳、散热器、PCB、螺丝都有固有频率,当它们的固有频率和激励频率碰上了,会变成强力扩音器。

处理办法很粗暴但很有效:改变刚度或增加阻尼。给散热器贴一层粘弹性阻尼片,给外壳内部点几滴结构胶,换更厚的底板,甚至调整螺丝的数量和位置,都可能让啸叫消失。我遇到过一台机器,声音明明是从驱动器方向传来,最后发现是驱动器外壳前盖板在某个频点上共振,换了一颗更紧的铜柱螺丝就好了。

地回路也容易藏着妖。接地不平导致地电流流过屏蔽层或金属外壳,电流环路会把这些微弱信号变成磁场再耦合出噪声。处理时先测量系统地与外壳的电位差,尽量让功率地、控制地、屏蔽地单点汇接,别让功率电流穿过逻辑地。PCB上功率回路面积过大,也会让di/dt产生的磁场更容易激发附近结构件,走线时把高dV/dt节点和高di/dt环路的面积尽可能缩小,永远是治本手段。

4. 软件与算法层面的补救手段

4.1 调制策略与死区补偿:减少可听分量的根源

多数FOC驱动默认用SVPWM,但它不是消灭噪声的最优调制方式。有些场景下改成DPWM(比如60°钳位)可以让某相在部分扇区停止开关,开关次数减少约三分之一,由于开关频次的“吱”声随之下降,代价是低次谐波会增加,需要结合电机和负载实测权衡。纯靠听感判断不够,最好同时看电流谐波和温升数据。

死区补偿是另一个容易被忽略的点。死区时间会带来电压误差,误差方向随相电流方向变化,在电流过零点附近出现明显的错位,这会导致电流波形里多出5次、7次谐波,空间矢量合成后产生六倍频、十二倍频的电磁力脉动,听感就是低频嗡嗡声。补偿方法不复杂:检测三相电流方向,在调制波里加上对应死区时间的电压修正量,前提是电流采样足够干净,如果采样噪声大,补偿量本身会把噪声也放大。

4.2 电流环与速度环参数:振荡型啸叫的隐藏来源

“滋滋”声如果带着节律,像打电机时声音断续,多半不是开关频率问题,而是环在振荡。电流环比例增益太大,电流会在指令附近高频抖动,这个抖动通过PWM调制转移成电机可听噪声。速度环如果响应过冲,电机转速会周期性波动,声音跟着一会高一会低,听起来像有人在来回拧油门。

排查这类问题有一个很实用的实验:把电流环切成开环,给一个固定占空比,让电机转在一个恒定转速,比如用上位机设置固定的Uq和Ud。如果声音马上变干净,说明问题在环路参数而不是硬件。然后回到闭环,降低电流环比例增益,同时检查采样是否落在PWM开关沿附近——采样窗口里的尖峰噪声也会被PI放大成叫声。采样时刻最好放在PWM开关周期中点,并且用同步触发的方式固定,别让采样点跟着载波漂。

4.3 轻载窄脉冲与低速恶劣工况的特殊处理

轻载时PWM占空比可能只有百分之几,窄脉冲会让电流进入断续模式,电流不再是平缓的正弦包络,而是一个个尖刺,尖刺的重复频率和基波相关,会产生不规则的电磁噪声。低速大负载也是重灾区,此时反电动势很小,电流畸变严重,声音往往带“嘎嘎”或“咯咯”的不规律感。

处理轻载窄脉冲可以从两方面入手:一是设置最小脉宽限制,脉宽低于某个阈值时改用突发模式,也就是若干个周期集中输出、然后暂停,让电流保持在可控范围;二是根据负载点切换单极性或双极性调制,避免占空比长期压在边界上。低速大负载则需要提高PWM频率来降低纹波电流,或者考虑在软件里加入离线辨识参数,把电流畸变通过前馈修正掉。这些方法都会影响系统效率和发热,改动前先对着功耗表算一遍。

5. 现场定位实操:三步锁定声源

5.1 听诊器法:几块钱解决“声源在哪”问题

我有一个用了很多年的工具:一把长柄一字螺丝刀,把杆子顶在耳骨上,不是在耳道里乱戳,尖端搭在待测物表面。这样能把物体微弱的机械振动清晰地传到耳朵里,比贴在机壳上猜准几个数量级。网上也有人卖专门的听诊型螺丝刀,原理一样,就是杆子更长、手柄做成耳机状。

操作要领:从功率管开始,依次听MOS管、电感、母线电容、电机壳体、散热器、外壳接缝。哪个位置声音最响、最尖锐,哪个就是直接发声体。如果手边有医用听诊器更好,没有的话,粗一点的螺丝刀、钢尺、圆珠笔杆都可以凑数。注意保护耳朵,顶杆时别太用力,外耳道敏感的话垫一层软管。

这个方法能快速把“是驱动器还是电机”“是电容还是电感”这类问题变成五分钟内的结论,是所有后续处理的大前提。很多新手一上来就改参数、换器件,没先定位声源,最后绕一大圈,其实是白费功夫。

5.2 变量隔离法:一次只改一个参数做对照

听诊器定位发声体之后,还要确认激励源,这就要靠变量隔离。我的原则是:每一次只改动一个变量,记录结果,改下一个之前先把上一个恢复原样。

第一个实验:拔掉电机,只给驱动器上电,听驱动器自身安静与否。如果安静,问题大概率出在电机侧或输出路径。第二个实验:用可调直流电源给电机通恒定电压,不经驱动器、不调制,让它以低转速运行。如果此时声音还在,是电机机械或电磁本身的问题;如果安静,那就是PWM激励带来的。第三个实验:调PWM频率,在软件里把载频从当前值往低和往高各挪一段,比如从16k挪到12k和24k,分别听声音变化。如果声调随载频移动,说明直接与载波相关;如果纹丝不动,说明激励频率根本不在载波上,要往环路和拍频方向查。

每一步操作之间留足够时间,记录听感关键词,比如尖锐、低沉、断断续续、随负载变化,别凭印象。这个日志在后面对照时就值钱了。

5.3 手机FFT与示波器联调:让频率说话

耳朵能告诉你声音在哪,但说不出多少赫兹。拿手机装噪声频率分析工具,录一段音频看FFT峰值,能直接把听到的频率量化。比如FFT显示主峰在850Hz,你再用示波器看电流波形FFT,发现电流环在850Hz附近有振荡分量,结论就闭环了,问题锁定在电流环而不是载波。

示波器上还有一个有用操作:把电流波形放大到PWM周期附近,看纹波包络是否有规律起伏。理想的PWM电流纹波是与载波同步的锯齿,如果包络本身在低频浮动,说明有低频激励源正在被调制进PWM,这个低频源往往就是“嗡嗡”声的真凶。

FFT读表要结合现场声音确认,因为环境噪声可能混入其他频率。通常做法是先把整机断电,录一段环境底噪做基线,再上电录电机声,两者对比。底噪谱和电机谱叠在一起看不出来没关系,直接看“多出来的峰”就好。

5.4 几个容易误判的情况和对应的排除思路

误判一:把电机轴的轴承声当成PWM啸叫。轴承异响通常是机械摩擦声,和电流波形无关,把电流环开环后声音照旧,可以判断为机械问题,不用在PWM上浪费时间。

误判二:把DCDC开关电源的声音当成电机PWM声。整机里往往不止一个开关频率,关掉电机PWM但保留DCDC,如果还有声,那源头在DCDC,不在电机驱动器。

误判三:把周围设备的共振声算在驱动器头上。有些结构的固有频率在几百赫兹,旁边只要有一台机器在运转,它就会跟着“唱”。把被测驱动器断电但仍保留现场机械结构,如果声音依旧,责任不在驱动器。

误判四:把软件定时器中断抖动导致的PWM边沿抖动当成硬件问题。低成本的定时器外设如果和CPU中断抢资源,PWM边沿会出现微秒级抖动,听起来是毛刺一样的“嘶”声,这类问题要从代码和中断优先级上找,换电容电感都没用。

6. 常见问题速查表与避坑笔记

6.1 现象、原因与对策对照表

听感特征常见诱因建议对策
尖锐高频“吱”,声调随载频可调PWM基频在听域内或边带落在可听区载频提到20k以上,或改用随机载波
低频沉闷“嗡”,转起来更明显电流/速度环振荡、死区畸变调PI参数,做死区补偿,检查采样窗口
周期性起伏“呜呜”,整机跑起来才现两个开关电源或两台驱动器频率接近形成拍频同步PWM、拉大频率差
只在特定占空比或转速下出现机械结构固有频率与激励重合贴阻尼、调整结构刚度、避开该载频
轻载或极低速下“嘎嘎”“咯咯”窄脉冲导致电流断续最小脉宽限制、突发模式、提高载频
上电空载就响,摸电容有麻感MLCC压电效应或电感磁致伸缩换成铝聚合物/钽电容、低噪声电感

6.2 实操中踩过的几个坑

第一坑是盲目抬频。有次我把一台伺服驱动载频从16k抬到32k,啸叫确实没了,但散热器温度半小时后涨了快二十度,差点烧模块。后来才知道这台是高压母线,开关损耗翻倍太猛。从那以后,我要抬频一定先估算开关损耗,并用热成像确认温度余量,高压大功率场景尤其谨慎。

第二坑是换电感只看“低噪音”三个字。某次采购了标称低噪的电感,装上后声音确实小,但带负载后效率掉了一截,纹波电流反而更大了,因为那颗电感磁饱和得快。选低噪声电感不能只看厂家宣传,要看额定电流下的电感值和损耗曲线,必要时直接选更大的磁芯,宁可体积大一圈也别留隐患。

第三坑是加Y电容之后啸叫更大。原本想滤共模噪声,结果Y电容把高频噪声引到机壳形成新地环路,听感更刺耳。后来在Y电容回路里串了一个磁珠,问题才缓解。处理EMC方案时一定要检查接地环路,而不是只管元器件本身,地环路的改动往往会直接改变噪声路径。

第四坑是随机载波带来的电流采样抖动。开随机PWM后,低频啸叫确实没了,FOC解算却出现偏差,速度波动明显。最后在采样同步逻辑里按PWM周期做“同步窗”,在固定相位采样,才解决了样本质量的问题。随机PWM不是随便开就完事,采样同步和环路裕量都要重新过一遍。

这些坑说到底就是“为了治标破坏了其他系统”,所以每次改动前都要评估它对热、对EMC、对电流控制的影响面。啸叫这种问题,修好不难,难的是修好之后其他地方不出新毛病。

做了这么多年驱动器,我对啸叫的态度已经从“难缠的问题”变成了“系统的体检报告”。它暴露出的是载波选择、环路稳定性、机械设计、甚至代码时序里最容易被忽略的细节。每次拿到一台叫唤的样机,我不急着换元器件,而是先问三个问题:叫声是什么频率?叫声和转速、负载是什么关系?声音到底从哪个部件出来?这三个问题能过滤掉八成以上的工作量。

最后分享一个个人习惯:实验室里常备一把听诊器螺丝刀,比示波器还常用。很多同事看到我用螺丝刀顶着耳朵查噪声,一开始都觉得搞笑,后来他们自己也都备了一把。这行当里,耳朵有时候比仪表先说话,尤其在PWM啸叫这种问题上。

返回列表