news 2026/9/7 10:40:28

LTSpice AC扫描实战:差模共模分析与EMI滤波器设计

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LTSpice AC扫描实战:差模共模分析与EMI滤波器设计

聊到LTSpice里的AC扫描,大家最熟悉的用法是看环路增益、滤波器频响,或者给运放画个伯德图。但真正让我觉得这个指令值回票价的,是拿它来分离和分析差模(Differential Mode)与共模(Common Mode)信号。做电源、做EMC、做接口电路的朋友应该都有体会:产品辐射超标或者传导超标时,你得先搞清楚噪声到底是差模还是共模,才能决定是加大X电容还是上共模电感。手头没有频谱分析仪和人工电源网络?那用LTSpice在原理图阶段先把滤波器的差模/共模特性和几个关键频点算明白,往往能省掉好几轮改板子的时间。

这篇文章不多讲理论推导,我直接把这几件事掰开揉碎讲清楚:AC扫描到底在算什么、为什么能拿来看差模共模、测试台怎么搭才能把两种模式干净地分离、耦合电感和X/Y电容建模时有哪些坑,以及一个可以照着画的两级EMI滤波器插入损耗仿真例子。最后再聊一个你大概率会用到的扩展场景——用同一套原理验证运算放大器的共模抑制比。

1. 先把原理捋顺:AC扫描的适用边界与差模共模的数学本质

很多人有个误区,以为AC扫描就是"给电路加个正弦波扫频率看输出"。这话只对了一半。AC扫描其实是在直流工作点上做小信号线性化,然后对每个扫描频率点求复数解。也就是说,它天然适合处理线性电路,或者被线性化之后的小信号扰动。差模和共模信号在绝大多数情况下都是以小信号形式叠加在工作点上的,所以AC扫描拿来分析它们,比搭一个复杂的时域噪声源再跑FFT要省事得多。

1.1 AC扫描能做什么,不能做什么

用AC扫描之前,得先搞清楚它的边界。拿滤波器来说,只要管子不进入饱和、没有大信号开关行为,纯RLC网络的频率响应AC扫描算得又快又准。但如果你的电路里有一个正在开关的MOSFET,比如完整的开关电源主功率级,AC扫描就没法直接反映这种周期时变系统的差模共模噪声特性——它基于固定工作点线性化,开关动作带来的时变效应会被丢掉。

所以我的习惯是:分析EMI滤波器网络的插入损耗、运算放大器的CMRR、LISN网络的阻抗特性、电源输出滤波器的环路特性,这些场景AC扫描是首选。分析完整开关电源在某个工况下的共模差模噪声谱,那得走时域仿真加FFT的路子,或者先提取滤波器网络再用AC扫描分频段验证。分清这一点,能帮你少走很多弯路。

1.2 差模信号和共模信号的数学定义

任何一对导线上的电压V1、V2,都可以拆成差模分量和共模分量。核心公式就两个:

Vd = V1 - V2
Vc = (V1 + V2) / 2

反过来还原:

V1 = Vc + Vd/2
V2 = Vc - Vd/2

为什么必须拆开看?因为这两条路径面对的阻抗完全不同。差模电流走的是火线到零线的回路,主要被X电容和串在通路上的电感(包括共模电感的漏感)抑制;共模电流走的是每一根导线对地的路径,流过Y电容和共模电感的励磁电感。如果你把混合信号直接测个总衰减,根本看不出瓶颈在哪,自然也没法决定该加哪个元件。

顺便提一个容易被忽视的点:共模电压不是只在"对地"的场景才存在。两条线相对于某个公共参考点(比如LISN的地、测试系统的机壳地)的电位平均值,就是共模。所以设计测试台的时候,参考点的选择会直接影响你能不能把两种模式分离干净,下一节详细说。

2. 分离测试的关键:差模测试台与共模测试台的源、地、负载关系

