home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / design1 / filt-ele.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1979-12-31  |  3.3 KB  |  79 lines

  1. 10  PRINT: PRINT: PRINT "MODERN FILTER DESIGN PROGRAM": DIM TP(20)
  2. 20  PRINT: INPUT "LOW PASS (L), HIGH PASS (H), BAND PASS (B)"; Q$
  3. 30  INPUT "FREQUENCY IN HZ, KHZ OR MHZ"; A$: KF=1: P2=PI*2
  4. 40  IF A$="KHZ" THEN KF=1000 ELSE IF A$="MHZ" THEN KF=1E+06
  5. 50  IF Q$="L" OR Q$="H" THEN 60 ELSE IF Q$="B" THEN 120 ELSE 20
  6. 60  PRINT: INPUT "CUT OFF FREQ "; FC: FC=FC*KF
  7. 70  INPUT "STOP BAND FREQ"; FS: FS=FS*KF
  8. 80  INPUT "STOP BAND ATTENUATION IN DB"; AS
  9. 90  IF Q$="L" THEN NS=FS/FC ELSE NS=FC/FS
  10. 100  PRINT "NORMALIZED CUT OFF FREQ"; NS: GOTO 190
  11. 110  REM BANDPASS FILTER
  12. 120  PRINT: INPUT "CENTER FREQUENCY ="; F0: F0=F0*KF: W0=P2*F0
  13. 130  INPUT "BANDPASS WIDTH ="; FP: FP=FP*KF: WP=P2*FP
  14. 140  QL=F0/FP: INPUT "START OF STOP BAND ="; FS: FS=FS*KF
  15. 150  INPUT "STOP BAND ATTENUATION IN DB"; AS
  16. 160  NS=2*ABS(F0-FS)/FP
  17. 170  PRINT: PRINT "QL ="; QL, "NORM FREQ RATIO ="; NS
  18. 180  REM CALC OF # OF POLES
  19. 190  PRINT: INPUT "BUTTERWORTH (B) OR TCHEBYCHEFF (T)"; B$: N=0
  20. 200  IF B$="T" THEN 220 ELSE IF B$<>"B" THEN 190
  21. 210  N=N+1: AT=10*LOG(1+NS^(2*N))/LOG(10): IF AT>AS THEN 250 ELSE 210
  22. 220  INPUT "RIPPLE IN DB"; R: TP(0)=1: TP(1)=NS: RE=10^(R/10)-1
  23. 230  N=N+1: TP(N+1)=2*NS*TP(N)-TP(N-1)
  24. 240  AT=10*LOG(1+RE*TP(N+1)^2)/LOG(10): IF AT>AS THEN 250 ELSE 230
  25. 250  PRINT "NUMBER OF SECTION REQUIRED"; N: P=N: RP=R
  26. 260  PRINT: INPUT "WANT TO TRY DIFFERENT N (Y/N)"; D$
  27. 270  IF D$="Y" THEN INPUT "WANT TO TRY DIFFERENT ATTN (Y/N)"; A$ ELSE GOTO 300
  28. 280  IF A$="Y" THEN INPUT "NEW ATT IN DB"; AS: N=0: GOTO 200
  29. 290  INPUT "NEW N"; N: PRINT: P=N
  30. 300  REM LOAD BUTTERWORTH DATA
  31. 310  DIM B(10,5), T(7,5,5)
  32. 320  FOR N=1 TO 10: Q=(-1)^N: IF Q<0 THEN AB=INT(N/2)+1 ELSE AB=N/2
  33. 330  FOR I=1 TO AB: READ B(N,I): NEXT: NEXT
  34. 340  REM LOAD TCHEBYCHEFF DATA
  35. 350  FOR R=1 TO 7: FOR N=1 TO 5: FOR I=1 TO N
  36. 360  READ T(R,N,I): NEXT: NEXT: NEXT
  37. 370  IF B$="B" THEN 520
  38. 380  Q=(-1)^P: IF P>10 THEN PRINT "LARGEST VALUE 10": GOTO 20
  39. 390  IF Q>0 THEN P=P+1: PRINT "MUST USE ODD # FOR BAL TCH: P="; P
  40. 400  IF RP <=0.01 THEN R=1: RP=0.01: GOTO 480
  41. 410  IF RP <=0.1 THEN R=2: RP=0.1: GOTO 480
  42. 420  IF RP <=0.2 THEN R=3: RP=0.2: GOTO 480
  43. 430  IF RP <=0.5 THEN R=4: RP=0.5: GOTO 480
  44. 440  IF RP <=1 THEN R=5: RP=1: GOTO 480
  45. 450  IF RP <=2 THEN R=6: RP=2: GOTO 480
  46. 460  IF RP <=3 THEN R=7: RP=3: GOTO 480
  47. 470  PRINT "RIPPLE EXCEEDS MAXIMUN LIMIT": GOTO 20
  48. 480  PRINT: PRINT "# POLES"; "="; P, "RIPPLE"; "="; RP: PRINT
  49. 490  N=(P+1)/2: FOR J=1 TO P: IF J<=N THEN I=J ELSE I=P+1-J
  50. 500  PRINT"ELEMENT"; J; "="; T(R,N,I): NEXT: GOTO 780
  51. 510  REM BUTTERWORTH CALC
  52. 520  IF P>10 THEN PRINT "LARGEST VALUE 10": GOTO 20
  53. 530  Q=(-1)^P: IF Q<0 THEN AB=INT(P/2)+1 ELSE AB=P/2
  54. 540  FOR J=1 TO P: IF J<=AB THEN I=J ELSE I=P+1-J
  55. 550  PRINT "ELEMENT"; J; "="; B(P,I): NEXT
  56. 560  PRINT: INPUT "WANT TO CONTINUE (Y/N)"; Q$
  57. 570  END: REM DATA FOR BUTTERWORTH
  58. 580  DATA 2,1.414,1,2,.765,1.848,.618,1.618,2,.518,1.414,1.932
  59. 590  DATA .445,1.247,1.802,2,.390,1.111,1.663,1.962,.347,1
  60. 600  IF Q$="Y" THEN 260
  61. 610  DATA 1.532,1.879,2,.313,.908,1.414,1.782,1.975
  62. 620  REM DATA FOR TCHEBYCHEFF
  63. 630  DATA .096,.6291,.9702,.7563,1.3049,1.5773,.7969,1.394
  64. 640  DATA 1.7481,1.6331,.8144,1.427,1.8043,1.7125,1.9057
  65. 650  DATA .3052,1.0315,1.1474,1.1468,1.3712,1.9750,1.1811
  66. 660  DATA 1.4228,2.0966,1.5733,1.1956,1.4425,2.1345,1.6167
  67. 670  DATA 2.2053,.4342,1.2275,1.1525,1.3394,1.3370,2.1660
  68. 680  DATA 1.3722,1.3781,2.2756,1.5001,1.386,1.3938,2.3093
  69. 690  DATA 1.5340,2.3728,.6986,1.5963,1.0967,1.7058,1.2296
  70. 700  DATA 2.5408,1.7372,1.2583,2.6381,1.3444,1.7504,1.2690
  71. 710  DATA 2.6678,1.3673,2.7239,1.0177,2.0236,.9941,2.1349
  72. 720  DATA 1.0911,3.0009,2.1664,1.1116,3.0934,1.1736,2.1797
  73. 730  DATA 1.1192,3.1215,1.1897,3.1747,1.5296,2.7107,.8327
  74. 740  DATA 2.8310,.8985,3.7827,2.8655,.9119,3.8780,.9535,2.8790
  75. 750  DATA .9171,3.9056,.9643,3.9598,1.9953,3.3487,.7117,3.4817
  76. 760  DATA .7618,4.5381,3.5182,.7723,4.6386,.8039,3.5340,.7760
  77. 770  DATA 4.6692,.8118,4.7272
  78. 780  END
  79.