ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

无刷电机EMI整改实战:从PCB布局到STM32G431软件对策

无刷电机EMI整改实战:从PCB布局到STM32G431软件对策 无刷电机EMI整改这件事我前前后后跟了大半年从最开始对着频谱仪一脸懵到后来能比较快地定位问题、给出对策中间踩的坑实在不少。很多做电机驱动的朋友尤其是刚接触无刷电机硬件设计的人往往把注意力全放在换相逻辑、PID调速、MOS管选型上等到样机跑起来发现辐射超标、传导不过才开始手忙脚乱地找方案。实际上EMI整改不是“出了问题再补救”的被动环节它应该从PCB布局阶段就介入。这篇内容主要面向做无刷电机驱动板硬件设计、尤其是基于STM32G431这类MCU做FOC控制的工程师也会涉及一些永磁直流无刷电机本体层面的干扰来源分析。我会把整个整改思路拆开讲包括干扰怎么产生、怎么定位、怎么用最低成本压下去以及哪些做法看起来有用实际上会引入新问题。1. 先搞清楚干扰从哪来无刷电机EMI的三大源头很多人一上来就问“加什么滤波器件能过”这个思路本身就有问题。你不先弄清楚干扰的频率范围、传播路径、耦合方式随便加电容电感轻则没效果重则把有用信号也滤没了。无刷电机系统的EMI来源我习惯分成三大块来看。1.1 PWM开关噪声频率高、谐波丰富无刷电机驱动本质上是一个三相逆变桥MOS管在高频PWM下不断开关。以STM32G431做FOC控制为例PWM频率通常设在20kHz到40kHz之间有些应用为了降低噪音会拉到更高。方波本身就含有丰富的高次谐波开关瞬间的电压变化率dv/dt和电流变化率di/dt都很大这是最直接的宽带噪声源。具体来说MOS管开通和关断的过程中漏源电压在几十纳秒内完成跳变这个快速跳变通过寄生电容耦合到散热器、机壳再通过空间辐射出去。同时母线上的电流突变会在寄生电感上产生尖峰电压这个尖峰又反过来加剧开关噪声。我实测过一块板子PWM频率24kHz在30MHz到100MHz频段辐射明显偏高后来发现主要就是开关沿太陡导致的。这里有个容易被忽略的点MOS管的开关速度不是越快越好。很多人选管的时候只看导通电阻和耐压忽略了栅极电荷和输出电容。栅极电荷小、开关快的管子EMI表现往往更差。实际选型时如果EMI压力大可以适当增大栅极驱动电阻把开关沿放缓代价是开关损耗增加需要做热平衡。1.2 换相时刻的电流突变低频段的主要贡献者无刷电机在换相时相电流会发生突变。尤其是六步换相方式每次换相都有一相电流被切断另一相电流建立这个过程中电流的变化率虽然不如PWM开关那么快但能量更大主要集中在低频段比如150kHz到30MHz这个范围。FOC控制虽然换相平滑很多但在扇区切换的瞬间SVPWM的占空比组合发生变化也会产生一定的电流扰动。这个扰动通过电机线缆辐射出去线缆越长天线效应越明显。我遇到过一台电机线缆长度从30cm加到80cm辐射测试在50MHz附近直接恶化了6dB这就是线缆充当了高效辐射天线的典型表现。处理这个问题一方面要尽量缩短电机线缆另一方面可以在相线上套磁环。磁环的选择有讲究不是随便找个铁氧体套上去就行。要针对干扰频段选材料低频段用锰锌铁氧体高频段用镍锌铁氧体。套的位置也有说法靠近驱动板一端和靠近电机一端效果不一样通常靠近驱动板一端对抑制线缆辐射更有效。1.3 电源回路的高频环路最容易被忽视的传导路径逆变桥的直流母线回路在MOS管开关时会有高频脉冲电流流动。这个电流环路面积越大等效天线效应越强辐射和传导都会变差。很多人在布局时把母线电容放得离MOS管很远觉得反正电容够大就行实际上高频电流走的是最近的回路电容远了高频环路面积就大EMI自然差。我见过一块板子母线电解电容放在板子边缘MOS管在中间中间用细走线连接。结果传导测试在10MHz到30MHz频段严重超标。后来把陶瓷电容直接贴在MOS管旁边电解电容的位置不动传导测试立刻改善了8dB以上。这说明高频去耦电容的摆放位置比容量大小更关键。2. 定位问题比盲目加器件更重要我的排查链路EMI整改最忌讳的就是“试错法”——加个电容试试不行再换个电感试试。这样效率极低而且往往把问题搞得更复杂。我习惯按照一套固定的排查链路来走先定位再对策。2.1 第一步区分传导干扰和辐射干扰传导测试和辐射测试是两回事整改手段也不同。传导干扰主要通过电源线、信号线传播频率范围通常在150kHz到30MHz辐射干扰通过空间传播频率范围在30MHz到1GHz甚至更高。拿到测试报告后先看超标频段。如果是低频段超标大概率是传导问题重点查电源滤波和接地。如果是高频段超标辐射的可能性更大重点查环路面积、线缆辐射和屏蔽。当然两者不是完全独立的传导干扰也可能通过线缆辐射出去所以要先解决传导再看辐射是否跟着改善。我一般会先用近场探头配合频谱仪在板子上扫一遍找出辐射热点。近场探头能区分电场和磁场磁场探头对电流环路敏感电场探头对电压跳变敏感。通过这个手段可以快速判断是哪个区域在辐射是MOS管开关环路还是电机线缆。2.2 第二步用排除法锁定干扰源确定了大致的频段和区域后下一步是锁定具体的干扰源。我的做法是分步断电或分步降频。比如先把PWM频率降低一半看超标频点是否跟着移动。如果频点跟着移动说明是PWM开关噪声如果频点不动说明是其他来源比如MCU晶振或者电源开关频率。再把电机断开只让驱动板跑PWM看干扰是否还在。如果断开电机后干扰消失说明干扰主要通过电机线缆辐射如果还在说明是板级问题。还有一个办法是改变电机转速。如果干扰幅值随转速变化明显说明和换相频率有关如果基本不变说明和PWM开关关系更大。这些手段不需要复杂设备一台可调电源、一台示波器就能做初步判断。2.3 第三步确认耦合路径锁定干扰源之后还要确认它是怎么耦合出去的。常见的耦合路径有三种传导耦合、容性耦合、感性耦合。传导耦合通过共享阻抗传播比如地线上的干扰电压。容性耦合通过寄生电容传播比如MOS管漏极和散热器之间的寄生电容。感性耦合通过磁场传播比如高频电流环路对附近走线的互感。区分方法如果是容性耦合在干扰源和受害者之间加一块接地屏蔽板干扰会明显下降如果是感性耦合改变走线方向或增加距离干扰会下降如果是传导耦合改善接地或加滤波器有效。我通常会先用铜箔胶带做临时屏蔽看效果如何再决定最终方案。3. 硬件整改的实战手段从PCB到外围电路定位清楚之后整改手段就有了方向。我把硬件整改分成三个层面PCB布局优化、外围滤波电路、屏蔽与接地。这三个层面要配合使用单靠某一个往往不够。3.1 PCB布局把高频环路面积压到最小这是最根本的手段也是最容易被忽视的。很多EMI问题其实在布局阶段就已经埋下了。母线电容的摆放陶瓷去耦电容必须紧贴MOS管的漏极和源极引脚距离控制在5mm以内。电解电容可以稍远但也要尽量靠近。高频电流从电容到MOS管的环路面积越小越好。我通常会在每个半桥的上下管旁边各放一个1μF到10μF的陶瓷电容再在母线入口放一个100μF以上的电解电容。栅极驱动走线栅极驱动信号的回流路径要短最好和源极走线并行或包地。栅极电阻靠近MOS管放置不要放在驱动芯片那边。如果驱动芯片和MOS管距离较远考虑用双绞线或屏蔽线连接。相线走线三相走线尽量短且粗减少寄生电感。三根线尽量靠近走或者用地线隔开。不要为了美观把相线绕来绕去每多绕一圈辐射就多一分。地平面处理功率地和信号地要分开最后单点连接。功率地上的高频噪声不要让它窜到信号地。我通常会在驱动板底层铺完整的地平面但功率部分和信号部分用开槽隔开只在电源入口处连接。3.2 外围滤波该加什么、加在哪里、加多大外围滤波是补救手段但用对了效果立竿见影。电源输入滤波这是传导测试的第一道防线。典型的π型滤波共模电感和X电容、Y电容组合。共模电感选的时候要注意额定电流和阻抗特性不是感值越大越好。感值大了体积大、直流电阻大而且高频阻抗可能反而下降。我一般选在目标频段阻抗最高的型号比如针对10MHz到30MHz选镍锌材料的共模电感。X电容跨接在火线和零线之间抑制差模干扰Y电容跨接在火线/零线和地之间抑制共模干扰。Y电容的容量受漏电流限制不能太大一般几纳法到几十纳法。注意Y电容必须选安规电容否则有安全隐患。电机相线滤波在相线上套磁环是最简单的办法。磁环要选对材料低频用锰锌高频用镍锌。套的位置靠近驱动板一端。如果效果不够可以把三根相线同时穿过一个磁环这样对共模干扰抑制效果更好。但要注意三根线同时穿过时差模信号不受影响共模信号被抑制这正是我们想要的。MOS管缓冲电路在MOS管漏源之间加RC吸收电路可以减缓电压跳变。电阻一般几欧到几十欧电容几百皮法到几纳法。这个电路会增加开关损耗所以参数要折中。我通常先用示波器看漏源电压波形如果振铃严重再加RC吸收。振铃频率决定了RC的取值一般让RC时间常数略大于振铃周期的一半。3.3 屏蔽与接地最后一道防线屏蔽和接地是兜底手段但做不好反而会引入新问题。散热器屏蔽MOS管通常固定在散热器上散热器和MOS管漏极之间有寄生电容这个电容会把开关噪声耦合到散热器上散热器再辐射出去。解决办法是把散热器接地但要注意如果散热器同时固定多个MOS管而这些MOS管的漏极电位不同散热器不能直接接功率地否则会短路。这时候可以用绝缘垫片把MOS管和散热器隔开散热器单独接信号地或机壳地。电机外壳屏蔽如果电机外壳是金属的把它接地可以有效减少辐射。但要注意电机外壳接地要和驱动板接地一致否则可能形成地环路反而恶化。线缆屏蔽电机线缆如果用屏蔽线屏蔽层要两端接地。一端接地的话屏蔽层本身会变成天线。但两端接地可能引入地环路这时候可以用磁环套在屏蔽层上抑制高频地环路电流。4. 软件层面的辅助手段不增加成本的对策硬件整改到位之后软件层面还有一些手段可以进一步压低EMI而且不增加物料成本。这些手段在STM32G431这类MCU上很容易实现。4.1 随机化PWM频率把窄带干扰摊开固定频率的PWM谐波能量集中在特定频点测试时容易超标。如果把PWM频率在一定范围内随机抖动谐波能量就被摊开到更宽的频带上单个频点的幅值就降下来了。STM32G431的定时器支持这种操作通过改变ARR值或者预分频器让PWM频率在一定范围内变化。实现的时候要注意频率变化范围不能太大否则会影响电机控制性能。一般±5%到±10%就够了。变化速率也要控制太快了电机可能响应不过来太慢了起不到摊开效果。我通常用伪随机序列每几个PWM周期变一次。4.2 优化开关时序死区时间和开关沿死区时间是为了防止上下管直通但死区时间太长会导致电流畸变反而产生低频谐波。死区时间要刚好够用不能随意加大。我一般用示波器看上下管驱动波形确保没有直通然后尽量缩短死区。开关沿的控制可以通过调整栅极驱动电流来实现。有些驱动芯片支持可调驱动电流把驱动电流调小开关沿变缓EMI改善。但开关损耗增加需要看热设计能不能接受。如果热余量够这是一个很有效的办法。4.3 调整调制策略SVPWM vs SPWMSVPWM的电压利用率比SPWM高但开关次数也更多。在EMI压力大的场合可以考虑用不连续PWM或者降低开关次数。比如在每个扇区里让某一相在一个PWM周期内不开关这样可以减少三分之一的开关次数EMI自然改善。代价是电流谐波增加电机噪音可能变大。还有一种做法是调整零矢量的分配方式。SVPWM里零矢量的作用时间分配不同开关次数也不同。把零矢量集中在一端可以减少开关次数但电流纹波会变大。这个需要根据具体应用做权衡。5. 几个我踩过的坑和反直觉的经验这一部分是我觉得最有价值的内容因为很多是文档里不会写的。5.1 加电容不一定有用有时候反而更糟刚开始做整改的时候我一看到辐射超标就加电容结果有一次在MOS管漏源之间加了一个1nF的电容辐射反而恶化了。后来用近场探头一看加了电容之后开关振铃频率变了正好落在一个更敏感的频段上。而且电容和寄生电感形成了新的谐振回路产生了新的辐射峰。所以加电容之前一定要先看波形确认振铃频率和幅度再决定加多大、加在哪里。盲目加电容可能把问题从一个频段赶到另一个频段。5.2 磁环不是万能的选错材料等于没加磁环的材料特性决定了它的有效频段。锰锌铁氧体磁导率高但高频损耗大适合低频段镍锌铁氧体磁导率低但高频损耗小适合高频段。如果高频段用了锰锌磁环磁环本身变成了一个导体几乎不起作用。我一般会准备几种不同材料的磁环测试的时候逐个试。另外磁环的尺寸也有影响内径越小套得越紧效果越好。但太紧了不好装配而且可能磨损线缆绝缘。5.3 接地搞不好屏蔽变天线屏蔽和接地是双刃剑。我曾经把电机线缆的屏蔽层一端接地结果辐射更差了。原因是屏蔽层没有接地的那一端通过空间耦合到了干扰信号整个屏蔽层变成了一个辐射天线。后来改成两端接地辐射立刻降下来了。但两端接地也有风险如果驱动板和电机的地电位不同屏蔽层上会有地环路电流这个电流本身也会辐射。这时候可以在屏蔽层一端套一个磁环抑制高频地环路电流同时保持低频接地。5.4 测试环境比整改手段更重要这一点很多人忽视。同样的板子在不同的测试环境里结果可能差很多。线缆的摆放方向、长度、离参考地的距离都会影响测试结果。我遇到过一块板子在实验室测试超标拿到外面测试就过了原因就是实验室的参考地平面不够大线缆耦合路径不同。所以整改的时候要固定测试条件线缆长度、摆放位置、电机负载都要一致。否则你改了半天可能只是测试条件变了不是整改真的有效。6. 从设计阶段就规避EMI我的checklist与其等出了问题再整改不如在设计阶段就把该做的做了。下面是我自己在做无刷电机驱动板设计时用的checklist分享出来供参考。6.1 原理图阶段母线陶瓷去耦电容是否紧贴MOS管栅极驱动电阻是否靠近MOS管相线是否有磁环或滤波预留位置电源输入是否有共模电感和X/Y电容预留位置散热器是否有接地预留电机线缆是否有屏蔽层接地预留6.2 PCB布局阶段高频环路面积是否最小功率地和信号地是否分开晶振是否远离功率区域相线是否尽量短且不绕行底层是否有完整地平面散热器接地路径是否低阻抗6.3 调试阶段先用近场探头扫一遍找出热点。用排除法锁定干扰源。先解决传导再看辐射。每次只改一个变量记录效果。固定测试条件避免误判。这套checklist不能保证一次过但能帮你少走很多弯路。我自己的经验是如果在设计阶段就把前两项做好后面整改的工作量能减少一半以上。7. 关于STM32G431在无刷电机驱动中的EMI相关配置既然热搜词里提到了STM32G431我顺便说一下这颗MCU在无刷电机驱动中的一些EMI相关配置经验。STM32G431的主频是170MHz做FOC运算绰绰有余但高频时钟本身也是一个潜在的干扰源。7.1 时钟配置STM32G431可以用内部RC振荡器也可以用外部晶振。内部RC的精度差一些但省了两个引脚而且没有外部晶振的辐射问题。如果应用对时钟精度要求不高用内部RC可以简化布局减少一个辐射源。如果必须用外部晶振晶振要尽量靠近MCU负载电容紧贴晶振晶振下方不要走线最好铺地隔离。7.2 定时器配置做FOC的时候通常用高级定时器TIM1产生三路互补PWM。TIM1的时钟源来自APB2频率较高。配置的时候注意死区时间要合理刹车功能要启用。另外TIM1的输出引脚要配置成合适的驱动能力驱动能力越强开关沿越陡EMI越差。如果驱动能力可调适当降低驱动能力有助于改善EMI。7.3 ADC采样与干扰FOC需要采样相电流ADC的采样时刻和PWM开关时刻要对齐避开开关瞬间的噪声。STM32G431的ADC可以和定时器联动在PWM周期的特定时刻触发采样。这个时刻要选在开关动作完成之后、电流稳定的时候。如果采样时刻不对采到的电流值有噪声会影响控制效果也会让PWM占空比抖动进一步恶化EMI。7.4 调试接口SWD调试接口在调试阶段很有用但批量生产时建议禁用或移除。SWDIO和SWCLK两根线如果走线较长会像天线一样辐射。如果必须保留走线要短最好包地。8. 一些实测数据和对比为了让大家有个直观感受我整理了一组实测数据。测试对象是一块基于STM32G431的三相无刷电机驱动板电机是24V永磁直流无刷电机PWM频率24kHz测试标准是CISPR 25 Class 5。整改措施传导测试余量变化辐射测试余量变化备注基线无整改-6dB-8dB多个频点超标母线陶瓷电容紧贴MOS管4dB2dB高频环路面积减小相线套镍锌磁环1dB5dB主要改善辐射电源输入加共模电感6dB1dB主要改善传导散热器接地1dB3dB减少容性耦合PWM频率随机化2dB3dB谐波能量摊开综合整改12dB14dB所有措施叠加这组数据不是绝对的不同板子、不同电机、不同测试环境都会有差异。但趋势是明确的单一措施效果有限综合整改才能拿到足够的余量。9. 最后说几句实在的EMI整改这件事说难也难说简单也简单。难的是干扰来源多、耦合路径复杂有时候一个频点压下去了另一个频点又冒出来。简单的是只要你掌握了基本的排查方法大部分问题都能定位到具体原因然后对症下药。我的经验是不要指望一次整改就能过留出足够的迭代时间。设计阶段多花一天做布局优化调试阶段可能省一周。测试的时候固定条件每次只改一个变量记录清楚。磁环、电容这些器件多准备几种规格现场试比纸上算快得多。还有一点EMI整改不是越干净越好。过度的滤波和屏蔽会增加成本、体积和重量还可能影响电机性能。目标是满足标准并留有一定余量不是追求极致的低噪声。找到成本和性能的平衡点才是工程上正确的做法。如果你也在做无刷电机驱动尤其是基于STM32G431这类MCU的方案希望这些经验能帮你少踩几个坑。EMI问题虽然烦但解决了之后回头看其实都是可以理解和控制的。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进