home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / rf3 / filt-ele.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1986-06-07  |  3.4 KB  |  81 lines

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