用LTSpice分析差模共模,最核心的不是AC扫描指令本身,而是测试电路的接法。接法错了,扫出来的曲线张冠李戴,后面全白做。我强烈建议差模和共模分开搭两个原理图,不要在同一个电路里试图通过切换源来实现,因为源阻抗网络的结构本身会影响另一模式的测量。

2.1 差模测试台怎么搭

差模插入损耗测试的原理和网络分析仪测二端口器件差不多:源端给一个差分激励,负载端量差分响应。在LTSpice里可以这样搭:

  • 信号源Vsource(设置AC Amplitude = 2)跨接在输入火线和输入零线之间
  • 源端串一个50Ω电阻,模拟信号源内阻(跟实测系统对标)
  • 输出端的火线和零线之间并一个50Ω电阻,作为负载
  • 零线输入节点作为整个电路的参考地

这里有个很实用的细节:AC扫描时把源的幅度设成2而不是1。因为源内阻50Ω和负载50Ω分压之后,如果源是1V,负载上的差分电压最多只有0.5V。而把源设成2V,空载时负载上的差分输出正好是1V。这样后面在波形窗口里直接看20×log10(V(out_p) - V(out_n)),读出来的就是插入损耗的dB值,不用额外做减法。

测量时绝对不要只看某一根线对地的电压。差模激励下,火线输出节点和零线输出节点的相位是相反的,单看一根线会把结果少算一半,也就是6dB。正确的读取表达式应该是:

V(out_p) - V(out_n)

2.2 共模测试台怎么搭

共模测试台和差模测试台有本质区别:激励源不是跨接在两根线之间,而是让两根线相对于参考地同步抬升。

推荐这么搭:

  • 两个完全同相的交流源(AC幅值都是2),正极分别通过50Ω电阻接到输入火线和输入零线
  • 两个源的负极直接接到同一个参考地
  • 输出端火线通过50Ω电阻到地,零线也通过50Ω电阻到地
  • 测量输出火线对地的电压,或者取两线对地电压的平均值

强调一下"完全同相"这四个字。两个源只要相位上有一点点偏差,就会在电路中引入一个额外的差模分量。用LTSpice的AC源时,把两个源的AC Phase都设成0,就不会出这种问题。

共模测量表达式也很简单:

V(out_p)

或者严格一点,把两根线的共模分量取平均:

(V(out_p) + V(out_n)) / 2

由于电路对称,这两个表达式的结果基本一致,但养成写平均值的习惯能帮你发现电路不对称时的问题。

2.3 源阻抗和负载阻抗为什么都取50Ω

有人可能会问:这50Ω是哪来的?一个来自射频测试系统的习惯,一个来自EMC测试标准中LISN的定义。商用EMC测试设备里,LISN对射频信号呈现的阻抗,在150kHz到30MHz范围内近似是50Ω。所以你在仿真里把源内阻和负载都设成50Ω,测出来的插入损耗曲线才有跟实测对标的意义。

如果你只是做相对对比,比如比较加大X电容前后差模衰减变了多少,那源阻抗取50还是100影响不大。但我建议从一开始就养成50Ω系统的习惯,因为你哪天把仿真结果拿去做预测试对标,会省去大量换算的麻烦。

3. 共模电感与X/Y电容的建模细节:决定仿真真不真的地方

滤波器里最能影响差模共模分离效果的元件,就是共模电感和X/Y电容。这一节讲的每个细节,都是我实际仿真时踩过坑之后才总结出来的。

3.1 耦合电感的绕组建模:K值和同名端

在LTSpice里,共模电感不是两颗独立电感搭出来的,而应该用耦合电感建模。放置两颗电感L1、L2,然后用一个K语句把它们耦合起来:

K1 L1 L2 0.99

