开关电源知识库

LTspice 手把手教程 —— 从零搭一个 Buck 变换器

你将学会:安装后第一次打开 LTspice → 画一个 Buck 电路 → 设定 100kHz 开关仿真 → 跑出波形 → 用光标量出纹波电流 → 比对手算公式。 预计时间:30 分钟(第一次)。前置:无需任何仿真经验。 LTspice 位置:本机 wine 下 /home/sam/.wine/drive_c/Program Files/ADI/LTspice/LTspice.exe。Linux 直接启动:wine LTspice.exe(GUI)或 wine LTspice.exe -b 文件.cir(命令行 batch)。


第 1 步:启动 LTspice

wine "$HOME/.wine/drive_c/Program Files/ADI/LTspice/LTspice.exe" &

应该看到 LTspice 主窗口(空白灰色背景 + 顶部菜单栏)。如果没看到,检查 wine 是否安装:which wine。

命令行用户跳过 GUI:本教程第 6~10 步提供一个可直接运行的 netlist 文件(.cir),用 batch 模式跑——不需要点任何菜单。GUI 操作见侧栏提示。


第 2 步:新建原理图

菜单:File → New Schematic(或 Ctrl+N)。

出现一个空白网格画布。左上角是原点。滚轮缩放,右键拖动平移。


第 3 步:放元件

按快捷键或菜单放元件。每放一个,按 Esc 退出放置模式,再按下一个快捷键。

3.1 电压源 Vin

此时元件上应显示 “V1” 和 “DC 12”。

3.2 开关(用电压控制开关代替 MOSFET,入门更简单)

3.3 二极管

3.4 电感

3.5 输出电容

3.6 负载电阻

3.7 栅驱动电压源

这组参数 = 100kHz、占空比 0.417(4.17µs/10µs)。


第 4 步:连线

连接关系:

Vin(+) ──── sw(S1) ──── L1 ──── Vout
               │                      │
             D1(→GND)              Cout(→GND)
                                    RL(→GND)
pg(S1 栅驱动) ── 独立,不与主回路连接

接线清单(共 7 条线):

  1. Vin(+) → S1 一端
  2. S1 另一端 → D1 阴极 + L1 左端(这个节点叫 sw)
  3. D1 阳极 → GND
  4. L1 右端 → Cout 上端 + RL 上端(这个节点叫 vout)
  5. Cout 下端 → GND
  6. RL 下端 → GND
  7. 栅驱动 Vg → S1 控制端

第 5 步:放地(GND)


第 6 步:设仿真指令

这行的意思:仿真 0→10ms;从 5ms 开始存数据(跳过启动瞬态);步长最大 0.5µs。


第 7 步:运行仿真

如果报错:

  • “Node xxx is floating” → 少接了地或某个元件悬空
  • “Singular matrix” → 两个元件直接并联到地(短路)
  • “Timestep too small” → 加 snubber(在开关两端接 100pF 电容)

第 8 步:看波形

波形查看器中:

  1. 点原理图上的节点 → 波形查看器自动叠加该节点的电压波形
  2. 点元件的引脚 → 显示流过该元件的电流波形
  3. 常用操作:
    • 点原理图中的 L1 引脚 → 显示 I(L1)(电感电流)
    • 点原理图中的 vout 节点 → 显示 V(vout)
    • 点原理图中的 sw 节点 → 显示 V(sw)(方波)

你应该看到:


第 9 步:量纹波

  1. 确保波形查看器显示 I(L1)
  2. 放大到稳态:在波形窗口按住左键拖一个矩形(选最后 2~3 个周期)→ 自动放大
  3. 用光标量峰峰值:
    • 右键点击波形标签 I(L1) → 选 2D Viewer 或直接:
    • 菜单 View → Add Trace → 选 I(L1)
    • 点工具栏的 Cursor 按钮 → 出现两条光标线
    • 拖光标 A 到锯齿波的最高点,光标 B 到最低点
    • 底部状态栏显示 Δ = xxx A

你应该量到:

ΔI_L ≈ 1.3~1.4 A

比对手算:

$$\Delta I_L = \frac{V_{out} \times (1-D)}{L \times f} = \frac{5 \times (1-0.417)}{22\mu H \times 100kHz} = \frac{2.915}{2.2} = 1.325\ A$$

仿真值 ≈ 1.37 A vs 手算 1.33 A → 偏差 ~3%(二极管压降 + Ron 二阶效应)。

如果偏差 >10%,检查:

  • D 是否真的 = 0.417(4.17µs/10µs)
  • L 是否真的 = 22µH
  • 是否在稳态段测量(前 5ms 是启动瞬态,不能用来量纹波)

第 10 步:命令行方式(跳过 GUI)

如果你偏好脚本化操作,跳过第 1~9 步,直接写 netlist 文件:

文件:buck.cir

* Buck: 12V->5V/2A @ 100kHz
V1 vin 0 DC 12
Vgate pg 0 PULSE(0 5 0 20n 20n 4.17u 10u)
S1 vin sw pg 0 SMOD
.model SMOD SW(Ron=10m Roff=1Meg Vt=2.5 Vh=0.1)
D1 0 sw DMOD
.model DMOD D(Is=1u Rs=20m)
L1 sw vout 22u
Cout vout 0 470u Rser=30m
RL vout 0 2.5
.tran 0 10m 5m 0.5u
.end

运行:

wine "$HOME/.wine/drive_c/Program Files/ADI/LTspice/LTspice.exe" -b "Z:\\tmp\\buck.cir"

(Z: 是 wine 映射的 Linux 根目录——Z:\tmp\ = /tmp/。)

产出:buck.raw(二进制波形文件)。用 LTspice GUI 打开查看,或用 Python 解析(.raw 头部 UTF-16LE,详见 09_LTspice_ngspice_实战)。

wine 环境注意:本机实测 LTspice 在 wine 下 .tran 开关电路可能出现数值发散(ΔI→10¹⁰A)。如遇此问题,改用 ngspice(原生 Linux,sudo apt install ngspice,同一 netlist 大部分兼容,但 Rser= 参数须拆为独立电阻)。


精炼速查

元件快捷键

快捷键 元件 本例值
R 电阻 2.5Ω(负载)
C 电容 470µF + ESR 30mΩ
L 电感 22µH
D 二极管 默认
V 电压源 DC 12V / PULSE
F2 元件库(选 sw 等)
F3 连线
G 地(GND)

仿真指令卡

指令 含义
.tran 0 10m 5m 0.5u 瞬态 0→10ms,5ms 起存数据,步长 ≤0.5µs
.ac dec 50 10 1meg 交流扫频 10Hz→1MHz,每十倍频 50 点
.four 100k V(sw) 傅里叶分析 @100kHz

比对公式

量 公式 本例值
ΔI_L Vout(1−D)/(L·f) 1.33 A
Vout Vin×D 5.00 V
ΔV_out ΔI_L×ESR + ΔI_L/(8fC) ~45 mV
D Ton/T 0.417

上一级:教程