'**************************************************************************** '* Passive Filter Design Utility * '**************************************************************************** ' 12.09.1995: First sketch... designed as a tool for ' Only LPF's implemented yet... ' LC Butterworth only ' Source and Load impedance are supposed to be identical ' These filters are inherently symmetrical ' 30.08.1997: HPF 2-pole Pi and T added ' LPF 2-pole T config added ' HPF 3-pole Pi and T added ' LPF 3-pole T config added ' LPF 4-pole T config added ' HPF 4-pole Pi and T added ' LPF 5-pole T config added ' HPF 5-pole Pi and T added ' HPF 6, 7, 8 pole Pi and T Added ' LPF 6,7,8 T config added ' To be done: ' configuration in function of wanted impedance ' configuration for Rs <> Rl (Pi / T configs only) ' 02.10.1997: inserted in syllabus - link via 2032 ' 19.04.1999: adapted to Pentium II & Win98 ' 03.02.2001: Translated to Power Basic Console Compiler DECLARE SUB LPF2 () DECLARE SUB LPF3 () DECLARE SUB LPF4 () DECLARE SUB LPF5 () DECLARE SUB LPF6 () DECLARE SUB LPF7 () DECLARE SUB LPF8 () DECLARE SUB HPF2 () DECLARE SUB HPF3 () DECLARE SUB HPF4 () DECLARE SUB HPF5 () DECLARE SUB HPF6 () DECLARE SUB HPF7 () DECLARE SUB HPF8 () ' Filter-design utility ' Menu 1: FUNCTION PBMAIN () CLS PRINT "1.- LOW-PASS filters" PRINT "2.- HIGH-PASS filters" PRINT " Choose filter type ..."; DO k1$ = INKEY$ LOOP UNTIL k1$ = "1" OR k1$ = "2" PRINT k1$ PRINT "BUTTERWORTH CHARACTERISTICS:" PRINT " poles: attenuation: stopband: 1%-time: 0.1%-time: overshoot:" PRINT " 2-poles -40dB/decade -12dB @2fc 0.8s/Hz 1.7s/Hz 4%" PRINT " 3-poles -60dB/decade -18dB @2fc " PRINT " 4-poles -80dB/decade -24dB @2fc 1.0s/Hz 2.8s/Hz 11%" PRINT " 5-poles -100dB/decade -30dB @2fc " PRINT " 6-poles -120dB/decade -36dB @2fc 1.3/Hz 3.9s/Hz 14%" PRINT " 7-poles -140dB/decade -42dB @2fc " PRINT " 8-poles -160dB/decade -48dB @2fc 1.6s/Hz 5.1s/Hz 16%" PRINT " Choose number of poles..."; DO k2$ = INKEY$ LOOP UNTIL k2$ > "1" AND k2$ < "9" PRINT k2$ CLS 'SCREEN 12 'WIDTH 80, 60 selection% = (VAL(k1$)) * 10 + VAL(k2$) SELECT CASE selection% CASE 12: LPF2 CASE 13: LPF3 CASE 14: LPF4 CASE 15: LPF5: ' 5-pole low-pass CASE 16: LPF6: ' 6-pole low pass CASE 17: LPF7: ' 7-pole low pass CASE 18: LPF8: ' 8-pole low pass CASE 22: HPF2: '2-pole HPF (Pi and T) CASE 23: HPF3: ' 3pole HPF (Pi and T) CASE 24: HPF4 CASE 25: HPF5 CASE 26: HPF6 CASE 27: HPF7 CASE 28: HPF8 END SELECT DO LOOP UNTIL INKEY$ <> "" END FUNCTION SUB HPF2 LOCAL L$ LOCAL L1 AS SINGLE LOCAL L2 AS SINGLE LOCAL f AS SINGLE LOCAL loadimp AS SINGLE ' Butterworth 2-th order high pass filter ' Equal source and load impedance = R ' We gaan uit van een gegeven spoel ' en een gewenste frekwentie: CLS PRINT " 2-Pole Butterworth LC-High-Pass Filters" PRINT LINE INPUT "Inductance ? (in mH)"; L$ L1 = VAL(L$) * .001#: ' convert to Henry LINE INPUT "-3dB Cut-Off Frequency?"; freq$ f = VAL(freq$) w# = ATN(1) * 8 * f: ' omega: cirkelfrekwentie PRINT "Pi-configuration"; LoadImp = (L1 * w#) * 1.4142 PRINT "Source resistance = loadimpedance = "; INT(LoadImp); " Ohm" C2# = 1 / (LoadImp * w# * 1.4142) C2# = C2# * 1000000000: ' convert to nF PRINT "C2 ="; C2#; " nF" PRINT " ------- Rs------ C2 ------" PRINT " | |" PRINT " L1 Rl" PRINT " | |" PRINT " --------------------------" PRINT PRINT "T-configuration"; L2 = L1 LoadImp = L2 * w# * .7071 PRINT "Source resistance = loadimpedance = "; INT(LoadImp); " Ohm" C1# = 1 / (LoadImp * w# * 1.4142) C1# = C1# * 1000000000: ' convert to nF PRINT "C1 ="; C1#; " nF" PRINT " ------- Rs------ C1 --------" PRINT " | |" PRINT " L2 Rl" PRINT " | |" PRINT " ----------------------------" END SUB SUB HPF3 ' Butterworth 3-th order high pass filter ' Equal source and load impedance = R ' We gaan uit van een gegeven spoel ' en een gewenste frekwentie: CLS PRINT " 3-Pole Butterworth LC-High-Pass Filters" LINE INPUT "Inductance ? (in mH)"; L$ L! = VAL(L$) * .001#: ' convert to Henry LINE INPUT "-3dB Cut-Off Frequency?"; f$ w# = ATN(1) * 8 * VAL(f$) PRINT PRINT "Pi-Configuration:" L1! = L! L3! = L! LoadImp! = L1! * w# PRINT "Source resistance = loadimpedance = "; INT(LoadImp!); " Ohm" C2# = 1# / (LoadImp! * w# * 2) C2# = C2# * 1000000000: ' convert to nF PRINT "C2 ="; C2#; " nF" PRINT "L1 = L2 = "; L! * 1000; "mH" PRINT " ------- R ------ C2 ---------------------------" PRINT " | | |" PRINT " L1 L3 R" PRINT " | | |" PRINT " -----------------------------------------------" PRINT PRINT "T-Configuration:" L2! = L! LoadImp! = L2! * w# * 1.333333333333# PRINT "Source resistance = loadimpedance = "; INT(LoadImp!); " Ohm" C1# = 1# / (LoadImp! * w# * 1.5) C1# = C1# * 1000000000: ' convert to nF C3# = 1# / (LoadImp! * w# * .5) C3# = C3# * 1000000000 PRINT "C1 ="; C1#; " nF" PRINT "C3 ="; C3#; " nF" PRINT " ------- Rs ------ C1 --------------C3-----------" PRINT " | |" PRINT " L2 Rb" PRINT " | |" PRINT " ------------------------------------------------" END SUB SUB HPF4 ' Butterworth 4-th order high pass filter ' Equal source and load impedance = R ' We gaan uit van gegeven spoelen ' en een gewenste frekwentie: CLS PRINT " 4-Pole Butterworth LC-High-Pass Filters" LINE INPUT "Inductance 1 ? (in mH)"; L$ L! = VAL(L$) * .001#: ' convert to Henry LINE INPUT "-3dB Cut-Off Frequency?"; f$ w# = ATN(1) * 8 * VAL(f$) PRINT PRINT "Pi-configuration:" L1! = L! LoadImp! = L1! * w# * .7654 PRINT "Source resistance = loadimpedance = "; INT(LoadImp!); " Ohm" L3# = (LoadImp!) / (w# * 1.8478) PRINT "L3= Second inductor ="; L3# * 1000; " mH" C2# = 1# / (w# * 1.8478 * LoadImp!) C2# = C2# * 1000000000: ' convert to nF PRINT "C2 ="; C2#; " nF" C4# = 1# / (w# * LoadImp! * .7654) C4# = C4# * 1000000000 PRINT "C4 ="; C4#; " nF" PRINT " ------- R ------ C2 ------------ C4 -----------" PRINT " | | |" PRINT " L1 L3 R" PRINT " | | |" PRINT " -----------------------------------------------" PRINT PRINT "T-configuration:" L2! = L! LoadImp! = L2! * w# * 1.5772 PRINT "Source resistance = loadimpedance = "; INT(LoadImp!); " Ohm" L4# = (LoadImp!) / (w# * .3827) PRINT "L4= Second inductor ="; L4# * 1000; " mH" C1# = 1# / (w# * LoadImp! * 1.5307) C1# = C1# * 1000000000: ' convert to nF PRINT "C1 ="; C1#; " nF" C3# = 1# / (w# * LoadImp! * 1.0824) C3# = C3# * 1000000000 PRINT "C3 ="; C3#; " nF" PRINT " ----R--C1- ------ C3 --------------------------" PRINT " | | |" PRINT " L2 L4 R" PRINT " | | |" PRINT " -----------------------------------------------" PRINT END SUB SUB HPF5 ' Butterworth 5-th order high pass filter ' Equal source and load impedance = R ' We gaan uit van gegeven spoelen ' en een gewenste frekwentie: CLS PRINT " 5-Pole Butterworth LC-High-Pass Filters" LINE INPUT "-3dB Cut-Off Frequency?"; f$ w# = ATN(1) * 8 * VAL(f$) LINE INPUT "Inductance ? (in mH)"; L$ L! = VAL(L$) * .001#: ' convert to Henry PRINT PRINT "Pi-configuration:" L1! = L! L5! = L! LoadImp! = L1! * w# * .618 L3! = LoadImp! / (w# * 2) PRINT "Source resistance = loadimpedance = "; INT(LoadImp!); " Ohm" C2# = 1# / (w# * LoadImp! * 1.618) C2# = C2# * 1000000000: ' convert to nF C4# = 1# / (w# * LoadImp! * 1.618) C4# = C4# * 1000000000 PRINT "C2 = C4 ="; C2#; " nF" PRINT "L1 = L5 ="; L1! * 1000; " mH"; " L3 ="; L3! * 1000; " mH" PRINT " ------- R ------ C2 ------------ C4 -----------" PRINT " | | | |" PRINT " L1 L3 L5 R" PRINT " | | | |" PRINT " -----------------------------------------------" PRINT PRINT "T-configuration:" L2! = L! LoadImp! = L2! * w# * 1.6944 PRINT "Source resistance = loadimpedance = "; INT(LoadImp!); " Ohm" L4! = (LoadImp!) / (w# * .8944) C1# = 1# / (w# * LoadImp! * 1.5451) C1# = C1# * 1000000000: ' convert to nF PRINT "C1 ="; C1#; " nF" C3# = 1# / (w# * LoadImp! * 1.382) C3# = C3# * 1000000000 PRINT "C3 ="; C3#; " nF" C5# = 1# / (w# * LoadImp! * .309) C5# = C5# * 1000000000 PRINT "C5 ="; C5#; " nF" PRINT "L2 ="; L2! * 1000; "mH "; "L4 ="; L4! * 1000; "mH " PRINT " --R----C1 ------ C3 ------------ C5 -----------" PRINT " | | |" PRINT " L2 L4 R" PRINT " | | |" PRINT " -----------------------------------------------" END SUB SUB HPF6 ' Butterworth 6-th order high pass filter ' Equal source and load impedance = R ' We gaan uit van de grootste gegeven spoel ' en een gewenste frekwentie: CLS PRINT " 6-Pole Butterworth LC-High-Pass Filters" LINE INPUT "Largest inductance L? (in mH)"; L$ L! = VAL(L$) * .001#: ' convert to Henry LINE INPUT "-3dB Cut-Off Frequency?"; f$ w# = ATN(1) * 8 * VAL(f$) PRINT PRINT "Pi-Configuratie:" ' in this case the largest inductance is always L1 L1!= L! LoadImp! = L1!* w# * .5176 PRINT "Source resistance = loadimpedance = "; INT(LoadImp!); " Ohm" L3!= (LoadImp!) / (w# * 1.9319) L5! = (LoadImp!) / (w# * 1.4142) PRINT "L1="; L1!* 1000; " mH" PRINT "L3="; L3!* 1000; " mH" PRINT "L5 ="; L5! * 1000; " mH" C2# = 1000000000 / (w# * LoadImp! * 1.4142) C4# = 1000000000 / (w# * LoadImp! * 1.9319) C6# = 1000000000 / (w# * LoadImp! * .5176) PRINT "C2 ="; C2#; " nF" PRINT "C4 ="; C4#; " nF" PRINT "C6 ="; C6#; " nF" PRINT PRINT " ------- Rs------ C2 ------------ C4 -------C6----------" PRINT " | | | |" PRINT " L1! L3! L5 Rl" PRINT " | | | |" PRINT " -------------------------------------------------------" PRINT PRINT "T-Configuratie:" ' in this case the largest inductances are always L6 L6! = L! LoadImp! = L6! * w# * .2588 PRINT "Source resistance = loadimpedance = "; INT(LoadImp!); " Ohm" L4! = (LoadImp!) / (w# * 1.2016) L2! = (LoadImp!) / (w# * 1.7593) PRINT "L2 ="; L2! * 1000; " mH" PRINT "L4 ="; L4! * 1000; " mH" PRINT "L6 ="; L6! * 1000; " mH" C1# = (1000000000) / (w# * LoadImp! * 1.5529) C3# = (1000000000) / (w# * LoadImp! * 1.5529) C5# = (1000000000) / (w# * LoadImp! * .7579) PRINT "C1 ="; C1#; " nF" PRINT "C3 ="; C3#; " nF" PRINT "C5 ="; C5#; " nF" PRINT PRINT " --Rs--- C1------ C3 ------------ C5 -------------------" PRINT " | | | |" PRINT " L2 L4 L6 Rl" PRINT " | | | |" PRINT " -------------------------------------------------------" END SUB SUB HPF7 ' Butterworth 7-th order high pass filter ' Equal source and load impedance = R ' We gaan uit van de grootste gegeven spoel ' en een gewenste frekwentie: CLS PRINT " 7-Pole Butterworth LC-High-Pass Filters" LINE INPUT "Largest inductance ? (in mH)"; L$ L! = VAL(L$) * .001#: ' convert to Henry LINE INPUT "-3dB Cut-Off Frequency?"; f$ w# = ATN(1) * 8 * VAL(f$) PRINT PRINT "Pi-Configuration:" ' in this case L1=L7 is the largest coil L1!= L! L7! = L! LoadImp! = L1!* w# * .445 PRINT "Source resistance = loadimpedance = "; INT(LoadImp!); " Ohm" L1!= LoadImp! / (w# * .445) L3!= LoadImp! / (w# * 1.8019) L5! = LoadImp! / (w# * 1.8019) L7! = LoadImp! / (w# * .445) PRINT "L1!="; L1!* 1000; " mH" PRINT "L3!="; L3!* 1000; " mH" PRINT "L5! ="; L5! * 1000; " mH" PRINT "L7! ="; L7! * 1000; " mH" C2# = 1000000000 / (w# * LoadImp! * 1.247) C4# = 1000000000 / (w# * LoadImp! * 2) C6# = 1000000000 / (w# * LoadImp! * 1.247) PRINT "C2 ="; C2#; " nF" PRINT "C4 ="; C4#; " nF" PRINT "C6 ="; C6#; " nF" PRINT PRINT " ------- R ------ C2 ------------ C4 -------C6----------" PRINT " | | | | |" PRINT " L1! L3! L5! L7! Rb" PRINT " | | | | |" PRINT " -------------------------------------------------------" PRINT PRINT "T-Configuration:" ' in this case L6 is the largest coil L6!= L! LoadImp! = L6!* w# * .656 PRINT "Source resistance = loadimpedance = "; INT(LoadImp!); " Ohm" L2! = (LoadImp!) / (w# * 1.7988) L4! = (LoadImp!) / (w# * 1.3972) L6!= (LoadImp!) / (w# * .656) PRINT "L2 ="; L2! * 1000; " mH" PRINT "L4 ="; L4! * 1000; " mH" PRINT "L6 ="; L6!* 1000; " mH" C1# = 1000000000 / (w# * LoadImp! * 1.5576) C3# = 1000000000 / (w# * LoadImp! * 1.6588) C5# = 1000000000 / (w# * LoadImp! * 1.055) C7# = 1000000000 / (w# * LoadImp! * .2225) PRINT "C1 ="; C1#; " nF" PRINT "C3 ="; C3#; " nF" PRINT "C5 ="; C5#; " nF" PRINT "C7 ="; C7#; " nF" PRINT PRINT " --Rs--C1 ------ C3 ------------ C5 -------C7----------" PRINT " | | | |" PRINT " L2 L4 L6! Rl" PRINT " | | | |" PRINT " -------------------------------------------------------" END SUB SUB HPF8 ' Butterworth 8-th order high pass filter ' Equal source and load impedance = R ' We gaan uit van een eerste gegeven spoel ' en een gewenste frekwentie: CLS PRINT " 8-Pole Butterworth LC-High-Pass Filter" LINE INPUT "Largest inductance ? (in mH)"; L$ L! = VAL(L$) * .001#: ' convert to Henry LINE INPUT "-3dB Cut-Off Frequency?"; f$ w# = ATN(1) * 8 * VAL(f$) PRINT PRINT "Pi-Configuration:" ' L1!is now the largest coil L1!= L! LoadImp! = L1!* w# * .3902 PRINT "Source resistance = loadimpedance = "; INT(LoadImp!); " Ohm" L1!= LoadImp! / (w# * .3902) L3!= LoadImp! / (w# * 1.6629) L5! = LoadImp! / (w# * 1.9616) L7! = LoadImp! / (w# * 1.1111) PRINT "L1 ="; L1!* 1000; " mH" PRINT "L3 ="; L3!* 1000; " mH" PRINT "L5 ="; L5! * 1000; " mH" PRINT "L7 ="; L7! * 1000; " mH" C2# = 1000000000 / (w# * LoadImp! * 1.1111) C4# = 1000000000 / (w# * LoadImp! * 1.9616) C6# = 1000000000 / (w# * LoadImp! * 1.6629) C8# = 1000000000 / (w# * LoadImp! * 1.3902) PRINT "C2 ="; C2#; " nF" PRINT "C4 ="; C4#; " nF" PRINT "C6 ="; C6#; " nF" PRINT "C8 ="; C8#; " nF" PRINT PRINT " ------- R ------ C2 ------------ C4 -------C6------C8--" PRINT " | | | | |" PRINT " L1! L3! L5! L7! R" PRINT " | | | | |" PRINT " -------------------------------------------------------" PRINT PRINT "T-Configuration:" ' L8! is now the largest coil L8! = L! LoadImp! = L8! * w# * .1951 PRINT "Source resistance = loadimpedance = "; INT(LoadImp!); " Ohm" L2! = LoadImp! / (w# * 1.8246) L4! = LoadImp! / (w# * 1.5283) L6!= LoadImp! / (w# * .9371) L8! = LoadImp! / (w# * .1951) PRINT "L2 ="; L2! * 1000; " mH" PRINT "L4 ="; L4! * 1000; " mH" PRINT "L6 ="; L6!* 1000; " mH" PRINT "L8 ="; L8! * 1000; " mH" C1# = 1000000000 / (w# * LoadImp! * 1.5607) C3# = 1000000000 / (w# * LoadImp! * 1.7287) C5# = 1000000000 / (w# * LoadImp! * 1.2588) C7# = 1000000000 / (w# * LoadImp! * 1.5776) PRINT "C1 ="; C1#; " nF" PRINT "C3 ="; C3#; " nF" PRINT "C5 ="; C5#; " nF" PRINT "C7 ="; C7#; " nF" PRINT PRINT " --R----C1 ------ C3 ------------ C5 -------C7----------" PRINT " | | | | |" PRINT " L2 L4 L6! L8! Rl" PRINT " | | | | |" PRINT " -------------------------------------------------------" END SUB SUB LPF2 ' Butterworth 2-th order low pass filter ' Equal source and load impedance = R ' We gaan uit van een gegeven spoel ' en een gewenste frekwentie: CLS PRINT " 2-Pole Butterworth LC-Low-Pass Filters" PRINT LINE INPUT "Inductance ? (in mH)"; L$ L! = VAL(L$) * .001#: ' convert to Henry LINE INPUT "-3dB Cut-Off Frequency?"; f$ w# = ATN(1) * 8 * VAL(f$) PRINT PRINT "Pi-Configuration:"; LoadImp! = (L! * w#) / 1.4142 L2! = L! PRINT "Source resistance = loadimpedance = "; INT(LoadImp!); " Ohm" C1# = 1.4142 / (w# * LoadImp!) C1# = C1# * 1000000000: ' convert to nF PRINT "C1 ="; C1#; " nF" PRINT " ------- Rs------ L2 ------" PRINT " | |" PRINT " C1 Rl" PRINT " | |" PRINT " --------------------------" PRINT PRINT "T-Configuration:"; LoadImp! = (L! * w#) / 1.4142 PRINT "Source resistance = loadimpedance = "; INT(LoadImp!); " Ohm" L1!= L! C2# = .7071 / (w# * LoadImp!) C2# = C2# * 1000000000: ' convert to nF PRINT "C2 ="; C2#; " nF" PRINT " ------- Rs------ L1!---------------" PRINT " | |" PRINT " C2 Rl" PRINT " | |" PRINT " -----------------------------------" END SUB SUB LPF3 ' Butterworth 3-th order low pass filter ' Equal source and load impedance = R ' We gaan uit van een gegeven spoel ' en een gewenste frekwentie: CLS PRINT " 3-Pole Butterworth LC-Low-Pass Filters" LINE INPUT "Inductance ? (in mH)"; L$ L! = VAL(L$) * .001#: ' convert to Henry LINE INPUT "-3dB Cut-Off Frequency?"; f$ w# = ATN(1) * 8 * VAL(f$) PRINT PRINT "Pi-configuration:" L2! = L! LoadImp! = (L2! * w#) / 2! PRINT "Source resistance = loadimpedance = "; INT(LoadImp!); " Ohm" C1# = 1# / (w# * LoadImp!) C1# = C1# * 1000000000: ' convert to nF C3# = C1# PRINT "C1 = C3 ="; C1#; " nF" PRINT " ------- R ------ L2 ---------------------------" PRINT " | | |" PRINT " C1 C3 R" PRINT " | | |" PRINT " -----------------------------------------------" PRINT PRINT "T-configuration:" L1!= L! LoadImp! = (L1!* w#) / 1.5 PRINT "Source resistance = loadimpedance = "; INT(LoadImp!); " Ohm" C2# = 1.3333333333333# / (w# * LoadImp!) C2# = C2# * 1000000000: ' convert to nF L3!= (LoadImp! * .5) / w# PRINT "C2 ="; C2#; " nF" PRINT "L3 ="; L3!* 1000; "mH" PRINT " ------- R ------ L1!-------------L3-----------" PRINT " | |" PRINT " C2 R" PRINT " | |" PRINT " ----------------------------------------------" END SUB SUB LPF4 ' Butterworth 4-th order low pass filter ' Equal source and load impedance = R ' We gaan uit van gegeven spoelen ' en een gewenste frekwentie: CLS PRINT " 4-Pole Butterworth LC-Low-Pass Filters" LINE INPUT "Inductance 1 ? (in mH)"; L$ L! = VAL(L$) * .001#: ' convert to Henry LINE INPUT "-3dB Cut-Off Frequency?"; f$ w# = ATN(1) * 8 * VAL(f$) PRINT PRINT "Pi-configuration:" L2! = L! LoadImp! = L2! * w# / 1.8478 PRINT "Source resistance = loadimpedance = "; INT(LoadImp!); " Ohm" L4# = (LoadImp! * .7654) / w# PRINT "L4= Second inductor ="; L4# * 1000; "mH" C1# = .7654 / (w# * LoadImp!) C1# = C1# * 1000000000: ' convert to nF PRINT "C1 ="; C1#; " nF" C3# = 1.8478 / (w# * LoadImp!) C3# = C3# * 1000000000 PRINT "C3 ="; C3#; " nF" PRINT " ------- R ------ L2 ------------ L4 -----------" PRINT " | | |" PRINT " C1 C3 R" PRINT " | | |" PRINT " -----------------------------------------------" PRINT PRINT "T-configuration:" L1!= L! LoadImp! = L1!* w# / 1.5307 PRINT "Source resistance = loadimpedance = "; INT(LoadImp!); " Ohm" L3# = (LoadImp! * 1.0824) / w# PRINT "L3= Second inductor ="; L3# * 1000; " mH" C2# = 1.5772 / (w# * LoadImp!) C2# = C2# * 1000000000: ' convert to nF PRINT "C2 ="; C2#; " nF" C4# = .3827 / (w# * LoadImp!) C4# = C4# * 1000000000 PRINT "C4 ="; C4#; " nF" PRINT " ----R--L1- ------ L3!--------------------------" PRINT " | | |" PRINT " C2 C4 R" PRINT " | | |" PRINT " -----------------------------------------------" PRINT END SUB SUB LPF5 ' Butterworth 5-th order low pass filter ' Equal source and load impedance = R ' We gaan uit van gegeven spoelen ' en een gewenste frekwentie: CLS PRINT " 5-Pole Butterworth LC-Low-Pass Filters" LINE INPUT "-3dB Cut-Off Frequency?"; f$ w# = ATN(1) * 8 * VAL(f$) LINE INPUT "Inductance ? (in mH)"; L$ L! = VAL(L$) * .001#: ' convert to Henry PRINT "Pi-configuration:" L2! = L! L4! = L! LoadImp! = L2! * w# / 1.618 PRINT "Source resistance = loadimpedance = "; INT(LoadImp!); " Ohm" C1# = .618 / (w# * LoadImp!) C1# = C1# * 1000000000: ' convert to nF PRINT "C1 ="; C1#; " nF" C3# = 2# / (w# * LoadImp!) C3# = C3# * 1000000000 PRINT "C3 ="; C3#; " nF" PRINT "C5 ="; C1#; " nF" PRINT "L2 = L4 ="; L2! * 1000; " mH" PRINT " ------- R ------ L2 ------------ L4 -----------" PRINT " | | | |" PRINT " C1 C3 C5 R" PRINT " | | | |" PRINT " -----------------------------------------------" PRINT PRINT "T-configuration:" L1!= L! LoadImp! = L1!* w# / 1.5451 PRINT "Source resistance = loadimpedance = "; INT(LoadImp!); " Ohm" L3!= (LoadImp! * 1.382) / w# L5! = (LoadImp! * .309) / w# C2# = 1.6944 / (w# * LoadImp!) C2# = C2# * 1000000000: ' convert to nF PRINT "C2 ="; C2#; " nF" C4# = .8944 / (w# * LoadImp!) C4# = C4# * 1000000000 PRINT "C4 ="; C4#; " nF" PRINT "L1!="; L1!* 1000; "mH "; "L3!="; L3!* 1000; "mH "; "L5! ="; L5! * 1000; "mH" PRINT " --R----L1!------ L3!------------ L5! -----------" PRINT " | | |" PRINT " C2 C4 R" PRINT " | | |" PRINT " -----------------------------------------------" END SUB SUB LPF6 ' Butterworth 6-th order low pass filter ' Equal source and load impedance = R ' We gaan uit van een eerste gegeven spoel ' en een gewenste frekwentie: CLS PRINT " 6-Pole Butterworth LC-Low-Pass Filters" LINE INPUT "Largest inductance L? (in mH)"; L$ L! = VAL(L$) * .001#: ' convert to Henry LINE INPUT "-3dB Cut-Off Frequency?"; f$ w# = ATN(1) * 8 * VAL(f$) PRINT PRINT "Pi-Configuratie:" ' in this case the largest inductance is always L4 L4! = L! LoadImp! = (L4! * w#) / 1.9319 PRINT "Source resistance = loadimpedance = "; INT(LoadImp!); " Ohm" L2! = (LoadImp! * 1.4142) / (w#) L6!= (LoadImp! * .5176) / (w#) PRINT "L2 ="; L2! * 1000; " mH" PRINT "L4 ="; L4! * 1000; " mH" PRINT "L6 ="; L6!* 1000; " mH" C1# = .5176 / (w# * LoadImp!) C1# = C1# * 1000000000: ' convert to nF C3# = 1.9319 / (w# * LoadImp!) C3# = C3# * 1000000000 C5# = (1.4142 * 1000000000) / (w# * LoadImp!) PRINT "C1 ="; C1#; " nF" PRINT "C3 ="; C3#; " nF" PRINT "C5 ="; C5#; " nF" PRINT PRINT " ------- Rs------ L2 ------------ L4 -------L6----------" PRINT " | | | |" PRINT " C1 C3 C5 Rl" PRINT " | | | |" PRINT " -------------------------------------------------------" PRINT PRINT "T-Configuratie:" ' in this case the largest inductances are always L1!= L3 L1!= L! L3!= L! LoadImp! = (L1!* w#) / 1.5529 PRINT "Source resistance = loadimpedance = "; INT(LoadImp!); " Ohm" L5! = (LoadImp! * .7579) / (w#) PRINT "L1 ="; L1!* 1000; " mH" PRINT "L3 ="; L3!* 1000; " mH" PRINT "L5 ="; L5! * 1000; " mH" C2# = (1.7593 * 1000000000) / (w# * LoadImp!) C4# = (1.2016 * 1000000000) / (w# * LoadImp!) C6# = (.2588 * 1000000000) / (w# * LoadImp!) PRINT "C2 ="; C2#; " nF" PRINT "C4 ="; C4#; " nF" PRINT "C6 ="; C6#; " nF" PRINT PRINT " --Rs--- L1------ L3!------------ L5! -------------------" PRINT " | | | |" PRINT " C2 C4 C6 Rl" PRINT " | | | |" PRINT " -------------------------------------------------------" END SUB SUB LPF7 ' Butterworth 7-th order low pass filter ' Equal source and load impedance = R ' We gaan uit van de grootste gegeven spoel ' en een gewenste frekwentie: CLS PRINT " 7-Pole Butterworth LC-Low-Pass Filters" LINE INPUT "Largest inductance ? (in mH)"; L$ L! = VAL(L$) * .001#: ' convert to Henry LINE INPUT "-3dB Cut-Off Frequency?"; f$ w# = ATN(1) * 8 * VAL(f$) PRINT PRINT "Pi-Configuration:" ' in this case L4 is the largest coil L4! = L! LoadImp! = L4! * w# / 2 PRINT "Source resistance = loadimpedance = "; INT(LoadImp!); " Ohm" L2! = (LoadImp! * 1.247) / (w#) L4! = L! L6!= (LoadImp! * 1.247) / (w#) PRINT "L2 ="; L2! * 1000; " mH" PRINT "L4 ="; L4! * 1000; " mH" PRINT "L6 ="; L6!* 1000; " mH" C1# = .445 * 1000000000 / (w# * LoadImp!) C3# = 1.8019 * 1000000000 / (w# * LoadImp!) C5# = C3# C7# = C1# PRINT "C1 ="; C1#; " nF" PRINT "C3 ="; C3#; " nF" PRINT "C5 ="; C5#; " nF" PRINT "C7 ="; C7#; " nF" PRINT PRINT " ------- R ------ L2 ------------ L4 -------L6----------" PRINT " | | | | |" PRINT " C1 C3 C5 C7 R" PRINT " | | | | |" PRINT " -------------------------------------------------------" PRINT PRINT "T-Configuration:" ' in this case L3!is the largest coil L3!= L! LoadImp! = L3!* w# / 1.6588 PRINT "Source resistance = loadimpedance = "; INT(LoadImp!); " Ohm" L1!= (LoadImp! * 1.5576) / (w#) L3!= (LoadImp! * 1.6588) / (w#) L5! = (LoadImp! * 1.055) / (w#) L7! = (LoadImp! * .2225) / (w#) PRINT "L1 ="; L1!* 1000; " mH" PRINT "L3 ="; L3!* 1000; " mH" PRINT "L5 ="; L5! * 1000; " mH" PRINT "L7 ="; L7! * 1000; " mH" C2# = 1.7988 * 1000000000 / (w# * LoadImp!) C4# = 1.3972 * 1000000000 / (w# * LoadImp!) C6# = .656 * 1000000000 / (w# * LoadImp!) PRINT "C2 ="; C2#; " nF" PRINT "C4 ="; C4#; " nF" PRINT "C6 ="; C6#; " nF" PRINT PRINT " --Rs--L1!------ L3!------------ L5! -------L7----------" PRINT " | | | |" PRINT " C2 C4 C6 Rl" PRINT " | | | |" PRINT " -------------------------------------------------------" END SUB SUB LPF8 ' Butterworth 8-th order low pass filter ' Equal source and load impedance = R ' We gaan uit van een eerste gegeven spoel ' en een gewenste frekwentie: CLS PRINT " 8-Pole Butterworth LC-Low-Pass Filter" LINE INPUT "Largest inductance ? (in mH)"; L$ L! = VAL(L$) * .001#: ' convert to Henry LINE INPUT "-3dB Cut-Off Frequency?"; f$ w# = ATN(1) * 8 * VAL(f$) PRINT PRINT "Pi-Configuration:" ' L4 is now the largest coil L4! = L! LoadImp! = L4! * w# / 1.9616 PRINT "Source resistance = loadimpedance = "; INT(LoadImp!); " Ohm" L2! = LoadImp! * 1.1111 / (w#) L4! = LoadImp! * 1.9616 / (w#) L6!= LoadImp! * 1.6629 / (w#) L8! = LoadImp! * .3902 / (w#) PRINT "L2 ="; L2! * 1000; " mH" PRINT "L4 ="; L4! * 1000; " mH" PRINT "L6 ="; L6!* 1000; " mH" PRINT "L8 ="; L8! * 1000; " mH" C1# = .3902 * 1000000000 / (w# * LoadImp!) C3# = 1.6629 * 1000000000 / (w# * LoadImp!) C5# = 1.9616 * 1000000000 / (w# * LoadImp!) C7# = 1.1111 * 1000000000 / (w# * LoadImp!) PRINT "C1 ="; C1#; " nF" PRINT "C3 ="; C3#; " nF" PRINT "C5 ="; C5#; " nF" PRINT "C7 ="; C7#; " nF" PRINT PRINT " ------- R ------ L2 ------------ L4 -------L6------L8--" PRINT " | | | | |" PRINT " C1 C3 C5 C7 R" PRINT " | | | | |" PRINT " -------------------------------------------------------" PRINT PRINT "T-Configuration:" ' L3!is now the largest coil L3!= L! LoadImp! = L3!* w# / 1.7287 PRINT "Source resistance = loadimpedance = "; INT(LoadImp!); " Ohm" L1!= LoadImp! * 1.5607 / (w#) L3!= LoadImp! * 1.7287 / (w#) L5! = LoadImp! * 1.2588 / (w#) L7! = LoadImp! * .5776 / (w#) PRINT "L1 ="; L1!* 1000; " mH" PRINT "L3 ="; L3!* 1000; " mH" PRINT "L5 ="; L5! * 1000; " mH" PRINT "L7 ="; L7! * 1000; " mH" C2# = 1.8246 * 1000000000 / (w# * LoadImp!) C4# = 1.5283 * 1000000000 / (w# * LoadImp!) C6# = 1.9371 * 1000000000 / (w# * LoadImp!) C8# = 1.1951 * 1000000000 / (w# * LoadImp!) PRINT "C2 ="; C2#; " nF" PRINT "C4 ="; C4#; " nF" PRINT "C6 ="; C6#; " nF" PRINT "C8 ="; C8#; " nF" PRINT PRINT " --R----L1!------ L3!------------ L5! -------L7----------" PRINT " | | | | |" PRINT " C2 C4 C6 C8 Rl" PRINT " | | | | |" PRINT " -------------------------------------------------------" END SUB