home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HAM Radio 1
/
HamRadio.cdr
/
tech
/
eepub08
/
schart.bas
< prev
next >
Wrap
BASIC Source File
|
1986-08-26
|
11KB
|
272 lines
2 KEY OFF:GOSUB 10000:PRINT CL$
3 REM
4 REM ************************************************************************
5 REM ** PROGRAM BY L.A. GERIG, R.R.#1, MONROEVILLE, IND 46773 **
6 REM ** DOCUMENTATION HISTORY OCT '84 HAM RADIO MAGAZINE (C64 VERSION) **
7 REM ** JAN '82 & JUN '85 RF DESIGN (C64 VERSION) **
8 REM ** DATE TBD RF DESIGN (THIS IBM BASICA VERSION) **
9 REM ************************************************************************
10 INPUT"WHAT IS THE CHARACTERISTIC IMPEDANCE (IN OHMS)";Z0
12 PRINT:INPUT"HOW MANY FREQUENCIES (1-10)";N:PRINT
14 IF N<1 OR N>10 THEN 12
16 FOR J=1 TO N
18 PRINT"INPUT FREQUENCY"J;:INPUT"IN MHZ";F(J)
20 PRINT"INPUT RS, XS OF LOAD AT "F(J)"MHZ";:INPUT R(J),I(J)
22 X(J)=R(J):Y(J)=I(J):NEXT J:CLS:PRINT
24 PRINT" THESE WERE YOUR LOAD IMPEDANCE INPUTS:":PRINT
26 PRINT" FREQ (MHZ) RS (OHMS) XS (OHMS)":PRINT:FOR J=1 TO N
28 PRINT USING " #####.###";F(J);:PRINT USING " #####.###";R(J);
30 PRINT USING " #####.###";I(J):NEXT J
32 LOCATE 18:INPUT"ARE YOU SATISFIED (Y=YES)";A$
34 IF A$<>"Y" AND A$<>"y" THEN GOTO 12
38 INPUT"PRINT LOAD VALUES ON PRINTER (Y=YES)";A$
40 IF A$="Y" OR A$="y" THEN GOSUB 12000
42 IF GR=2 THEN INPUT"PLOT LOAD IMPEDANCE (Y=YES)";P$
44 IF P$="Y" OR P$="y" THEN GOSUB 8000
50 PRINT CL$" CHOOSE TYPE OF MATCHING SECTION";DN$DN$
52 PRINT" 1 SERIES C
54 PRINT" 2 SERIES L
56 PRINT" 3 SERIES TUNED (SERIES L-C)
58 PRINT" 4 SERIES TUNED (PARALLEL L-C)
60 PRINT" 5 SERIES TRANSMISSION LINE
62 PRINT" 6 SHUNT C
64 PRINT" 7 SHUNT L
66 PRINT" 8 SHUNT TUNED (SERIES L-C)
68 PRINT" 9 SHUNT TUNED (PARALLEL L-C)
70 PRINT"10 SHUNT TRANSMISSION LINE
72 PRINT"11 TRANSFORMER
74 PRINT"12 SERIES R
76 PRINT"13 SHUNT R
78 PRINT DN$"14 STOP ADDING SECTIONS"
80 PRINT DN$"15 CALCULATE MODE (L-C-LINE VALUES)"DN$
90 INPUT"WHAT IS YOUR CHOICE (1-15)";M
92 IF M<1 OR M>15 THEN 90
94 ON M GOTO 1000,1500,2000,2500,3000,3500,4000,4500,5000,5500
96 ON (M-10) GOTO 6000,6500,7000,7500,9500
1000 PRINT CL$;"ADD SERIES CAPACITOR
1002 INPUT"WHAT IS VALUE (IN PF)";C
1010 FOR J=1 TO N
1015 X(J)=R(J)
1020 Y(J)=I(J)-1/(2*PI*F(J)*C*.000001)
1025 NEXT J: GOTO 9000
1500 PRINT CL$;"ADD SERIES INDUCTOR
1502 INPUT"WHAT IS VALUE (IN UH)";L
1510 FOR J=1 TO N:X(J)=R(J)
1520 Y(J)=I(J)+2*PI*F(J)*L:NEXT J:GOTO 9000
2000 PRINT CL$;"ADD SERIES TUNED (SERIES L-C)
2002 INPUT"WHAT IS VALUE OF C (IN PF)";C
2004 INPUT"WHAT IS VALUE OF L (IN UH)";L
2010 FOR J=1 TO N: X(J)=R(J)
2020 Y(J)=I(J)+2*PI*F(J)*L-1/(2*PI*F(J)*C*.000001):NEXT J:GOTO 9000
2500 PRINT CL$;"ADD SERIES TUNED (PARALLEL L-C)
2502 INPUT"WHAT IS VALUE OF C (IN PF)";C
2504 INPUT"WHAT IS VALUE OF L (IN UH)";L
2510 FOR J=1 TO N: X(J)=R(J)
2520 Y(J)=I(J)+(2*PI*F(J)*L)/(1-((2*PI*F(J))^2)*L*C*.000001):NEXT J:GOTO 9000
3000 PRINT CL$;"ADD SERIES TRANSMISSION LINE
3002 INPUT"WHAT IS LINE IMPEDANCE (OHMS)";Z1
3004 INPUT"WHAT IS VELOCITY FACTOR";V
3006 INPUT"WHAT IS LENGTH (IN INCHES)";LL
3010 FOR J=1 TO N
3015 T=1.2*LL*F(J)/39.37/V
3020 D=(R(J)+Z1)^2+I(J)^2
3025 R=(R(J)^2-Z1^2+I(J)^2)/D
3030 I=2*Z1*I(J)/D
3035 Z=SQR(R*R+I*I)
3040 T=180/PI*ATN(I/(R+1E-30))-2*T+180*(R<0)
3045 R=Z*COS(T*PI/180)
3050 I=Z*SIN(T*PI/180)
3055 D=(1-R)^2+I^2
3060 X(J)=Z1*(1-R^2-I^2)/D
3065 Y(J)=2*Z1*I/D
3070 NEXT J:GOTO 9000
3500 PRINT CL$;"ADD SHUNT CAPACITOR
3502 INPUT"WHAT IS VALUE OF C (IN PF)";C
3506 FOR J=1 TO N: W=2*PI*C*.000001
3508 D=(1-W*F(J)*I(J))^2+(R(J)*W*F(J))^2
3510 X(J)=R(J)/D
3512 Y(J)=(I(J)*(1-W*F(J)*I(J))-R(J)^2*W*F(J))/D:NEXT J:GOTO 9000
4000 PRINT CL$;"ADD SHUNT INDUCTOR
4002 INPUT"WHAT IS VALUE OF L (IN UH)";L
4015 FOR J=1 TO N: W=2*PI*F(J)*L
4025 D=R(J)^2+(I(J)+W)^2
4030 X(J)=R(J)*W^2/D
4035 Y(J)=W*(R(J)^2+I(J)^2+W*I(J))/D
4040 NEXT J:GOTO 9000
4500 PRINT CL$;"ADD SHUNT TUNED (SERIES L-C)
4502 INPUT"WHAT IS VALUE OF C (IN PF)";C
4504 INPUT"WHAT IS VALUE OF L (IN UH)";L
4510 FOR J=1 TO N
4515 W=2*PI*F(J)*L-(1000000!)/(2*PI*F(J)*C)
4517 D=R(J)^2+(I(J)+W)^2
4520 X(J)=R(J)*W^2/D
4525 Y(J)=W*(R(J)^2+I(J)^2+W*I(J))/D
4530 NEXT J:GOTO 9000
5000 PRINT CL$;"ADD SHUNT TUNED (PARALLEL L-C)
5002 INPUT"WHAT IS VALUE OF C (IN PF)";C
5004 INPUT"WHAT IS VALUE OF L (IN UH)";L
5010 FOR J=1 TO N
5015 W=(2*PI*F(J)*L)/(1-((2*PI*F(J))^2)*L*C*.000001)
5020 D=R(J)^2+(I(J)+W)^2
5025 X(J)=R(J)*W^2/D
5030 Y(J)=W*(R(J)^2+I(J)^2+W*I(J))/D
5035 NEXT J:GOTO 9000
5500 PRINT CL$;"ADD SHUNT TRANSMISSION LINE
5502 INPUT"WHAT IS LINE IMPEDANCE (OHMS)";Z1
5504 INPUT"WHAT IS LINE VELOCITY FACTOR";V
5506 INPUT"WHAT IS LENGTH (IN INCHES)";LL
5508 LOCATE 4,40:PRINT"OPEN (O) OR SHORTED (S) STUB";
5510 INPUT S$
5512 IF S$="s" THEN S$="S"
5514 IF S$="o" THEN S$="O"
5516 IF S$<>"O" AND S$<>"S" THEN 5510
5520 FOR J=1 TO N
5525 T=LL*F(J)*1.2/39.37/V
5530 IF S$="S" THEN W=Z1*TAN(T*PI/180)
5535 IF S$="O" THEN W=Z1*TAN((T+90)*PI/180)
5540 D=R(J)^2+(I(J)+W)^2
5545 X(J)=R(J)*W^2/D
5550 Y(J)=W*(R(J)^2+I(J)^2+W*I(J))/D
5555 NEXT J:GOTO 9000
6000 PRINT CL$;"ADD TRANSFORMER
6002 INPUT"STEP UP OR DOWN (U OR D)";T$
6004 IF T$<>"U" AND T$<>"D" AND T$<>"u" AND T$<>"d" THEN 6000
6006 INPUT"WHAT TRANSFORMATION RATIO";W
6010 IF T$="D" OR T$="d" THEN W=1/W
6020 FOR J=1 TO N: X(J)=W*R(J)
6025 Y(J)=W*I(J): NEXT J: GOTO 9000
6500 PRINT CL$;"ADD SERIES RESISTOR
6502 INPUT"WHAT VALUE OF R";RS
6506 FOR J=1 TO N: X(J)=R(J)+RS
6508 Y(J)=I(J):NEXT J: GOTO 9000
7000 PRINT CL$;"ADD SHUNT RESISTOR
7002 INPUT"WHAT VALUE OF R";RS
7004 FOR J=1 TO N
7006 D=(R(J)+RS)^2+I(J)^2
7008 X(J)=RS*(R(J)^2+RS*R(J)+I(J)^2)/D
7010 Y(J)=I(J)*RS^2/D: NEXT J: GOTO 9000
7500 CLS:INPUT "WANT TO RUN ANOTHER ONE";A$
7502 IF LEFT$(A$,1)="Y" OR LEFT$(A$,1)="y" THEN CLS:GOTO 6
7504 LOCATE 12,34:PRINT"GOOD-BY"DN$DN$DN$DN$DN$:END
8000 GET (0,0)-(639,35),TEXT#:CLS
8005 IF X=4 THEN PUT (80,9),BLANK#:GOTO 8020
8010 PUT (80,9),FULL#
8020 FOR J=1 TO N
8025 D=(X(J)+Z0)^2+Y(J)^2
8030 PX(J)=((X(J)-Z0)*(X(J)+Z0)+Y(J)^2)/D*217
8035 PY(J)=-2*Y(J)*Z0/D*90
8040 PSET (PX(J)+320,PY(J)+100):DRAW PT$
8050 IF D$="S" AND J>1 THEN LINE (320+PX(J-1),100+PY(J-1))-(320+PX(J),100+PY(J))
8060 NEXT J
8070 PRINT"<PRT SCN> FOR SCREEN DUMP TO PRINTER OR ANY KEY TO CONTINUE"
8075 FOR J=1 TO 2000:NEXT J:LOCATE 1:PRINT SPACE$(79)
8080 I$=INKEY$:IF I$="" THEN 8080
8100 GET (80,9)-(560,191),FULL#
8110 CLS:PUT (0,0),TEXT#:RETURN
8300 LOCATE 18:FOR J=1 TO 6:PRINT SPACE$(79):NEXT J
8305 LOCATE 21,1:INPUT"WHAT VALUE OF VSWR CIRCLE DO YOU WANT TO PLOT";VS
8310 IF VS<1 THEN 8310
8315 GET (0,0)-(639,35),TEXT#:CLS
8320 PUT (80,9),FULL#
8325 VR=217*(VS-1)/(VS+1)
8330 CIRCLE (320,100),VR
8340 GOTO 8070
9000 LOCATE 6:PRINT" FREQ (MHZ) RS (OHMS) XS (OHMS)"DN$
9005 FOR J=1 TO N
9010 PRINT USING " #####.###";F(J);:PRINT USING " #####.###";X(J);
9015 PRINT USING " #####.###";Y(J):NEXT J
9050 LOCATE 18
9055 PRINT"1 --> GOOD VALUE: KEEP & PROCEED
9060 PRINT"2 --> PRINT LATEST ITERATION & VALUES ON PRINTER
9065 PRINT"3 --> BAD VALUE: DISCARD & TRY A NEW CIRCUIT
9070 IF GR=1 THEN 9100
9075 PRINT"4 --> PLOT ON CLEAN CHART
9080 PRINT"5 --> PLOT ON LAST CHART
9085 PRINT"6 --> PLOT CONSTANT VSWR CIRCLES ";
9100 INPUT X
9110 IF X=1 THEN 9200
9120 IF X=2 THEN GOSUB 12000:GOTO 9050
9130 IF X=3 THEN 50
9140 IF X=4 AND GR=2 THEN GOSUB 8000:GOTO 9000
9150 IF X=5 AND GR=2 THEN GOSUB 8000:GOTO 9000
9160 IF X=6 AND GR=2 THEN GOSUB 8300:GOTO 9000
9170 GOTO 9100
9200 FOR J=1 TO N:R(J)=X(J)
9210 I(J)=Y(J):NEXT J
9215 LOCATE 18:FOR J=1 TO 6:PRINT SPACE$(79):NEXT J
9225 LOCATE 18:PRINT"YOU MUST NOW MATCH THE IMPEDANCES LISTED ABOVE.";
9230 FOR J=1 TO 1500:NEXT J:GOTO 50
9462 LEN=WL*EL/360*V:LEN=INT(100*LEN+.5)/100
9500 PRINT CL$"DO YOU WISH TO CALCULATE (1) L-C VALUES
9502 PRINT DN$" OR (2) LINE LENGTHS"DN$
9504 INPUT "WHAT IS YOUR CHOICE (1 OR 2)";CH
9506 IF CH<>1 AND CH<>2 THEN 9504
9508 ON CH GOTO 9520,9550
9520 PRINT DN$DN$:INPUT"INPUT OPERATING FREQUENCY (MHZ)";OF
9522 INPUT "INPUT DESIRED REACTANCE (OHMS)";DX
9524 IF DX=0 THEN 9522
9526 IF DX<0 THEN DX=-DX
9528 IND=DX/(2*PI*OF)
9530 CAP=1000000!/(2*PI*DX*OF)
9532 PRINT DN$"USE INDUCTANCE OF ";IND;"UH ";
9534 PRINT "OR CAPICATANCE OF ";CAP;"PF
9536 PRINT DN$"FOR REACTANCE OF ";DX;"OHMS AT"OF"MHZ
9538 GOTO 9590
9550 PRINT DN$DN$:INPUT"INPUT OPERATING FREQUENCY (MHZ)";OF
9552 INPUT "INPUT VELOCITY FACOTR OF YOUR LINE";V
9554 INPUT "INPUT ELECTRICAL LENGTH DESIRED IN DEGREES (0-360)";EL
9556 IF EL<0 OR EL>360 THEN 9554
9558 WL=300*39.37/OF
9560 PRINT DN$"ONE WAVELENGTH IN AIR =";WL;"INCHES AT"OF"MHZ
9562 L1=INT(100*WL*EL/360*V+.5)/100
9564 PRINT DN$;EL;"DEGREES WITH VEL FACTOR OF";V" = "L1"INCHES
9590 PRINT DN$DN$"PRESS ANY KEY TO RETURN TO MATCHING NETWORK MENU"
9592 I$=INKEY$:IF I$="" THEN 9592
9594 GOTO 50
10000 PI=3.141573:CL$=CHR$(12):DN$=CHR$(31):PT$="U2D4U2R4L8R4E1G2E1H1F2H1
10002 PRINT CL$DN$,"IMPEDANCE MATCHING PROGRAM WITH SMITH CHART DISPLAY
10004 PRINT DN$," FOR THE IBM-PC OR COMPATIBLES
10006 PRINT DN$,," V1.11 C 1986":PRINT DN$,," BY
10010 PRINT DN$,," LYNN A. GERIG":LOCATE 17
10020 PRINT"SELECT YOUR HARDWARE CONFIGURAGION FROM THE FOLLOWING MENU:
10022 PRINT:PRINT" 1 --> TEXT ONLY (SUCH AS MONOCHROME TEXT CARD)
10024 PRINT:PRINT" 2 --> IBM COLOR/GRAPHICS EMULATION
10026 PRINT" (YOU CAN PLOT GRAPHICS FROM BASIC)
10030 INPUT GR
10032 IF GR<>1 AND GR<>2 THEN 10030
10038 IF GR=1 THEN RETURN
10100 SCREEN 2:CLS:PRINT"THANKS FOR WAITING WHILE I DRAW THE CHART."
10104 CIRCLE (320,100),217
10106 LINE (103,100)-(537,100)
10108 CIRCLE (537,10),217,,PI,1.45*PI
10110 CIRCLE (537,190),217,,.55*PI,PI
10112 CIRCLE (429,100),109
10114 LOCATE 13,12:PRINT"0"
10116 LOCATE 13,69:PRINT"oo":PSET (550,100):PSET (551,100)
10118 LOCATE 5,18:PRINT".4":LOCATE 22,18:PRINT"-.4
10120 A=175:B=248:C=392:D=465
10122 FOR J=98 TO 102:PSET (A,J):PSET (B,J):PSET (C,J):PSET (D,J): NEXT J
10124 LOCATE 14,22:PRINT".2"
10126 LOCATE 14,31:PRINT".5"
10128 LOCATE 14,41:PRINT"1"
10130 LOCATE 14,50:PRINT"2"
10132 LOCATE 14,59:PRINT"5"
10134 CIRCLE (537,325),544,,.625*PI,.742*PI
10136 CIRCLE (537,-125),544,,1.257*PI,1.375*PI
10140 DIM BLANK#(1500),FULL#(1500),TEXT#(400)
10142 GET (80,9)-(560,191),BLANK#:GET (80,9)-(560,191),FULL#:CLS
10202 PRINT"TO ENABLE CAPABILITY OF GRAPHICS SCREEN DUMP TO PRINTER (USING THE
10204 PRINT"<PRINT SCREEN> KEY FROM THE KEYBOARD), YOU MUST RUN THE APPROPRIATE
10206 PRINT"HI-RES SCREEN DUMP UTILITY FILE FOR YOUR HARDWARE AT THE DOS LEVEL
10208 PRINT"BEFORE ENTERING BASIC AND RUNNING THIS PROGRAM."DN$DN$
10210 PRINT"DO YOU WISH TO PLOT DISCRETE FREQUENCIES? ( + + +)"DN$
10212 PRINT"OR DO YOU DESIRE A SMOOTH GRAPHICS PLOT? ( +---+-----+)"DN$
10214 INPUT"INPUT D OR S";D$
10216 IF D$="d" THEN D$="D"
10218 IF D$="s" THEN D$="S"
10220 IF D$<>"D" AND D$<>"S" THEN 10214
10222 RETURN
12000 LPRINT CHR$(27)CHR$(64):FOR J=1 TO (N+7):FOR K=1 TO 79
12004 Q=SCREEN (J,K):IF Q=0 THEN Q=32
12006 LPRINT CHR$(Q);:NEXT K:LPRINT:NEXT J:LPRINT:LPRINT:RETURN