第四章 直流分析(.DC):扫描电压源、参数扫描与电路工作点分析

各位同学,欢迎来到第四章。这一章我们聊聊直流分析,也就是 .DC 仿真。

说实话,直流分析是 LTspice 里最基础、也最容易被忽视的功能。我刚入行那会儿,总觉得直流分析就是扫个电压,看看电流变化,没什么技术含量。直到有一次,我设计一个带隙基准源,死活调不到想要的温度系数,折腾了两天,最后发现是某个偏置点没设对。嗯,从那以后,我再也不敢小看 .DC 了。

直流分析说白了,就是让电路在直流状态下,扫描某个参数的变化,观察电路响应。它不像瞬态分析那样看波形随时间跑,也不像交流分析那样看频率响应。它关注的是——电路在稳态下,某个量变了,其他量怎么变。

4.1 .DC 指令的基本语法

先看最简单的用法。在 SPICE 网表里,.DC 指令长这样:

.DC V1 0 5 0.1

意思是:把电压源 V1 从 0V 扫到 5V,步长 0.1V。就这么简单。

在 LTspice 的图形界面里,你可以在 Schematic 页面点 Simulate → Edit Simulation Cmd,选 DC sweep 标签页。然后填上:

  • Source name:你要扫描的电压源或电流源的名字
  • Start value:起始值
  • Stop value:终止值
  • Increment:步长

我个人习惯,步长不要设得太粗。比如扫 0 到 5V,步长设 1V,那你只能看到 6 个点,中间有没有拐点完全不知道。但步长太细,仿真时间会变长,文件也会变大。一般取 0.01 到 0.1 之间比较合适,具体看你要观察的精度。

小技巧: 如果你不确定步长该设多少,可以先粗扫一次,找到感兴趣的区域,再局部细扫。我在项目中经常这么干,省时间。

4.2 扫描电压源:一个简单的例子

我们来看一个实际例子。假设你有一个二极管串联一个 1kΩ 电阻,接在电压源 V1 上。你想看二极管两端的电压随 V1 变化的情况。

网表如下:

V1 N001 0
R1 N001 N002 1k
D1 N002 0 1N4148
.DC V1 0 5 0.01
.PROBE
.END

跑完仿真,你会在波形窗口看到二极管电压从 0V 慢慢上升,到 0.6V 左右开始明显拐弯,然后趋于平稳。这就是二极管的导通特性。

为什么会这样?因为二极管在 0.6V 左右才开始显著导通,之后电流增大,但二极管压降变化不大。你想想看,如果你只测一个点,比如 V1=3V,你根本看不到这个拐弯的过程。这就是 .DC 的价值——让你看到全局。

4.3 参数扫描:不止扫电压源

.DC 指令不只是能扫电压源。它还能扫:

  • 电流源:比如 .DC I1 0 1m 0.01m
  • 温度:比如 .DC TEMP -40 125 5
  • 模型参数:比如 .DC V1 0 5 0.1 配合 .STEP 指令
  • 自定义参数:比如 .DC PARAM RLOAD 100 1k 100

这里我要重点说一下参数扫描。很多时候,你想看同一个电路在不同电阻值下的表现。比如一个分压电路,你想看 R2 从 1k 变到 10k 时,输出电压怎么变。

你可以这样写:

.STEP PARAM R2 1k 10k 1k
.DC V1 0 5 0.1

这样 LTspice 会先设 R2=1k,跑一遍 .DC 扫描;然后 R2=2k,再跑一遍……直到 R2=10k。最后你会得到一组曲线,每条曲线对应一个 R2 值。

我记得有一次做 LDO 的负载调整率仿真,就是用 .STEP 配合 .DC,把负载电阻从 10Ω 扫到 1kΩ,看输出电压的变化。这样一次仿真就把所有负载情况都覆盖了,比一个一个跑快多了。

