home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / design5 / combline.asc < prev    next >
Text File  |  1986-10-20  |  6KB  |  110 lines

  1. 100 CLS :KEY OFF :REM "COMBLINE"
  2. 110 PRINT TAB(23);"**** COMBLINE FILTER DESIGN ****" :PRINT
  3. 120 REM H.HOWE -1974 & J.CROMPTON FILES -1984 & V.HEESEN -1985
  4. 130 PRINT "THIS PROGRAM COMPUTES THE NORMALIZED BUTTERWORTH or CHEBYSHEV";
  5. 140 PRINT " ELEMENT VALUES" :PRINT :PRINT "g0, g1, g3, etc.  ";
  6. 150 PRINT "STYLE: CAPACITIVE-TAPPED,WITH EQUAL (IN/OUT) TERMINATIONS."
  7. 160 PRINT :PRINT "NOTE: RESONATOR LENGTH MUST BE LONGER THAN THE TUNING STUB."
  8. 170 DIM G(25),AA(25),B(25),C(10),Z(10),ZO(10,10),ZE(10,10),A(10,10)
  9. 180 PRINT :PRINT :BEEP :PRINT "ENTER: TYPE CAPACITOR OR STUB LOADED  (C/S)"
  10. 190 C$=INKEY$ :IF C$="" THEN 190
  11. 200 IF C$<>"C" AND C$<>"S" THEN 190
  12. 210 PI=4*ATN(1) :DR=PI/180
  13. 220 PRINT :BEEP :INPUT "       NUMBER OF FILTER SECTIONS";N
  14. 230 PRINT :BEEP :INPUT "       PASSBAND RIPPLE (DB) ";R
  15. 240 PRINT :B$="## = #.#####"
  16. 250 IF R=0 THEN 390
  17. 260 P=N :Q=(-1)^P :IF Q<=0 THEN 290
  18. 270 PRINT "NOTE:  CHEBYSHEV designs require an ODD number of sections!!!"
  19. 280 GOTO 220
  20. 290 R1=R/17.37 :B1=LOG((EXP(R1)+EXP(-R1))/(EXP(R1)-EXP(-R1)))
  21. 300 C1=(EXP(B1/(2*N))-EXP(-B1/(2*N)))/2
  22. 310 FOR K=1 TO N
  23. 320 AA(K)=SIN((((2*K)-1)*PI)/(2*N))
  24. 330 B(K)=((C1)^2)+(1-COS((2*K*PI)/N))/2 :NEXT K
  25. 340 G(0)=1 :G(1)=(2*AA(1))/C1 :FOR K=2 TO N
  26. 350 G(K)=(4*(AA(K-1))*AA(K))/(B(K-1)*G(K-1)) :NEXT K
  27. 360 IF INT(N/2)=N/2 THEN 380
  28. 370 G(N+1)=1 :GOTO 410
  29. 380 G(N+1)=((EXP(B1/4)+EXP(-B1/4))/(EXP(B1/4)-EXP(-B1/4)))^2 :GOTO 410
  30. 390 G(0)=1 :G(N+1)=1 :FOR K=1 TO N
  31. 400 G(K)=2*SIN((((2*K)-1)*PI)/(2*N)) :NEXT K
  32. 410 FOR K=0 TO (N+1)
  33. 420 PRINT TAB(8);"g"; :PRINT USING B$;K,G(K) :NEXT K
  34. 430 PRINT :BEEP :INPUT "ENTER: CENTER FREQUENCY (Mhz)";FO :FO=FO*10^6
  35. 440 PRINT :BEEP :INPUT "       FACTIONAL BANDWIDTH (%)";Q :Q=Q/100
  36. 450 PRINT :BEEP :INPUT "       TERMINAL ZO (ohms)";RT :WO=2*PI*FO
  37. 460 PRINT :BEEP :INPUT "       UNMATCHED Z (ohms)";R
  38. 470 PRINT :BEEP :INPUT "       RESONATOR LENGTH   (degrees)";AR
  39. 480 IF C$="C" THEN 490 ELSE 500
  40. 490 PRINT :PRINT "       TUNING STUB LENGTH (degrees)  45" :AS=45 :GOTO 510
  41. 500 PRINT :BEEP :INPUT "       TUNING STUB LENGTH (degrees)";AS
  42. 510 IF AS=>AR THEN RUN
  43. 520 LR=AR*DR :LS=AS*DR :G=1/R
  44. 530 TR=SIN(LR)/COS(LR) :TS=SIN(LS)/COS(LS) :B=G*SQR(R/RT-1)
  45. 540 IF C$<>"C" THEN 550 :LF=2*LR/SIN(2*LR)+1 :GOTO 560
  46. 550 LF=2*LR/SIN(2*LR)+2*LS/SIN(2*LS)
  47. 560 GX=Q*R/(G(0)*G(1)*2) :K=B*GX*LF*TS/(1-B*GX*2*LR/SIN(2*LR))
  48. 570 Z(1)=K/B :Z(N)=Z(1) :C=1/(1+K/TS) :C(1)=B/(K*WO) :C(N)=C(1)
  49. 580 IF C$="C" THEN LC=2*LR/SIN(2*LR)+C ELSE LC=2*LR/SIN(2*LR)+C*2*LS/SIN(2*LS)
  50. 590 A(1,2)=Q*SQR(LF*LC)/(2*SQR(G(1)*G(2))) :A(N-1,N)=A(1,2)
  51. 600 ZR=GX*LC/(TR*(1-A(1,2)^2)) :PRINT :PRINT "RESONATOR Z=";INT(ZR*10)/10
  52. 610 IF N<=3 THEN 670
  53. 620 FOR I=1 TO 6 :FOR J=2 TO N-2 :ZT(J)=Z(J)
  54. 630 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)))
  55. 640 Z(J)=ZR*TS*TR*(1-A(J-1,J)^2-A(J,J+1)^2) :C(J)=1/(WO*Z(J)) :NEXT J :NEXT I
  56. 650 FOR J=2 TO N-2
  57. 660 IF ABS((ZT(J)-Z(J))/Z(J))>.01 THEN 1180 ELSE NEXT J
  58. 670 IF N=2 THEN 680 ELSE J=N-1 :Z(J)=ZR*TS*TR*(1-A(J-1,J)^2-A(J,J+1)^2)
  59. 680 C(J)=1/(WO*Z(J)) :IF C$="C" THEN 740
  60. 690 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))
  61. 700 PRINT :PRINT "N";J;TAB(6);"Z STUB";INT(Z(J)*10)/10;TAB(22);
  62. 710 PRINT "; ZO EVEN (";J;J+1;")";INT(ZE(J,J+1)*10)/10;TAB(49);
  63. 720 PRINT "; ZO ODD (";J;J+1;")";INT(ZO(J,J+1)*10)/10 :NEXT J
  64. 730 J=N :PRINT :PRINT "N";J;TAB(6);"Z STUB";INT(Z(J)*10)/10; :GOTO 790
  65. 740 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))
  66. 750 PRINT :PRINT "N";J;TAB(6);"Loading CAP.=";INT(C(J)*10^12*100)/100;"pf";
  67. 760 PRINT TAB(28);"; ZO EVEN (";J;J+1;")";INT(ZE(J,J+1)*10)/10;TAB(53);
  68. 770 PRINT "; ZO ODD (";J;J+1;")";INT(ZO(J,J+1)*10)/10 :NEXT J
  69. 780 J=N :PRINT :PRINT "N";J;TAB(6);"Loading CAP.=";INT(C(J)*10^12*100)/100;"pf";
  70. 790 CG=G/(RT*B*FO)
  71. 800 PRINT TAB(28);"; Coupling Capacitors=";INT(CG*10^12*100)/100;"pf"
  72. 810 PRINT :BEEP :PRINT "PRESS";TAB(10);"TO CHANGE:" :PRINT
  73. 820 PRINT "(N)";TAB(10);"NOTHING" :PRINT "(Z)";TAB(10);"UNMATCHED Z"
  74. 830 PRINT "(R)";TAB(10);"RESONATOR LENGTH" :PRINT "(S)";TAB(10);"STUB LENGTH"
  75. 840 E$=INKEY$ :IF E$="" THEN 840
  76. 850 IF E$="N" THEN 900
  77. 860 IF E$="Z" THEN INPUT "ENTER NEW UNMATCHED Z ";R :GOTO 520
  78. 870 IF E$="R" THEN INPUT "ENTER NEW RESONATOR LENGTH (DEGREES) ";AR :GOTO 520
  79. 880 IF E$="S" AND C$="C" THEN 810
  80. 890 IF E$="S" THEN INPUT "ENTER NEW STUB LENGTH (DEGREES);AS :GOTO 270
  81. 900 PRINT :BEEP :PRINT "HARD COPY REQUIRED (Y/N) ?"
  82. 910 P$=INKEY$ :IF P$="" THEN 910
  83. 920 IF P$<>"Y" THEN PRINT :BEEP :PRINT "CONTINUE (Y/N) ?"
  84. 930 C$=INKEY$ :IF C$="" THEN 930 ELSE IF C$="Y" THEN RUN ELSE END
  85. 940 LPRINT TAB(24);"*** COMBLINE FILTER DESIGN ***" :LPRINT
  86. 950 LPRINT "TYPE: CAPACITIVE-TAPPED,WITH EQUAL TERMINATIONS"
  87. 960 LPRINT "CAPACITOR OR STUB LOADED STYLE (C/S) =";C$;
  88. 970 LPRINT  "; NUMBER OF FILTER SECTIONS =";N
  89. 980 LPRINT "NORMALIZED LOW PASS PROTYPE ELEMENTS ARE:" :LPRINT
  90. 990 FOR I=0 TO N+1 :LPRINT G(I); :NEXT I :LPRINT :LPRINT
  91. 1000 LPRINT "CENTER FREQUENCY (Mhz) =";FO/10^6;
  92. 1010 LPRINT "; FACTIONAL BANDWIDTH (%) =";Q*100
  93. 1020 LPRINT "TERMINAL ZO (ohms) =";RT;
  94. 1030 LPRINT "; UNMATCHED Z (ohms) =";R
  95. 1040 LPRINT "RESONATOR LENGTH   (degrees) =";AR;
  96. 1050 LPRINT "; RESONATOR Z (ohms) =";INT(ZR*10)/10 :LPRINT :IF C$="C" THEN  1120
  97. 1060 LPRINT "TUNING STUB LENGTH (degrees) =";AS
  98. 1070 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))
  99. 1080 LPRINT "N";J;TAB(6);"Z STUB";INT(Z(J)*10)/10;TAB(28);
  100. 1090 LPRINT "; ZO EVEN (";J;J+1;")";INT(ZE(J,J+1)*10)/10;TAB(53);
  101. 1100 LPRINT "; ZO ODD (";J;J+1;")";INT(ZO(J,J+1)*10)/10 :NEXT J
  102. 1110 J=N :LPRINT "N";J;TAB(6);"Z STUB";INT(Z(J)*10)/10; :GOTO 1170
  103. 1120 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))
  104. 1130 LPRINT "N";J;TAB(6);"Loading CAP.=";INT(C(J)*10^12*100)/100;"pf";
  105. 1140 LPRINT TAB(28);"; ZO EVEN (";J;J+1;")";INT(ZE(J,J+1)*10)/10;TAB(53);
  106. 1150 LPRINT "; ZO ODD (";J;J+1;")";INT(ZO(J,J+1)*10)/10 :NEXT J
  107. 1160 J=N :LPRINT "N";J;TAB(6);"Loading CAP.=";INT(C(J)*10^12*100)/100;"pf";
  108. 1170 LPRINT TAB(28);"; Coupling Capacitors=";INT(CG*10^12*100)/100;"pf" :LPRINT
  109. 1180 PRINT :BEEP :PRINT "DATA ENTERY ERROR!!!" :GOTO 150
  110.