diff --git a/examples/optran/F5TurboV2thermal-optran.cir b/examples/optran/F5TurboV2thermal-optran.cir new file mode 100644 index 000000000..992f9b3e3 --- /dev/null +++ b/examples/optran/F5TurboV2thermal-optran.cir @@ -0,0 +1,69 @@ +.title KiCad schematic +.include "F5models.lib" +.include "script-optran.txt" +R2 in 0 47.5k +R1 Net-_Q1-Pad2_ in 1k +R5 +32 Net-_P1-Pad1_ 1k +R3 Net-_P3-Pad1_ 0 10 +R4 0 Net-_P3-Pad1_ 10 +R6 Net-_P2-Pad1_ -32 1k +R7 out Net-_P3-Pad1_ 220 +R8 out Net-_P3-Pad1_ 220 +R9 out Net-_P3-Pad1_ 220 +R10 out Net-_P3-Pad1_ 220 +R11 Net-_R11-Pad1_ Net-_P1-Pad1_ 2.2k +R13 Net-_Q3-Pad2_ Net-_P1-Pad1_ 47.5 +R15 Net-_Q5-Pad2_ Net-_P2-Pad1_ 47.5 +R12 Net-_R12-Pad1_ Net-_P2-Pad1_ 2.2k +R17 +32 Net-_D3a1-Pad1_ 1 +R21 Net-_D1a1-Pad2_ -32 1 +R18 +32 Net-_D3a1-Pad1_ 1 +R22 Net-_D1a1-Pad2_ -32 1 +R16 Net-_Q6-Pad2_ Net-_P2-Pad1_ 47.5 +R14 Net-_Q4-Pad2_ Net-_P1-Pad1_ 47.5 +R19 +32 Net-_D4a1-Pad1_ 1 +R23 Net-_D2a1-Pad2_ -32 1 +R20 +32 Net-_D4a1-Pad1_ 1 +R24 Net-_D2a1-Pad2_ -32 1 +Rl1 out 0 4 +D3a1 +32 Net-_D3a1-Pad1_ DMOD +D1a1 Net-_D1a1-Pad2_ -32 DMOD +D3b1 +32 Net-_D3a1-Pad1_ DMOD +D1b1 Net-_D1a1-Pad2_ -32 DMOD +D4a1 +32 Net-_D4a1-Pad1_ DMOD +D2a1 Net-_D2a1-Pad2_ -32 DMOD +D4b1 +32 Net-_D4a1-Pad1_ DMOD +D2b1 Net-_D2a1-Pad2_ -32 DMOD +XP3 Net-_P3-Pad1_ 0 Net-_P3-Pad1_ RPOT value=200 ratio=0.85 +XP1 Net-_P1-Pad1_ +32 +32 RPOT value=5k ratio=0.18 +XP2 Net-_P2-Pad1_ -32 -32 RPOT value=5k ratio=0.18 +V3 in 0 sin(0 2 1k) +JQ1 Net-_P1-Pad1_ Net-_Q1-Pad2_ Net-_P3-Pad1_ 2SK170 +JQ2 Net-_P2-Pad1_ Net-_Q1-Pad2_ Net-_P3-Pad1_ 2SJ74 +MQ5 out Net-_Q5-Pad2_ Net-_D1a1-Pad2_ Q5tj Q5tc IRFP240 thermal +MQ4 out Net-_Q4-Pad2_ Net-_D4a1-Pad1_ Q4tj Q4tc IRFP9240 thermal +MQ6 out Net-_Q6-Pad2_ Net-_D2a1-Pad2_ Q6tj Q6tc IRFP240 thermal +Rj1 Q3tj 0 1G +Rj2 Q4tj 0 1G +Rj3 Q5tj 0 1G +Rj4 Q6tj 0 1G +Rc2 Q3hs Net-_Rc2-Pad2_ 0.7 +Rc4 Q4hs Net-_Rc2-Pad2_ 0.7 +Rc6 Q5hs Net-_Rc2-Pad2_ 0.7 +Rc8 Q6hs Net-_Rc2-Pad2_ 0.7 +Rc1 Q3tc Q3hs 0.1 +Rc3 Q4tc Q4hs 0.1 +Rc5 Q5tc Q5hs 0.1 +Rc7 Q6tc Q6hs 0.1 +Vt1 Net-_Rc2-Pad2_ 0 40 +Cc1 Q3hs 0 1 +Cc2 Q4hs 0 1 +Cc3 Q5hs 0 1 +Cc4 Q6hs 0 1 +V1 +32 0 32 ; pulse(0 32 1m 1m 1m 100 200) +V2 -32 0 -32 ; pulse(0 -32 1m 1m 1m 100 200) +XTH2 Net-_D1a1-Pad2_ Q5hs Net-_R12-Pad1_ th R25=4.7k +XTH1 Net-_D3a1-Pad1_ Q3hs Net-_R11-Pad1_ th R25=4.7k +MQ3 out Net-_Q3-Pad2_ Net-_D3a1-Pad1_ Q3tj Q3tc IRFP9240 thermal +*.tran 20u 5 +.end diff --git a/examples/optran/F5models.lib b/examples/optran/F5models.lib new file mode 100644 index 000000000..decabbbef --- /dev/null +++ b/examples/optran/F5models.lib @@ -0,0 +1,78 @@ +* from https://www.diyaudio.com/forums/solid-state/252973-2sk170-2sj74-spice-model-pass-0-4ma.html +*2SJ74 +*Toshiba Dep-Mode 20mA 400mW LowNoise pkg:TO-92B 2,1,3 +.MODEL 2SJ74 PJF(Beta=92.12m Rs=7.748 Rd=7.748 Lambda=4.464m ++Vto=-.5428 Cgd=85.67p Pb=.3905 Fc=.5 ++Cgs=78.27p Is=12.98p ++Kf=26.64E-18 Af=1) + +*2SK170 +* 20mA 400mW LowNoise Dep-Mode pkg:TO-92B 3,1,2 +.MODEL 2SK170 NJF(Beta=59.86m Rs=4.151 Rd=4.151 Lambda=1.923m ++Vto=-.5024 Cgd=20p Pb=.4746 Fc=.5 ++Cgs=25.48p Is=8.477p ++Kf=111.3E-18 Af=1) + +.subckt RPOT 1 2 3 +R1 1 2 {value*ratio + 1m} +R2 2 3 {value*(1-ratio)+ 1m} +* below are default parameters, which are required by some simulators +.param value=1k +.param ratio=1 +.ends + +.model IRFP240 VDMOS nchan ++ Vto=4 Kp=5.9 Lambda=.001 Theta=0.015 ksubthres=.27 ++ Rd=61m Rs=18m Rg=3 Rds=1e7 ++ Cgdmax=2.45n Cgdmin=10p a=0.3 Cgs=1.2n ++ Is=60p N=1.1 Rb=14m XTI=3 ++ Cjo=1.5n Vj=0.8 m=0.5 ++ tcvth=0.0065 MU=-1.27 texp0=1.5 ++ Rthjc=0.4 Cthj=0.1 ++ mtriode=0.8 + +.model IRFP9240 VDMOS pchan ++ Vto=-4 Kp=8.8 Lambda=.003 Theta=0.08 ksubthres=.35 ++ Rd=180m Rs=50m Rg=3 Rds=1e7 ++ Cgdmax=1.25n Cgdmin=50p a=0.23 Cgs=1.15n ++ Is=150p N=1.3 Rb=16m XTI=2 ++ Cjo=1.3n Vj=0.8 m=0.5 ++ tcvth=0.004 MU=-1.27 texp0=1.5 ++ Rthjc=0.4 Cthj=0.1 ++ mtriode=0.6 + +.model DMOD D + +* Thermistor model +.subckt th n1 nt n2 +.param B=3977 +.param R25=4700 +*control node +Ctherm1 n1 0 100p +Ctherm2 n2 0 100p +Rtherm n1 n2 R = {R25*exp(B*(1/(v(nt)+273.15)-1/(25+273.15)))} +.ends + +* generic relay model +.subckt genrelay out1 out2 in1 in2 +.param ron = 10m +S1 out1 out2 in1 in2 SW +.MODEL SW VSWITCH(VON=4V VOFF=1V RON={ron} ROFF=100K) +.ends + +.MODEL IXTH16N10 VDMOS Nchan Vds=100 ++ VTO=-3.2 KP=9 ++ Lambda=2m ++ Mtriode=1.8 ++ Ksubthres=120m ++ subshift=160m ++ Rs=4m Rd=5m Rds=200e6 ++ Cgdmax=9000p Cgdmin=300p A=0.25 ++ Cgs=5500p Cjo=11000p ++ Is=10e-6 Rb=8m ++ BV=200 IBV=250e-6 ++ NBV=4 ++ TT=250e-9 ++ vq=100 ++ rq=0.1 ++ Rthjc=0.2 Cthj=0.1 diff --git a/examples/optran/contents.txt b/examples/optran/contents.txt new file mode 100644 index 000000000..c904da116 --- /dev/null +++ b/examples/optran/contents.txt @@ -0,0 +1,4 @@ +Pass Labs F5 turbo +thermal simulation +use optran for 4s and coarse steps to obtain stable temparature +then simulate transient with high resolution diff --git a/examples/optran/script-optran.txt b/examples/optran/script-optran.txt new file mode 100644 index 000000000..9796c2268 --- /dev/null +++ b/examples/optran/script-optran.txt @@ -0,0 +1,40 @@ +.temp {envtemp} +.param envtemp=40 +.option savecurrents +.control +set controlswait +if $?sharedmode +* script for shared ngspice +version +rusage +else +* script for standard ngspice +*option noinit +optran 1 0 0 4 1e-2 0 +tran 1u 10m +echo +* output power +let po = @rl1[i] * v(out) +meas tran power_rms rms po from=5m to=10m +echo +rusage +* temperature transistor Q6 +set xbrushwidth=4 +settype temperature q6tj q6tc q6hs +plot q6tj q6tc q6hs ylimit 0 150 +set xbrushwidth=1 +* input and output voltages +plot in out +* power supply currents +plot V1#branch V2#branch ylimit -50 50 +plot V1#branch V2#branch ylimit -10 10 +* output current +plot @rl1[i] +plot @rl1[i] xlimit 0 5m ylimit -0.3 0.3 +* resistance of thermistor2 TH1, TH2 +let rth1 = (v("net-_d3a1-pad1_") - v("net-_r11-pad1_")) / (@b.xth1.brtherm[i] + 1n) +let rth2 = (v("net-_d1a1-pad2_") - v("net-_r12-pad1_")) / (@b.xth2.brtherm[i] + 1n) +settype impedance rth1 rth2 +plot rth1 rth2 ylimit 0 5k +end +.endc \ No newline at end of file