L1和L2的取值就是你选用的共模电感的每一绕组的电感量,比如10mH。K值是耦合系数,实际共模电感一般在0.98到0.995之间。K<1这一点很关键——它意味着有漏感,而漏感是共模电感在差模方向产生滤波效果的来源。原理上,差模电流在L1和L2中方向相反,如果K=1,两绕组的磁通完全抵消,差模方向表现为零电感;但K=0.99时,差模方向等效电感量约为L×(1-K),10mH的绕组留出的漏感就是100µH,足以跟X电容构成一个差模低通滤波器。

还有一个必然是新手重灾区的地方:同名端。LTSpice里电感的同名端用小圆点标在符号上。共模电感两个绕组的同名端必须放在同一侧,这样差模电流流经两个绕组时产生的磁通方向相反,才会抵消;共模电流流过时磁通同向相加,呈现大电感。如果你把其中一个绕组的点放反了,扫出来的结果会非常诡异——共模方向几乎没有阻抗,差模方向反而有巨大电感,整个滤波行为全部颠倒。

我自己验证同名端方向对不对的方法很简单:临时在两条支路中间加一个差分源,AC扫描跑完后看两个绕组上的电流相位,如果方向相反就说明磁通在抵消,接法正确。

3.2 X电容和Y电容在滤波拓扑里的分工

X电容是接在火线和零线之间的,专门对付差模噪声。它和共模电感的漏感一起构成LC低通。Y电容则是一端接火线/零线、另一端接地的,专门给共模电流提供一个对地的低阻旁路,跟共模电感的励磁电感配合。

注意Y电容的容量和安全是矛盾的。容量越大,共模滤波效果越好,但50Hz工频漏电流也越大,产品做安规测试时可能不过关。仿真里别光盯着曲线好看,实际取值要根据产品的漏电流限制反推。这也是为什么我在仿真时习惯做"电容参数扫描":用.step指令把Y电容从1nF扫到10nF,看看曲线变化,同时心里盘算对应的漏电流能不能接受。

3.3 无源网络的直流偏置节点问题

AC扫描前LTSpice要先解直流工作点。如果你搭的纯RLC网络存在"悬浮节点",比如某个节点只通过理想电容连到地,直流分析时该节点没有确定电位,LTSpice会报singular matrix错误。这时候不用慌,在悬浮节点到地之间加一个1MΩ到10MΩ的电阻,给它一个直流路径就行。这个电阻的值取得足够大,对射频范围内的AC响应影响可以忽略不计,但对直流收敛帮助很大。

4. .ac指令参数与结果读取:扫描范围、点数、dB坐标怎么设不踩坑

准备好测试台之后,AC扫描本身也有不少门道。很多初学者模型导入了、电路画对了,偏偏在仿真设置上卡壳,出来的曲线不是一条直线就是空图。这一节我把从指令语法到波形读取的完整流程都过一遍。

4.1 .ac指令的语法与参数选择

在原理图里按s键(或者从Edit菜单进入SPICE指令),输入:

.ac dec 100 10 30Meg

这句的意思是:采用十倍频程对数扫描,每个十倍频程算100个点,从10Hz扫到30MHz。30Meg是因为EMC传导发射标准的上限就是30MHz,覆盖到30M可以在仿真里直接对标标准限值。

如果你的场景是EMI滤波器调试,用dec(十倍频程)最合适,因为频带宽,log坐标下能同时看清低频段和高频段的行为。如果你只关心一个窄带范围,比如开关电源开关频率附近的2倍频、3倍频噪声点,也可以改用线性扫描:

.ac lin 1000 100k 1Meg

线性扫描适合对特定频段做精细定位,但点数设少了在宽频段上会失真。平时我常用的是每十倍频程50到100个点,点数太少会导致谐振峰被"削平",太密则纯属浪费计算时间。

在仿真命令面板里对应的操作是:Simulate → Edit Simulation Cmd → AC Analysis,然后选Decade,填Points/Decade = 100,Start Frequency = 10,Stop Frequency = 30Meg。这些填完之后,原理图上会多出一个.ac指令符号。

