Buck-boost type Adjustable 1.25V~40V 1.3A 3V~40V Model adapted for Ngspice by Holger Vogt; GND node must be connected to schematic ground; .Def:PWM_Controller_MC34063 _net0 _net1 _net2 _net3 _net4 _net5 _net6 _net7 Sub:X1 _net0 _net1 _net2 _net3 _net4 _net5 _net6 _net7 gnd Type="MC34063_cir" .Def:End * fast and accurate using ngspice * This model is part of a ICAP/4 demo circuit from the ONsemi webpage. * The ground pin must be always at net 0 in the schematic! .SUBCKT mc34063a_sub 1 2 3 4 5 6 7 8 *exempt 20030227 20395 -30736294 *BY KEHINDE OMOLAYO 2-20-03 *TERMINAL ID *SWITCH COLLECTOR=1 SWITCH EMITTER=2 TIMING CAPACITOR=3 GND=4 *COMPARATOR INVERTING INPUT=5 VCC=6 IPK SENSE=7 DRIVER COLLECTOR=8 .MODEL DMC34063 D (CJO=2P N=0.05) .MODEL QSWITCH NPN BF=75 CJC=2P IS=3E-9 RB=1 RC=0.45 RE=0 + VJC=.75 VJE=.75 VJS=.75 E1 10 0 5 4 1 R1 4 5 10MEG V1 20 0 PULSE 0 2 E2 11 0 3 4 1 B1 13 0 V=1M/(ABS((27.475-195M*V(12))+(36.002+244M*V(12))*V(9)-(302.302+651M*V(12))*V(9)^2)+1F) *B1 13 0 V=1M/(ABS((27.475-195M*V(12))+(36.002+244M*V(12))*V(9)-(302.302+651M*V(12))*V(9)**2)+1F) E3 12 0 6 4 1 E4 9 0 6 7 1 R2 6 7 10MEG B2 14 0 V=1M*((-10.765-151M*V(12))+(45.344+864M*V(12))*V(9)-+(35.99+1.378*V(12))*V(9)^2+(8.341+839M*V(12))*V(9)^3) *B2 14 0 V=1M*((-10.765-151M*V(12))+(45.344+864M*V(12))*V(9)-+(35.99+1.378*V(12))*V(9)**2+(8.341+839M*V(12))*V(9)**3) B4 15 0 V=V(9)>0.32 ? V(14) : V(13) *B4 15 0 V=IF( V(9)>0.32, V(14), V(13) ) C1 19 0 10P B5 16 0 V= V(20)<1 ? 2 : V(24)>1 ? 2 : V(19)>1 ? 0 : 2 *B5 16 0 V= IF( V(20)<1, 2, IF(V(24)>1, 2, IF( V(19)>1, 0, 2 ) ) ) R3 16 17 150 C2 17 0 10P B6 18 0 V=V(20)<1 ? 0 : V(24)>1 ? 0 : V(11)<(1.083-1.239*V(29)) ? 2 : V(17)>1 ? 0 : 2 *B6 18 0 V= IF( V(20)<1, 0, IF( V(24)>1, 0, IF( V(11)<(1.083-1.239*V(29)), 2, IF(V(17)>1, 0, 2 ) ) ) ) R4 18 19 150 D1 4 3 DMC34063 D2 3 6 DMC34063 C3 11 31 1N B7 4 36 I=V(17)>1 ? -(224.4U+2.359U*V(12))*0.77 : V(15)*0.77 *B7 4 36 I=IF( V(17)>1, -(224.4U+2.359U*V(12))*0.77, V(15)*0.77 ) C5 23 0 10P B9 21 0 V= V(20)<1 ? 2 : V(17)>1 ? 2 : V(26)>1 ? 0 : 2 *B9 21 0 V= IF( V(20)<1, 2, IF( V(17)>1, 2, IF( V(26)>1, 0, 2 ) ) ) R5 27 26 150 C6 26 0 10P B10 27 0 V=V(20)<1 ? 0 : V(17)>1 ? 0 : V(10)<1.25 ? 2 : V(23)>1 ? 0 : 2 *B10 27 0 V=IF( V(20)<1, 0, IF(V(17)>1, 0, IF(V(10)<1.25, 2, IF(V(23)>1, 0, 2 ) ) ) ) R6 21 23 150 B12 33 0 V=V(11)>(1.148+184.6M*V(29)) ? 2 : 0 *B12 33 0 V=IF( V(11)>(1.148+184.6M*V(29)), 2, 0 ) R13 33 24 10K C8 24 0 10P Q1 8 30 25 QSWITCH Q2 1 25 2 QSWITCH R15 25 2 100 D5 2 30 DMC34063 G1 2 30 26 23 5M R16 2 4 10MEG R23 31 28 1M *V6 28 0 V6 28 0 0 *V7 36 3 V7 36 3 0 B13 29 0 V=I(V6)/(I(V7)+866.8M*I(V6)) .ENDS .SUBCKT PWM_Controller_MC34063 gnd _net0 _net1 _net2 _net3 _net4 _net5 _net6 _net7 X1 _net0 _net1 _net2 _net3 _net4 _net5 _net6 _net7 mc34063a_sub .ENDS <.PortSym -70 -10 3 0 P3> <.PortSym -70 -70 6 0 P6> <.PortSym 70 -10 1 180 P1> <.PortSym 70 -40 8 180 P8> <.PortSym 70 -70 7 180 P7> <.ID -50 -126 X> <.PortSym -70 70 4 0 P4> <.PortSym 70 70 5 180 P5> <.PortSym 70 40 2 180 P2> TL494 PWM Controller Macro Model Author: Zabb Csaba .Def:PWM_Controller_TL494 _net0 _net4 _net1 _net5 _net2 _net6 _net3 _net7 _net8 _net9 _net10 _net11 _net13 _net12 _net15 _net14 Sub:X1 _net0 _net4 _net1 _net5 _net2 _net6 _net3 _net7 _net8 _net9 _net10 _net11 _net13 _net12 _net15 _net14 gnd Type="TL494_CIR" .Def:End * TL494 PWM Controller Macro Model * Author: Zabb Csaba * Date: 14/04/2023 .SUBCKT TL494_sub 1INP 1INN FEEDB DTC CT RT GND C1 E1 E2 C2 VCC OCTRL REF 2INN 2INP X1 C1 E1 IN1 VCC OUT494 X2 C2 E2 IN2 VCC OUT494 X3 20 21 22 GND REF NOR2 X4 23 21 24 GND REF NOR2 E1 IN1 E1 22 GND 1 E2 IN2 E2 24 GND 1 R1 E1 GND 1G R2 E2 GND 1G X5 25 OCTRL 20 GND REF AND2 X6 26 OCTRL 23 GND REF AND2 R3 GND OCTRL 6.5k X7 21 CK GND REF DELAY PARAMS:DELAY=70n X8 CK 26 26 25 GND REF DFFX X9 VCC REF GND REF5V X10 27 28 21 GND REF OR2 X11 29 28 GND REF DELAY PARAMS:DELAY=250n X12 30 27 GND REF DELAY PARAMS:DELAY=250n X13 31 CT 30 REF GND COMP1 V1 31 DTC 300m V2 32 CT 700m X14 FEEDB 32 29 REF GND COMP1 X15 CLK RT CT REF GND OSC494 X16 1INP 1INN VCC GND FEEDB REF OP494 X17 2INP 2INN VCC GND FEEDB REF OP494 X18 REF 31 IG PARAMS:I1=2u X19 VCC GND IG PARAMS:I1=6.7m .ENDS TL494 * .SUBCKT OP494 INP INN VDD GND OUT VCC Q1 GND INN 1 PNPIC Q2 4 1 2 PNPIC Q3 5 3 2 PNPIC Q4 GND INP 3 PNPIC X1 VDD 2 IG PARAMS:I1=6u X2 VDD 1 IG PARAMS:I1=3u X3 VDD 3 IG PARAMS:I1=3u Q5 5 4 GND NPNIC Q6 4 4 GND NPNIC Q7 GND 5 6 PNPIC X4 VDD 6 IG PARAMS:I1=3u Q8 VDD 6 7 NPNIC Q9 6 7 8 NPNIC Q10 8 7 GND NPNIC R1 7 GND 100k C1 8 5 25p X5 VCC 8 IG PARAMS:I1=50u Q12 VCC 8 OUT NPNIC X6 OUT GND IG PARAMS:I1=300u C2 5 GND 25p .MODEL NPNIC NPN(Is=10f Xti=3 Eg=1.11 Vaf=100 + Bf=450 Ise=0 Ne=1.5 Ikf=0 Nk=.5 Xtb=1.5 Var=100 + Br=1 Isc=0 Nc=2 Ikr=0 Rc=0 Cjc=0.5p Mjc=.3333 + Vjc=.75 Fc=.5 Cje=1p Mje=.3333 Vje=.75 Tr=10n + Tf=1n Itf=1 Xtf=0 Vtf=10) .MODEL PNPIC PNP(Is=10f Xti=3 Eg=1.11 Vaf=100 + Bf=160 Ise=0 Ne=1.5 Ikf=0 Nk=.5 Xtb=1.5 Var=100 + Br=1 Isc=0 Nc=2 Ikr=0 Rc=0 Cjc=0.5p Mjc=.3333 + Vjc=.75 Fc=.5 Cje=1p Mje=.3333 Vje=.75 Tr=10n + Tf=1n Itf=1 Xtf=0 Vtf=10) .ENDS OP494 * .SUBCKT IG 1 2 PARAMS: I1=100u G1 1 2 VALUE {LIMIT(V(1,2)*2*{I1},0,{I1})} .ENDS IG * .SUBCKT OSC494 CLK RT CT VREF GND S1 CLK GND CT GND SWOSC V1 3 GND 3.7 V2 3 RT 0 F1 VREF CT V2 1 G1 1 GND VALUE {IF(V(CLK,GND)<2.5&&V(VREF,GND)>2.5,I(V2)*100,0)} X1 GND CT DID L1 1 CT 15n R1 1 CT 100 R2 CLK VREF 10k C1 CLK GND 30p .MODEL SWOSC VSWITCH(RON=1 ROFF=10MEG VT=1.5 VH=1.5) .ENDS OSC494 * .SUBCKT COMP1 INP INM Y VCC GND E1 Y1 GND VALUE {IF(V(INP,GND)>V(INM,GND),V(VCC,GND),0)} R2 INP GND 1G R3 INM GND 1G R1 Y1 Y 1 C1 Y GND 1p .ENDS COMP1 * .SUBCKT OR2 A B Y GND VCC E1 Y1 GND VALUE {IF(V(A,GND)>{V(VCC,GND)/2}||V(B,GND)>{V(VCC,GND)/2},{V(VCC,GND)},0)} R1 Y1 Y 1 L1 Y1 Y 1n R2 A GND 1G R3 B GND 1G .ENDS OR2 *REF5V .SUBCKT REF5V IN OUT GND R1 1 2 10 C1 GND 3 1n E1 4 GND VALUE {V(5,GND)*(ABS(V(OUT,GND))+1e-6)/(ABS(V(16,GND))+1e-6)} C2 GND 5 1n R2 GND 5 1G V2 6 GND {REF} E3 7 GND VALUE {MIN(V(3,GND),MAX(V(IN,GND)-V(8,GND),0))} E4 8 GND TABLE {V(LOAD,GND)}((1m,1.5)(40m,1.7)(70m,1.9)(100m,2.1)) R3 7 12 10 R4 6 5 333.3 C3 GND 12 1n R5 GND 3 1G R6 4 3 10 R7 GND IN 1E6 F1 IN 2 V1 1 V1 14 15 0 C4 GND 2 1n R8 14 2 {ROUT} E5 1 GND VALUE {{MIN(V(13,GND),(V(15,GND)+(ILIM*ROUT)))}} E6 LOAD GND VALUE {I(V3)} R9 12 13 1k R10 GND 16 30k C5 13 IN 12.2p R11 16 OUT 270k C6 13 12 31.8p V3 15 OUT 0Vdc .PARAM ILIM=25m ROUT=50m REF=0.4996 .ENDS REF5V * .SUBCKT DFFX CLK D QB Q GND VCC X1 CLK CLKD GND VCC INVDEL PARAMS:DELAY=20n X2 CLK CLKD CLKI GND VCC AND2 GQ GND QINT VALUE {IF(V(CLKI,GND)>{V(VCC,GND)/2},IF(V(D,GND)>{V(VCC,GND)/2},{V(VCC,GND)},-5),0)} CQ QINT GND 1n RQ QINT GND 1G D1 QINT MY5 DLIM V1 MY5 GND 5 D2 MY0 QINT DLIM V2 MY0 GND 0 EQ Qqq GND QINT GND 1 X3 Qqq Qqd GND VCC DELAY PARAMS:DELAY=30n RQq Qqd Q 1 L1 Qqd Q 1n EQb Qbr GND VALUE {IF(V(Q,GND)>{V(VCC,GND)/2},0,{V(VCC,GND)})} RQb Qbr Qb 1 L2 Qbr Qb 1n R1 CLK GND 1G R2 D GND 1G *.IC V(GND)=0 .IC V(QINT)=0 .MODEL DLIM D(IS=1E-16) .ENDS DFFX * .SUBCKT INVDEL A Y GND VCC PARAMS:DELAY=10n E1 Y1 GND VALUE {IF(V(A,GND)>{V(VCC,GND)/2},{V(VCC,GND)},0)} R1 Y1 Y2 1 R3 A GND 1G C1 Y2 GND {DELAY*1.3} E2 Y3 GND VALUE {IF(V(Y2,GND)>{V(VCC,GND)/2},0,{V(VCC,GND)})} R2 Y3 Y 1 L1 Y3 Y 1n .ENDS INVDEL * .SUBCKT AND2 A B Y GND VCC E1 Y1 GND VALUE {IF(V(A,GND)>{V(VCC,GND)/2}&&V(B,GND)>{V(VCC,GND)/2},{V(VCC,GND)},0)} R1 A GND 1G R2 B GND 1G R3 Y1 Y 1 L1 Y1 Y 1n .ENDS AND2 * .SUBCKT DELAY A Y GND VCC PARAMS:DELAY=10n E1 Y1 GND VALUE {IF(V(A,GND)>{V(VCC,GND)/2},{V(VCC,GND)},0)} R1 Y1 Y2 1 C1 Y2 GND {DELAY*1.3} E2 Y3 GND VALUE {IF(V(Y2,GND)>{V(VCC,GND)/2},{V(VCC,GND)},0)} R2 A GND 1G R3 Y3 Y 1 L1 Y3 Y 1n .ENDS DELAY * .SUBCKT NOR2 A B Y GND VCC E1 Y1 GND VALUE {IF(V(A,GND)>{V(VCC,GND)/2}|V(B,GND)>{V(VCC,GND)/2},0,{V(VCC,GND)})} R1 Y1 Y 1 L1 Y1 Y 1n R2 A GND 1G R3 B GND 1G .ENDS NOR2 * .SUBCKT OUT494 C E IN VCC Q1 C 2 E QMO Q2 C 1 2 QMO Q3 1 3 E QMO R2 3 E 1k R3 3 2 228.7 X1 1 VCC DID R4 IN 1 5k .MODEL QMO NPN(Is=10f Xti=3 Eg=1.11 Vaf=100 + Bf=450 Ise=0 Ne=1.5 Ikf=0 Nk=.5 Xtb=1.5 Var=100 + Br=1 Isc=0 Nc=2 Ikr=0 Rc=5 Cjc=0.5p Mjc=.3333 + Vjc=.75 Fc=.5 Cje=1p Mje=.3333 Vje=.75 Tr=10n + Tf=0.3n Itf=1 Xtf=0 Vtf=10) .ENDS OUT494 * .SUBCKT DID A K Ba A K I=(URAMP(V(A,K))^1.5)*3.5E6 .ENDS DID * .SUBCKT PWM_Controller_TL494 gnd _net0 _net4 _net1 _net5 _net2 _net6 _net3 _net7 _net8 _net9 _net10 _net11 _net13 _net12 _net15 _net14 X1 _net0 _net4 _net1 _net5 _net2 _net6 _net3 _net7 _net8 _net9 _net10 _net11 _net13 _net12 _net15 _net14 TL494_sub .ENDS <.ID -40 -156 X> <.PortSym -70 40 1 0 P1> <.PortSym -70 10 2 0 P2> <.PortSym -70 140 3 0 P3> <.PortSym -70 -90 4 0 P4> <.PortSym -70 -30 5 0 P5> <.PortSym -70 -60 6 0 P6> <.PortSym 70 -90 12 180 P12> <.PortSym 70 -60 14 180 P14> <.PortSym 70 -30 13 180 P13> <.PortSym 70 10 8 180 P8> <.PortSym 70 40 9 180 P9> <.PortSym 70 80 11 180 P11> <.PortSym 70 110 10 180 P10> <.PortSym 70 140 7 180 P7> <.PortSym -70 80 15 0 P15> <.PortSym -70 110 16 0 P16> UC3843A Current-Mode PWM Controller Macro Model Author: Zabb Csaba .Def:PWM_Controller_UC3843A _net0 _net2 _net4 _net6 _net1 _net3 _net5 _net7 Sub:X1 _net0 _net1 _net2 _net3 _net4 _net5 _net6 _net7 gnd Type="UC3843A_CIR" .Def:End * UC3843A Current-Mode PWM Controller Macro Model * Author: Zabb Csaba * Date: 29/04/2023 .SUBCKT UC3843A_sub COMP FB CS RTCT GND OUT VCC VREF X1 VCC GND VREF SVCC UVLO X2 CLK RTCT VREF GND OSC3845 X3 VREF FB COMP GND SVCC AMP3845 X4 5 VCC GND OUT OUT3845 E1 1 GND VALUE {IF(V(CS,GND)>V(8,GND),5,0)} E2 13 GND VALUE {V(VREF,GND)/4} R1 CS 13 1MEG X5 1 2 GND DELAY5 PARAMS:DELAY=150n R2 3 4 30k R3 4 GND 15k E3 8 GND VALUE {IF(V(4,GND)>1,1,V(4,GND))} V1 COMP 9 1 D1 9 3 DX X6 CLK1 VREF 2 GND 6 7 GND DFFSR5 X7 CLK CLK1 GND DELAY5 PARAMS:DELAY=70n E5 5 GND VALUE {IF(V(VREF,GND)>2.5&&V(7,GND)>2.5&&V(CLK,GND)>2.5,5,0)} .MODEL DX D(IS=1E-16 BV=100) .ENDS UC3843A * .SUBCKT DFFSR5 CLK D R S QB Q GND X1 CLK CLKD GND INV_DELAY5 PARAMS:DELAY=20n X2 CLK CLKD CLKI GND AND25 GQ GND QINT VALUE {IF(V(S,GND)>2.5,5,IF(V(R,GND)>2.5,-5,IF(V(CLKI,GND)>2.5,IF(V(D,GND)>2.5,5,-5),0)))} CQ QINT GND 1n RQ QINT GND 1G D1 QINT MY5 DLIM V1 MY5 GND 5 D2 MY0 QINT DLIM V2 MY0 GND 0 EQ Qqq GND QINT GND 1 X3 Qqq Qqd GND DELAY5 PARAMS:DELAY=30n RQq Qqd Q 1 L1 Qqd Q 1n EQb Qbr GND VALUE {IF(V(Q,GND)>2.5,0,5)} RQb Qbr Qb 1 L2 Qbr Qb 1n R1 CLK GND 1G R2 D GND 1G R3 R GND 1G R4 S GND 1G .IC V(QINT)=0 *.IC V(GND)=0 .MODEL DLIM D(IS=1E-16) .ENDS DFFSR5 * .SUBCKT INV_DELAY5 A Y GND PARAMS: DELAY=10n E1 Y1 GND VALUE {IF(V(A,GND)>2.5,5,0)} R1 Y1 Y2 1 R3 A GND 1G C1 Y2 GND {DELAY*1.3} E2 Y3 GND VALUE {IF(V(Y2,GND)>2.5,0,5)} R2 Y3 Y 1 L1 Y3 Y 1n .ENDS INV_DELAY5 * .SUBCKT AND25 A B Y GND E1 Y1 GND VALUE {IF(V(A,GND)>2.5&&V(B,GND)>2.5,5,0)} R1 A GND 1G R2 B GND 1G R3 Y1 Y 1 L1 Y1 Y 1n .ENDS AND25 * .SUBCKT DELAY5 A Y GND PARAMS: DELAY = 10n E1 Y1 GND VALUE {IF(V(A,GND)>2.5,5,0)} R1 Y1 Y2 1 C1 Y2 GND {DELAY*1.3} E2 Y3 GND VALUE {IF(V(Y2,GND)>2.5,5,0)} R2 A GND 1G R3 Y3 Y 1 L1 Y3 Y 1n .ENDS DELAY5 * .SUBCKT OUT3845 IN VCC GND OUT X1 VCC 8 IG PARAMS:I1=100u D1 8 VCC DMOD D2 OUT 8 DMOD Q1 8 1 9 QIN Q2 OUT 9 GND QMOD Q3 VCC 8 6 QMOD I1 GND 1 0.9m R1 IN 2 10k Q4 1 2 GND QIN Q5 VCC 6 OUT QMOD2 C1 OUT GND 150p .MODEL QMOD NPN(RC=1.5 RE=.5 RB=100 IKF=0.5 CJC=0.4p) .MODEL QMOD2 NPN(TF=400p TR=400p) .MODEL QIN NPN(BF=100 BR=2 IS=1E-16 VAF=50 CJE=1.5p CJC=.15p TR=1n TF=4n) .MODEL DMOD D(RS=1 IS=0.4u) .ENDS OUT3845 * .SUBCKT AMP3845 VREF VFB COMP GND VCC R1 1 VREF 100k R2 1 GND 100k R3 6 GND 300MEG C1 6 GND 12p E1 5 GND 6 GND 1 E2 7 GND 1 GND 1 R4 VFB 7 10MEG X1 VCC COMP IG PARAMS:I1=800u R6 GND 3 300 Q1 GND 4 COMP PNP X2 4 GND IG PARAMS:I1=68u D1 3 4 DX D2 GND 6 DZ L1 2 3 10u C2 3 GND 200p R9 5 2 5 C5 2 GND 20n G1 GND 6 1 VFB 100u .MODEL PNP PNP(IS=1E-14 BF=126) .MODEL DZ D(RS=10 BV=7.5 IBV=.01) .MODEL DX D .ENDS AMP3845 * .SUBCKT OSC3845 CLK RTCT VREF GND S1 CLK GND RTCT GND SWOSC G1 1 GND VALUE {IF(V(CLK,GND)<2.5 && V(VREF,GND)>2.5,8.3m,0)} L1 1 RTCT 1n R1 1 RTCT 1k R2 CLK VREF 100k .MODEL SWOSC VSWITCH(RON=1 ROFF=10MEG VT=1.85 VH=0.85) .ENDS OSC3845 * .SUBCKT UVLO VCC GND VREF SVCC S1 VCC SVCC VCC GND SWUVLO R1 SVCC GND 1MEG X1 VCC GND IG PARAMS:I1=200u R2 VREF GND 534 X2 SVCC VREF GND REF5 D1 VREF VCC DSUB .MODEL DSUB D(IS=1E-16 RS=10m) .MODEL SWUVLO VSWITCH (RON=10m ROFF=5MEG VT=8.0 VH=0.4) .ENDS UVLO *REF5 .SUBCKT REF5 IN OUT GND R1 1 2 10 C1 0 3 1n E1 4 GND VALUE {V(5,GND)*(ABS(V(OUT,GND))+1e-6)/(ABS(V(16,GND))+1e-6)} C2 0 5 1n R2 GND 5 1G V2 6 GND {REF} E3 7 0 VALUE {MIN(V(3),MAX(V(IN)-V(8),0))} E4 8 0 TABLE {V(LOAD,0)}((1m,1.5)(40m,1.7)(70m,1.9)(100m,2.1)) R3 7 12 10 R4 6 5 333.3 C3 0 12 1n R5 GND 3 1G R6 4 3 10 R7 GND IN 1E6 F1 IN 2 V1 1 V1 14 15 0 C4 0 2 1n R8 14 2 {ROUT} E5 1 0 VALUE {{MIN(V(13),(V(15)+(ILIM*ROUT)))}} E6 LOAD 0 VALUE {I(V3)} R9 12 13 1k R10 GND 16 30k C5 13 IN 12.2p R11 16 OUT 270k C6 13 12 31.8p V3 15 OUT 0 .PARAM ILIM=150m ROUT=50m REF=0.4996 .ENDS REF5 * .SUBCKT IG 1 2 PARAMS: I1=100u G1 1 2 Value {LIMIT(V(1,2)*2*{I1},0,{I1})} .ENDS IG * .SUBCKT PWM_Controller_UC3843A gnd _net0 _net2 _net4 _net6 _net1 _net3 _net5 _net7 X1 _net0 _net1 _net2 _net3 _net4 _net5 _net6 _net7 UC3843A_sub .ENDS <.PortSym 100 -20 2 180 P2> <.PortSym 100 -50 7 180 P7> <.PortSym -100 30 6 0 P6> <.PortSym -100 -20 8 0 P8> <.PortSym 0 -100 4 0 P4> <.PortSym 0 110 3 0 P3> <.PortSym 100 20 5 180 P5> <.PortSym 100 50 1 180 P1> <.ID 20 -116 X> UC3845A Current-Mode PWM Controller Macro Model Author: Zabb Csaba .Def:PWM_Controller_UC3845A _net0 _net1 _net2 _net3 _net4 _net5 _net6 _net7 Sub:X1 _net0 _net4 _net1 _net5 _net2 _net6 _net3 _net7 gnd Type="UC3845A_CIR" .Def:End * UC3845A Current-Mode PWM Controller Macro Model * Author: Zabb Csaba * Date: 29/04/2023 .SUBCKT UC3845A_sub COMP FB CS RTCT GND OUT VCC VREF X1 VCC GND VREF SVCC UVLO X2 CLK RTCT VREF GND OSC3845 X3 VREF FB COMP GND SVCC AMP3845 X4 5 VCC GND OUT OUT3845 E1 1 GND VALUE {IF(V(CS,GND)>V(8,GND),5,0)} E2 13 GND VALUE {V(VREF,GND)/4} R1 CS 13 1MEG X5 1 2 GND DELAY5 PARAMS:DELAY=150n R2 3 4 30k R3 4 GND 15k E3 8 GND VALUE {IF(V(4,GND)>1,1,V(4,GND))} V1 COMP 9 1 D1 9 3 DX X6 CLK1 VREF 2 GND 6 7 GND DFFSR5 X7 CLK1 10 GND GND 11 12 GND DFFSR5 X8 CLK CLK1 GND DELAY5 PARAMS:DELAY=70n E4 10 GND VALUE {IF(V(VREF,GND)>2.5&V(11,GND)>2.5,5,0)} E5 5 GND VALUE {IF(V(VREF,GND)>2.5&V(7,GND)>2.5&V(11,GND)>2.5,5,0)} .MODEL DX D(Is=1e-16 BV=100) .ENDS UC3845A * .SUBCKT DFFSR5 CLK D R S QB Q GND X1 CLK CLKD GND INV_DELAY5 PARAMS:DELAY=20n X2 CLK CLKD CLKI GND AND25 GQ GND QINT VALUE {IF(V(S,GND)>2.5,5,IF(V(R,GND)>2.5,-5,IF(V(CLKI,GND)>2.5,IF(V(D,GND)>2.5,5,-5),0)))} CQ QINT GND 1n RQ QINT GND 1G D1 QINT MY5 DLIM V1 MY5 GND 5 D2 MY0 QINT DLIM V2 MY0 GND 0 EQ Qqq GND QINT GND 1 X3 Qqq Qqd GND DELAY5 PARAMS:DELAY=30n RQq Qqd Q 1 L1 Qqd Q 1n EQb Qbr GND VALUE {IF(V(Q,GND)>2.5,0,5)} RQb Qbr Qb 1 L2 Qbr Qb 1n R1 CLK GND 1G R2 D GND 1G R3 R GND 1G R4 S GND 1G *.IC V(QINT,GND) 0 .IC V(QINT)=0 .MODEL DLIM D(IS=1E-16) .ENDS DFFSR5 * .SUBCKT INV_DELAY5 A Y GND PARAMS: DELAY=10n E1 Y1 GND VALUE {IF(V(A,GND)>2.5,5,0)} R1 Y1 Y2 1 R3 A GND 1G C1 Y2 GND {DELAY*1.3} E2 Y3 GND VALUE {IF(V(Y2,GND)>2.5,0,5)} R2 Y3 Y 1 L1 Y3 Y 1n .ENDS INV_DELAY5 * .SUBCKT AND25 A B Y GND E1 Y1 GND VALUE {IF(V(A,GND)>2.5&V(B,GND)>2.5,5,0)} R1 A GND 1G R2 B GND 1G R3 Y1 Y 1 L1 Y1 Y 1n .ENDS AND25 * .SUBCKT DELAY5 A Y GND PARAMS: DELAY = 10n E1 Y1 GND VALUE {IF(V(A,GND)>2.5,5,0)} R1 Y1 Y2 1 C1 Y2 GND {DELAY*1.3} E2 Y3 GND VALUE {IF(V(Y2,GND)>2.5,5,0)} R2 A GND 1G R3 Y3 Y 1 L1 Y3 Y 1n .ENDS DELAY5 * .SUBCKT OUT3845 IN VCC GND OUT X1 VCC 8 IG PARAMS:I1=100u D1 8 VCC DMOD D2 OUT 8 DMOD Q1 8 1 9 QIN Q2 OUT 9 GND QMOD Q3 VCC 8 6 QMOD I1 GND 1 0.9m R1 IN 2 10k Q4 1 2 GND QIN Q5 VCC 6 OUT QMOD2 C1 OUT GND 150p .MODEL QMOD NPN(RC=1.5 RE=.5 RB=100 IKF=0.5 CJC=0.4p) .MODEL QMOD2 NPN(TF=400p TR=400p) .MODEL QIN NPN(BF=100 BR=2 IS=1E-16 VAF=50 CJE=1.5p CJC=.15p TR=1n TF=4n) .MODEL DMOD D(RS=1 IS=0.4u) .ENDS OUT3845 * .SUBCKT AMP3845 VREF VFB COMP GND VCC R1 1 VREF 100k R2 1 GND 100k R3 6 GND 300MEG C1 6 GND 12p E1 5 GND 6 GND 1 E2 7 GND 1 GND 1 R4 VFB 7 10MEG X1 VCC COMP IG PARAMS:I1=800u R6 GND 3 300 Q1 GND 4 COMP PNP X2 4 GND IG PARAMS:I1=68u D1 3 4 DX D2 GND 6 DZ L1 2 3 10u C2 3 GND 200p R9 5 2 5 C5 2 GND 20n G1 GND 6 1 VFB 100u .MODEL PNP PNP(IS=1E-14 BF=126) .MODEL DZ D(RS=10 BV=7.5 IBV=.01) .MODEL DX D .ENDS AMP3845 * .SUBCKT OSC3845 CLK RTCT VREF GND S1 CLK GND RTCT GND SWOSC G1 1 GND VALUE {IF(V(CLK,GND)<2.5 & V(VREF,GND)>2.5,8.3m,0)} L1 1 RTCT 1n R1 1 RTCT 1k R2 CLK VREF 100k .MODEL SWOSC VSWITCH(RON=1 ROFF=10MEG VT=1.85 VH=0.85) .ENDS OSC3845 * .SUBCKT UVLO VCC GND VREF SVCC S1 VCC SVCC VCC GND SWUVLO R1 SVCC GND 1MEG X1 VCC GND IG PARAMS:I1=200u R2 VREF GND 534 X2 SVCC VREF GND REF5 D1 VREF VCC DSUB .MODEL DSUB D(IS=1E-16 RS=10m) .MODEL SWUVLO VSWITCH (RON=10m ROFF=5MEG VT=8.0 VH=0.4) .ENDS UVLO *REF5 .SUBCKT REF5 IN OUT GND R1 1 2 10 C1 0 3 1n E1 4 GND VALUE {V(5,GND)*(ABS(V(OUT,GND))+1e-6)/(ABS(V(16,GND))+1e-6)} C2 0 5 1n R2 GND 5 1G V2 6 GND {REF} E3 7 0 VALUE {MIN(V(3),MAX(V(IN)-V(8),0))} E4 8 0 TABLE {V(LOAD,0)}((1m,1.5)(40m,1.7)(70m,1.9)(100m,2.1)) R3 7 12 10 R4 6 5 333.3 C3 0 12 1n R5 GND 3 1G R6 4 3 10 R7 GND IN 1E6 F1 IN 2 V1 1 V1 14 15 0 C4 0 2 1n R8 14 2 {ROUT} E5 1 0 VALUE {{MIN(V(13),(V(15)+(ILIM*ROUT)))}} E6 LOAD 0 VALUE {I(V3)} R9 12 13 1k R10 GND 16 30k C5 13 IN 12.2p R11 16 OUT 270k C6 13 12 31.8p V3 15 OUT 0Vdc .PARAM ILIM=150m ROUT=50m REF=0.4996 .ENDS REF5 * .SUBCKT IG 1 2 PARAMS: I1=100u G1 1 2 Value {LIMIT(V(1,2)*2*{I1},0,{I1})} .ENDS IG * .SUBCKT PWM_Controller_UC3845A gnd _net0 _net1 _net2 _net3 _net4 _net5 _net6 _net7 X1 _net0 _net4 _net1 _net5 _net2 _net6 _net3 _net7 UC3845A_sub .ENDS <.PortSym 100 -20 2 180 P2> <.PortSym 100 -50 7 180 P7> <.PortSym -100 30 6 0 P6> <.PortSym -100 -20 8 0 P8> <.PortSym 0 -100 4 0 P4> <.PortSym 0 110 3 0 P3> <.PortSym 100 20 5 180 P5> <.PortSym 100 50 1 180 P1> <.ID 20 -116 X>