重要: 参数扫描和 .DC 扫描是两层循环。.STEP 是外层循环,.DC 是内层循环。所以 .STEP 的参数变化一次,.DC 就会完整跑一遍。如果 .STEP 有 10 个值,.DC 有 100 个点,那总共就是 1000 个仿真点。

4.4 电路工作点分析

工作点分析,也叫 .OP 分析,是直流分析的另一种形式。它不扫描任何参数,只计算电路在给定偏置下的静态工作点。

指令很简单:

.OP

放在网表里,仿真结束后,LTspice 会在 SPICE Error Log 里输出所有节点的电压、所有支路的电流、以及每个器件的功耗。

工作点分析有什么用?我举几个例子:

  • 检查运放输入共模点:看输入对管是否工作在饱和区
  • 检查电流镜:看镜像电流是否匹配
  • 检查偏置电路:看偏置电压是否在预期范围内

我曾经遇到一个案例,一个运放仿真出来增益很低,怎么调都不行。后来用 .OP 一看,发现输入对管的 Vds 只有 0.1V,根本没进入饱和区。原来是偏置电流设得太小了。改大电流后,增益立刻恢复正常。你看,一个 .OP 就解决了问题。

注意: .OP 分析只给出直流工作点,不包含任何动态信息。如果你想看电路对信号的响应,还得靠 .AC 或 .TRAN。另外,如果电路中有电容,.OP 会把电容视为开路;有电感,视为短路。这是直流分析的基本假设。

4.5 实战技巧:如何高效使用 .DC

这里分享几个我多年积累的经验:

  1. 先粗后细:先大步长扫一遍,找到关键区域,再局部细扫。别一上来就设 0.001 步长,浪费时间。
  2. 善用 .MEASURE:配合 .DC 使用 .MEASURE 指令,可以自动提取关键参数。比如你想找二极管导通电压,可以写:.MEAS TRAN Vth WHEN I(D1)=1mA。这样仿真完直接出结果,不用手动看波形。
  3. 注意收敛问题:.DC 仿真有时会不收敛,尤其是电路中有正反馈或双稳态结构。遇到这种情况,可以尝试减小步长,或者给电路加一个初始条件(.IC 指令)。
  4. 保存波形数据:.DC 仿真结果可以导出为 .txt 或 .csv 文件,方便在 Excel 或 Python 里进一步处理。右键波形窗口,选 File → Export 即可。

嗯,这里要特别提醒一下收敛问题。我曾经做一个 Schmitt trigger 的仿真,.DC 怎么跑都不收敛,折腾了一下午。后来发现是电路本身有迟滞特性,直流扫描时会在跳变点附近来回震荡。解决办法是改用 .TRAN 分析,或者给 .DC 加一个很小的步长,并开启 Gmin stepping 选项。

4.6 一个完整的实战案例

最后,我们看一个完整的例子。假设你要设计一个简单的稳压管稳压电路,输入电压 VIN 从 5V 到 15V 变化,稳压管是 5.1V 的,限流电阻 1kΩ。你想看输出电压 VOUT 随 VIN 的变化。

网表如下:

* Zener Regulator DC Sweep
VIN N001 0
R1 N001 N002 1k
D1 N002 0 DZ5V1
.MODEL DZ5V1 D (BV=5.1 IBV=5m)
.DC VIN 5 15 0.1
.PROBE V(N002)
.END

跑完仿真,你会看到 VOUT 在 VIN 低于 6V 左右时,跟随 VIN 变化;超过 6V 后,VOUT 稳定在 5.1V 附近。这就是稳压管的工作特性。

如果你还想看不同限流电阻的影响,可以加 .STEP:

.STEP PARAM R 500 2k 500
.DC VIN 5 15 0.1

这样一次仿真就能看到 R=500Ω、1kΩ、1.5kΩ、2kΩ 四种情况下的稳压效果。是不是很方便?

好了,这一章的内容就到这里。直流分析看似简单,但用好了,能帮你快速摸清电路的脾气。下一章我们讲交流分析,看看怎么用 .AC 来评估电路的频率响应。到时候见。