home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / rf3 / ms-ibm.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1986-08-18  |  5.9 KB  |  133 lines

  1. 10  CLS: PRINT "PROGRAM FOR CALCULATING MICROSTRIP CHARACTERISTICS V2.4M 8/15/86"
  2. 20  PRINT
  3. 30  PRINT "      *********************************************
  4. 40  PRINT "      *                                           *
  5. 50  PRINT "      *  BY DR. ALLEN KATZ, CHAIRMAN              *
  6. 60  PRINT "      *  DEPT ELECTRONICS ENGINEERING TECHNOLOGY  *
  7. 70  PRINT "      *  TRENTON STATE COLLEGE, CN550             *
  8. 80  PRINT "      *  TRENTON, NEW JERSEY 8625                 *
  9. 90  PRINT "      *                                           *
  10. 100  PRINT "      *  THE AUTHOR RESERVES RIGHTS TO THIS       *
  11. 110  PRINT "      *  PROGRAM; HOWEVER, COPYING AND USE FOR    *
  12. 120  PRINT "      *  EDUCATIONAL PURPOSES IS ENCOURAGED.      *
  13. 130  PRINT "      *                                           *
  14. 140  PRINT "      *  PLEASE REPORTS ANY ERRORS OR PROBLEMS    *
  15. 150  PRINT "      *  WITH THIS PROGRAM TO THE AUTHOR.         *
  16. 160  PRINT "      *  TEL (609) 771 2487                       *
  17. 170  PRINT "      *                                           *
  18. 180  PRINT "      *********************************************
  19. 190  PRINT
  20. 200  PI=4*ATN(1): HP=PI/2
  21. 210  PRINT: INPUT "SINGLE (S) OR COUPLED (C) MICROSTRIP"; Q1$
  22. 220  IF Q1$="C" THEN 700 ELSE IF Q1$<>"S" THEN 210
  23. 230  PRINT:INPUT "WANT TO CALC Z0, WIDTH (W) OR HIGHT (H)"; A$
  24. 240  PRINT: IF A$="Z0" THEN 610 ELSE IF A$="W" THEN 260 
  25. 250  INPUT "WHAT IS LINE WIDTH"; W: GOTO 270
  26. 260  INPUT "WHAT IS BOARD HIGHT IN INCHES"; H
  27. 270  INPUT "WHAT IS BOARD DIELECTRIC CONSTANT"; ER
  28. 280  INPUT "WHAT IS DESIRED Z0"; Z0
  29. 290  INPUT "WANT TO CONSIDER STRIP THICKNESS (Y OR N)"; Q$
  30. 300  IF Q$="Y"THEN INPUT"STRIP THICKNESS IN INCHES";T
  31. 310  GOSUB 450
  32. 320  IF DV=0 THEN PRINT: PRINT "WIDTH ="; W; "  HIGHT ="; H; "  Z0 ="; ZT
  33. 322  IF DV=2 THEN LPRINT: LPRINT "WIDTH ="; W; "  HIGHT ="; H; "  Z0 ="; ZT
  34. 330  IF DV=2 AND W$="Y" THEN LPRINT: LPRINT,"FREQ="F;TAB(20)"V.F.="VF;TAB(40)"WAVELENGTH INCHES="WL: GOTO 420
  35. 340  IF DV=2 THEN 420
  36. 350  PRINT: INPUT "DO YOU WANT TO CALC WAVELENGTH (Y OR N)"; W$
  37. 360  PRINT: IF W$<>"Y" THEN 390 ELSE INPUT "FREQ IN MHZ"; F
  38. 370  VF=1/SQR(EF): WL=VF*11808/F: PRINT 
  39. 380  PRINT "V.F. ="; VF, "WAVELENGTH INCHES ="; WL
  40. 390  PRINT: INPUT "WANT HARD COPY (Y/N)"; H$
  41. 400  IF H$<>"Y"THEN 420 ELSE DV=2
  42. 410  LPRINT:LPRINT,"MICROSTRIP CHARACTERISTICS":GOTO 320
  43. 420  DV=0:PRINT:INPUT"DO YOU WANT TO CONTINUE (Y OR N)";Q$:PRINT
  44. 430  IF Q$<>"Y" THEN END ELSE 230
  45. 440  REM **************** SUB #1 ***************
  46. 450  A=Z0/60*SQR((ER+1)/2)+(ER-1)/(ER+1)*(0.23+0.11/ER)
  47. 460  B=377*PI/(2*Z0*SQR(ER))
  48. 470  R=2*(B-1-LOG(2*B-1)+(ER-1)*(LOG(B-1)+0.39-0.61/ER)/(2*ER))/PI
  49. 480  IF R>2 THEN 490 ELSE R=8*EXP(A)/(EXP(2*A)-2)
  50. 490  IF A$="H" THEN H=W/R ELSE W=R*H
  51. 500  X=1/R: GOSUB 560: IF Q$<>"Y" THEN RETURN
  52. 510  IF R>0.16 THEN Q=2*H/T ELSE Q=4*PI*W/T
  53. 520  DR=T*(1+LOG(Q))/(PI*H): R=R-DR
  54. 530  IF A$="H" THEN H=W/R ELSE W=R*H
  55. 540  RETURN
  56. 550  REM ************** SUB #2 *******************
  57. 560  IF R<1 THEN 580 ELSE EF=(ER+1)/2+(ER-1)/(2*SQR(1+12*X))
  58. 570  ZT=120*PI/(SQR(EF)*(R+1.393+2*LOG(R+1.444)/3)): RETURN
  59. 580  EF=(ER+1)/2+(ER-1)/2*(1/SQR(1+12*X)+0.04*(1-R)^2)
  60. 590  ZT=60*LOG(8*X+R/4)/SQR(EF): RETURN
  61. 600  REM ***************** Z0 ANALYSIS ********************
  62. 610  INPUT "WHAT IS LINE WIDTH"; W
  63. 620  INPUT "WHAT IS BOARD HIGHT IN INCHES"; H
  64. 630  INPUT "WHAT IS BOARD DIELECTRIC CONSTANT"; ER: R=W/H
  65. 640  INPUT "WANT TO CONSIDER STRIP THICKNESS (Y OR N)"; Q$
  66. 650  IF Q$<>"Y" THEN 680 ELSE INPUT "STRIP THICKNESS IN IN."; T
  67. 660  IF R>0.16 THEN Q=2*H/T ELSE Q=4*PI*W/T
  68. 670  DR=T*(1+LOG(Q))/(PI*H): R=R-DR
  69. 680  X=1/R: GOSUB 560: PRINT "Z0 ="; ZT: GOTO 350
  70. 690  REM ***************** COUPLED MS ********************
  71. 700  DEF FNCH(X)=(EXP(X)+EXP(-X))/2
  72. 710  DEF FNAC(X)=LOG(X+SQR(X*X-1))
  73. 720  DEF FNG(Y)=FNCH(HP*Y)
  74. 730  DEF FNH(X,Y)=FNCH(PI*X+HP*Y)
  75. 740  PRINT: PRINT "WANT TO CALCULATE:"
  76. 750  PRINT TAB(15) "Zoe AND Zoo - (Z0)"
  77. 760  PRINT TAB(15) "WIDTH AND SPACING - (W)"
  78. 770  PRINT TAB(12) "OR HIGHT AND SPACING - (H)";: INPUT A$
  79. 780  PRINT: IF A$="Z0" THEN 1180 ELSE IF A$="W" THEN 800 
  80. 790  INPUT "WHAT IS LINE WIDTH"; W: GOTO 810
  81. 800  INPUT "WHAT IS BOARD HIGHT IN INCHES"; H
  82. 810  INPUT "WHAT IS BOARD DIELECTRIC CONSTANT"; ER
  83. 820  IF ER<=6 THEN K=4/(PI*(1+ER/2)) ELSE K=1/PI
  84. 830  INPUT "WHAT ARE THE DESIRED Zoe AND Zoo"; ZE, ZO
  85. 840  INPUT "WANT TO CONSIDER STRIP THICKNESS (Y OR N)"; Q$
  86. 850  IF Q$="Y"THEN INPUT"STRIP THICKNESS IN INCHES";T
  87. 860  Z0=ZE/2: GOSUB 450: RE=R: Z0=ZO/2: GOSUB 450: RO=R
  88. 870  G=(FNCH(HP*RE)+FNCH(HP*RO)-2)/(FNCH(HP*RO)-FNCH(HP*RE))
  89. 880  S1=FNAC(G)/HP: RP=FNCH(RE*HP): HC=(G+G*RP+RP-1)/2
  90. 890  W1=(FNAC(HC)-HP*S1)/PI
  91. 900  REM ************** SEARCH ************************
  92. 910  PRINT: PRINT "IN SEARCH": PRINT: I=0
  93. 920  G=FNG(S1)
  94. 930  HC=FNH(W1,S1):WE=FNAC((2*HC-G+1)/(G+1))/HP
  95. 940  WO=FNAC((2*HC-G-1)/(G-1))/HP+K*FNAC(1+2*(W1/S1))
  96. 950  DE=(WE-RE)/RE: DO=(WO-RO)/RO: I=I+1: IF I=100 THEN PRINT "DOES NOT CONVERG": GOTO 1030
  97. 960  IF DE>0.01 AND DO>0.01 THEN W1=W1-W1*(DO+DE): GOTO 930
  98. 970  IF DE<-0.01 AND DO<-0.01 THEN W1=W1-W1*(DO+DE): GOTO 930
  99. 980  IF DE>0.01 AND DO<-0.01 THEN S1=S1-S1*(DE-DO): GOTO 920
  100. 990  IF DE<-0.01 AND DO>0.01 THEN S1=S1+S1*(DO-DE): GOTO 920
  101. 1000  IF ABS(DE)<=0.01 AND ABS(DO)>0.01 THEN S1=S1+S1*DO: GOTO 920
  102. 1010  IF ABS(DO)<=0.01 AND ABS(DE)>0.01 THEN S1=S1-S1*DO: GOTO 920
  103. 1020  REM ************** FOUND *************************
  104. 1030  R=WE:GOSUB 490:TE=ZT*2:VT=EF:R=WO:GOSUB 490:OO=ZT*2:OT=EF
  105. 1040  R=W1: GOSUB 490: EF=SQR(VT*OT): S=S1*H
  106. 1050  IF DV=0 THEN PRINT:PRINT"WIDTH="W"  HIGHT="H"  SPACE="S"  Z0="ZT"  Zoe="TE"  Zoo="OO
  107. 1052  IF DV=2 THEN LPRINT:LPRINT"WIDTH="W"  HIGHT="H"  SPACE="S"  Z0="ZT"  Zoe="TE"  Zoo="OO
  108. 1060  IF DV=2 AND W$="Y" THEN LPRINT: LPRINT,"FREQ="F;TAB(20)"V.F.="VF;TAB(40)"WAVELENGTH INCHES="WL: GOTO 1150
  109. 1070  IF DV=2 THEN 1150
  110. 1080  PRINT: INPUT "DO YOU WANT TO CALC WAVELENGTH (Y OR N)"; W$
  111. 1090  PRINT: IF W$<>"Y" THEN 1120 ELSE INPUT "FREQ IN MHZ"; F
  112. 1100  VF=1/SQR(EF): WL=VF*11808/F: PRINT 
  113. 1110  PRINT "V.F. ="; VF, "WAVELENGTH INCHES ="; WL
  114. 1120  PRINT: INPUT "WANT HARD COPY (Y/N)"; H$
  115. 1130  IF H$<>"Y"THEN 1150 ELSE DV=2
  116. 1140  LPRINT:LPRINT,"COUPLED MICROSTRIP CHARACTERISTICS":GOTO 1050
  117. 1150  DV=0:PRINT:INPUT"DO YOU WANT TO CONTINUE (Y OR N)";Q$:PRINT
  118. 1160  IF Q$<>"Y" THEN END ELSE 210
  119. 1170  REM ************** COUPLED ANALYSIS *****************
  120. 1180  INPUT "WHAT IS LINE WIDTH"; W
  121. 1190  INPUT "WHAT IS LINE SPACING"; S
  122. 1200  INPUT "WHAT IS BOARD HIGHT IN INCHES"; H: RS=S/H
  123. 1210  INPUT "WHAT IS BOARD DIELECTRIC CONSTANT"; ER: RW=W/H
  124. 1220  IF ER<=6 THEN K=4/(PI*(1+ER/2)) ELSE K=1/PI
  125. 1230  INPUT "WANT TO CONSIDER STRIP THICKNESS (Y OR N)"; Q$
  126. 1240  IF Q$<>"Y" THEN 1270 ELSE INPUT "STRIP THICKNESS IN IN."; T
  127. 1250  IF RW>0.16 THEN Q=2*H/T ELSE Q=4*PI*W/T
  128. 1260  DR=T*(1+LOG(Q))/(PI*H): RW=RW-DR
  129. 1270  G=FNG(RS): HC=FNH(RW,RS):WE=FNAC((2*HC-G+1)/(G+1))/HP
  130. 1280  WO=FNAC((2*HC-G-1)/(G-1))/HP+K*FNAC(1+2*(RW/RS))
  131. 1290  R=WE:GOSUB 490:TE=ZT*2:VT=EF:R=WO:GOSUB 490:OO=ZT*2:OT=EF
  132. 1300  R=RW:GOSUB 490:EF=SQR(VT*OT):PRINT"Z0="ZT"  Zoe="TE"  Zoo="OO:GOTO 1080
  133.