'filtres.bas ' 26/03/1997 DECLARE SUB Lmaxi (Re!, DiamTotal!, DiamInterne!, Hauteur!, Sectionfil!, NbspMax!, Lmax!, LF!, RF!, Pmax!) DECLARE FUNCTION LMiliHenry! (a!, b!, c!, n!) DECLARE FUNCTION Nbspires% (Induc!, a!, b!, c!) DECLARE SUB VoiBobine () DECLARE SUB CalculeFTweter (freq!, Rh!, Ordre!, typ!, l!(), c!()) DECLARE SUB CalculeFBoomer (freq!, Rl!, Ordre!, typ!, l!(), c!()) DECLARE SUB VoirFiltre (Tit$, Ordre!, freq!, Rn!, l!(), c!()) DIM l(3), c(3) CONST Bessel = 1, ButterWorth = 2 CONST Cheybychev = 3, Linkwitz = 4 CLS 'VoiBobine 'a$ = INPUT$(1) Re = 7.3'ê Sectionfil = 1.5'1.6'75'2' 1.5' 2.5' 1.5' 2.5 DiamTotal = 12 ' 5.2 DiamInterne = 4 ' 2.4 Hauteur = 4' 2.4 FOR k = 1 TO 10 CLS Lmaxi Re, DiamTotal, DiamInterne, Hauteur, Sectionfil, NbspMax, Lmax, LF, RF, Pmax PRINT " BOBINE:" PRINT USING " Diam‚tre total = ##.# cm"; DiamTotal PRINT USING " Diam‚tre interne = ##.# cm"; DiamInterne PRINT USING " Hauteur = ##.# cm"; Hauteur PRINT " ----->" PRINT USING " a = ##.# cm"; aa PRINT USING " b = ##.# cm"; bb PRINT USING " c = ##.# cm"; bb PRINT "" PRINT USING " R‚sistance HP = ##.# ê"; Re PRINT USING " Section fil = #.## mm2"; Sectionfil PRINT "" PRINT " ----->" PRINT USING " Nombre de spires = ####"; NbspMax PRINT USING " Lmax = ###.# mH"; Lmax PRINT USING " Longueur fil = ### m"; LF PRINT USING " R‚sistance fil = ##.# ê"; RF PRINT USING " Puissance maxi = #### W"; Pmax a$ = INPUT$(1) DiamTotal = DiamTotal * .95 DiamInterne = DiamInterne * .95 Hauteur = Hauteur * .95 NEXT k END freq = 4000 Rh = 8 Ordre = 2'3'2'1 typ = Bessel' ButterWorth'Bessel CalculeFTweter freq, Rh, Ordre, typ, l(), c() VoirFiltre "TWETER", Ordre, freq, Rh, l(), c() freq = 200' 500'3000'4000 Rl = 8 CalculeFBoomer freq, Rl, Ordre, typ, l(), c() VoirFiltre "BOOMER", Ordre, freq, Rl, l(), c() END ' ' ' ' ' ' SUB CalculeFBoomer (freq, Rl, Ordre, typ, l(), c()) SELECT CASE Ordre CASE 1 c(0) = 0 l(0) = 1 l(1) = Rl / (6.28 * freq) CASE 2 l(0) = 1 c(0) = 1 SELECT CASE typ CASE Bessel c(1) = .0912 / (freq * Rl) l(1) = .2756 * Rl / freq CASE ButterWorth c(1) = .01125 / (freq * Rl) l(1) = .22251 * Rl / freq CASE Cheybychev c(1) = .1592 / (freq * Rl) l(1) = .1592 * Rl / freq CASE Linkwitz c(1) = .0796 / (freq * Rl) l(1) = .3183 * Rl / freq END SELECT CASE 3 l(0) = 2 c(0) = 1 SELECT CASE typ CASE Bessel c(1) = .1897 / (freq * Rl) l(1) = .3294 * Rl / freq l(2) = .06592 * Rl / freq CASE ButterWorth c(1) = .2212 / (freq * Rl) l(1) = .2387 * Rl / freq l(2) = .0796 * Rl / freq CASE ELSE l(0) = 0 c(0) = 0 END SELECT CASE ELSE l(0) = 0 c(0) = 0 END SELECT END SUB ' ' ' ' ' ' SUB CalculeFTweter (freq, Rh, Ordre, typ, l(), c()) SELECT CASE Ordre CASE 1 l(0) = 0 c(0) = 1 c(1) = .159 / (freq * Rh) CASE 2 l(0) = 1 c(0) = 1 SELECT CASE typ CASE Bessel c(1) = .0912 / (freq * Rh) l(1) = .2756 * Rh / freq CASE ButterWorth c(1) = .01125 / (freq * Rh) l(1) = .22251 * Rh / freq CASE Cheybychev c(1) = .1592 / (freq * Rh) l(1) = .1592 * Rh / freq CASE Linkwitz c(1) = .0796 / (freq * Rh) l(1) = .3183 * Rh / freq END SELECT CASE 3 l(0) = 1 c(0) = 2 SELECT CASE typ CASE Bessel c(1) = .007911 / (freq * Rh) c(2) = .03953 / (freq * Rh) l(1) = .1317 * Rh / freq CASE ButterWorth c(1) = .1061 / (freq * Rh) c(2) = .3183 / (freq * Rh) l(1) = .1194 * Rh / freq CASE ELSE l(0) = 0 c(0) = 0 END SELECT CASE ELSE l(0) = 0 c(0) = 0 END SELECT END SUB ' ' ' ' ' ' SUB Lmaxi (Re, DiamTotal, DiamInterne, Hauteur, Sectionfil, NbspMax, Lmax, LF, RF, Pmax) 're resistance du hp 'DiamTotal, DiamInterne, Hauteur en cm 'Sectionfil en mm2 'Lmax en milihenry SHARED aa, bb, cc pi = ATN(1) * 4 'Sectionfil = 2.5'mm2 DiamFil = .2 * SQR(Sectionfil / pi) 'en cm cc = Hauteur NbspriresCouche = INT(((DiamTotal - DiamInterne) / 2) / DiamFil) NbCouches = INT(cc / DiamFil) NbspMax = NbspriresCouche * NbCouches bb = NbCouches * DiamFil aa = DiamInterne / 2 + bb / 2 'Estimation longueur fil (LF) 'aa=diametre moyen d'une spire (en cim) LF = 2 * pi * (aa / 200) * NbspMax 'Estimation ristance du fil 'section du fil en mm2 smm2 = pi * (Sectionfil / 2) ^ 2 'Resistance pour 1 metre R1m = .01724 / smm2 RF = R1m * LF 'I max (4 amp‚re /mm2) Imax = smm2 * 4 Pmax = Re * Imax ^ 2 Lmax = LMiliHenry(aa, bb, cc, NbspMax) 'Lmax = 12 END SUB ' ' ' ' ' ' FUNCTION LMiliHenry (a, b, c, n) num = .315 * a ^ 2 * n ^ 2 denom = 6 * a + 9 * b + 10 * c LMiliHenry = num / denom / 1000 END FUNCTION ' ' ' ' ' ' FUNCTION Nbspires% (Induc, a, b, c) 'Induc en mili henry Imicroh = Induc * 1000 deltaMax = Imicroh num = Induc * 1000 * (6 * a + 9 * b + 10 * c) denom = .315 * a ^ 2 Nbspires% = INT(SQR(num / denom)) 'FOR n = 1 TO 230 'id = (.315 * a ^ 2 * n ^ 2) / (6 * a + 9 * b + 10 * c) 'delta = ABS(Imicroh - id) 'PRINT n, id, delta, deltaMax ''a$ = INPUT$(1) 'NEXT n END FUNCTION ' ' ' ' ' ' SUB VoiBobine DIM Bobine$(11) Bobine$(1) = "<----------- è TOTAL-------->" Bobine$(2) = " < è Int>:< b >" Bobine$(3) = "-----------:-------:----------- :" Bobine$(4) = "OOOOOOOOOOO: :OOOOOOOOOOO :" Bobine$(5) = "OOOOOOOOOOO: :OOOOOOOOOOO : Hauteur (c)" Bobine$(6) = "OOOOOOOOOOO: :OOOOOOOOOOO :" Bobine$(7) = "OOOOOOOOOOO: :OOOOOxOOOOO :" Bobine$(8) = "-----------:---x---:-----x----- :" Bobine$(9) = " : :" Bobine$(10) = " : :" Bobine$(11) = " :< a >:" PRINT : PRINT FOR i = 1 TO 11 PRINT " "; Bobine$(i) NEXT i END SUB ' ' ' ' ' ' SUB VoirFiltre (Tit$, Ordre, freq, Rn, l(), c()) PRINT PRINT " *** FILTRAGE "; Tit$; " ***" PRINT " Filtre d'ordre "; Ordre PRINT " Frequence de coupure = "; freq PRINT " Imp‚dance nominale = "; Rn PRINT IF (l(0) = 1) THEN PRINT USING " Une inductance de ##.## mh"; l(1) * 1000 ELSE IF (l(0) > 1) THEN PRINT USING " # inductances:"; l(0) FOR i = 1 TO l(0) PRINT USING " ##.## mh"; l(i) * 1000 NEXT i END IF END IF IF (c(0) = 1) THEN PRINT USING " Un condensateur de ###.## æf"; c(1) * 1000000 ELSE IF (c(0) > 1) THEN PRINT USING " # condensateurs:"; c(0) FOR i = 1 TO c(0) PRINT USING " ###.## æf"; c(i) * 1000000 NEXT i END IF END IF PRINT " ---------------------------------" END SUB