home *** CD-ROM | disk | FTP | other *** search
- 1 REM changed dim statement in 20, Z0(50) added C(50)
- 10 REM ***LADDER ANALYSIS PROGRAM D. R. HERTLING R. K. FEENEY 9/5/86***
- 20 DIM B(50),L(50),F(50),Z0(50),LM(50),WM(50),W(50),C(50)
- 30 PI=4*ATN(1)
- 40 PI2=2*PI
- 50 MZ=1000000!
- 60 F2=0 'REM F2=0 DIMENSIONS IN INCHES ; F2=1 DIMENSIONS IN CM'S
- 70 F3=0 'REM F3=0 LENGTHS IN WAVELENGTHS ; F3=1 LENGTHS IN DEGREES
- 80 PRINT
- 90 F0=0
- 100 PRINT "******************************************************"
- 110 PRINT
- 120 PRINT "CONFIGURATION"
- 130 PRINT "1 - SERIES MSTRIP TRANSMISSION LINE"
- 140 PRINT "2 - SHUNT-CONNECTED OPEN-CIRCUITED TRANSMISSION LINE"
- 150 PRINT "3 - SHUNT-CONNECTED SHORT-CIRCUITED TRANSMISSION LINE"
- 160 PRINT "4 - SERIES-CONNECTED CAPACITOR"
- 170 PRINT "5 - SHUNT-CONNECTED CAPACITOR"
- 180 PRINT "6 - SERIES-CONNECTED INDUCTOR"
- 190 PRINT "7 - SHUNT-CONNECTED INDUCTOR"
- 200 PRINT "8 - SERIES-CONNECTED PARALLEL LC"
- 210 PRINT "9 - SHUNT-CONNECTED SERIES LC"
- 220 PRINT
- 230 PRINT "******************************************************"
- 240 PRINT
- 250 INPUT "ENTER CONFIGURATION # ",CF$
- 260 PRINT
- 270 PRINT "******************************************************"
- 280 PRINT
- 290 NB=LEN(CF$)
- 300 FOR I=1 TO NB
- 310 B(I)=VAL(MID$(CF$,I,1))
- 320 IF B(I)<4 THEN F0=1
- 330 NEXT I
- 340 IF F0<>1 THEN GOTO 510
- 350 PRINT "MSTRIP DIMENSIONS"
- 360 PRINT
- 370 INPUT "0 = NORMALIZED ; 1= ACTUAL ",F1
- 380 PRINT
- 390 IF F1=0 AND F3=0 THEN UN$= "NORMALIZED MSTRIP LENGTHS IN WAVELENGTHS"
- 400 IF F1=0 AND F3=1 THEN UN$= "NORMALIZED MSTRIP LENGTHS IN DEGREES"
- 410 IF F1=1 AND F2=0 THEN UN$= "ACTUAL MSTRIP DIMENSIONS IN INCHES"
- 420 IF F1=1 AND F2=1 THEN UN$= "ACTUAL MSTRIP DIMENSIONS IN CM'S"
- 430 PRINT "ENTER "+UN$
- 440 PRINT
- 450 IF F1=0 THEN INPUT "DESIGN FREQUENCY (MHz)=? ",FM:FD=FM*MZ:GOTO 500
- 460 PRINT "MATERIAL"
- 470 INPUT "DIELECTRIC THICKNESS=? ",DT
- 480 INPUT "METAL THICKNESS=? ",MT
- 490 INPUT "RELATIVE DIELECTRIC CONSTANT=? ",ER
- 500 PRINT "******************************************************"
- 510 PRINT
- 520 PRINT "TERMINATIONS (OHMS) "
- 530 INPUT "RL=? ",RL
- 540 INPUT "XL=? ",XL
- 550 PRINT
- 560 PRINT "******************************************************"
- 570 PRINT
- 580 REM ENTER NETWORK DATA
- 590 PRINT "NETWORK"
- 600 FOR J=1 TO NB
- 610 PRINT
- 620 PRINT "BRANCH # ";J
- 630 ON B(J) GOSUB 2090,2090,2090,2130,2130,2150,2150,2170,2170
- 640 NEXT J
- 650 PRINT "******************************************************"
- 660 PRINT
- 670 GOSUB 2200
- 680 PRINT
- 690 PRINT "******************************************************"
- 700 PRINT
- 710 REM ENTER FREQUENCY DATA
- 720 INPUT "NUMBER OF POINTS? ",NP
- 730 IF NP=1 THEN INPUT "FREQUENCY (MHz)=? ",FL:FL=FL*MZ:PRINT :GOTO 820
- 740 INPUT "LOWER FREQUENCY (MHz)=? ",FL:FL=FL*MZ
- 750 INPUT "UPPER FREQUENCY (MHz)=? ",FU:FU=FU*MZ
- 760 REM IMPEDANCE VERSUS FREQUENCY CALCULATIONS
- 770 DF=(FU-FL)/(NP-1)
- 780 REM CALCULATIONS
- 790 PRINT
- 800 PRINT "******************************************************"
- 810 PRINT
- 820 INPUT "OUTPUT PRINTED ? (Y/N) ";P$
- 830 PRINT
- 840 PRINT "******************************************************"
- 850 IF P$="Y" OR P$="y" THEN F4=1 ELSE F4=0
- 860 IF F4=1 THEN GOSUB 2210
- 870 PRINT:PRINT:PRINT
- 880 PRINT " GAMMA (REF-";
- 890 PRINT USING "####.## OHMS)";RR
- 900 PRINT " F(MHz) R(OHMS) X(OHMS) MAG";
- 910 PRINT" ANG GT(dB)"
- 920 IF F4=0 THEN GOTO 970
- 930 LPRINT " GAMMA (REF-";
- 940 LPRINT USING "####.## OHMS)";RR
- 950 LPRINT " F(MHz) R(OHMS) X(OHMS) MAG";
- 960 LPRINT" ANG GT(dB)"
- 970 FOR I=1 TO NP 'FREQUENCY LOOP
- 980 RT=RL:XT=XL
- 990 F(I)=FL+(I-1)*DF
- 1000 W(I)=PI2*F(I)
- 1010 FOR J=1 TO NB 'CIRCUIT BRANCH LOOP
- 1020 ON B(J) GOSUB 1480,1480,1480,1760,1760,1820,1820,1880,1930
- 1030 NEXT J
- 1040 REM RECTANGULAR TO POLAR CONVERSION
- 1050 A=RT-RR:B=XT:C=RT+RR:D=XT
- 1060 DM=C^2+D^2
- 1070 RG=(A*C+B*D)/DM
- 1080 IG=(B*C-A*D)/DM
- 1090 MG=SQR(RG^2+IG^2)
- 1100 IF RG=0 THEN GOTO 1120
- 1110 GOTO 1140
- 1120 IF IG=0 THEN AG=0:GOTO 1200
- 1130 TH=90:GOTO 1150
- 1140 TH=(180/PI)*ATN(ABS(IG/RG))
- 1150 IF RG>=0 THEN GOTO 1180
- 1160 IF IG>=0 THEN AG=180-TH:GOTO 1200
- 1170 AG=-180+TH:GOTO 1200
- 1180 IF IG>=0 THEN AG=TH:GOTO 1200
- 1190 AG=-TH
- 1200 GT=10*LOG(1-(MG)^2)/LOG(10)
- 1210 PRINT USING "##.###^^^^ ##.###^^^^ ##.###^^^^";F(I)/MZ;RT;XT;
- 1220 PRINT USING " ##.### ####.## ###.##";MG;AG;GT
- 1230 IF F4=0 THEN GOTO 1260
- 1240 LPRINT USING "##.###^^^^ ##.###^^^^ ##.###^^^^";F(I)/MZ;RT;XT;
- 1250 LPRINT USING " ##.### ####.## ###.##";MG;AG;GT
- 1260 NEXT I
- 1270 PRINT:PRINT:PRINT
- 1280 PRINT "*****************************************************"
- 1290 PRINT
- 1300 PRINT "1 - EDIT THE LADDER NETWORK"
- 1310 PRINT "2 - REPEAT CALCULATIONS OVER A NEW FREQUENCY RANGE"
- 1320 PRINT "3 - ENTER A NEW CONFIGURATION"
- 1330 PRINT "4 - QUIT"
- 1340 PRINT
- 1350 INPUT "ENTER 1 - 4 ";M2
- 1360 PRINT
- 1370 PRINT "******************************************************"
- 1380 IF M2=4 THEN STOP
- 1390 IF M2=3 THEN GOTO 80
- 1400 IF M2=2 THEN PRINT:GOTO 710
- 1410 PRINT
- 1420 INPUT "ENTER THE BRANCH # TO BE EDITED OR Q TO QUIT EDITING ";M3$
- 1430 IF M3$="Q" OR M3$="q" THEN GOTO 790 ELSE M3=VAL(M3$)
- 1440 J=M3
- 1450 PRINT
- 1460 ON B(M3) GOSUB 2090,2090,2090,2130,2130,2150,2150,2170,2170
- 1470 GOTO 1410
- 1480 REM R AND X MICROSTRIP SUBROUTINE
- 1490 IF F1=0 AND F3=0 THEN BL=TAN(PI2*LM(J)*F(I)/FD):R0=Z0(J):GOTO 1650
- 1500 IF F1=0 AND F3=1 THEN BL=TAN(LM(J)*PI/180*F(I)/FD):R0=Z0(J):GOTO 1650
- 1510 WE=WM(J)+(MT/PI)*(LOG(2*DT/MT)+1)
- 1520 S=WE/DT
- 1530 P=377/S/SQR(ER)
- 1540 Q=(1+1.735*ER^(-7.240001E-02)*S^(-.836))
- 1550 R0=P/Q
- 1560 S=WE/DT
- 1570 IF S>=.6 THEN GOTO 1590
- 1580 Y=(1+.6*(ER-1)*S^(.0297)) :GOTO 1600
- 1590 Y=(1+.63*(ER-1)*S^(.1255))
- 1600 VF=SQR(1/Y)
- 1610 IF F2=0 THEN IC=2.54 ELSE IC=1
- 1620 C0=3E+10/IC
- 1630 LD=VF*C0/F(I) 'LD=WAVELENGTH
- 1640 BL=TAN(PI2*LM(J)/LD) 'TAN BL
- 1650 IF B(J)<> 1 THEN GOTO 1710
- 1660 A=RT:B=XT+R0*BL:C=R0-XT*BL:D=RT*BL
- 1670 DN=C^2+D^2
- 1680 RT=R0*(A*C+B*D)/DN
- 1690 XT=R0*(B*C-A*D)/DN
- 1700 RETURN
- 1710 R=0
- 1720 IF B(J)=2 THEN X=-R0/BL :GOTO 1740
- 1730 X=R0*BL ' S.C. LINE
- 1740 GOSUB 2020
- 1750 RETURN
- 1760 REM R AND X FOR A CAPACITOR
- 1770 R=0
- 1780 X=-1/W(I)/C(J)
- 1790 IF B(J)=4 THEN GOSUB 1980:RETURN
- 1800 GOSUB 2020
- 1810 RETURN
- 1820 REM R AND X FOR INDUCTORS
- 1830 R=0
- 1840 X=W(I)*L(J)
- 1850 IF B(J)=6 THEN GOSUB 1980:RETURN
- 1860 GOSUB 2020
- 1870 RETURN
- 1880 REM R AND X FOR SERIES-PARALLEL LC
- 1890 R=0
- 1900 X=-(L(J)/C(J))/(W(I)*L(J)-1/W(I)/C(J))
- 1910 GOSUB 1980
- 1920 RETURN
- 1930 REM R AND X FOR PARALLEL-SERIES LC
- 1940 R=0
- 1950 X=(W(I)*L(J)-1/W(I)/C(J))
- 1960 GOSUB 2020
- 1970 RETURN
- 1980 REM SERIES COMBINATION OF IMPEDANCE
- 1990 RT=R+RT
- 2000 XT=X+XT
- 2010 RETURN
- 2020 REM PARALLEL COMBINATION OF IMPEDANCES
- 2030 DP=(R+RT)^2+(X+XT)^2
- 2040 RZ=((R*RT-X*XT)*(R+RT)+(X*RT+R*XT)*(X+XT))/DP
- 2050 XT=((R*RT-X*XT)*(-(X+XT))+(X*RT+R*XT)*(R+RT))/DP
- 2060 RT=RZ
- 2070 RETURN
- 2080 END
- 2090 REM MSTRIP NORMALIZED
- 2100 IF F1=0 THEN INPUT "Z0=? ",Z0(J):INPUT "LENGTH=? ",LM(J):RETURN
- 2110 REM MSTRIP ACTUAL
- 2120 INPUT "WIDTH=? ",WM(J):INPUT "LENGTH=? ",LM(J):RETURN
- 2130 REM CAPACITOR
- 2140 INPUT "C(pF)=? ",C(J):C(J)=C(J)*1E-12:RETURN
- 2150 REM INDUCTOR
- 2160 INPUT "L(nH)=? ",L(J):L(J)=L(J)*1E-09:RETURN
- 2170 REM RESONANT CIRCUIT
- 2180 INPUT "C(pF)=? ",C(J):C(J)=C(J)*1E-12
- 2190 INPUT "L(nH)=? ",L(J):L(J)=L(J)*1E-09:RETURN
- 2200 INPUT "ENTER REFERENCE FOR GAMMA (OHMS) ",RR:RETURN
- 2210 REM PRINT SUBROUTINE
- 2220 LPRINT:LPRINT:LPRINT
- 2230 LPRINT "CONFIGURATION #: ";CF$
- 2240 LPRINT
- 2250 IF F4=1 THEN LPRINT UN$:LPRINT
- 2260 IF F0=1 AND F1=1 THEN GOSUB 2500
- 2270 IF F0=1 AND F1=0 THEN GOSUB 2530
- 2280 FOR J=1 TO NB
- 2290 LPRINT "BRANCH # ";J
- 2300 ON B(J) GOSUB 2360,2360,2360,2430,2430,2450,2450,2470,2470
- 2310 LPRINT
- 2320 NEXT J
- 2330 LPRINT USING "TERMINATIONS (OHMS): RL=##.###^^^^ XL=##.###^^^^ ";RL;XL
- 2340 LPRINT
- 2350 RETURN
- 2360 REM MSTRIP NORMALIZED
- 2370 IF F1=1 THEN GOTO 2400
- 2380 LPRINT USING "Z0=#####.## OHMS";Z0(J)
- 2390 LPRINT USING "LENGTH=##.###^^^^";LM(J):RETURN
- 2400 REM MSTRIP ACTUAL
- 2410 LPRINT USING "WIDTH=##.###^^^^";WM(J)
- 2420 LPRINT USING "LENGTH=##.###^^^^";LM(J):RETURN
- 2430 REM CAPACITOR
- 2440 CP=C(J)*1E+12:LPRINT USING "C(pF)=#####.##";CP:RETURN
- 2450 REM INDUCTOR
- 2460 LN=L(J)*1E+09:LPRINT USING "L(nH)=#####.##";LN:RETURN
- 2470 REM RESONANT CIRCUIT
- 2480 CP=C(J)*1E+12:LPRINT USING "C(pF)=#####.##";CP
- 2490 LN=L(J)*1E+09:LPRINT USING "L(nH)=#####.##";LN:RETURN
- 2500 LPRINT USING "DIELECTRIC THICKNESS= ##.###^^^^";DT
- 2510 LPRINT USING "METAL THICKNESS= ##.###^^^^";MT
- 2520 LPRINT USING "RELATIVE DIELECTRIC CONSTANT= ###.###";ER:LPRINT:RETURN
- 2530 LPRINT USING "DESIGN FREQ: #####.### MHZ";FM:LPRINT:RETURN
- 2540 END