home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / design3 / idbpf.asc < prev    next >
Text File  |  1986-10-15  |  7KB  |  215 lines

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