home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / design1 / comb.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1986-08-18  |  4.1 KB  |  76 lines

  1. 10  CLS: PRINT "COMBLINE FILTER DESIGN V1.1M (8/18/86)"
  2. 20  PRINT "      *********************************************
  3. 30  PRINT "      *                                           *
  4. 40  PRINT "      *  BY DR. ALLEN KATZ, CHAIRMAN              *
  5. 50  PRINT "      *  DEPT ELECTRONICS ENGINEERING TECHNOLOGY  *
  6. 60  PRINT "      *  TRENTON STATE COLLEGE, CN550             *
  7. 70  PRINT "      *  TRENTON, NEW JERSEY 8625                 *
  8. 80  PRINT "      *                                           *
  9. 90  PRINT "      *  THE AUTHOR RESERVES THE RIGHTS TO THIS   *
  10. 100  PRINT "      *  PROGRAM; HOWEVER, COPYING AND USE FOR    *
  11. 110  PRINT "      *  EDUCATIONAL PURPOSES IS ENCOURAGED.      *
  12. 120  PRINT "      *                                           *
  13. 130  PRINT "      *  PLEASE REPORT ANY ERRORS OR PROBLEMS     *
  14. 140  PRINT "      *  WITH THIS PROGRAM TO THE AUTHOR.         *
  15. 150  PRINT "      *  TEL (609) 771 2487                       *
  16. 160  PRINT "      *                                           *
  17. 170  PRINT "      *********************************************
  18. 210  PRINT" Calculates the demensions of band pass microstrip comb line filters.
  19. 220  PRINT" Normalized low pass prototype values for the desired filter required.
  20. 240  PRINT:PRINT "CAPACITIVE-TAPED EQUAL END SECTION CASE": PRINT
  21. 250  DIM G(10), C(10), Z(10), ZO(10,10), ZE(10,10), A(10,10): REM PRECISION 5
  22. 260  PRINT: INPUT "CAPACITOR OR STUB LOADED CASE (C/S)"; C$
  23. 270  PRINT: INPUT "NUMBER OF FILTER SECTIONS"; N: PI=4*ATN(1): DR=PI/180
  24. 280  PRINT: PRINT "LOW PASS PROTOTYPE ELEMENTS:"
  25. 290  FOR I=0 TO N+1: PRINT "G("; I; ") ";: INPUT G(I): NEXT
  26. 300  PRINT: INPUT "FILTER CENTER FREQ IN MHZ AND FRACTIONAL BW"; F0, Q: W0=F0*2*PI*1E+06
  27. 310  INPUT "TERMINAL Z0 AND UNMATCHED Z"; RT, R
  28. 320  INPUT "RESONATOR LENGTH IN DEGREES"; AR
  29. 330  IF C$="C" THEN AS=45: GOTO 350
  30. 340  INPUT "TUNING STUB LENGTH IN DEGREES"; AS
  31. 350  LR=AR*DR: LS=AS*DR: G=1/R
  32. 360  TR=SIN(LR)/COS(LR): TS=SIN(LS)/COS(LS): PRINT
  33. 370  IF C$="C" THEN LF=2*LR/SIN(2*LR)+1: B=G*SQR(R/RT-1): GOTO 390
  34. 380  LF=2*LR/SIN(2*LR)+2*LS/SIN(2*LS): B=G*SQR(R/RT-1)
  35. 390  GX=Q*R/(G(0)*G(1)*2): K=B*GX*LF*TS/(1-B*GX*2*LR/SIN(2*LR))
  36. 400  Z(1)=K/B: Z(N)=Z(1): C=1/(1+K/TS): C(1)=B/(K*W0): C(N)=C(1)
  37. 410  IF C$="C" THEN LC=2*LR/SIN(2*LR)+C ELSE LC=2*LR/SIN(2*LR)+C*2*LS/SIN(2*LS)
  38. 420  A(1,2)=Q*SQR(LF*LC)/(2*SQR(G(1)*G(2))): A(N-1,N)=A(1,2)
  39. 430  ZR=GX*LC/(TR*(1-A(1,2)^2)): PRINT "RESONATOR Z =", ZR: PRINT
  40. 440  IF N<=3 THEN 490 ELSE FOR I=1 TO 6: FOR J=2 TO N-2: ZT(J)=Z(J)
  41. 450  A(J,J+1)=Q*LF*(1+(A(J-1,J)^2+A(J+1,J+2)^2)/2)/(2*SQR(G(J)*G(J+1)))
  42. 460  Z(J)=ZR*TS*TR*(1-A(J-1,J)^2-A(J,J+1)^2): C(J)=1/(W0*Z(J)): NEXT: NEXT
  43. 470  FOR J=2 TO N-2
  44. 480  IF ABS((ZT(J)-Z(J))/Z(J))>0.01 THEN PRINT "CONV. ER": END ELSE NEXT
  45. 490  IF N=2 THEN 500 ELSE J=N-1: Z(J)=ZR*TS*TR*(1-A(J-1,J)^2-A(J,J+1)^2): C(J)=1/(W0*Z(J))
  46. 495  IF C$="C" THEN 542
  47. 500  FOR J=1 TO N-1: ZE(J,J+1)=ZR*(1+A(J,J+1)): ZO(J,J+1)=ZR*(1-A(J,J+1))
  48. 520  PRINT "N"; J; TAB(6); "Z STUB"; Z(J); TAB(22); "Z0 EVEN ("; J; J+1; ")"; ZE(J,J+1); TAB(49); "Z0 ODD ("; J; J+1; ")"; ZO(J,J+1): NEXT
  49. 530  J=N: PRINT "N"; J; TAB(6); "Z STUB"; Z(J): GOTO 560
  50. 540  PRINT "N"; J; TAB(6); "CAP"; C(J); TAB(22); "Z0 EVEN ("; J; J+1; ")"; ZE(J,J+1); TAB(49); "Z0 ODD ("; J; J+1; ")"; ZO(J,J+1): NEXT
  51. 541  GOTO 550
  52. 542  FOR J=1 TO N-1: ZE(J,J+1)=ZR*(1+A(J,J+1)): ZO(J,J+1)=ZR*(1-A(J,J+1))
  53. 543  PRINT "N"; J; TAB(6); "CAP"; C(J); TAB(22); "Z0 EVEN ("; J; J+1; ")"; ZE(J,J+1); TAB(49); "Z0 ODD ("; J; J+1; ")"; ZO(J,J+1): NEXT
  54. 550  J=N: PRINT "N"; J; TAB(6); "CAP"; C(J)
  55. 560  PRINT: CC=G/(RT*B*F0*1E+06): PRINT "COUPLING CAPACITORS"; CC
  56. 570  PRINT: PRINT "WANT TO CHANGE: NOTHING (N), UNMATCHED Z (Z)
  57. 580  PRINT "LENGTH RESONATOR (LR), LENGTH STUB (LS)";: INPUT Q$
  58. 590  IF Q$="N" THEN 640 ELSE IF Q$="Z" THEN INPUT "NEW Z"; R: GOTO 350
  59. 600  IF Q$="LR" THEN INPUT "NEW RESONATOR LENGTH IN DEG"; AR: GOTO 350
  60. 610  IF Q$="LS" AND C$="C" THEN 570
  61. 620  IF Q$="LS" THEN INPUT "NEW STUB LENGTH IN DEG"; AS: GOTO 350
  62. 630  IF Q$="END" THEN END ELSE 570
  63. 640  PRINT: INPUT "WANT HARD COPY (Y/N)"; Q$
  64. 650  IF Q$="N" THEN END ELSE LPRINT
  65. 660  LPRINT, "COMBLINE FILTER DESIGN": LPRINT
  66. 670  LPRINT, "CENTER FREQ"; F0, "BANDWIDTH"; Q*F0
  67. 680  LPRINT, "Z TERMINAL"; RT,"Z UNMATCHED"; R
  68. 690  LPRINT, "LENGTH RESONATOR"; LR/DR, "LENGTH STUB"; LS/DR
  69. 700  LPRINT, "RESONATOR Z=", ZR: LPRINT: FOR J=1 TO N-1
  70. 710  IF C$<>"C" THEN 740
  71. 720  LPRINT, "N"; J; TAB(6); "CAP"; C(J); TAB(22); "Z0 EVEN ("; J; J+1; ")"; ZE(J,J+1); TAB(49); "Z0 ODD ("; J; J+1; ")"; ZO(J,J+1): NEXT
  72. 730  J=N: LPRINT, "N"; J; TAB(6); "CAP"; C(J): GOTO 760
  73. 740  LPRINT, "N"; J; TAB(6); "Z STUB"; Z(J); TAB(22); "Z0 EVEN ("; J; J+1; ")"; ZE(J,J+1); TAB(49); "Z0 ODD ("; J; J+1; ")"; ZO(J,J+1): NEXT
  74. 750  J=N: LPRINT, "N"; J; TAB(6); "Z STUB"; Z(J)
  75. 760  LPRINT: LPRINT, "COUPLING CAPACITORS"; CC: GOTO 570
  76.