home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HAM Radio 1
/
HamRadio.cdr
/
tech
/
eepub12
/
mstrip.bas
< prev
next >
Wrap
BASIC Source File
|
1987-08-24
|
9KB
|
256 lines
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