'Mybox.bas ' 27/03/1997 DECLARE FUNCTION MinVentDiam! (Xmax!, Dia!, Fb!, Nbp!) DECLARE FUNCTION LongueurTuyau! (dv!, Fb!, vb!, Nbp!) DECLARE FUNCTION Freqboite! (dv!, lv!, np, vb!) DECLARE SUB SealedBox (QTc!, Vas!, Fs!, Qts!, vb!, Fb!, F3!) DECLARE SUB PortFreqRep (Fs!, Qts!, Vas!, vb!, Fbdeb!, FbFin!, Fbinc!) CONST ecran = 1, imprimante = 2 OPEN "scrn:" FOR RANDOM AS #ecran OPEN "lpt1:" FOR OUTPUT AS #imprimante sortie = ecran 'sortie = imprimante CLS Fs = 28 Qts = .4 Vas = 210 vb = 180 Fbdeb = 26' 15' 27' 24' 15 FbFin = 31'40'32' 34' 40 Fbinc = 1' 5'1'2' 5 'PortFreqRep Fs, Qts, Vas, Vb, Fbdeb, FbFin, Fbinc 'END GOSUB BoxTune END INPUT " Qts du HP : "; Qts INPUT " Vas du HP : "; Vas INPUT " Fs du HP : "; Fs QTc = 1.05 SealedBox QTc, Vas, Fs, Qts, vb, Fb, F3 PRINT #sortie, QTc, vb, Fb, F3 PRINT #sortie, GOSUB Freqrep END GOSUB sealed END BoxTune: dv = 6.7 'diamŠtre en cm) vb = 140'5 'volume de la boite en litres np = 2 PRINT #sortie, USING " VB = ### litres"; vb PRINT #sortie, USING " DV = #.# cm"; dv PRINT #sortie, USING " NP = # event(s)"; np PRINT #sortie, "" FOR lv = 2 TO 15 STEP .1 Fb = Freqboite(dv, lv, np, vb) PRINT #sortie, USING " Lv=##.# Fb= ##.# hz"; lv; Fb IF (sortie = ecran) THEN a$ = INPUT$(1) NEXT lv PRINT #sortie, "" 'END vb = 180 Dia = 35 Fb = 32' 27 Nbp = 1 FOR Xmax = .5 TO 1 STEP .5 PRINT #sortie, USING " XMAX= #.# cm"; Xmax PRINT #sortie, USING " DIAM= ##.# cm"; Dia PRINT #sortie, USING " FB = ##.# hz"; Fb MV1 = MinVentDiam(Xmax, Dia, Fb, 1) MV2 = MinVentDiam(Xmax, Dia, Fb, 2) PRINT #sortie, USING " DIAMETRE MINI (1 PORT ) = ###.#"; MV1 PRINT #sortie, USING " DIAMETRE MINI (2 PORTS) = ###.#"; MV2 PRINT #sortie, "" NEXT Xmax PRINT #sortie, "" PRINT #sortie, "" PRINT #sortie, USING " 'Tuning' d'une boite de #### litres … ### HZ"; vb; Fb PRINT #sortie, " (dimensions en CM)" PRINT #sortie, "" PRINT #sortie, " DIAM. L(1 event) L(2 events)" FOR dv = 2.5 TO 15 STEP .05 L1 = LongueurTuyau(dv, Fb, vb, 1) l2 = LongueurTuyau(dv, Fb, vb, 2) PRINT #sortie, USING " ##.## ###.## ###.## "; dv; L1; l2 IF (sortie = ecran) THEN a$ = INPUT$(1) NEXT dv END Freqrep: FOR f = 10 TO 500 STEP 2 FR = (f / Fb) ^ 2 Dbmag = (10 * LOG(FR ^ 2 / ((FR - 1) ^ 2 + FR / QTc ^ 2))) / LOG10 PRINT #sortie, f, Dbmag a$ = INPUT$(1) NEXT f RETURN sealed: FOR QTc = .7 TO 2! STEP .05 SealedBox QTc, Vas, Fs, Qts, vb, Fb, F3 PRINT #sortie, QTc, vb, Fb, F3 a$ = INPUT$(1) NEXT QTc ' ' ' ' ' ' FUNCTION Freqboite (dv, lv, np, vb) 'dv:diam‚tre de l'‚vent en cm 'lv:longeur de l'‚vent en cm 'np : nombre d'‚vents 'Vb en litres CONST alpha = 23562.5 CONST k = .732 num = alpha * dv ^ 2 * np denom = vb * (lv + k * dv) Freqboite = SQR(num / denom) END FUNCTION ' ' ' ' ' ' FUNCTION LongueurTuyau (dv, Fb, vb, Nbp) CONST k = .732 LongueurTuyau = (23562.5 * dv ^ 2 * Nbp / (Fb ^ 2 * vb)) - (k * dv) END FUNCTION ' ' ' ' ' ' FUNCTION MinVentDiam (Xmax, Dia, Fb, Nbp) pi = ATN(1) * 4 Sd = pi * (Dia / 100) ^ 2 / 4 Vd = Sd * Xmax / 1000 MinVentDiam = 100 * (20.3 * (Vd ^ 2 / Fb) ^ .25) / Nbp ^ .5 END FUNCTION ' ' ' ' ' ' SUB PortFreqRep (Fs, Qts, Vas, vb, Fbdeb, FbFin, Fbinc) SHARED sortie CONST Ql = 7 alpha = Vas / vb fbsealed = SQR(alpha + 1) * Fs QTc = Qts * SQR(alpha + 1) GOSUB PortFreqRepTitres FOR f = 20 TO 150 STEP 1'2 PRINT #sortie, USING " : ### : "; f; FOR Fb = Fbdeb TO FbFin STEP Fbinc xFn2 = (f / Fs) ^ 2 xFn4 = xFn2 ^ 2 a = (Fb / Fs) ^ 2 B = a / Qts + Fb / (Fs * Ql) C = 1 + a + (Vas / vb) + Fb / (Fs * Qts * Ql) D = 1 / Qts + Fv / (Fs * Ql) Dbmag = 10 * LOG(xFn4 ^ 2 / ((xFn4 - C * xFn2 + a) ^ 2 + xFn2 * (D * xFn2 - B) ^ 2)) Dbmag = Dbmag / LOG(10) PRINT #sortie, USING "###.# : "; Dbmag; NEXT Fb FRsealed = (f / fbsealed) ^ 2 Dbmagsealed = (10 * LOG(FRsealed ^ 2 / ((FRsealed - 1) ^ 2 + FRsealed / QTc ^ 2))) / LOG(10) PRINT #sortie, USING " ###.#:"; Dbmagsealed IF (sortie = ecran) THEN a$ = INPUT$(1) NEXT f EXIT SUB PortFreqRepTitres: PRINT #sortie, " " PRINT #sortie, " " PRINT #sortie, " Fs = "; Fs PRINT #sortie, " Qts = "; Qts PRINT #sortie, " Vas = "; Vas PRINT #sortie, " Vb = "; vb PRINT #sortie, " " PRINT #sortie, " Fb (enceinte close) = "; fbsealed PRINT #sortie, " " PRINT #sortie, " :------:-"; FOR Fb = Fbdeb TO FbFin STEP Fbinc PRINT #sortie, "------:-"; NEXT Fb PRINT #sortie, "------:" PRINT #sortie, " : : "; FOR Fb = Fbdeb TO FbFin STEP Fbinc PRINT #sortie, USING " ## : "; Fb; NEXT Fb PRINT #sortie, " " PRINT #sortie, " :------:-"; FOR Fb = Fbdeb TO FbFin STEP Fbinc PRINT #sortie, "------:-"; NEXT Fb PRINT #sortie, "------:" RETURN END SUB ' ' ' ' ' ' SUB SealedBox (QTc, Vas, Fs, Qts, vb, Fb, F3) Qr = QTc / Qts Vr = Qr ^ 2 - 1 vb = Vas / Vr Fb = Qr * Fs F3 = Fb * ((1 / QTc ^ 2 - 2 + ((1 / QTc ^ 2 - 2) ^ 2 + 4) ^ .5) / 2) ^ .5 END SUB