4.2 波形窗口里的差模/共模表达式与dB纵轴

跑完仿真,波形窗口默认打开的是最后一个探针节点的电压,横轴频率默认是log,纵轴默认是线性电压。这一步十个人有八个会懵:明明AC扫描,为什么纵轴不是dB?答案是LTSpice默认不帮你自动换纵轴,你得手动设置。

在波形窗口右键Y轴,选Logarithmic,然后把表示方式改成Decibel。这样纵轴就变成dB刻度了。如果同时还想看相位,可以在波形窗口点击Plot Settings,Add New Pane,再选一个节点,或者直接用表达式打出相位曲线。

差模读取的表达式我之前提过:

V(out_p) - V(out_n)

共模读取的表达式:

(V(out_p) + V(out_n)) / 2

在波形窗口里按快捷键T打开Add Trace对话框,直接输入表达式回车即可。不要嫌麻烦,用表达式读出来的曲线才是真正参与后续分析的数据。

4.3 用游标读频点数据

曲线出来后,按Ctrl+左键可以放一个游标,右键再放第二个游标,然后用Ctrl+左/右方向键精确移动游标到特定频率。比如我想知道150kHz这个传导发射起始频点的差模插入损耗是多少,就把游标挪到150k,直接在状态栏里读数值。

如果你是做设计评审或者写报告,游标读数和直接在图上标注都够用。但如果你要批量对比好几个方案的曲线,我的建议是别靠肉眼,用.meas指令把关键频点的数值直接算出来。LTspice会把这些结果输出到SPICE Error Log窗口,顺手复制到表格里做成对比表非常方便。下面是读取150kHz差模插入损耗的示例:

.meas AC dm_loss_at_150k FIND mag(V(out_p)-V(out_n)) AT 150k

5. 一个完整例子:两级EMI滤波器的共模/差模插入损耗仿真

前面几节讲的都是碎片,这一节我把它们拼起来,完整走一遍我平时做EMI滤波器预评估的流程。就以一个两级EMI滤波器为例,这个电路大量出现在开关电源的输入级。

5.1 电路结构与参数选取

两级EMI滤波器的拓扑大致是这样:

  • 输入端接差模测试台或共模测试台
  • 第一级:共模电感L1(两个绕组各10mH,K=0.99),跨接X电容Cx1=0.47µF
  • 第二级:共模电感L2(两个绕组各5mH,K=0.99),跨接X电容Cx2=0.22µF
  • 两级之后:火线对地Y电容Cy1=4.7nF,零线对地Y电容Cy2=4.7nF

实际上两级共模电感可以共用一组Y电容,但为了把每一级的贡献分出来看,我在第一级后面也放了一组小容值的Y电容。

关键的一点是,差模滤波主要靠两级共模电感的漏感加上两级X电容。L1漏感约为100µH,L2漏感约为50µH,再加上X电容0.47µF和0.22µF,理论上能提供两个谐振点叠加的差模衰减。而共模滤波靠的是共模电感的励磁电感和Y电容的配合。

5.2 差模插入损耗的仿真步骤

先在差模测试台里,把这套滤波器网络接进去。步骤如下:

  1. 信号源Vdm(AC Amplitude = 2)串联50Ω源电阻,接输入火线;信号源负端接输入零线,同时作为地参考。
  2. 把L1、Cx1、L2、Cx2按顺序接到火线和零线通路之间。
  3. 输出火线和零线之间接50Ω负载电阻。
  4. 插入AC指令:.ac dec 100 10 30Meg
  5. 运行仿真。
  6. 在波形窗口Add Trace,输入V(out_p) - V(out_n),把纵轴改成dB。

看曲线的时候会有一个典型现象:低频段曲线平在0dB附近,表示没有滤波作用;过了第一个LC谐振点之后,曲线以每十倍频程40dB的速度往下掉——因为这里有两阶滤波特性。如果你看到只有20dB/dec的斜率,那就要检查是不是漏感量估算错了,或者X电容位置不对。

