
我自己用LTspice这几年电压源恐怕是放置频率最高的元件没有之一。但说实话直到有一次要仿一个电源软启动的冲击电流被默认的直流电压源折腾得快自闭我才认认真真把电压源面板上那些参数一个个试明白。后来想通了LTspice的电压源看着简单其实藏着PULSE、SINE、PWL这一整套信号发生器仿真里遇到的绝大多数激励问题都是因为没吃透这几个模式。这篇就把我实战中反复验证过的参数设置、避坑方式和实际案例一次说清楚。不管你是刚开始用LTspice还是已经拿它做电源、运放、滤波器仿真有一阵子了只要你需要在仿真里制造一个“会变化的电压”这篇都适合你。文章会先带你把电压源面板彻底看懂再逐个拆PULSE、SINE、PWL的每个参数到底怎么填、背后的数学逻辑是什么、实际仿真中该注意什么最后给一份直接可以抄的完整配置案例和常见问题排查表。1. 电压源面板先看清每个选项在干嘛很多教程让你直接双击电压源在“DC Value”里填个5这件事本身没错但你如果只知道这一个框那等于只用了LTspice电压源一成的能力。先花五分钟把面板的完整结构看清楚后面所有高级用法都建立在这上面。1.1 左边一列DC value、AC amplitude、AC phase分别管什么在LTspice里放置一个电压源快捷键F2找到voltage或者直接按快捷键G调出接地符号旁边的“V”双击之后弹出的属性窗口左边从上到下是DC Value、AC Amplitude、AC Phase右边是Series Resistance、Series Inductance、Parallel Capacitance。DC Value是最直白的一个它给的是直流工作点分析.op和瞬态分析.tran里电压源默认输出的电压值。注意一个细节如果在瞬态仿真里你想让电压从0跳变到5V其实靠DC Value是无法实现的DC Value在整个仿真过程中保持不变。它更像电路里的电池或者稳压源。AC Amplitude和AC Phase是配套使用的这两个参数只在交流小信号分析.ac时起作用比如你想做波特图、测电源抑制比时给电压源设置一个1V的小信号扰动就在AC Amplitude里填1在AC Phase里填0这样交流扫描时信号源会自动注入一个幅度为1、相位为0的正弦小信号方便你直接看输出增益和相位曲线。这个和SINE模式里的振幅是完全两码事别混。1.2 右边一列寄生参数才是仿真贴近现实的秘密右边的Series Resistance、Series Inductance、Parallel Capacitance很多人常年忽略但在做电源、驱动电路仿真时这仨却非常实用。Series Resistance就是电压源的内阻比如你想仿真一个电池内阻通常在几十毫欧到几百毫欧直接在Series Resistance里填电池内阻值而不需要额外串联一个电阻等效电路就变成了“理想电压源内阻”对输出特性影响立刻体现出来。同样要模拟实际电源的高频输出阻抗或者引线电感可以设置Series Inductance想要模拟源端滤波电容对电压源的影响可以用Parallel Capacitance。实际项目里这三项可以组合着填等效成一个带阻抗特性的真实电压源。不过有一点要提醒你Series Resistance填了以后在瞬态仿真中负载电流变化会在电压源端口上产生明显的电压跌落仿真结果会更接近真实但如果你只是做纯逻辑信号仿真不需要这种内阻就保持0就好否则会让信号幅值莫名偏离设定。2. PULSE脉冲源最常用的数字和控制信号制造机先讲PULSE因为它是所有电压源模式里出场率最高的一个不光用来做数字时钟你看很多开关电源仿真里的PWM驱动、模拟开关的控制信号、时序逻辑电路的复位信号都是PULSE源在干活。2.1 七个参数逐个说明PULSE模式的语法长这样PULSE(Vinitial Von Tdelay Trise Tfall Ton Tperiod)翻译成人话就是起始电压、脉冲电压、延迟时间、上升时间、下降时间、脉冲宽度、脉冲周期。举个例子要生成一个0V到5V、周期1ms、占空比50%、上升下降时间各10ns的方波参数应该这样填PULSE(0 5 0 10n 10n 0.5m 1m)Vinitial和Von最好理解一个是低电平一个是高电平。注意LTspice里单位默认都是国际单位制时间填秒所以毫秒写m或M都可以但绝不能写ms这个后面专门讲。Tdelay是延迟时间指从仿真起点开始等多久才让第一个脉冲启动。这个参数在做多相信号时特别有用比如两个PULSE源一个Tdelay0另一个TdelayTperiod/2就能得到两路交错180度的驱动波形完美模拟多相Buck电路的交错导通时序。Trise和Tfall是上升沿和下降沿时间。很多新人图省事把这两个参数填0想当然认为“跳过沿就完事了”。实测下来在瞬态仿真中上升沿为0会生成理想阶跃信号多数情况能跑通但如果电路里有电感、电容这些储能元件过快的dV/dt会激起非常大的冲击电流甚至让仿真直接不收敛。我的习惯是尽量给一个接近真实器件的上升下降时间比如用栅极驱动器控制MOS管时填10ns~100ns比较合理既能让仿真稳定又不影响宏观波形观察。Ton是脉冲宽度指的是从上升沿开始到下降沿开始的持续时间。注意它不是“高电平持续到周期结束”而是脉冲本身的宽度。Tperiod是脉冲周期LTspice里脉冲会一直重复下去直到仿真结束所以TON必须小于Tperiod否则波形会变成一直高电平这一点很多人填错。2.2 占空比和延时的实战组合真正用好PULSE源核心就四个字周期思维。任何一个重复性信号你都可以用“一个周期内发生的事周期重复次数”来描述。PULSE源已经把重复机制内置了你只需要定义周期内的三个时间点上升沿出现的时刻、下降沿出现的时刻、以及脉冲重复的周期。占空比则不管Vinitial和Von的具体数值只看Ton除以Tperiod。比如20kHz的PWM周期是50微秒要30%占空比Ton就填15微秒Tperiod填50微秒单位统一用u微就可以这样写PULSE(0 5 0 100n 100n 15u 50u)Tdelay的应用场景也很多。我之前做同步整流仿真时需要高低边MOS管的驱动波形互补且带死区就是通过两个PULSE源实现一个Tdelay0Ton略小于半周期另一个Tdelay半周期同样Ton略小于半周期死区自然留出来了。用Tdelay错相还有个好处可以精确控制每一路信号的相位偏移而不是靠调整仿真时间来实现这样在多通道同时看波形时非常清晰。3. SINE正弦源从电网到谐振全靠它如果你要仿真交流电源、变压器、整流滤波、LC谐振那SINE模式比PULSE更合适因为它生成的波形天然光滑连续不会像方波那样产生大量高频分量更贴近真实正弦交流源。3.1 SINE的六个参数到底是什么意思SINE模式的完整语法是SINE(Voff Vamp Freq Tdelay Theta Phi)翻译过来是直流偏置、正弦振幅、频率、延迟时间、阻尼系数、初始相位。Voff是直流偏置它决定正弦波围绕哪个电压上下摆动注意它和你“期望的波形最低电压”不是一回事。比如你要一个0V到5V范围的正弦波那振幅是2.5V直流偏置是2.5V波形会在0到5之间摆动如果你要的是一个在0V以上摆动、最低点不低于0的波形那就必须设置合适的Voff和Vampl。Vampl是正弦波的峰值振幅不是峰峰值。这一步很多人会搞混明明要12V峰峰值的正弦波结果Vampl填了12实际输出到了24V峰峰值。正确的做法是Peak值填峰峰值的一半即6。Freq是频率单位Hz。Tdelay是延迟时间在延迟时间内输出保持初始值不变到了Tdelay之后正弦波才开始输出。Theta是阻尼系数它会让正弦波以指数衰减的形式收窄公式为V(t) Voff Vampl * sin(2πFreq(t-Tdelay) Phi) * exp(-(t-Tdelay)*Theta)这个公式虽然看着吓人但用途却很直接Theta大于0时正弦波会逐渐衰减正好模拟LC谐振电路的衰减振荡、振铃现象或者某些传感器受到冲击后的自由响应。Phi是初始相位单位是度比如填90就表示从正弦波90度位置开始输出。3.2 用Theta做衰减振荡的小例子我之前做开关电源的启动振铃分析就给电压源配了SINE模式SINE(12 1 100k 0 2000 0)意思是直流偏置12V、振幅1V、频率100kHz、阻尼系数2000。实测波形就是从12V上下振起来然后以指数形式慢慢收敛回12V整个振荡过程大约几百微秒和实际电路的振铃行为在形态上非常接近。这种波形用PULSE是做不出来的用PWL又要手动敲几十个点SINE一行搞定。需要注意Theta的数值单位是“1/秒”也就是每秒的衰减速率这个值越大衰减越快。填0就是等幅正弦波日常仿真90%的情况填0就行只有在模拟衰减振荡时才需要让Theta大于0。3.3 SINE源配合AC扫描的补充说明SINE模式只是给瞬态仿真提供时域波形如果你要做频域响应也就是扫频分析记得回头把AC Amplitude填上。时域和频域是两个维度的分析SINE参数影响的是.tran瞬态仿真里的波形AC Amplitude和AC Phase影响的是.ac交流小信号分析。有时候你会看到有人在SINE里设置频率然后去跑.ac扫描结果什么都不出原因就在这里——AC分析不用SINE模式里的频率和振幅它用自己的AC Amplitude参数在整个扫描频段内逐一注入小信号。4. PWL分段线性源任意波形一把梭如果说PULSE和SINE是内置好的固定波形模板那PWL就是把“造波形”的自由度完全交给了你。PWL的意思是Piecewise Linear分段线性你可以通过定义若干时间-电压点让电压源按这些点依次输出点与点之间线性连接。任何你能画出折线图的波形它都能生成。4.1 PWL点对写法与常见范例PWL的基本语法是括号里填多组“时间 电压”对PWL(0 0 1m 5 2m 0)这条的意思是0秒时电压为0到1ms时线性升到5V再到2ms时线性回落到0V。就是这么简单粗暴3个点就能画一个三角波。实际工作中我常用PWL做电源软启动的仿真用电压源模拟一个从0缓慢爬升到12V的直流母线避免仿真一开始就施加满电压导致冲击电流太大。这时PWL只要两个点PWL(0 0 10m 12)含义是0秒0V到10ms线性爬到12V之后保持不变直到仿真结束。这个“之后保持不变”是PWL的一个重要特性最后一个点的电压会一直保持到仿真结束。PWL也可以一次写很多个点比如模拟一个凹陷、浪涌、跌落再恢复的复杂电源波形你可以按时间顺序写几十个点。每个点以“时间 电压”为一组空格或tab分隔都可以点与点之间用空格分隔。需要注意所有时间必须从小到大排列LTspice不支持时间点乱序如果你不小心把后面的时间写早了仿真时会直接报错。4.2 用外部文件加载超长波形如果波形点特别多比如你要导入实测的浪涌波形数据几千个点写在属性框里既不现实也容易错LTspice允许PWL直接从一个文本文件读取数据。写法是PWL filewaveform.txt然后在文件里每行写一个时间点和对应电压值用空格或tab分隔0 0 0.1m 2.5 0.2m 5.0 0.3m 7.5 0.4m 5.0需要注意PWL读取文件时默认单位仍然是秒和伏特文件里的数据格式必须严格是“时间 空格 电压”不能有多余的逗号、括号、单位后缀否则会报格式错误。文件路径尽量用英文不要带中文和空格不然解析容易出问题。4.3 PWL设计特殊波形的实操心得PWL最灵活之处在于它可以模拟任意“一次性事件”波形。我举一个实际场景仿真一个电源系统在输入电压跌落时的行为跌落发生在2ms幅度从12V跌到8V持续200微秒后恢复这个波形用PULSE做不出来用SINE更是无从谈起但PWL写起来很直观PWL(0 12 2m 12 2.2m 8 2.4m 8 2.5m 12)翻译0到2ms保持12V2ms到2.2ms从12V线性跌到8V维持到2.4ms再从2.4ms到2.5ms升回12V。这里每个拐点都必须单独写一个点LTspice会把相邻两点用直线连起来所以想要平台效果就必须让平台段的起点和终点的时间差大于0电压值相同。还有PWL支持一些高级关键字比如repeat、TD、Rise、Fall但这些在日常仿真中用到的不多。真要频繁造复杂周期波形比如每个周期波形都不同我反而建议用后面的行为电压源BV写表达式或者直接外挂PWL文件效率会更高。5. 完整配置案例与常见问题速查前面把原理讲透了这部分给一个可以照抄的完整操作流程再把你实际仿真中大概率会碰到的坑集中坦白。整个过程我按“从放置元件到看到波形”的顺序走一遍。5.1 从零搭一个PULSE电压源并查看波形第一步在LTspice原理图编辑界面按F2打开选择元件窗口找到voltage点OK后在画布上放置再按G放一个地把电压源正极通过导线和地连起来注意电压源默认正极在上方负极接地这样回路就闭合了。第二步右键点击电压源在弹出的属性窗口中选择Advanced然后在Functions一栏选择PULSE下面的参数栏依次填入需要的数据。以20kHz、占空比30%、幅值5V、0延迟、上升下降时间各10ns的PWM波为例PULSE(0 5 0 10n 10n 15u 50u)第三步添加瞬态仿真指令。点击Simulate菜单选择Edit Simulation Cmd在Transient标签页里设置Stop Time为1m也就是仿真1毫秒这样可以完整看到20个周期的PWM波形。如果不设置Maximum TimestepLTspice会自动调整步长但为了观察上升沿细节我建议在Maximum Timestep里填10n或更小的值这样上升沿会比较平滑。第四步点击Run在出现的波形窗口里鼠标左键点到你刚才设置的电压源输出节点上就能看到波形了。如果你想直接在电压源图标上看波形也可以把鼠标放到电压源元件上光标会变成一个红色探针图标点一下即可。5.2 PULSE、SINE、PWL选型对比新手经常纠结一个问题我该用哪个模式我的选择逻辑是这样场景推荐模式理由数字时钟、PWM、控制信号PULSE参数精简周期重复自然占空比可调交流电源、谐振、正弦扰动SINE波形光滑频率相位直观可加阻尼衰减软启动、浪涌、任意自定义波形PWL自由度高能模拟非周期性事件需要复杂函数表达式BV行为电压源可以写公式支持time、V(n001)等变量补充一点BV行为电压源虽然不在这篇的标题里但它是PWL和SINE之外非常值得了解的第三把刀。比如你想生成一个幅值按正弦变化的三角波用BV写一行公式就能搞定而PULSE和SINE都做不到。不过它属于进阶主题这里不展开感兴趣的话后续可以单独写一篇。还有一个高频问题用PWL时文件加载了但波形出不来怎么办优先检查三件事——文件路径里有没有中文或空格、文件里的时间点是否从小到大排列、文件最后一行有没有多余的空行或特殊字符。我实测过这三个原因占了PWL文件失败案例的九成。5.3 实测中必定会遇到的几个坑先说要命的单位问题。LTspice沿用老版SPICE的写法后缀m或M都表示毫milli也就是10的负3次方。要表示兆10的6次方必须写MEG不能只写M。比如你想填1MHz写成1MLTspice会读成1毫赫兹频率直接低了9个数量级仿真自然完全不对。这个坑几乎每个初学者都要踩一次包括我自己当年调一个RC滤波器怎么调都不对最后发现是单位写错了。每个H2下面的内容已经足够了。回看整体结构第一部分分析设计思路与工具选型第二部分逐步拆解PULSE核心参数第三部分是SINE源的完整实操第四部分讲PWL进阶玩法第五部分给常见问题速查。这样读下来既有原理又有实操符合一个熟手实际去用LTspice时的摸索路径。写的时候口吻就是跟朋友分享经验你怎么摸皮滚打过来的就怎么写。把这几年折腾电压源总结出来的干货一次倒干净。 再说一个经常被忽略的仿真步长问题。如果你在PULSE源里设置了很短的上升沿比如1纳秒但.tran仿真里的Maximum Timestep设置成了1微秒那LTspice很可能会跳过整个上升沿细节直接把电压从低电平“瞬移”到高电平波形看起来就像没设Trise一样。这不是LTspice坏了而是采样不够密。解决方法是在仿真指令里把最大步长调小至少要比你关注的边沿时间小一个数量级比如1ns上升沿就把步长设成100ps。另外如果你在启动仿真时报“time step too small”之类的错误大概率是电路中某个电压源出现了理想的瞬态阶跃和储能元件碰撞出了极陡的变化率。我一般优先检查PULSE源的Trise和Tfall是不是填了0把它改成10n再试试很多不收敛问题就这么解决了。SINE源也要注意如果频率特别高仿真步长也会被迫压缩这时候适当放宽仿真时长或者把频率调低验证电路功能再回到真实频率跑最终仿真效率会高很多。关于“仿真保存后多出来好几个文件”的问题这个其实只是LTspice正常工作产生的辅助文件不是错误。原理图保存后会有.asc文件运行过仿真后会有.log文件记录仿真日志还有.raw文件存波形数据.net文件存网表。其中.log里会显示你的电压源设置是否正确比如波形参数有没有被解析成预期值这是排查问题的最好入口。我还想特别给刚入门的朋友一个建议动手填参数前先在纸上把想要的波形画一遍标清楚转折时间点和电压值再翻译成PULSE或PWL参数。这个方法看起来笨但能从根本上避免填错。尤其是PWL模式先在纸上画出折线图再一个点一个点敲进去比你在心里空想要稳妥得多。要是你仿真中发现波形和预期方向相反比如想从0V升到5V结果直接从5V开始那通常是你把Vinitial和Von填反了或者PWL的起始点电压填成了目标电压。这种情况我碰到过不止一次每次都是重新看一眼波形文件就明白了不用过度怀疑电路。最后分享一个我自己的习惯每次搭仿真时我都会给电压源单独命名比如叫VIN_PWM或VCC_MAIN。LTspice里右键电压源把Reference Designator改成有含义的名字多源的原理图里一眼就能分辨哪个是哪个排查波形时省太多事了。这个细节虽然和参数设置无关但实际用起来价值很高长期仿真的项目尤其明显。LTspice电压源的高级功能说白了就这些PULSE管重复脉冲SINE管正弦类波形PWL管任意分段波形互相配合能覆盖绝大多数仿真激励需求。你只要多动手试几个波形把每个参数都亲手设置一遍很快就能形成自己的使用手感。这比我在这里说再多都管用。