home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1979-12-31 | 4.2 KB | 112 lines |
- 10 REM PRECISION 5
- 15 PI=3.1416
- 20 REM PARALLEL SERIES CONVERSION FUNCTION
- 25 PRINT: PRINT,"Q-MATCH by K2UYH modified for ibm pc wa2tif":PRINT
- 30 DEF FNRP(RS,XS)=RS*(1+(XS/RS)^2)
- 40 DEF FNXP(RS,XS)=FNRP(RS,XS)/(XS/RS)
- 50 PRINT: PRINT "MULTI-ELEMENT NETWORK MATCHING:"
- 60 PRINT: INPUT "INPUT RESISTANCE ="; RI
- 70 INPUT "INPUT REACTANCE ="; XI
- 80 INPUT "DESIRED OUTPUT LOAD RESISTANCE ="; RL
- 90 INPUT "FREQENCY IN MHZ ="; F: F=F*1E+06: W=2*PI*F
- 100 INPUT "UNLOADED ELEMENT Q ="; Q
- 110 INPUT "DESIRED LOADED Q ="; QL: PRINT
- 120 R1=FNRP(RI,XI): X1=FNXP(RI,XI)
- 130 PRINT "NETWORKS:"
- 140 PRINT "CP-LS-CP, LP-LS-CP, LS-CP-LS, CS-CP-LS, LS-CP-CS"
- 150 PRINT "CS-LS-CP, LP-CS-LS-CP, CP-CS-LS-CP"
- 160 PRINT: INPUT "DESIRED NETWORK"; Q$
- 170 IF Q$="CS-LS-CP" THEN 270
- 180 IF Q$="LS-CP-CS" THEN 370
- 190 IF Q$="LS-CP-LS" THEN 480
- 200 IF Q$="LP-CS-LS-CP" THEN 570
- 210 IF Q$="CP-LS-CP" THEN 670
- 220 IF Q$="CS-CP-LS" THEN 790
- 230 IF Q$="CP-CS-LS-CP" THEN 880
- 240 IF Q$="LP-LS-CP" THEN 990
- 250 IF Q$= "END"THEN END ELSE IF Q$="NEW" THEN 60 ELSE IF Q$="NF" THEN 90 ELSE PRINT "NOT POSSIBLE": GOTO 130
- 260 REM CS-LS-CP
- 270 IF RI>RL THEN 1090
- 280 XC=-QL*RI: X2=-RL*SQR(RI/(RL-RI)): XL=XC+RI*RL/X2-XI
- 290 IF XL<0 THEN 1090
- 300 CS=1/ABS(W*XC): LP=XL/W: C2=1/ABS(W*X2)
- 310 PRINT: PRINT "SERIES XC ="; XC, "CAP. ="; CS
- 320 PRINT "SERIES XL ="; XL, "IND. ="; LP
- 330 PRINT "PARALLEL XC ="; X2, "CAP. ="; C2
- 340 IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
- 350 PRINT "LOADED Q ="; QL, "INSURTION LOSS IN DB ="; IL: GOTO 130
- 360 REM LS-CP-CS
- 370 IF RI>RL THEN 1090
- 380 B=RI*(1+QL^2): IF (B/RL-1)<0 THEN 1090 ELSE A=SQR(B/RL-1)
- 390 XL=QL*RI-XI: XC=-B/(QL-A): IF XC>0 THEN 1090
- 400 X2=-A*RL: IF XL<0 THEN GOTO 1090
- 410 CP=1/ABS(W*XC): LS=XL/W: CS=1/ABS(W*X2)
- 420 PRINT: PRINT "SERIES XL ="; XL, "IND. ="; LS
- 430 PRINT "PARALLEL XC ="; XC, "CAP. ="; CP
- 440 PRINT "SERIES X2 ="; X2, "CAP. ="; CS
- 450 IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
- 460 PRINT "LOADED Q ="; QL, "INSURTION LOSS IN DB ="; IL: GOTO 160
- 470 REM LS-CP-LS
- 480 A=RI*(1+QL^2): IF (A/RL)<1 THEN 1090 ELSE B=SQR(A/RL-1)
- 490 XC=RI*QL-XI: XA=-RL*B: X2=A/(QL+B)
- 500 L1=XC/W: AP=1/ABS(W*XA): L2=X2/W: IF XC<0 THEN 1090
- 510 PRINT: PRINT "SERIES XL1 ="; XC, "IND. ="; L1
- 520 PRINT "PARALLEL XC ="; XA, "CAP. ="; AP
- 530 PRINT "SERIES XL2 ="; X2, "IND. ="; L2
- 540 IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
- 550 PRINT "LOADED Q ="; QL, "INSURTION LOSS IN DB ="; IL: GOTO 160
- 560 REM LP-CS-LS-CP
- 570 IF R1>RL THEN 1090 ELSE IF X1>0 THEN 1090
- 580 XA=-X1: XB=-QL*R1: XD=RL*SQR(R1/(RL-R1)): XC=-(XB+R1*RL/XD)
- 590 LA=XA/W: LC=XC/W: CS=1/(W*ABS(XB)): CP=1/(W*ABS(XD))
- 600 PRINT: PRINT "PARALLEL XL ="; XA, "IND. ="; LA
- 610 PRINT "SERIES XC="; XB, "CAP. ="; CS
- 620 PRINT "SERIES XL ="; XC, "IND. ="; LC
- 630 PRINT "PARALLEL XC ="; XD, "CAP. ="; CP
- 640 IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
- 650 PRINT "LOADED Q ="; QL, "INSURTION LOSS IN DB ="; IL: GOTO 160
- 660 REM CP-LS-CP
- 670 IF R1<(RL/10) THEN 1090 ELSE IF R1/RL>(QL^2+1) THEN 1090
- 680 T=R1/(RL*((QL^2+1)-(R1/RL))): IF T<0 THEN 1090
- 690 XC=R1/QL: X2=RL*SQR(T)
- 700 XC=-1/(1/XC+1/X1): IF XC>0 THEN 1090
- 710 XL=(QL*R1+(R1*RL/X2))/(QL^2+1)
- 720 CP=1/ABS(W*XC): LS=XL/W: C2=1/ABS(W*X2)
- 730 PRINT: PRINT "PARALLEL XC ="; XC, "CAP. ="; CP
- 740 PRINT "SERIES XL ="; XL, "IND. ="; LS
- 750 PRINT "PARALLEL XC2 ="; X2, "CAP. ="; C2
- 760 IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
- 770 PRINT "LOADED Q ="; QL, "INSURTION LOSS IN DB ="; IL: GOTO 160
- 780 REM CS-CP-LS
- 790 A=RI*(1+QL^2): IF (A/RL)<0 THEN 1090 ELSE B=SQR(A/RL-1)
- 800 XS=(RI*QL-XI): XA=-RL*B: X2=A/(QL+B): IF XS>0 THEN 1090
- 810 C1=1/ABS(W*XS): AP=1/ABS(W*XA): L2=X2/W
- 820 PRINT: PRINT "SERIES XC ="; XS, "CAP. ="; C1
- 830 PRINT "PARALLEL XC ="; XA, "CAP. ="; AP
- 840 PRINT "SERIES XL2 ="; X2, "IND. ="; L2
- 850 IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
- 860 PRINT "LOADED Q ="; QL, "INSURTION LOSS IN DB ="; IL: GOTO 160
- 870 REM CP-CS-LS-CP
- 880 IF R1>RL THEN 1090 ELSE IF X1<0 THEN 1090
- 890 XA=-X1: XB=-QL*R1: A=R1/(RL-R1): IF A<0 THEN 1090
- 900 XD=-RL*SQR(A): XC=XB+R1*RL/XD
- 910 CA=1/(ABS(XA)): LC=XC/W: CS=1/(W*ABS(XB)): CP=1/(W*ABS(XD))
- 920 PRINT: PRINT "PARALLEL XC ="; XA, "CAP. ="; CA
- 930 PRINT "SERIES XC="; XB, "CAP. ="; CS
- 940 PRINT "SERIES XL ="; XC, "IND. ="; LC
- 950 PRINT "PARALLEL XC ="; XD, "CAP. ="; CP
- 960 IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
- 970 PRINT "LOADED Q ="; QL, "INSURTION LOSS IN DB ="; IL: GOTO 160
- 980 REM LP-LS-CP
- 990 IF R1<(RL/10) THEN 1090 ELSE IF R1/RL>(QL^2+1) THEN 1090
- 1000 XC=R1/QL: X2=RL*SQR(R1/(RL*((QL^2+1)-(R1/RL))))
- 1010 XP=-1/(1/XC+1/X1): IF XP<0 THEN 1090
- 1020 XL=(QL*R1+(R1*RL/X2))/(QL^2+1): X2=-X2
- 1030 LP=XP/W: LS=XL/W: C2=1/ABS(W*X2)
- 1040 PRINT: PRINT "PARALLEL XL ="; XP, "IND. ="; LP
- 1050 PRINT "SERIES XL ="; XL, "IND. ="; LS
- 1060 PRINT "PARALLEL XC2 ="; X2, "CAP. ="; C2
- 1070 IL=20*LOG(1/(1-(QL/Q)))/LOG(10)
- 1080 PRINT "LOADED Q ="; QL, "INSURTION LOSS IN DB ="; IL: GOTO 160
- 1090 PRINT: PRINT "MATCH NOT POSSIBLE - TRY ANOTHER NETWORK": GOTO 130 LIST 1-100
-