home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1989-01-22 | 7.7 KB | 188 lines |
- 10 CLS: PRINT "L-MATCH PROGRAM V1.6M 12/23/1986
- 20 PRINT " *********************************************
- 30 PRINT " * *
- 40 PRINT " * BY DR. ALLEN KATZ, CHAIRMAN *
- 50 PRINT " * DEPT ELECTRONICS ENGINEERING TECHNOLOGY *
- 60 PRINT " * TRENTON STATE COLLEGE, CN550 *
- 70 PRINT " * TRENTON, NEW JERSEY 8625 *
- 80 PRINT " * *
- 90 PRINT " * THE AUTHOR RESERVES THE RIGHTS TO THIS *
- 100 PRINT " * PROGRAM; HOWEVER, COPYING AND USE FOR *
- 110 PRINT " * EDUCATIONAL PURPOSES IS ENCOURAGED. *
- 120 PRINT " * *
- 130 PRINT " * PLEASE REPORT ANY ERRORS OR PROBLEMS *
- 140 PRINT " * WITH THIS PROGRAM TO THE AUTHOR. *
- 150 PRINT " * TEL (609) 771 2487 *
- 160 PRINT " * *
- 170 PRINT " *********************************************
- 175 PRINT: INPUT "WANT AN EXPLANATION (Y/N)"; Q$
- 176 IF Q$="Y" THEN 180 ELSE 250
- 180 PRINT: PRINT "This program calculates the L section element values requied to
- 190 PRINT "transform any complex source impedance to any desired complex output
- 195 PRINT "impedance. A matching network's output impedance should equal the conjugate
- 200 PRINT "of its load impedance for maximum power transfer. When a value of unloaded Q
- 210 PRINT "is entered, the loaded Q and insertion loss is also calculated.
- 220 PRINT "Possible networks are described as CS-LP for series capacitor -
- 230 PRINT "parallel inductor (starting from source to load), LP-LS for
- 240 PRINT "parallel inductor - series inductor, etc. Type END to exit.
- 250 PI=4*ATN(1): DG=180/PI: Z0=50
- 260 REM COMPLEX ARITHMATIC SUBROUTEENS
- 270 DEF FNMR(AR,AX,BR,BX)=AR*BR-AX*BX
- 280 DEF FNMX(AR,AX,BR,BX)=AR*BX+AX*BR
- 290 DEF FNDR(AR,AX,BR,BX)=(AR*BR+AX*BX)/(BR^2+BX^2)
- 300 DEF FNDX(AR,AX,BR,BX)=(AX*BR-AR*BX)/(BR^2+BX^2)
- 310 DEF FNMG(AR,AX)=SQR(AR^2+AX^2)
- 320 DEF FNAG(AR,AX)=DG*(ATN(AX/AR)-(SGN(AR)-1)*PI/2)
- 330 DEF FNR(MG,AG)=MG*COS(AG/DG)
- 340 DEF FNX(MG,AG)=MG*SIN(AG/DG)
- 350 REM PARALLEL SERIES CONVERSION FUNCTIONS
- 360 DEF FNRS(RP,XP)=RP/(1+(RP/XP)^2)
- 370 DEF FNXS(RP,XP)=FNRS(RP,XP)*(RP/XP)
- 380 DEF FNRP(RS,XS)=RS*(1+(XS/RS)^2)
- 390 DEF FNXP(RS,XS)=FNRP(RS,XS)/(XS/RS)
- 400 PRINT: PRINT "L NETWORK MATCHING:"
- 410 PRINT: INPUT "INPUT RESISTANCE ="; RI
- 420 IF RI=0 THEN RI=0
- 430 INPUT "INPUT REACTANCE ="; XI
- 440 IF XI=0 THEN XI=0
- 450 INPUT "DESIRED OUTPUT RESISTANCE ="; RO
- 460 IF RO=0 THEN RO=0
- 470 INPUT "DESIRED OUTPUT REACTANCE ="; XO
- 480 IF XO=0 THEN XO=0
- 490 INPUT "FREQENCY (MHZ) ="; F: F=F*1E+06: W=2*PI*F
- 500 INPUT "UNLOADED ELEMENT Q ="; Q: PRINT
- 510 R1=FNRP(RI,XI): X1=FNXP(RI,XI): R2=FNRP(RO,XO): X2=FNXP(RO,XO)
- 520 PRINT: PRINT "L NETWORKS: CS-LP,LS-CP,CS-CP,LS-LP,CP-LS,CP-CS,LP-CS,LP-LS"
- 530 PRINT: INPUT "DESIRED NETWORK"; Q$
- 540 IF Q$="CS-LP" THEN 640
- 550 IF Q$="LS-CP" THEN 790
- 560 IF Q$="CS-CP" THEN 950
- 570 IF Q$="LS-LP" THEN 1100
- 580 IF Q$="CP-LS" THEN 1250
- 590 IF Q$="CP-CS" THEN 1400
- 600 IF Q$="LP-CS" THEN 1550
- 610 IF Q$="LP-LS" THEN 1840
- 620 IF Q$= "END"THEN END ELSE IF Q$="NEW" THEN 410 ELSE IF Q$="NF" THEN 490 ELSE PRINT "NOT POSSIBLE": GOTO 520
- 630 REM CS-LP
- 640 IF (R2/RI)<1 THEN 1840
- 650 XT=RI*SQR((R2/RI)-1): XC=XT-XI: IF XC>0 THEN XT=-XT
- 660 XC=XT-XI: IF XC>0 THEN 1840
- 670 XP=FNXP(RI,XT): XL=1/((1/X2)-(1/XP)): IF XL<0 THEN 1840
- 680 CS=1/ABS(W*XC): LP=XL/W
- 690 PRINT: PRINT "SERIES XC ="; XC, "CAP. ="; CS
- 700 PRINT "PARALLEL XL ="; XL, "IND. ="; LP
- 710 QL=ABS(XT/RI): IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
- 720 PRINT"LOADED Q =";QL,"INSURTION LOSS IN DB =";IL
- 730 PRINT: INPUT "WANT HARD COPY (Y/N)"; H$
- 740 IF H$<>"Y" THEN 520 ELSE LPRINT:LPRINT,"L-MATCH NETWORK "Q$
- 750 LPRINT: LPRINT "SERIES XC ="; XC, "CAP. ="; CS
- 760 LPRINT "PARALLEL XL ="; XL, "IND. ="; LP
- 770 LPRINT"LOADED Q =";QL,"INSURTION LOSS IN DB =";IL:PRINT:GOTO450
- 780 REM LS-CP
- 790 IF (R2/RI)<1 THEN 1840
- 800 XT=RI*SQR((R2/RI)-1): XL=XT-XI: IF XL<0 THEN XT=-XT
- 810 XL=XT-XI: IF XL<0 THEN 1840
- 820 XP=FNXP(RI,XT): XC=1/((1/X2)-(1/XP)): IF XC>0 THEN 1840
- 830 CP=1/ABS(W*XC): LS=XL/W
- 840 PRINT: PRINT "SERIES XL ="; XL, "IND. ="; LS
- 850 PRINT "PARALLEL XC ="; XC, "CAP. ="; CP
- 860 QL=ABS(XT/RI): IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
- 870 PRINT"LOADED Q =";QL,"INSURTION LOSS IN DB =";IL
- 880 PRINT: INPUT "WANT HARD COPY (Y/N)"; H$
- 890 IF H$<>"Y" THEN 520 ELSE LPRINT:LPRINT,"L-MATCH NETWORK "Q$
- 900 LPRINT: LPRINT "SERIES XL ="; XL, "IND. ="; LS
- 910 LPRINT "PARALLEL XC ="; XC, "CAP. ="; CP
- 920 LPRINT"LOADED Q =";QL,"INSURTION LOSS IN DB =";IL:PRINT:GOTO450
- 930 PRINT: GOTO 520
- 940 REM CS-CP
- 950 IF (R2/RI)<1 THEN 1840
- 960 XT=RI*SQR((R2/RI)-1): XC=XT-XI: IF XC>0 THEN XT=-XT
- 970 XC=XT-XI: IF XC>0 THEN 1840
- 980 XP=FNXP(RI,XT): XA=1/((1/X2)-(1/XP)): IF XA>0 THEN 1840
- 990 CS=1/ABS(W*XC): AP=1/ABS(W*XA)
- 1000 PRINT: PRINT "SERIES XC ="; XC, "CAP. ="; CS
- 1010 PRINT "PARALLEL XC ="; XA, "CAP. ="; AP
- 1020 QL=ABS(XT/RI): IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
- 1030 PRINT"LOADED Q =";QL,"INSURTION LOSS IN DB =";IL
- 1040 PRINT: INPUT "WANT HARD COPY (Y/N)"; H$
- 1050 IF H$<>"Y" THEN 520 ELSE LPRINT:LPRINT,"L-MATCH NETWORK "Q$
- 1060 LPRINT: LPRINT "SERIES XC ="; XC, "CAP. ="; CS
- 1070 LPRINT "PARALLEL XC ="; XA, "CAP. ="; AP
- 1080 LPRINT "LOADED Q =";QL,"INSURTION LOSS IN DB =";IL:PRINT:GOTO450
- 1090 REM LS-LP
- 1100 IF (R2/RI)<1 THEN 1840
- 1110 XT=RI*SQR((R2/RI)-1): XL=XT-XI: IF XL<0 THEN XT=-XT
- 1120 XL=XT-XI: IF XL<0 THEN 1840
- 1130 XP=FNXP(RI,XT): XN=1/((1/X2)-(1/XP)): IF XN<0 THEN 1840
- 1140 LS=XL/W: LP=XN/W
- 1150 PRINT: PRINT "SERIES XL ="; XL, "IND. ="; LS
- 1160 PRINT "PARALLEL XL ="; XN, "IND. ="; LP
- 1170 QL=ABS(XT/RI): IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
- 1180 PRINT "LOADED Q =";QL,"INSURTION LOSS IN DB =";IL: PRINT
- 1190 PRINT: INPUT "WANT HARD COPY (Y/N)"; H$
- 1200 IF H$<>"Y" THEN 520 ELSE LPRINT:LPRINT,"L-MATCH NETWORK "Q$
- 1210 LPRINT: LPRINT "SERIES XL ="; XL, "IND. ="; LS
- 1220 LPRINT "PARALLEL XL ="; XN, "IND. ="; LP
- 1230 LPRINT"LOADED Q =";QL,"INSURTION LOSS IN DB =";IL: PRINT:GOTO450
- 1240 REM CP-LS
- 1250 IF (R1/RO)<1 THEN 1840
- 1260 XT=R1/(SQR((R1/RO)-1)): XC=1/((1/XT)-(1/X1))
- 1270 IF XC>0 THEN XT=-XT: XC=1/((1/XT)-(1/X1)): IF XC>0 THEN 1840
- 1280 XS=FNXS(R1,XT): XL=XO-XS: IF XL<0 THEN 1840
- 1290 CP=1/ABS(W*XC): LS=XL/W
- 1300 PRINT: PRINT "PARALLEL XC ="; XC, "CAP. ="; CP
- 1310 PRINT "SERIES XL ="; XL, "IND. ="; LS
- 1320 QL=ABS(R1/XT): IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
- 1330 PRINT"LOADED Q =";QL,"INSURTION LOSS IN DB =";IL:PRINT
- 1340 PRINT: INPUT "WANT HARD COPY (Y/N)"; H$
- 1350 IF H$<>"Y" THEN 520 ELSE LPRINT:LPRINT,"L-MATCH NETWORK "Q$
- 1360 LPRINT: LPRINT "PARALLEL XC ="; XC, "CAP. ="; CP
- 1370 LPRINT "SERIES XL ="; XL, "IND. ="; LS
- 1380 LPRINT "LOADED Q ="; QL, "INSURTION LOSS IN DB ="; IL: PRINT: GOTO 450
- 1390 REM CP-CS
- 1400 IF (R1/RO)<1 THEN 1840
- 1410 XT=R1/(SQR((R1/RO)-1)): XC=1/((1/XT)-(1/X1))
- 1420 IF XC>0 THEN XT=-XT: XC=1/((1/XT)-(1/X1)): IF XC>0 THEN 1840
- 1430 XS=FNXS(R1,XT): XA=XO-XS: IF XA>0 THEN 1840
- 1440 CP=1/ABS(W*XC): CS=1/ABS(W*XA)
- 1450 PRINT: PRINT "PARALLEL XC ="; XC, "CAP. ="; CP
- 1460 PRINT "SERIES XC ="; XA, "CAP. ="; CS
- 1470 QL=ABS(R1/XT): IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
- 1480 PRINT"LOADED Q =";QL,"INSURTION LOSS IN DB =";IL:PRINT
- 1490 PRINT: INPUT "WANT HARD COPY (Y/N)"; H$
- 1500 IF H$<>"Y" THEN 520 ELSE LPRINT:LPRINT,"L-MATCH NETWORK "Q$
- 1510 LPRINT: LPRINT "PARALLEL XC ="; XC, "CAP. ="; CP
- 1520 LPRINT "SERIES XC ="; XA, "CAP. ="; CS
- 1530 LPRINT"LOADED Q =";QL,"INSURTION LOSS IN DB =";IL:PRINT:GOTO450
- 1540 REM LP-CS
- 1550 IF (R1/RO)<1 THEN 1840
- 1560 XT=R1/(SQR((R1/RO)-1)): XL=1/((1/XT)-(1/X1))
- 1570 IF XL<0 THEN XT=-XT: XL=1/((1/XT)-(1/X1)): IF XL<0 THEN 1840
- 1580 XS=FNXS(R1,XT): XC=XO-XS: IF XC>0 THEN 1840
- 1590 CS=1/ABS(W*XC): LP=XL/W
- 1600 PRINT: PRINT "PARALLEL XL ="; XL, "IND. ="; LP
- 1610 PRINT "SERIES XC ="; XC, "CAP. ="; CS
- 1620 QL=ABS(R1/XT): IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
- 1630 PRINT"LOADED Q =";QL,"INSURTION LOSS IN DB =";IL:PRINT
- 1640 PRINT: INPUT "WANT HARD COPY (Y/N)"; H$
- 1650 IF H$<>"Y" THEN 520 ELSE LPRINT:LPRINT,"L-MATCH NETWORK "Q$
- 1660 LPRINT: LPRINT "PARALLEL XL ="; XL, "IND. ="; LP
- 1670 LPRINT "SERIES XC ="; XC, "CAP. ="; CS
- 1680 LPRINT"LOADED Q =";QL,"INSURTION LOSS IN DB =";IL:PRINT:GOTO450
- 1690 REM LP-LS
- 1700 IF (R1/RO)<1 THEN 1840
- 1710 XT=R1/(SQR((R1/RO)-1)): XL=1/((1/XT)-(1/X1))
- 1720 IF XL<0 THEN XT=-XT: XL=1/((1/XT)-(1/X1)): IF XL<0 THEN 1840
- 1730 XS=FNXS(R1,XT): XN=XO-XS: IF XN<0 THEN 1840
- 1740 LS=XN/W: LP=XL/W
- 1750 PRINT: PRINT "PARALLEL XL ="; XL, "IND. ="; LP
- 1760 PRINT "SERIES XL ="; XN, "IND. ="; LP
- 1770 QL=ABS(R1/XT): IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
- 1780 PRINT"LOADED Q =";QL,"INSURTION LOSS IN DB =";IL:PRINT
- 1790 PRINT: INPUT "WANT HARD COPY (Y/N)"; H$
- 1800 IF H$<>"Y" THEN 520 ELSE LPRINT:LPRINT,"L-MATCH NETWORK "Q$
- 1810 LPRINT: LPRINT "PARALLEL XL ="; XL, "IND. ="; LP
- 1820 LPRINT "SERIES XL ="; XN, "IND. ="; LP
- 1830 LPRINT"LOADED Q =";QL,"INSURTION LOSS IN DB =";IL:PRINT:GOTO450
- 1840 PRINT: PRINT "MATCH NOT POSSIBLE - TRY ANOTHER NETWORK": PRINT:GOTO 520
-