home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / design1 / ms-ibm.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1987-09-09  |  6.2 KB  |  138 lines

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