1. 创建电阻器子电路模型
任务说明
本案例使用SPICE子电路语法定义一个电阻器模型,包含温度系数参数,并通过直流扫描验证其阻值随温度变化的行为。模型采用标准.subckt结构,支持通过参数传递标称阻值和温度系数。
子电路模型定义
* resistor_subckt.sp
.subckt R_TEMP 1 2 params: R=1k TC1=0.001 TC2=0.00001
* 温度系数模型:R(T) = R0 * (1 + TC1*(T-T0) + TC2*(T-T0)^2)
* 其中T0=27°C(默认工作温度)
B1 1 2 V = I(Vsense) * {R} * (1 + {TC1}*(temp-27) + {TC2}*(temp-27)*(temp-27))
Vsense 1 3 DC 0
Rfixed 3 2 {R}
.ends R_TEMP
测试电路与直流扫描
* test_resistor_temp.sp
.include resistor_subckt.sp
X1 in 0 R_TEMP params: R=2.2k TC1=0.002 TC2=0.00005
Vsrc in 0 DC 5V
.temp 27
.dc temp 0 100 5
.probe i(vsrc)
.end
关键实现说明
子电路内部使用电压源Vsense(0V)作为电流传感器,通过B源(行为源)根据温度参数计算实际电阻值。B源的表达式直接实现了温度系数公式,其中temp为SPICE内置变量(单位°C)。Rfixed为标称电阻,确保直流工作点稳定。测试电路将子电路接入5V电源,通过.temp语句和.dc扫描联合使用,实现温度从0°C到100°C的直流扫描。
运行与验证方法
使用支持B源(行为源)的SPICE仿真器(如LTspice、ngspice)运行测试电路。在ngspice中执行:
ngspice -b test_resistor_temp.sp
仿真完成后,查看输出文件中的电流值。判定标准:
- 在27°C时,电流应为5V/2.2kΩ ≈ 2.273mA(标称值)
- 在100°C时,电阻值约为2.2k×(1+0.002×73+0.00005×73²) ≈ 2.2k×1.412 ≈ 3.106kΩ,电流约为1.610mA
- 电流随温度升高而单调减小,曲线平滑无跳变
判定标准
仿真通过的条件:
- 27°C时电流实测值在2.27mA±1%范围内(对应标称电阻2.2kΩ)
- 100°C时电流约为1.61mA(对应温度修正后电阻约3.1kΩ)
- 整个温度扫描范围内电流单调递减,无异常波动
若需验证不同温度系数,可修改X1调用中的TC1、TC2参数重新仿真。该子电路模型可直接用于其他电路设计中,通过.params传递不同阻值与温度系数实现复用。