home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / eepub02 / fil-bpid.bas < prev    next >
BASIC Source File  |  1979-12-31  |  6KB  |  209 lines

  1. 10 REM *********************************************
  2. 20 REM   DESIGNS INTERDIGITAL BPFs
  3. 30 REM *********************************************
  4. 35 REM revision to line 970 as suggested by Krain.  22 Jan 85
  5. 40  DEF FNRJ(TA,B,C,D)=(B*C-TA*D)/(C*C+D*D)
  6. 50 REM using equal diameter rods
  7. 60 REM g values based on ripple bw . q/coup on 3-bd
  8. 70 DIM G(200) , C(200) , RK(200) , AK(200) , FR(40) , ALOSS(40)
  9. 80  DIM A(200), B(200)
  10. 90 PI=3.14159265#
  11. 100 INPUT"# OF ELEMENT $ P-P RIPPLE IN PASSBAND (DB)";N,RIP
  12. 110 REM
  13. 120 INPUT"INPUT FILTER CENTER FREQ.(GHZ),BW(MHZ)&LOAD IMPEDENCE Z0";FZGC,BWMC,R
  14. 130 REM
  15. 140 PRINT"INPUT GROUND PLANE SPACING , ROD DIAMETER"
  16. 150 INPUT"& DISTANCE TO CENTER OF FIRST AND LAST ROD";H,D,E
  17. 160 REM
  18. 170 REM
  19. 180 INPUT"NO. OF FREQ. REJECTION PTS AND STEP SIZE (MHZ)";NFR,STP
  20. 190 FOR IP=-NFR/2 TO NFR/2
  21. 200     CONTER=CONTER+1
  22. 210     FR(CONTER)=FZGC+(STP*.001*IP)
  23. 220 NEXT IP
  24. 230 IDAT=1
  25. 240 GOTO 250
  26. 250 F1=FZGC-.0005*BWMC
  27. 260 F2=FZGC+.0005*BWMC
  28. 270 IF RIP>0 THEN GOTO 330
  29. 280 BW3GC=F2-F1
  30. 290 BWRGC=0
  31. 300 BW3=1
  32. 310 GOSUB 1960
  33. 320 GOTO 390
  34. 330 B=1/SQR(10^(.1*RIP)-1)
  35. 340 CA=LOG(B+SQR(B*B-1))/(N)
  36. 350 BW3=(EXP(CA)+EXP(-CA))/2
  37. 360 GOSUB 1740
  38. 370 BWRGC=F2-F1
  39. 380 BW3GC=BWRGC*BW3
  40. 390 REM
  41. 400 W=2*(F2-F1)/(F2+F1)
  42. 410 QF=FZGC/BW3GC
  43. 420 NFM=N-1
  44. 430 QWVL=11.8028/(4*FZGC)
  45. 440 FOR K=1 TO NFM
  46. 450     AK(K)=1/(BW3*SQR(G(K)*G(K+1)))
  47. 460     RK(K)=AK(K)/QF
  48. 470 NEXT K
  49. 480 AKO=G(1)*BW3
  50. 490 AK(N)=AKO
  51. 500 AK(N+1)=0
  52. 510 QS=G(1)*BW3*QF
  53. 520 CANH=(EXP(2*PI*E/H)-1)/(EXP(2*PI*E/H)+1)
  54. 530 ZM=59.9585*LOG(4*H/(PI*D))
  55. 540 ZE=59.9585*LOG(CANH*H*4/(PI*D))
  56. 550 RKM=RK(1)*SQR(ZM/ZE)
  57. 560 Z=PI*D/(2*H)
  58. 570 COTH=(EXP(Z)+1)/(EXP(Z)-1)
  59. 580 Y=PI*RKM/4
  60. 590 T=COTH^Y
  61. 600 C(1)=(H/PI)*LOG((T+1)/(T-1))
  62. 610 MFL=N-2
  63. 620 REM IF N-3<0 THEN AG=1 ELSE                                                                 IF N-3=0 THEN AG=2 ELSE AG=3
  64. 630 ON (2+SGN(N)*1) GOTO 690 , 690 , 640
  65. 640 FOR K=2 TO MFL
  66. 650     Y=PI*RK(K)/4
  67. 660     T=COTH^Y
  68. 670     C(K)=(H/PI)*LOG((T+1)/(T-1))
  69. 680 NEXT K
  70. 690 C(N-1)=C(1)
  71. 700 X=SQR(PI*R/(4*ZE*QS))
  72. 710 AQ=2*QWVL*ATN(X/SQR(1-X*X))/PI
  73. 720 QU=2200*H*SQR(FZGC)
  74. 730 SUMG=0
  75. 740 FOR J1=1 TO N
  76. 750     SUMG=SUMG+G(J1)
  77. 760 NEXT J1
  78. 770 BLOSS=4.34*FZGC*SUMG/(QU*(F2-F1))
  79. 780 DELAY=SUMG/(2*PI*(F2-F1))
  80. 790 IF RIP > 0 THEN GOTO 820
  81. 800 PRINT"DESIGN DATA FOR ";N;" POLE INTERDIGITAL FILTER. BUTTERWORTH RESPONSE"
  82. 810 GOTO 830
  83. 820 PRINT "DESIGN DATA FOR";N;"POLE INTERDIGITAL FILTER .BAND PASS RIPPLE";RIP;"DB"
  84. 830 PRINT"CENTER FREQ. ";FZGC ;"GHZ"
  85. 840 PRINT"CUTOFF FREQ. ";F1;" (GHZ) AND ";F2;"  GHZ"
  86. 850 PRINT"RIPPLE BW.  ";BWRGC;"GHZ"
  87. 860 PRINT"3 DB BW.    ";BW3GC;"GHZ"
  88. 870 PRINT"FRACTIONAL BW.";W
  89. 880 PRINT"FILTER Q  ";QF
  90. 890 PRINT"EST QU    ";QU
  91. 900 PRINT"LOSS BASED ON THIS QU  ";BLOSS;"  DB"
  92. 910 PRINT"DELAY AT BAND CENTER ";DELAY;"NANOSECONDS"
  93. 920 FOR JK=1 TO NFR
  94. 930    IF JK=1 THEN PRINT "FREQUENCY REJECTION INFORMATION "
  95. 940    NFN=ABS(2*(FR(JK)-FZGC)/(W*FZGC))
  96. 950    IF RIP >0 THEN GOTO 980
  97. 960    ALOSS(JK)=10*LOG(1+NFN^(2*N))/LOG(10)
  98. 970    GOTO 1020
  99. 980    IF NFN<1 THEN NFN=1
  100. 990    ANG=N*LOG(NFN+SQR(NFN*NFN-1))
  101. 1000    YAK=.5*(EXP(ANG)+EXP(-ANG))
  102. 1010    ALOSS(JK)=10*LOG(1+(10^(.1*RIP)-1)*YAK*YAK)/LOG(10)
  103. 1020    IF ALOSS(JK)>65 THEN ALOSS = 65 ELSE ALOSS = ALOSS(JK)
  104. 1030    FR=INT(FR(JK)*10000)/10000 : ALOS=INT(ALOSS(JK))
  105. 1040    PRINT TAB(INT(ALOSS))"*";TAB(66)FR;TAB(73)ALOS
  106. 1050 NEXT JK
  107. 1060 WO=2*PI*FZGC*1E+09
  108. 1070 F=D/H
  109. 1080 CF=(-.0000422+.0857397*F+.0067853*F*F-9.092165E-02*F^3+.169088*F^4)*PI*H*2.54
  110. 1090 REM
  111. 1100 WW=WO*1E-12
  112. 1110 B2=PI*AQ/(2*QWVL)
  113. 1120 GG=1/R
  114. 1130 BB=-COS(B2)/(ZE*SIN(B2))
  115. 1140 EL1=.8*QWVL
  116. 1150 ANG=EL1*PI/(2*QWVL)
  117. 1160 B1=ANG-B2
  118. 1170 YL=-COS(ANG)/(ZM*SIN(ANG))
  119. 1180 CP=WW*(CF+.17655*D*D/(QWVL-EL1))
  120. 1190 Y1=CP+YL
  121. 1200 EL2=.87*QWVL
  122. 1210 ANG=EL2*PI/(2*QWVL)
  123. 1220 B4=ANG-B2
  124. 1230 YL=-COS(ANG)/(ZM*SIN(ANG))
  125. 1240 CD=WW*(CF+.17655*D*D/(QWVL-EL2))
  126. 1250 Y2=CD+YL
  127. 1260 EL3=.95*QWVL
  128. 1270 ANG=EL3*PI/(2*QWVL)
  129. 1280 B5=ANG-B2
  130. 1290 YL=-COS(ANG)/(ZM*SIN(ANG))
  131. 1300 CQ=WW*(CF+.17655*D*D/(QWVL-EL3))
  132. 1310 Y3=CQ+YL
  133. 1320 ELEM=Y3*Y2*EL1/((Y1-Y2)*(Y1-Y3))+Y1*Y3*EL2/((Y2-Y1)*(Y2-Y3))+Y1*Y2*EL3/((Y3-Y1)*(Y3-Y2))
  134. 1330 TANN=SIN(B1)/COS(B1)
  135. 1340 YL=FNRJ(GG,BB+TANN/ZE,1-ZE*BB*TANN,ZE*GG*TANN)
  136. 1350 Y1=CP+YL
  137. 1360 TANN=SIN(B4)/COS(B4)
  138. 1370 YL=FNRJ(GG,BB+TANN/ZE,1-ZE*BB*TANN,ZE*GG*TANN)
  139. 1380 Y2=CD+YL
  140. 1390 TANN=SIN(B5)/COS(B5)
  141. 1400 YL=FNRJ(GG,BB+TANN/ZE,1-ZE*BB*TANN,ZE*GG*TANN)
  142. 1410 Y3=CQ+YL
  143. 1420 ELEQ=Y3*Y2*EL1/((Y1-Y2)*(Y1-Y3))+Y1*Y3*EL2/((Y2-Y1)*(Y2-Y3))+Y1*Y2*EL3/((Y3-Y1)*(Y3-Y2))
  144. 1430 REM
  145. 1440 PRINT"QUARTER WAVELENGTH =";QWVL ;"INCHES"
  146. 1450 PRINT"THE LENGTH OF INTERIOR ELEMENTS =";ELEM;" INCHES"
  147. 1460 PRINT"LENGTH OF END ELEMENTS =";ELEQ;" INCHES"
  148. 1470 PRINT"GROUND-PLANE SPACE =";H," INCHES "
  149. 1480 PRINT"ROD DIAMETER  =";D;" INCHES"
  150. 1490 PRINT"END PLATES";E;" INCHES FROM C/L OF END ROD "
  151. 1500 PRINT"TAP EXTERNAL LINES UP ";AQ;" INCHES FROM SHORTED END "
  152. 1510 PRINT"LINE IMPEDANCES: END ROD";ZE;" ,OTHER ";ZM;" , EXT. LINES ";R;"OHM"
  153. 1520 PRINT"DIMENSIONS"
  154. 1530 PRINT"EL. NO.       END TO C       C TO C      G(K)         Q/COUP"
  155. 1540 DOM=E
  156. 1550 GOO=1
  157. 1560 PRINT "0";TAB(41)GOO;TAB(55)AKO
  158. 1570 PRINT "1";TAB(16)E;TAB(41)G(1);TAB(55)AK(1)
  159. 1580 FOR K=1 TO NFM
  160. 1590    L=K+1
  161. 1600    PRINT TAB(28)C(K)
  162. 1610    DOM=DOM+C(K)
  163. 1620    PRINT L;TAB(16)DOM;TAB(41)G(L);TAB(55)AK(L)
  164. 1630 NEXT K
  165. 1640 LQ=N+1
  166. 1650 PRINT LQ;TAB(41)G(LQ)
  167. 1660 DOM=DOM+E
  168. 1670 PRINT TAB(16)DOM
  169. 1680 IF IDAT =1 THEN GOTO 2070
  170. 1690 REM
  171. 1700 REM
  172. 1710 REM DEFINE FUNCTION
  173. 1720 DEF FNRJ(TA,B,C,D)=(B*C-TA*D)/(C*C+D*D)
  174. 1730 END
  175. 1740 REM SUB CHEB
  176. 1750 REM
  177. 1760 C=2*RIP/17.37
  178. 1770 BETA=LOG((EXP(C)+1)/(EXP(C)-1))
  179. 1780 GAMMA=.5*(EXP(BETA/(2*N))-EXP(-BETA/(2*N)))
  180. 1790 FOR K=1 TO N
  181. 1800    A(K)=SIN(.5*(2*K-1)*PI/N)
  182. 1810    B(K)=GAMMA^2+SIN(K*PI/N)^2
  183. 1820 NEXT K
  184. 1830 G(1)=2*A(1)/GAMMA
  185. 1840 FOR K=2 TO N
  186. 1850    G(K)=4*A(K-1)*A(K)/(B(K-1)*G(K-1))
  187. 1860 NEXT K
  188. 1870 NN=N/2
  189. 1880 NNN=(N+1)/2
  190. 1890 REM IF NNN-NN<0 THEN AG1=1 ELSE                                                                  IF NNN-NN=0 THEN AG1=2 ELSE AG1=3
  191. 1900 ON (2+SGN(NNN-NN)*1) GOTO 1910,1910,1930
  192. 1910 G(N+1)=((EXP(BETA/2)+1)/(EXP(BETA/2)-1))^2
  193. 1920 RETURN
  194. 1930 G(N+1)=1
  195. 1940 RETURN
  196. 1950 END
  197. 1960 REM SUB FOR BUTT
  198. 1970 REM
  199. 1980 REM
  200. 1990 REM
  201. 2000 REM
  202. 2010 POV2=1.57079633#
  203. 2020 FOR K=1 TO N
  204. 2030    G(K)=2*SIN(POV2*(2*K-1)/N)
  205. 2040 NEXT K
  206. 2050 G(N+1)=1
  207. 2060 RETURN
  208. 2070 END
  209.