5.3 共模插入损耗的仿真步骤

单独打开共模测试台原理图,把同样的滤波器网络接进去。这时候Y电容和共模电感的接法决定了一切。

  1. 信号源Vcm(AC Amplitude = 2)接地,通过两个50Ω电阻分别接到输入火线和输入零线。
  2. 输入端和地之间不要额外放任何元件。
  3. 输出火线通过50Ω电阻接地,输出零线也通过50Ω电阻接地。
  4. 插入同样的AC指令。
  5. 波形窗口Add Trace,输入(V(out_p) + V(out_n)) / 2,纵轴改成dB。

共模插入损耗和差模最大的不同是:由于Y电容和共模电感的励磁电感值都比较大,在较低频率就能看到明显衰减。如果你扫描到10Hz就发现曲线已经在负dB区,不用惊讶,共模电感本身就是一个大电感,在低频段对共模电流已经有衰减作用。

5.4 加Y电容前后的对比:一个值得实操的练习

很多工程师一开始舍不得在仿真里花时间,但是当你看过"加Y电容"和"不加Y电容"两种情况的对比曲线后,你会对共模滤波有非常直觉的理解。

复制一份共模测试台,把Cy1和Cy2删掉,保留共模电感和负载网络。扫描之后把两条曲线放在同一张图里比较。你会看到:没有Y电容时,共模抑制完全靠共模电感的感抗在高频段撑起衰减,低频段(几百kHz以下)衰减非常有限;加上Y电容之后,共模电感和Y电容构成LC谐振,在某个频点之后曲线以更快斜率下降。

这个对比练习做一次,比干看十篇理论文章有用得多。我建议你把这个思路也推广到差模侧:把X电容从0.22µF改成0.47µF,再看差模曲线谐振点往低频移了多少。

6. 两个容易被忽略的扩展玩法:运放CMRR与LISN阻抗,以及常见报错排查

基础部分讲完,说两个我用同样一套方法验证过的方向,以及初学者经常会踩的几个坑。

6.1 用AC扫描验证运算放大器的共模抑制比

差模共模分离这套思路,不止滤波器能用,运算放大器的CMRR仿真也是同一个原理。CMRR的定义是差模增益除以共模增益,单位是dB:

CMRR = 20 × log10(Ad / Acm)

原理图搭法很直接:搭一个经典的差分放大电路,四个电阻构成桥式输入。第一组AC扫描里,把输入信号接到两个输入端之间,构成纯差模激励,测量输出,得到Ad。第二组把输入信号同时接到两个输入端(两个输入端并联接到同一个源),构成纯共模激励,测量输出,得到Acm。两个结果相减,就得到了CMRR曲线。

这里有一个和EMI滤波器完全一致的坑:LTSpice默认的通用运放符号(opamp2)是理想模型,理想运放的共模增益为零,扫出来CMRR是无穷大,曲线直接飞了。想看到真实的CMRR曲线,必须换成实际型号的模型。如果你用TI的运放,直接在官网或者TI的spice模型库下载对应的.lib文件,放到LTSpice的Lib\sub目录,再通过在原理图里写.include指令加载。请注意看第三方模型文件的引脚顺序,很多.lib文件里声明的引脚顺序和LTSpice的opamp2符号并不一致,接错之后直流工作点都收敛不了。

具体操作流程极其简单:

.include OPA2277.lib

然后在原理图里放一个opamp2符号,右键它的value填成OPA2277即可。这里不展开第三方模型导入的每一个细节,但你要记住一个原则:凡是仿真结果出现不符合物理常识的值(比如CMRR无限大),先怀疑模型是不是理想模型或者模型引脚接错,而不是怀疑AC扫描设置。

6.2 用AC扫描看LISN的输入阻抗

