Version 4 SHEET 1 2092 1376 WIRE -48 0 -48 -32 WIRE -48 112 -48 80 WIRE -48 240 -48 208 WIRE -48 352 -48 320 WIRE -48 480 -48 448 WIRE -48 592 -48 560 WIRE -48 720 -48 688 WIRE -48 832 -48 800 WIRE 80 -32 -48 -32 WIRE 96 208 -48 208 WIRE 96 448 -48 448 WIRE 96 688 -48 688 WIRE 208 -32 80 -32 WIRE 208 0 208 -32 WIRE 208 112 208 80 WIRE 208 208 96 208 WIRE 208 240 208 208 WIRE 208 352 208 320 WIRE 208 448 96 448 WIRE 208 480 208 448 WIRE 208 592 208 560 WIRE 208 688 96 688 WIRE 208 720 208 688 WIRE 208 832 208 800 WIRE 416 0 416 -32 WIRE 416 112 416 80 WIRE 544 -32 416 -32 WIRE 672 -32 544 -32 WIRE 672 0 672 -32 WIRE 672 112 672 80 FLAG 208 352 0 FLAG 96 208 L_TANH FLAG 208 592 0 FLAG 96 448 L_ATAN FLAG -48 112 0 FLAG 208 112 0 FLAG 80 -32 L_LIN FLAG 208 832 0 FLAG -48 352 0 FLAG -48 592 0 FLAG 96 688 L_TANH2 FLAG -48 832 0 FLAG 416 112 0 FLAG 672 112 0 FLAG 544 -32 L_LIN1 SYMBOL ind 192 224 R0 WINDOW 39 36 108 Left 0 SYMATTR SpiceLine Rser=1m SYMATTR InstName L2 SYMATTR Value flux=(100u-3u)*8*tanh(x/8) + 3u*x SYMBOL ind 192 464 R0 WINDOW 39 36 108 Left 0 SYMATTR SpiceLine Rser=1m SYMATTR InstName L3 SYMATTR Value flux=(100u-3u)*7*atan(x/7)+3u*x SYMBOL ind 192 -16 R0 WINDOW 39 36 108 Left 0 SYMATTR SpiceLine Rser=1m SYMATTR InstName L1 SYMATTR Value flux=100u*x SYMBOL current -48 80 M180 WINDOW 123 26 -43 Left 0 WINDOW 39 0 0 Left 0 WINDOW 0 40 69 Left 0 WINDOW 3 24 -8 Left 0 SYMATTR Value2 AC 0.159155 SYMATTR InstName I1 SYMATTR Value {Idc} SYMBOL ind 192 704 R0 WINDOW 39 36 108 Left 0 SYMATTR SpiceLine Rser=1m SYMATTR InstName L4 SYMATTR Value flux=(70u)*6.5*tanh(x/6.5) + 3u*x +27u*20*tanh(x/20) SYMBOL current -48 320 M180 WINDOW 123 26 -43 Left 0 WINDOW 39 0 0 Left 0 WINDOW 0 40 69 Left 0 WINDOW 3 24 -8 Left 0 SYMATTR Value2 AC 0.159155 SYMATTR InstName I2 SYMATTR Value {Idc} SYMBOL current -48 560 M180 WINDOW 123 26 -43 Left 0 WINDOW 39 0 0 Left 0 WINDOW 0 40 69 Left 0 WINDOW 3 24 -8 Left 0 SYMATTR Value2 AC 0.159155 SYMATTR InstName I3 SYMATTR Value {Idc} SYMBOL current -48 800 M180 WINDOW 123 26 -43 Left 0 WINDOW 39 0 0 Left 0 WINDOW 0 40 69 Left 0 WINDOW 3 24 -8 Left 0 SYMATTR Value2 AC 0.159155 SYMATTR InstName I4 SYMATTR Value {Idc} SYMBOL ind 656 -16 R0 WINDOW 39 36 108 Left 0 SYMATTR SpiceLine Rser=1m SYMATTR InstName L5 SYMATTR Value 100µ SYMBOL current 416 80 M180 WINDOW 123 26 -43 Left 0 WINDOW 39 0 0 Left 0 WINDOW 0 40 69 Left 0 WINDOW 3 24 -8 Left 0 SYMATTR Value2 AC 0.159155 SYMATTR InstName I5 SYMATTR Value {Idc} TEXT -64 -144 Left 0 !.ac list 1e6 TEXT -64 -112 Left 0 !.step param Idc 0 10 .01 TEXT -64 -584 Left 0 ;Nonlinear(saturating) Inductors\n \nV = Iac*2*pi*f*L\n \nExample f=1e6 = 1 MHz , Iac=1/(2+pi), Rser has been neglected\nV = 1e6*L \nV = L [uH] means 1V/uH\n \nL0 = Lcore+Lair inductance at 0A DC\n \nflux=Lcore*a*tanh(x/a) + Lair*x\n \nDon't forget to set a reasonable value for Rser in the final schematic.\nThere is also some value of Cpar especially in mult-layered coils. TEXT 176 -64 Left 0 ;V=1V/uH TEXT -72 1080 Left 0 !.measure AC Vtanh0 FIND mag(V(L_tanh)) at 0\n.measure AC Vtanh1 FIND mag(V(L_tanh)) at 1\n.measure AC Vtanh2 FIND mag(V(L_tanh)) at 2\n.measure AC Vtanh3 FIND mag(V(L_tanh)) at 3\n.measure AC Vtanh4 FIND mag(V(L_tanh)) at 4\n.measure AC Vtanh5 FIND mag(V(L_tanh)) at 5\n.measure AC Vtanh6 FIND mag(V(L_tanh)) at 5\n.measure AC Vtanh7 FIND mag(V(L_tanh)) at 7\n.measure AC Vtanh8 FIND mag(V(L_tanh)) at 8\n.measure AC Vtanh9 FIND mag(V(L_tanh)) at 9\n.measure AC Vtanh10 FIND mag(V(L_tanh)) at 10 TEXT -72 952 Left 0 ;* Sum the squared differences of all measured points for the cost-function.\n* The Perl-optimizer would use the result of this cost-function to fit the flux-function.\n \n.measure cost PARAM (100-Vtanh0)*(100-Vtanh0) + ....