home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / design2 / schart.bas < prev    next >
BASIC Source File  |  1986-08-26  |  11KB  |  272 lines

  1. 2 KEY OFF:GOSUB 10000:PRINT CL$
  2. 3 REM
  3. 4 REM ************************************************************************
  4. 5 REM ** PROGRAM BY            L.A. GERIG, R.R.#1, MONROEVILLE, IND  46773  **
  5. 6 REM ** DOCUMENTATION HISTORY OCT '84 HAM RADIO MAGAZINE    (C64 VERSION)  **
  6. 7 REM **                       JAN '82 & JUN '85 RF DESIGN   (C64 VERSION)  **
  7. 8 REM **                       DATE TBD RF DESIGN (THIS IBM BASICA VERSION) **
  8. 9 REM ************************************************************************
  9. 10 INPUT"WHAT IS THE CHARACTERISTIC IMPEDANCE (IN OHMS)";Z0
  10. 12 PRINT:INPUT"HOW MANY FREQUENCIES (1-10)";N:PRINT
  11. 14 IF N<1 OR N>10 THEN 12
  12. 16 FOR J=1 TO N
  13. 18 PRINT"INPUT FREQUENCY"J;:INPUT"IN MHZ";F(J)
  14. 20 PRINT"INPUT RS, XS  OF LOAD AT "F(J)"MHZ";:INPUT R(J),I(J)
  15. 22 X(J)=R(J):Y(J)=I(J):NEXT J:CLS:PRINT
  16. 24 PRINT"     THESE WERE YOUR LOAD IMPEDANCE INPUTS:":PRINT
  17. 26 PRINT"     FREQ (MHZ)        RS (OHMS)       XS (OHMS)":PRINT:FOR J=1 TO N
  18. 28 PRINT USING "    #####.###";F(J);:PRINT USING "       #####.###";R(J);
  19. 30 PRINT USING "       #####.###";I(J):NEXT J
  20. 32 LOCATE 18:INPUT"ARE YOU SATISFIED (Y=YES)";A$
  21. 34 IF A$<>"Y" AND A$<>"y" THEN GOTO 12
  22. 38 INPUT"PRINT LOAD VALUES ON PRINTER (Y=YES)";A$
  23. 40 IF A$="Y" OR A$="y" THEN GOSUB 12000
  24. 42 IF GR=2 THEN INPUT"PLOT LOAD IMPEDANCE (Y=YES)";P$
  25. 44 IF P$="Y" OR P$="y" THEN GOSUB 8000
  26. 50 PRINT CL$"   CHOOSE TYPE OF MATCHING SECTION";DN$DN$
  27. 52 PRINT" 1 SERIES C
  28. 54 PRINT" 2 SERIES L
  29. 56 PRINT" 3 SERIES TUNED (SERIES L-C)
  30. 58 PRINT" 4 SERIES TUNED (PARALLEL L-C)
  31. 60 PRINT" 5 SERIES TRANSMISSION LINE
  32. 62 PRINT" 6 SHUNT  C
  33. 64 PRINT" 7 SHUNT  L
  34. 66 PRINT" 8 SHUNT  TUNED (SERIES L-C)
  35. 68 PRINT" 9 SHUNT  TUNED (PARALLEL L-C)
  36. 70 PRINT"10 SHUNT  TRANSMISSION LINE
  37. 72 PRINT"11 TRANSFORMER
  38. 74 PRINT"12 SERIES R
  39. 76 PRINT"13 SHUNT  R
  40. 78 PRINT DN$"14 STOP ADDING SECTIONS"
  41. 80 PRINT DN$"15 CALCULATE MODE (L-C-LINE VALUES)"DN$
  42. 90 INPUT"WHAT IS YOUR CHOICE (1-15)";M
  43. 92 IF M<1 OR M>15 THEN 90
  44. 94 ON M GOTO 1000,1500,2000,2500,3000,3500,4000,4500,5000,5500
  45. 96 ON (M-10) GOTO 6000,6500,7000,7500,9500
  46. 1000 PRINT CL$;"ADD SERIES CAPACITOR
  47. 1002 INPUT"WHAT IS VALUE (IN PF)";C
  48. 1010 FOR J=1 TO N
  49. 1015 X(J)=R(J)
  50. 1020 Y(J)=I(J)-1/(2*PI*F(J)*C*.000001)
  51. 1025 NEXT J: GOTO 9000
  52. 1500 PRINT CL$;"ADD SERIES INDUCTOR
  53. 1502 INPUT"WHAT IS VALUE (IN UH)";L
  54. 1510 FOR J=1 TO N:X(J)=R(J)
  55. 1520 Y(J)=I(J)+2*PI*F(J)*L:NEXT J:GOTO 9000
  56. 2000 PRINT CL$;"ADD SERIES TUNED (SERIES L-C)
  57. 2002 INPUT"WHAT IS VALUE OF C (IN PF)";C
  58. 2004 INPUT"WHAT IS VALUE OF L (IN UH)";L
  59. 2010 FOR J=1 TO N: X(J)=R(J)
  60. 2020 Y(J)=I(J)+2*PI*F(J)*L-1/(2*PI*F(J)*C*.000001):NEXT J:GOTO 9000
  61. 2500 PRINT CL$;"ADD SERIES TUNED (PARALLEL L-C)
  62. 2502 INPUT"WHAT IS VALUE OF C (IN PF)";C
  63. 2504 INPUT"WHAT IS VALUE OF L (IN UH)";L
  64. 2510 FOR J=1 TO N: X(J)=R(J)
  65. 2520 Y(J)=I(J)+(2*PI*F(J)*L)/(1-((2*PI*F(J))^2)*L*C*.000001):NEXT J:GOTO 9000
  66. 3000 PRINT CL$;"ADD SERIES TRANSMISSION LINE
  67. 3002 INPUT"WHAT IS LINE IMPEDANCE (OHMS)";Z1
  68. 3004 INPUT"WHAT IS VELOCITY FACTOR";V
  69. 3006 INPUT"WHAT IS LENGTH (IN INCHES)";LL
  70. 3010 FOR J=1 TO N
  71. 3015 T=1.2*LL*F(J)/39.37/V
  72. 3020 D=(R(J)+Z1)^2+I(J)^2
  73. 3025 R=(R(J)^2-Z1^2+I(J)^2)/D
  74. 3030 I=2*Z1*I(J)/D
  75. 3035 Z=SQR(R*R+I*I)
  76. 3040 T=180/PI*ATN(I/(R+1E-30))-2*T+180*(R<0)
  77. 3045 R=Z*COS(T*PI/180)
  78. 3050 I=Z*SIN(T*PI/180)
  79. 3055 D=(1-R)^2+I^2
  80. 3060 X(J)=Z1*(1-R^2-I^2)/D
  81. 3065 Y(J)=2*Z1*I/D
  82. 3070 NEXT J:GOTO 9000
  83. 3500 PRINT CL$;"ADD SHUNT CAPACITOR
  84. 3502 INPUT"WHAT IS VALUE OF C (IN PF)";C
  85. 3506 FOR J=1 TO N: W=2*PI*C*.000001
  86. 3508 D=(1-W*F(J)*I(J))^2+(R(J)*W*F(J))^2
  87. 3510 X(J)=R(J)/D
  88. 3512 Y(J)=(I(J)*(1-W*F(J)*I(J))-R(J)^2*W*F(J))/D:NEXT J:GOTO 9000
  89. 4000 PRINT CL$;"ADD SHUNT INDUCTOR
  90. 4002 INPUT"WHAT IS VALUE OF L (IN UH)";L
  91. 4015 FOR J=1 TO N: W=2*PI*F(J)*L
  92. 4025 D=R(J)^2+(I(J)+W)^2
  93. 4030 X(J)=R(J)*W^2/D
  94. 4035 Y(J)=W*(R(J)^2+I(J)^2+W*I(J))/D
  95. 4040 NEXT J:GOTO 9000
  96. 4500 PRINT CL$;"ADD SHUNT TUNED (SERIES L-C)
  97. 4502 INPUT"WHAT IS VALUE OF C (IN PF)";C
  98. 4504 INPUT"WHAT IS VALUE OF L (IN UH)";L
  99. 4510 FOR J=1 TO N
  100. 4515 W=2*PI*F(J)*L-(1000000!)/(2*PI*F(J)*C)
  101. 4517 D=R(J)^2+(I(J)+W)^2
  102. 4520 X(J)=R(J)*W^2/D
  103. 4525 Y(J)=W*(R(J)^2+I(J)^2+W*I(J))/D
  104. 4530 NEXT J:GOTO 9000
  105. 5000 PRINT CL$;"ADD SHUNT TUNED (PARALLEL L-C)
  106. 5002 INPUT"WHAT IS VALUE OF C (IN PF)";C
  107. 5004 INPUT"WHAT IS VALUE OF L (IN UH)";L
  108. 5010 FOR J=1 TO N
  109. 5015 W=(2*PI*F(J)*L)/(1-((2*PI*F(J))^2)*L*C*.000001)
  110. 5020 D=R(J)^2+(I(J)+W)^2
  111. 5025 X(J)=R(J)*W^2/D
  112. 5030 Y(J)=W*(R(J)^2+I(J)^2+W*I(J))/D
  113. 5035 NEXT J:GOTO 9000
  114. 5500 PRINT CL$;"ADD SHUNT TRANSMISSION LINE
  115. 5502 INPUT"WHAT IS LINE IMPEDANCE (OHMS)";Z1
  116. 5504 INPUT"WHAT IS LINE VELOCITY FACTOR";V
  117. 5506 INPUT"WHAT IS LENGTH (IN INCHES)";LL
  118. 5508 LOCATE 4,40:PRINT"OPEN (O) OR SHORTED (S) STUB";
  119. 5510 INPUT S$
  120. 5512 IF S$="s" THEN S$="S"
  121. 5514 IF S$="o" THEN S$="O"
  122. 5516 IF S$<>"O" AND S$<>"S" THEN 5510
  123. 5520 FOR J=1 TO N
  124. 5525 T=LL*F(J)*1.2/39.37/V
  125. 5530 IF S$="S" THEN W=Z1*TAN(T*PI/180)
  126. 5535 IF S$="O" THEN W=Z1*TAN((T+90)*PI/180)
  127. 5540 D=R(J)^2+(I(J)+W)^2
  128. 5545 X(J)=R(J)*W^2/D
  129. 5550 Y(J)=W*(R(J)^2+I(J)^2+W*I(J))/D
  130. 5555 NEXT J:GOTO 9000
  131. 6000 PRINT CL$;"ADD TRANSFORMER
  132. 6002 INPUT"STEP UP OR DOWN (U OR D)";T$
  133. 6004 IF T$<>"U" AND T$<>"D" AND T$<>"u" AND T$<>"d" THEN 6000
  134. 6006 INPUT"WHAT TRANSFORMATION RATIO";W
  135. 6010 IF T$="D" OR T$="d" THEN W=1/W
  136. 6020 FOR J=1 TO N: X(J)=W*R(J)
  137. 6025 Y(J)=W*I(J): NEXT J: GOTO 9000
  138. 6500 PRINT CL$;"ADD SERIES RESISTOR
  139. 6502 INPUT"WHAT VALUE OF R";RS
  140. 6506 FOR J=1 TO N: X(J)=R(J)+RS
  141. 6508 Y(J)=I(J):NEXT J: GOTO 9000
  142. 7000 PRINT CL$;"ADD SHUNT RESISTOR
  143. 7002 INPUT"WHAT VALUE OF R";RS
  144. 7004 FOR J=1 TO N
  145. 7006 D=(R(J)+RS)^2+I(J)^2
  146. 7008 X(J)=RS*(R(J)^2+RS*R(J)+I(J)^2)/D
  147. 7010 Y(J)=I(J)*RS^2/D: NEXT J: GOTO 9000
  148. 7500 CLS:INPUT "WANT TO RUN ANOTHER ONE";A$
  149. 7502 IF LEFT$(A$,1)="Y"  OR LEFT$(A$,1)="y" THEN CLS:GOTO 6
  150. 7504 LOCATE 12,34:PRINT"GOOD-BY"DN$DN$DN$DN$DN$:END
  151. 8000 GET (0,0)-(639,35),TEXT#:CLS
  152. 8005 IF X=4 THEN PUT (80,9),BLANK#:GOTO 8020
  153. 8010 PUT (80,9),FULL#
  154. 8020 FOR J=1 TO N
  155. 8025 D=(X(J)+Z0)^2+Y(J)^2
  156. 8030 PX(J)=((X(J)-Z0)*(X(J)+Z0)+Y(J)^2)/D*217
  157. 8035 PY(J)=-2*Y(J)*Z0/D*90
  158. 8040 PSET (PX(J)+320,PY(J)+100):DRAW PT$
  159. 8050 IF D$="S" AND J>1 THEN LINE (320+PX(J-1),100+PY(J-1))-(320+PX(J),100+PY(J))
  160. 8060 NEXT J
  161. 8070 PRINT"<PRT SCN> FOR SCREEN DUMP TO PRINTER OR ANY KEY TO CONTINUE"
  162. 8075 FOR J=1 TO 2000:NEXT J:LOCATE 1:PRINT SPACE$(79)
  163. 8080 I$=INKEY$:IF I$="" THEN 8080
  164. 8100 GET (80,9)-(560,191),FULL#
  165. 8110 CLS:PUT (0,0),TEXT#:RETURN
  166. 8300 LOCATE 18:FOR J=1 TO 6:PRINT SPACE$(79):NEXT J
  167. 8305 LOCATE 21,1:INPUT"WHAT VALUE OF VSWR CIRCLE DO YOU WANT TO PLOT";VS
  168. 8310 IF VS<1 THEN 8310
  169. 8315 GET (0,0)-(639,35),TEXT#:CLS
  170. 8320 PUT (80,9),FULL#
  171. 8325 VR=217*(VS-1)/(VS+1)
  172. 8330 CIRCLE (320,100),VR
  173. 8340 GOTO 8070
  174. 9000 LOCATE 6:PRINT"     FREQ (MHZ)        RS (OHMS)       XS (OHMS)"DN$
  175. 9005 FOR J=1 TO N
  176. 9010 PRINT USING "    #####.###";F(J);:PRINT USING "       #####.###";X(J);
  177. 9015 PRINT USING "       #####.###";Y(J):NEXT J
  178. 9050 LOCATE 18
  179. 9055 PRINT"1 --> GOOD VALUE:  KEEP & PROCEED
  180. 9060 PRINT"2 --> PRINT LATEST ITERATION & VALUES ON PRINTER
  181. 9065 PRINT"3 --> BAD VALUE:  DISCARD & TRY A NEW CIRCUIT
  182. 9070 IF GR=1 THEN 9100
  183. 9075 PRINT"4 --> PLOT ON CLEAN CHART
  184. 9080 PRINT"5 --> PLOT ON LAST CHART
  185. 9085 PRINT"6 --> PLOT CONSTANT VSWR CIRCLES                  ";
  186. 9100 INPUT X
  187. 9110 IF X=1 THEN 9200
  188. 9120 IF X=2 THEN GOSUB 12000:GOTO 9050
  189. 9130 IF X=3 THEN 50
  190. 9140 IF X=4 AND GR=2 THEN GOSUB 8000:GOTO 9000
  191. 9150 IF X=5 AND GR=2 THEN GOSUB 8000:GOTO 9000
  192. 9160 IF X=6 AND GR=2 THEN GOSUB 8300:GOTO 9000
  193. 9170 GOTO 9100
  194. 9200 FOR J=1 TO N:R(J)=X(J)
  195. 9210 I(J)=Y(J):NEXT J
  196. 9215 LOCATE 18:FOR J=1 TO 6:PRINT SPACE$(79):NEXT J
  197. 9225 LOCATE 18:PRINT"YOU MUST NOW MATCH THE IMPEDANCES LISTED ABOVE.";
  198. 9230 FOR J=1 TO 1500:NEXT J:GOTO 50
  199. 9462 LEN=WL*EL/360*V:LEN=INT(100*LEN+.5)/100
  200. 9500 PRINT CL$"DO YOU WISH TO CALCULATE  (1) L-C VALUES
  201. 9502 PRINT DN$"                      OR  (2) LINE LENGTHS"DN$
  202. 9504 INPUT "WHAT IS YOUR CHOICE (1 OR 2)";CH
  203. 9506 IF CH<>1 AND CH<>2 THEN 9504
  204. 9508 ON CH GOTO 9520,9550
  205. 9520 PRINT DN$DN$:INPUT"INPUT OPERATING FREQUENCY (MHZ)";OF
  206. 9522 INPUT "INPUT DESIRED REACTANCE (OHMS)";DX
  207. 9524 IF DX=0 THEN 9522
  208. 9526 IF DX<0 THEN DX=-DX
  209. 9528 IND=DX/(2*PI*OF)
  210. 9530 CAP=1000000!/(2*PI*DX*OF)
  211. 9532 PRINT DN$"USE INDUCTANCE OF ";IND;"UH ";
  212. 9534 PRINT "OR CAPICATANCE OF ";CAP;"PF
  213. 9536 PRINT DN$"FOR REACTANCE OF ";DX;"OHMS AT"OF"MHZ
  214. 9538 GOTO 9590
  215. 9550 PRINT DN$DN$:INPUT"INPUT OPERATING FREQUENCY (MHZ)";OF
  216. 9552 INPUT "INPUT VELOCITY FACOTR OF YOUR LINE";V
  217. 9554 INPUT "INPUT ELECTRICAL LENGTH DESIRED IN DEGREES (0-360)";EL
  218. 9556 IF EL<0 OR EL>360 THEN 9554
  219. 9558 WL=300*39.37/OF
  220. 9560 PRINT DN$"ONE WAVELENGTH IN AIR =";WL;"INCHES AT"OF"MHZ
  221. 9562 L1=INT(100*WL*EL/360*V+.5)/100
  222. 9564 PRINT DN$;EL;"DEGREES WITH VEL FACTOR OF";V" = "L1"INCHES
  223. 9590 PRINT DN$DN$"PRESS ANY KEY TO RETURN TO MATCHING NETWORK MENU"
  224. 9592 I$=INKEY$:IF I$="" THEN 9592
  225. 9594 GOTO 50
  226. 10000 PI=3.141573:CL$=CHR$(12):DN$=CHR$(31):PT$="U2D4U2R4L8R4E1G2E1H1F2H1
  227. 10002 PRINT CL$DN$,"IMPEDANCE MATCHING PROGRAM WITH SMITH CHART DISPLAY
  228. 10004 PRINT DN$,"          FOR THE IBM-PC OR COMPATIBLES
  229. 10006 PRINT DN$,,"    V1.11 C 1986":PRINT DN$,,"         BY
  230. 10010 PRINT DN$,,"    LYNN A. GERIG":LOCATE 17
  231. 10020 PRINT"SELECT YOUR HARDWARE CONFIGURAGION FROM THE FOLLOWING MENU:
  232. 10022 PRINT:PRINT"     1 --> TEXT ONLY (SUCH AS MONOCHROME TEXT CARD)
  233. 10024 PRINT:PRINT"     2 --> IBM COLOR/GRAPHICS EMULATION
  234. 10026 PRINT"           (YOU CAN PLOT GRAPHICS FROM BASIC)
  235. 10030 INPUT GR
  236. 10032 IF GR<>1 AND GR<>2 THEN 10030
  237. 10038 IF GR=1 THEN RETURN
  238. 10100 SCREEN 2:CLS:PRINT"THANKS FOR WAITING WHILE I DRAW THE CHART."
  239. 10104 CIRCLE (320,100),217
  240. 10106 LINE (103,100)-(537,100)
  241. 10108 CIRCLE (537,10),217,,PI,1.45*PI
  242. 10110 CIRCLE (537,190),217,,.55*PI,PI
  243. 10112 CIRCLE (429,100),109
  244. 10114 LOCATE 13,12:PRINT"0"
  245. 10116 LOCATE 13,69:PRINT"oo":PSET (550,100):PSET (551,100)
  246. 10118 LOCATE 5,18:PRINT".4":LOCATE 22,18:PRINT"-.4
  247. 10120 A=175:B=248:C=392:D=465
  248. 10122 FOR J=98 TO 102:PSET (A,J):PSET (B,J):PSET (C,J):PSET (D,J): NEXT J
  249. 10124 LOCATE 14,22:PRINT".2"
  250. 10126 LOCATE 14,31:PRINT".5"
  251. 10128 LOCATE 14,41:PRINT"1"
  252. 10130 LOCATE 14,50:PRINT"2"
  253. 10132 LOCATE 14,59:PRINT"5"
  254. 10134 CIRCLE (537,325),544,,.625*PI,.742*PI
  255. 10136 CIRCLE (537,-125),544,,1.257*PI,1.375*PI
  256. 10140 DIM BLANK#(1500),FULL#(1500),TEXT#(400)
  257. 10142 GET (80,9)-(560,191),BLANK#:GET (80,9)-(560,191),FULL#:CLS
  258. 10202 PRINT"TO ENABLE CAPABILITY OF GRAPHICS SCREEN DUMP TO PRINTER (USING THE
  259. 10204 PRINT"<PRINT SCREEN> KEY FROM THE KEYBOARD), YOU MUST RUN THE APPROPRIATE
  260. 10206 PRINT"HI-RES SCREEN DUMP UTILITY FILE FOR YOUR HARDWARE AT THE DOS LEVEL
  261. 10208 PRINT"BEFORE ENTERING BASIC AND RUNNING THIS PROGRAM."DN$DN$
  262. 10210 PRINT"DO YOU WISH TO PLOT DISCRETE FREQUENCIES?      ( +   +     +)"DN$
  263. 10212 PRINT"OR DO YOU DESIRE A SMOOTH GRAPHICS PLOT?       ( +---+-----+)"DN$
  264. 10214 INPUT"INPUT D OR S";D$
  265. 10216 IF D$="d" THEN D$="D"
  266. 10218 IF D$="s" THEN D$="S"
  267. 10220 IF D$<>"D" AND D$<>"S" THEN 10214
  268. 10222 RETURN
  269. 12000 LPRINT CHR$(27)CHR$(64):FOR J=1 TO (N+7):FOR K=1 TO 79
  270. 12004 Q=SCREEN (J,K):IF Q=0 THEN Q=32
  271. 12006 LPRINT CHR$(Q);:NEXT K:LPRINT:NEXT J:LPRINT:LPRINT:RETURN
  272.