还有一个扩展方向是LISN网络的AC阻抗分析。LISN(线路阻抗稳定网络)在做传导发射测试时是电源和设备之间的接口,它给射频噪声提供一个稳定的50Ω阻抗,同时把电网侧的噪声隔离掉。

你可以把LISN的等效电路搭出来,然后不给任何输入,只用AC扫描的电流探头(或者直接加一个1A的交流源)扫它的输入阻抗曲线。差模阻抗和共模阻抗分开扫,这样可以验证你的LISN模型在150kHz到30MHz范围内是不是真的保持了50Ω的稳定阻抗。这个操作对做电源硬件设计的人尤其有用,因为你可以提前知道测试环境会对你的噪声测量结果产生什么影响。

6.3 新手最常见的几个报错与排查顺序

最后把我平时在群里看到大家问得最多的几个坑按出现频率排个序:

  1. 电压源AC幅度为0:电压源属性里除了DC值,还有一个AC Amplitude字段。如果你只设置了DC值而没设置AC幅值,AC扫描的结果就是一条零线。每次跑AC前,先检查所有源的AC Amplitude是否都设对了。
  2. 没有放参考地:SPICE仿真必须有地。AC分析里地不仅是直流参考,还直接参与共模回路的定义。共模测试台如果地放错了位置,分离出来的一定是错的。
  3. 扫描范围太窄看不到趋势:如果你只从1kHz扫到100kHz,滤波器的谐振点和高频衰减行为根本看不全。建议起始频率设到10Hz,终止频率设到30MHz,看清楚全貌之后再缩小范围做局部放大。
  4. 前面提到过的悬浮节点导致不收敛:报singular matrix的时候优先检查是不是某个节点只通过电容耦合,没有直流路径,加个大电阻解决。
  5. Y轴忘记切dB:这个实在是太常见了。线性纵轴下你看到的是一条几乎贴地的曲线,换Log+dB之后才发现原来有60dB的衰减,完全是两种视觉感受。

这些年我用AC扫描分析差模共模,最大的心得是:仿真不是为了得到一个精确到小数点后三位的数字,而是为了把电路行为"看明白"。差模共模分离这件事,最容易出错的恰恰不是AC扫描指令本身,而是测试台搭建时的源、地、负载关系。只要你把测试台的结构吃透了,把耦合电感的K值和同名端处理对了,扫描结果基本就能和实测趋势对得上。后面再遇到传导超标,你也可以先跑两分钟仿真,判断瓶颈是在差模路径还是共模路径,再决定该往哪个方向改板子。这套流程我现在几乎每个项目都在用,也希望你能用起来。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/7 10:40:26

蓝牙版本号不是关键:蓝牙音频SoC选型真正该看的三个参数

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/7 10:39:54

动物运动会系统:设计模式大作业实战指南与代码实现

简介&#xff1a;《动物运动会》是一套基于Java语言的综合性设计模式教学项目&#xff0c;面向需要完成设计模式大作业、课程设计或希望深入理解软件架构的开发者。整个系统并非零散案例&#xff0c;而是将三十一种设计模式整合在同一应用框架内&#xff0c;其中包括抽象工厂、…

作者头像 李华
网站建设 2026/9/7 10:39:34

奔驰开源ARDEP车载开发板:基于AURIX TC397的嵌入式学习实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/7 10:39:25

分布式训练从单卡到万卡:并行策略、通信瓶颈与系统挑战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/7 10:37:14

非阻塞控制新思路:用树莓派Pico PIO精密驱动步进电机

刚拿到树莓派 Pico 玩步进电机的时候&#xff0c;我最直观的感受是&#xff1a;控制个脉冲怎么这么折腾&#xff1f;要么用延时函数死等&#xff0c;要么写中断里小心翼翼维护状态&#xff0c;稍微加个加减速逻辑CPU占用就飙上去。后来把PIO&#xff08;可编程输入输出&#xf…

作者头像 李华