Todo nivel de potencia acústica de precisión descansa en dos cosas que se miden antes de que llegue la máquina. Una cámara anecoica o semianecoica es un campo libre en la medida en que lo muestra su cualificación, y un método de comparación acierta en la medida en que acierta la potencia calibrada de su fuente sonora de referencia. ISO 26101 cualifica la cámara por la ley del cuadrado inverso, ISO 3745 somete esa cualificación a los criterios del método de precisión en su anexo A, que la modificación 1:2017 reescribió de arriba abajo para remitir a ISO 26101, e ISO 6926 dice qué debe cumplir una fuente sonora de referencia y cómo se calibra su potencia. Esta guía cubre los recorridos y las desviaciones de la ley del cuadrado inverso, cómo ajusta la biblioteca la intensidad de la fuente y el origen matemático, el veredicto del anexo A modificado sobre una cámara semianecoica sintética, y una fuente de referencia calibrada sobre la semiesfera de 2 m, juzgada frente al apartado 5 y entregada a un método de comparación. Las determinaciones en sí están en Potencia acústica por métodos de presión y en Potencia acústica en cámara reverberante.
1. La ley del cuadrado inverso a lo largo de un recorrido (ISO 26101)
Sección titulada «1. La ley del cuadrado inverso a lo largo de un recorrido (ISO 26101)»Una fuente pequeña en campo libre pierde 6 dB cada vez que se duplica la distancia. El método de la pérdida por divergencia del apartado 5.1 de ISO 26101 mide cuánto se aparta de eso una sala real: un micrófono se desplaza por recorridos rectos que se alejan de una fuente de ensayo, y en cada punto , a la distancia del origen matemático del recorrido, el nivel medido se compara con la estimación de la fórmula (2),
y la desviación de la fórmula (4) es . Si la fuente deriva más de 0,2 dB mientras se mide un recorrido (5.1.2.2 d)), un micrófono de control en una posición fija corrige cada lectura con la fórmula (1), . La sala queda cualificada hasta la mayor distancia a la que todas las desviaciones, en todos los recorridos y a todas las frecuencias, se mantienen dentro de los límites de la tabla A.1:
| Sala | Hasta 630 Hz | De 800 Hz a 5 000 Hz | Desde 6 300 Hz |
|---|---|---|---|
| Anecoica | ±1,5 dB | ±1,0 dB | ±1,5 dB |
| Semianecoica | ±2,5 dB | ±2,0 dB | ±3,0 dB |
El anexo A de ISO 26101 y el anexo A modificado de ISO 3745 imprimen las
mismas celdas. Un MicrophoneTraverse guarda un recorrido: los puntos como
(x, y, z) en el sistema de la sala, con z hacia arriba y el plano
reflectante de una cámara semianecoica en z = 0, los niveles con una columna
por frecuencia de ensayo y, si se quiere, las lecturas del micrófono de
control y el ruido de fondo. MicrophoneTraverse.along traza uno a lo largo
de una recta. Un campo de cuadrado inverso exacto es la primera forma
cerrada: queda cualificado hasta el final de todos los recorridos, con
igual al nivel a 1 m y ninguna desviación en ningún punto.
import numpy as npfrom phonometry import emission
d = np.arange(0.30, 3.0001, 0.05) # pasos de 5 cm de 0,3 m a 3 mexact = 90.0 - 20.0 * np.log10(d) # 90 dB a 1 m, sin reflexionespaths = [(1, 1, 1), (1, 1, 0.3), (0, 1, 0.5), (1, 0, 0.2), (-1, 0.5, 0.6)]traverses = [emission.MicrophoneTraverse.along(u, d, exact) for u in paths]fit = emission.inverse_square_law_deviations( traverses, frequencies_hz=[1000.0], room="anechoic")print(round(fit.maximum_qualified_radius_m, 2)) # 3.0 mprint(fit.source_strength_db[:, 0].round(2)) # [90. 90. 90. 90. 90.]print(fit.largest_deviation_db.round(3)) # [0.]La segunda forma cerrada es una sala con una reflexión conocida. Una pared totalmente reflectante 2,5 m por delante de la fuente, tomada como una imagen incoherente, suma al nivel a la distancia , y el recorrido está cualificado mientras la dispersión de ese exceso no pase del doble de la tolerancia: a 1 kHz en una cámara anecoica, 2 dB. Despejando , el límite cae en 2,187 m, y el último punto de una rejilla de 5 cm antes de él es 2,15 m.
wall = 2.5 # una pared totalmente reflectante a 2,5 md = np.arange(0.50, 2.4001, 0.05)excess = 10.0 * np.log10(1.0 + (d / (2.0 * wall - d)) ** 2)reflected = emission.MicrophoneTraverse.along( (1, 0, 0), d, 90.0 - 20.0 * np.log10(d) + excess)one = emission.inverse_square_law_deviations( [reflected], frequencies_hz=[1000.0], room="anechoic")print(round(float(one.traverse_radius_m[0, 0]), 2)) # 2.15 minside = d <= one.traverse_radius_m[0, 0]print(round(float(np.ptp(one.deviations_db[0][inside, 0])), 3)) # 1.903 dBprint(round(float(np.ptp(excess[inside])), 3)) # 1.903 dBprint(round(float(one.source_strength_db[0, 0]), 3)) # 91.005 dBprint(round(float(one.initial_source_strength_db[0, 0]), 3)) # 90.913 dBLas desviaciones se dispersan exactamente lo que añade la pared, 1,903 dB, y
el que ajusta la biblioteca, 91,005 dB, no es el valor inicial de la
fórmula (3), la media de sobre todos los puntos,
90,913 dB, que initial_source_strength_db da a su lado.
Cómo se hace la medida
Sección titulada «Cómo se hace la medida»Se coloca la fuente de ensayo donde se colocarán las fuentes que se van a
medir: en el centro de una cámara anecoica, o sobre el plano reflectante de
una semianecoica, tan cerca de él como lo permita su zona radiante (A.3.2). Se
comprueba que radia de forma bastante uniforme (anexo B, apartado 4 de esta
guía). Se trazan de cinco a ocho recorridos rectos desde un mismo origen
dentro de la fuente, en la parte de la sala que se usa para medir (A.3.3):
hacia un diedro, hacia un triedro, hacia el centro de la superficie más
uniforme, hacia la superficie más cercana y hacia lo que peor aspecto tenga,
una puerta, una ventana, una abertura de ventilación, y se anota a qué
objetivo apunta cada uno (targets=) para que el veredicto compruebe que
están los cinco. Cada uno
empieza a no más de un cuarto de la longitud de onda de la frecuencia más
baja y llega hasta el límite del espacio que se quiere cualificar, con puntos
equiespaciados (5.1.4.3). En cada punto se anota el nivel a cada frecuencia de
ensayo, el nivel del micrófono de control junto a él si la fuente puede
derivar, y el ruido de fondo. Se cualifica con tonos salvo que todas las
fuentes que se vayan a medir sean de banda ancha (A.4.1).
2. Cómo ajusta la biblioteca b y el origen
Sección titulada «2. Cómo ajusta la biblioteca b y el origen»La fórmula (2) deja libre: «is adjusted to optimize the fit of the measured sound pressure levels into the tolerance range, to maximize the qualified distance from the test sound source». La NOTA 1 propone una búsqueda iterativa que parte de la fórmula (3), y ninguna fuente imprime ni la búsqueda ni un ejemplo resuelto, así que la regla se diseña aquí y se declara. Se escribe , de modo que . Los puntos hasta una distancia caben dentro de para algún exactamente cuando la dispersión de sus es como mucho , y esa dispersión solo puede crecer con . Así, la distancia cualificada de un recorrido a una frecuencia es el último punto de la tirada más larga desde el origen cuya dispersión de no pasa de , y cualquier entre y cualifica esa tirada. La biblioteca toma el punto medio, , que deja el mismo margen a los dos límites. Ningún otro cualifica una tirada más larga, así que no hay nada que iterar. Cuando un recorrido empieza más allá del radio que cumplen todos, su se centra en su propia tirada cualificada.
El origen necesita una regla propia. El apartado 5.1.3.2 de ISO 26101 y el
A.3.3 modificado exigen que todos los recorridos compartan un único origen
matemático dentro del volumen físico que ocupa la fuente de ensayo; el anexo
de 2012 ajustaba en cambio un desplazamiento del centro acústico a lo largo de
cada recorrido, y A.1 d) advierte de que las salas cualificadas así pueden
cualificar ahora sobre menos. Con origin_m, las distancias salen de las
posiciones. Con source_box_m, la caja que ocupa la fuente, la biblioteca
busca en ella el origen con el mayor radio de A.2.4. Una distancia
cualificada termina o bien donde una desviación sale de la tabla A.1, y eso
lo decide la sala, o bien en el último punto medido, y eso lo decide la
medida; mover el origen mueve la distancia a ese último punto sin decir nada
de la sala. Por eso los orígenes se comparan por las distancias a las que la
sala corta una tirada, y una tirada que llega a su último punto cuenta a la
distancia de ese punto al centro de la caja, la misma para todos los
orígenes; los radios que difieren menos del milímetro que resuelve la
búsqueda cuentan como iguales. Los empates van al origen cuyas curvas llenan
de media la menor parte de la banda de la tabla A.1, y después al más cercano
al centro de la caja. En un campo exacto de cuadrado inverso la sala no corta
ninguna tirada, las curvas solo son planas desde el punto del que diverge el
campo, y la búsqueda devuelve ese punto. La búsqueda es una rejilla de cinco puntos por eje
seguida de una búsqueda por compás que divide su paso a la mitad hasta 1 mm:
determinista, dentro de la caja por construcción y nunca peor que el mejor
punto de la rejilla.
3. Una cámara semianecoica
Sección titulada «3. Una cámara semianecoica»El ejemplo es una cámara semianecoica sintética de 8 m por 6 m por 5 m entre
las puntas de las cuñas, cuyo suelo rígido es el plano reflectante y devuelve
toda la presión. La fuente está en una cavidad del suelo, como recomienda
A.3.2.2, así que el sonido diverge desde un punto del plano, a 2 cm y −1 cm
del pie de la fuente, y la fuente coincide con su imagen en el suelo. Cada
pared y el techo devuelven una imagen coherente, con su propia imagen en el
suelo, a través del coeficiente de reflexión de presión de sus cuñas, 0,30 a
100 Hz, que baja hasta 0,05 a 10 kHz. Seis recorridos salen del pie de la
fuente con pasos de 25 mm, uno por cada trayectoria que pide A.3.3, cada uno
con su objetivo, y otro más hacia el techo, y se miden a las once
frecuencias de A.2.3, que enumera qualification_frequencies_hz: las bandas
de tercio de octava por debajo de 125 Hz y por encima de 4 000 Hz y las
frecuencias centrales de octava entre ambas.
grid = emission.qualification_frequencies_hz()print(grid) # [100. 125. 250. 500. 1000. 2000. 4000. 5000. 6300. 8000. 10000.]
walls = [(0, -4.0), (0, 4.0), (1, -3.0), (1, 3.0), (2, 5.0)] # las puntas de las cuñaswedge = np.interp(np.log10(grid), np.log10([100, 125, 250, 500, 10000]), [0.30, 0.22, 0.12, 0.07, 0.05])centre = np.array([0.02, -0.01, 0.0]) # el punto del que diverge el sonido
def measured(points): k = 2.0 * np.pi * grid / 343.0 images = [(centre, 1.0)] for axis, plane in walls: image = centre.copy() image[axis] = 2.0 * plane - centre[axis] images.append((image, wedge)) p = 0.0 for source, gain in images: for mirrored in (source, source * (1.0, 1.0, -1.0)): # y su imagen en el suelo r = np.linalg.norm(points - mirrored, axis=1)[:, None] p = p + gain * np.exp(-1j * k * r) / r return 88.0 + 20.0 * np.log10(np.abs(p)) # 94 dB a 1 m con el suelo
paths = [ # nombre, hacia dónde apunta, el objetivo de A.3.3 al que sirve ("diedro", (4.0, 3.0, 2.5), ("dihedral corner",)), ("triedro", (-4.0, 3.0, 5.0), ("trihedral corner",)), ("centro de una pared", (0.0, -3.0, 2.5), ("boundary centre",)), ("pared más cercana", (0.0, 3.0, 1.2), ("closest boundary",)), ("puerta", (-4.0, -1.5, 1.0), ("unique features",)), ("hacia el techo", (1.5, 1.0, 4.0), ()),]d = np.arange(0.25, 3.0001, 0.025) # pasos de 25 mm de 0,25 m a 3 mtraverses = []for name, towards, aims in paths: unit = np.asarray(towards) / np.linalg.norm(towards) traverses.append(emission.MicrophoneTraverse.along( towards, d, measured(d[:, None] * unit), name=name, targets=aims, background_levels_db=np.full(grid.size, 25.0)))
room = emission.inverse_square_law_deviations( traverses, frequencies_hz=grid, room="hemi-anechoic", source_box_m=((-0.05, -0.05, 0.0), (0.05, 0.05, 0.08)))print(room.origin_m.round(3)) # [0.005 0.05 0. ] mprint(room.band_radius_m.round(2)) # [2.76 2.95 2.95 ... 2.95] mprint(room.largest_deviation_db.round(1)) # [2.5 2.3 1.2 1.2 1.3 1.3 1.2 ...] dBprint(round(room.maximum_qualified_radius_m, 2)) # 2.76 m
foot = emission.inverse_square_law_deviations( traverses, frequencies_hz=grid, room="hemi-anechoic", origin_m=(0.0, 0.0, 0.0))print(round(foot.maximum_qualified_radius_m, 2)) # 2.73 mat_centre = emission.inverse_square_law_deviations( traverses, frequencies_hz=grid, room="hemi-anechoic", origin_m=centre)print(round(at_centre.maximum_qualified_radius_m, 2)) # 2.72 mprint(at_centre.largest_deviation_db.round(1)) # [2.4 1.7 1.2 0.8 0.7 0.6 0.6 ...] dBSolo los 100 Hz quedan limitados por la sala: la pared que tiene delante el recorrido «centro de una pared» devuelve el 30 % de la presión, y su desviación sale de los ±2,5 dB de la tabla A.1 a 2,76 m. A todas las demás frecuencias los recorridos cualifican hasta su último punto, a 2,95 m del origen que eligió la búsqueda, que queda sobre el suelo en el borde de la caja, donde la tirada de 100 Hz es más larga. Con el origen en el pie de la fuente, los mismos datos cualifican hasta 2,73 m. Con el origen en el punto del que diverge de verdad el sonido, a 6 cm del que eligió la búsqueda, las desviaciones por encima de 500 Hz se reducen a la mitad, de 1,1 a 1,3 dB a 0,6 a 0,7 dB, pero la sala solo cualifica hasta 2,72 m: la búsqueda cambia margen dentro de la tolerancia por distancia, que es lo que le pide la fórmula (2), y el margen que cede pesa más en los puntos más cercanos a la fuente. El suelo no añade ninguna ondulación propia, porque el centro acústico está en su plano. Si estuviera 3 cm por encima, la fuente y su imagen interferirían a lo largo de todos los recorridos, y la sala solo cualificaría hasta 0,44 m, retenida ahí por 4 kHz y 6,3 kHz, con 8 kHz poco más allá, en 0,72 m: por eso A.3.2.2 pide el centro a menos de una décima de longitud de onda del suelo.
Las desviaciones a lo largo de los seis recorridos a 100 Hz y a 1 kHz. A 100 Hz la reflexión de la pared que tiene delante el recorrido «centro de una pared» forma un patrón estacionario de unos metros de periodo que cruza el límite inferior a 2,76 m, y ese punto fija el radio de toda la sala. A 1 kHz la ondulación es rápida y pequeña, y todos los recorridos cualifican hasta su final.
Mostrar el código de esta figura
import matplotlib.pyplot as plt
# room es el resultado calculado arriba.fig, (low, high) = plt.subplots(1, 2, figsize=(12.5, 5.6))room.plot(ax=low, frequency_hz=100.0, language="es")room.plot(ax=high, frequency_hz=1000.0, language="es")plt.show()Las funciones de ajuste
Sección titulada «Las funciones de ajuste»| Función | Apartado | Devuelve | Notas |
|---|---|---|---|
MicrophoneTraverse(positions_m, levels_db, monitor_levels_db=None, background_levels_db=None, name="", targets=()) | 5.1.3.2, A.3.3 | un recorrido | nan marca un punto no medido a una frecuencia, que es como se escribe un paso que cambia con la frecuencia; targets nombra hacia qué se elige la trayectoria entre "dihedral corner", "trihedral corner", "boundary centre", "closest boundary" y "unique features" |
MicrophoneTraverse.along(direction, distances_m, levels_db, *, start_m=(0, 0, 0), ...) | 5.1.3.2 | un recorrido | Trazado a lo largo de una recta |
inverse_square_law_deviations(traverses, *, frequencies_hz, room, origin_m=None, source_box_m=None) | Fórmulas (1) a (4) | InverseSquareLawResult | Una llamada por fuente de ensayo; origin_m o source_box_m, no las dos |
inverse_square_law_tolerance_db(frequencies_hz, *, room) | Tabla A.1 | límite por banda [dB] | Un tono se lee en la banda de tercio de octava que lo contiene |
qualification_frequencies_hz(low_hz=100.0, high_hz=10000.0) | A.2.3 | frecuencias [Hz] | Once en el intervalo mínimo |
El resultado lleva las distancias, los niveles corregidos, por recorrido y
frecuencia junto al valor inicial de la fórmula (3), las desviaciones, la
distancia cualificada de cada recorrido (traverse_radius_m), de cada
frecuencia en todos los recorridos (band_radius_m) y de toda la sala
(maximum_qualified_radius_m), y la mayor desviación dentro del radio de cada
banda.
4. El veredicto del anexo A modificado
Sección titulada «4. El veredicto del anexo A modificado»check_free_field somete una o varias fuentes ajustadas al anexo A que
escribió ISO 3745:2012/Amd.1:2017, y a los apartados de ISO 26101 a los que
remite:
- Desviaciones y radio (A.2.2, A.2.4): el radio máximo cualificado es la menor distancia cualificada sobre todos los recorridos y todas las frecuencias evaluadas, y los demás requisitos se juzgan dentro de él.
- Frecuencias (A.2.3): de 100 Hz a 10 000 Hz como mínimo. Lo que se quede
por debajo es un intervalo reducido, y
conforming_range_hzda la tirada contigua más ancha en la que se cumplen todos los requisitos juzgados, el intervalo con el que un informe puede declarar conformidad, nunca «conformidad plena». - Recorridos (A.3.3): de cinco a ocho, hacia los cinco objetivos a) a e)
tal como los nombran los recorridos, en la zona de trabajo de la sala, que
se declara (
paths_in_working_area) porque las posiciones no lo dicen, y en una cámara semianecoica todos dentro de los 20° a 80° desde la vertical en los que se midió la directividad de la fuente. Una trayectoria se juzga por su dirección, la recta de su primer a su último punto dentro del radio. - Puntos (A.4.3): al menos 10 en cada recorrido y 50 en total dentro del radio, equiespaciados a cada frecuencia y separados como mucho una décima de longitud de onda por debajo de 250 Hz y 100 mm por encima. Los puntos añadidos entre dos de la rejilla cerca de una desviación máxima, como recomienda el último párrafo de A.4.3, no rompen la rejilla; el siguiente punto de la rejilla tiene que caer a menos de una décima de la separación mediana de donde lo pondría un paso, una tolerancia que ninguna fuente imprime.
- Resolución y longitud de ISO 26101 (A.2.4, que cita 5.1.4.3 y A.4.3): un inicio a no más de un cuarto de longitud de onda de la frecuencia más baja y una tirada al menos así de larga, y una separación de como mucho una décima de longitud de onda por debajo de 1 kHz y 25 mm por encima. Ninguna de las dos reglas de separación dice qué lado rige en la banda que contiene su frecuencia frontera, 250 Hz o 1 kHz; el veredicto somete esa banda a la más estricta de las dos.
- Ruido de fondo (ISO 26101 5.1.2.2 c)): todos los puntos al menos 6 dB por encima de él.
- Fuente de ensayo (A.3.1, anexo B de ISO 26101):
verify_source_directionalitylee las 32 posiciones de una semiesfera de 1,5 m (64 de una esfera en una cámara anecoica) que devuelvedirectionality_positions, y somete la mayor desviación respecto al nivel medio de cada banda a la tabla B.1. - Plano reflectante (A.2.5): un coeficiente de absorción de como mucho 0,06, y un plano que se extienda al menos un cuarto de longitud de onda y 0,75 m más allá de la proyección de la superficie de medición.
Un requisito cuyos datos no se dieron aparece en not_judged, y passes
sigue en False hasta que se juzga.
rows = np.arange(32)[:, None]bands = np.arange(grid.size)[None, :]source = emission.verify_source_directionality( 80.0 + 0.4 * np.sin(0.7 * rows + bands) * (1.0 + bands / 10.0), frequencies_hz=grid, room="hemi-anechoic")print(source.passes) # True
check = emission.check_free_field( room, bandwidth="discrete-frequency", source_directionality=source, measurement_radius_m=1.5, paths_in_working_area=True, reflecting_plane_absorption_coefficient=0.02, reflecting_plane_margin_m=1.2)print(check.passes, round(check.maximum_qualified_radius_m, 2)) # True 2.76print(check.full_frequency_range, check.path_angles_met) # True Trueprint(check.path_targets_met, bool(check.equal_spacing_met.all())) # True True
unjudged = emission.check_free_field(room, bandwidth="discrete-frequency")print(unjudged.passes, unjudged.not_judged)# False ('source directionality', 'reflecting plane', 'working area')La sala cualifica en conformidad plena para radios de medición de hasta
2,76 m, en frecuencias discretas y por tanto para fuentes tonales además de
para las de banda ancha (A.4.1). Una cualificación hecha con ruido de banda
ancha en tercios de octava se da con bandwidth="broadband" y solo vale para
fuentes de banda ancha.
A la izquierda, el veredicto: todas las frecuencias cumplen todos los requisitos, y la banda de 100 Hz fija el radio máximo cualificado. A la derecha, la fuente de ensayo, medida en las 32 posiciones del anexo B, queda holgadamente dentro de la tabla B.1 en todas las bandas.
Mostrar el código de esta figura
import matplotlib.pyplot as plt
# check y source son los resultados calculados arriba.fig, (left, right) = plt.subplots(1, 2, figsize=(12.5, 5.6))check.plot(ax=left, language="es")source.plot(ax=right, language="es")plt.show()Dos resoluciones para un mismo recorrido
Sección titulada «Dos resoluciones para un mismo recorrido»A.2.4 pide a cada recorrido la resolución espacial del A.4.3 de ISO 26101,
una décima de longitud de onda por debajo de 1 kHz y 25 mm por encima,
mientras que el A.4.3 de la propia modificación fija una décima de longitud de
onda por debajo de 250 Hz y 100 mm por encima, y su último párrafo da por
supuestos recorridos de 100 mm. Las dos están impresas con «shall», así que
el veredicto juzga las dos e informa de cada una: spacing_met para el A.4.3
modificado e iso26101_spacing_met para la resolución que cita A.2.4. La
misma sala muestreada cada 100 mm cumple la primera en todas las frecuencias y
la segunda solo hasta 250 Hz, donde una décima de longitud de onda aún supera
los 100 mm, y cualifica sobre un intervalo reducido:
coarse = [emission.MicrophoneTraverse( positions_m=t.positions_m[::4], levels_db=t.levels_db[::4], background_levels_db=t.background_levels_db[::4], name=t.name, targets=t.targets) for t in traverses]room100 = emission.inverse_square_law_deviations( coarse, frequencies_hz=grid, room="hemi-anechoic", source_box_m=((-0.05, -0.05, 0.0), (0.05, 0.05, 0.08)))check100 = emission.check_free_field( room100, bandwidth="discrete-frequency", source_directionality=source, measurement_radius_m=1.5, paths_in_working_area=True, reflecting_plane_absorption_coefficient=0.02, reflecting_plane_margin_m=1.2)print(check100.passes, bool(check100.spacing_met.all())) # False Trueprint(check100.iso26101_spacing_met[:4]) # [ True True True False]print(check100.conforming_range_hz, round(check100.conforming_radius_m, 2))# (100.0, 250.0) 2.71La incoherencia está en el registro de erratas. Un laboratorio que tome el A.4.3 como la regla del anexo lee las dos marcas y decide.
La cualificación en una determinación
Sección titulada «La cualificación en una determinación»sound_power_anechoic toma el veredicto como room_qualification: el tipo de
sala tiene que casar con la superficie, y un SoundPowerWarning avisa cuando
la sala no está cualificada, cuando el radio de medida queda más allá del
cualificado o cuando una banda queda fuera del intervalo cualificado.
import warnings
levels = np.full((20, 3), 70.0)with warnings.catch_warnings(record=True) as caught: warnings.simplefilter("always") emission.sound_power_anechoic( levels, "hemisphere", radius=2.8, frequencies=[500.0, 1000.0, 2000.0], room_qualification=check)print(caught[0].message)# The measurement radius 2.8 m lies beyond the qualified radius 2.76 m# (ISO 3745:2012/Amd.1:2017, A.2.4).Las funciones del veredicto
Sección titulada «Las funciones del veredicto»| Función | Apartado | Devuelve | Notas |
|---|---|---|---|
check_free_field(results, *, bandwidth, source_directionality=None, measurement_radius_m=None, reflecting_plane_absorption_coefficient=None, reflecting_plane_margin_m=None, paths_in_working_area=None, speed_of_sound=343.0) | Anexo A modificado | FreeFieldCheck | Un resultado por fuente de ensayo, con frecuencias disjuntas; lo que no se dio queda en not_judged |
verify_source_directionality(levels_db, *, frequencies_hz, room) | Anexo B de ISO 26101 | SourceDirectionalityResult | 32 o 64 posiciones, una columna por banda |
directionality_positions(room, *, radius_m=1.5) | B.3.2 de ISO 26101 | posiciones [m] | Elevación desde la vertical, acimut de 45° en 45° |
directionality_tolerance_db(frequencies_hz, *, room) | Tabla B.1 | límite por banda [dB] | 5 dB por encima de 10 kHz |
5. Una fuente sonora de referencia (ISO 6926)
Sección titulada «5. Una fuente sonora de referencia (ISO 6926)»Una fuente sonora de referencia es la vara de medir de todo método de comparación: ISO 3741 en cámara reverberante, ISO 3743-1 e ISO 3743-2 en una sala de ensayo pequeña, ISO 3747 in situ, ISO 9295 en la octava de 16 kHz. El apartado 5 de ISO 6926 dice qué debe cumplir. Su emisión es estable: la desviación típica en condiciones de repetibilidad de tres niveles de potencia acústica repetidos o de cinco niveles de presión sonora, fórmula (1), respecto a su media energética, no pasa de la tabla 1, 0,8 dB de 50 Hz a 80 Hz, 0,4 dB de 100 Hz a 160 Hz y 0,2 dB de 200 Hz a 20 kHz, y en el intervalo de su alimentación eléctrica o mecánica que declara el fabricante, la tensión de red por ejemplo, ninguna banda se mueve más de 0,3 dB en un sentido u otro (5.2). Su espectro es de banda ancha: de 100 Hz a 10 000 Hz todas las bandas de tercio de octava caben en un intervalo de 12 dB y a no más de 3 dB de sus vecinas, 16 dB y 4 dB en un intervalo ampliado más allá (5.4). Su índice de directividad no pasa de 6 dB en ninguna banda de 100 Hz a 10 000 Hz (5.5), salvo que esté rotulada solo para cámaras reverberantes. Y se recalibra cuando una banda se ha movido más de 2,83 veces la tabla 1 entre dos comprobaciones (5.6).
El apartado 8 la calibra en una cámara semianecoica cualificada para banda ancha por el anexo A de ISO 3745 (8.1), sobre el plano reflectante, en una semiesfera de 2 m de radio (8.2.1). La fórmula (2) lleva el nivel de superficie al nivel de potencia acústica en las condiciones de referencia del apartado 4, 23,0 °C y 101,325 kPa:
con , K, la corrección por impedancia de radiación del fabricante o del anexo A informativo, y la absorción del aire con . El ejemplo es una fuente de tipo ventilador calibrada en las 20 posiciones fijas del anexo E de ISO 3745 sobre la semiesfera de 2 m, a 20 °C, 45 % y 98,6 kPa, que radia algo más hacia arriba a frecuencias altas.
from phonometry import environment
thirds = np.array([100.0, 125.0, 160.0, 200.0, 250.0, 315.0, 400.0, 500.0, 630.0, 800.0, 1000.0, 1250.0, 1600.0, 2000.0, 2500.0, 3150.0, 4000.0, 5000.0, 6300.0, 8000.0, 10000.0])source_lw = np.array([86.0, 86.8, 87.5, 88.1, 88.4, 88.6, 88.7, 88.6, 88.4, 88.1, 87.7, 87.2, 86.6, 85.9, 85.1, 84.2, 83.2, 82.1, 80.9, 79.6, 78.2])positions = emission.precision_positions("hemisphere", radius=2.0, count=20)upward = positions[:, 2:3] / 2.0 - 0.5pattern = 4.0 * upward * np.sqrt(thirds / 10000.0)[None, :]alpha = environment.air_attenuation( thirds, temperature_c=20.0, relative_humidity_percent=45.0, atmospheric_pressure_kpa=98.6)levels = (source_lw[None, :] - 10.0 * np.log10(2.0 * np.pi * 2.0**2) + pattern - 2.0 * alpha[None, :])
air = emission.CalibrationConditions( temperature_c=20.0, static_pressure_kpa=98.6, air_absorption_db_per_m=alpha)calibration = emission.reference_source_calibration( levels, frequencies_hz=thirds, arrangement="fixed", conditions=air)print(calibration.sound_power_level_db[[0, 10, 20]].round(2)) # [86.06 87.77 78.41] dBprint(round(calibration.c1_db, 3), calibration.c2_db[0].round(3)) # -0.031 0.087print(calibration.c3_db[[0, 10, 20]].round(3)) # [0.001 0.009 0.351] dBprint(calibration.expanded_uncertainty_db[[0, 3, 16]].round(2)) # [1.57 0.98 1.96] dBprint(round(calibration.sound_power_level_a_db, 1)) # 97.6 dBCalibrationConditions lleva el aire de la calibración: su temperatura y su
presión estática entran en y , y su entra en . Si no se
pasa, la calibración se hace en las condiciones de referencia del apartado 4,
sin absorción del aire. La superficie se promedia como la promedia ISO 3745, con
sound_power_anechoic. y casi se anulan a esta presión y
temperatura, y dejan 0,06 dB; aquí es la fórmula (A.5) del anexo A para
una fuente cuya radiación se desconoce,
con
K, y c2_db toma en su lugar el valor del fabricante, que es
el que prefiere 8.4. llega a 0,35 dB a 10 kHz en los 2 m de trayecto. La
incertidumbre expandida es con tomada de la
columna de la tabla 2 de la disposición, 0,8 dB de 100 Hz a 160 Hz, 0,5 dB de
200 Hz a 3 150 Hz y 1,0 dB por encima para las posiciones fijas. De 50 Hz a
80 Hz, el anexo B sustituye los niveles de presión por niveles de intensidad
sonora cuando los dos coinciden dentro de la tabla B.1 de 50 Hz a 315 Hz
(intensity_sound_power_level_db).
verify_reference_sound_source juzga después el apartado 5. Una calibración
trae sus bandas, sus niveles y sus índices de directividad; las repeticiones
de 8.3.3 y el mayor cambio de cada banda en el intervalo de alimentación
declarado se pasan aparte, y una fuente calibrada en otro sitio, por ejemplo
en cámara reverberante por el apartado 9, pasa en su lugar sus niveles y sus
frecuencias. Lo que no se da aparece en not_judged, y la fuente no cumple
hasta que se juzga.
jitter = np.array([[0.05], [-0.08], [0.04]]) * np.where(thirds < 200.0, 3.0, 1.0)supply = 0.12 + 0.06 * np.cos(np.arange(thirds.size) / 3.0) # con la red a +-10 %verdict = emission.verify_reference_sound_source( calibration, repeated_levels_db=calibration.sound_power_level_db[None, :] + jitter, supply_variation_db=supply)print(verdict.passes) # Trueprint(round(verdict.core_range_db, 2), verdict.adjacent_step_db.max().round(2))# 10.35 1.37print(verdict.repeatability_db[[0, 4]].round(3), verdict.repeatability_limit_db[[0, 4]])# [0.217 0.072] [0.4 0.2]print(verdict.supply_variation_db.max().round(2), verdict.supply_met) # 0.18 True
drift = emission.verify_reference_source_drift( calibration.sound_power_level_db, calibration.sound_power_level_db + np.where(thirds < 160.0, 1.2, 0.3), frequencies_hz=thirds)print(drift.passes, drift.recalibration_required) # False TrueLa fuente abarca 10,35 dB de 100 Hz a 10 000 Hz con saltos de como mucho 1,37 dB, se repite con 0,217 dB a 100 Hz frente a 0,4 dB, se mueve como mucho 0,18 dB en su intervalo de alimentación frente a 0,3 dB, y su mayor índice de directividad, 1,75 dB a 10 kHz, queda lejos de 6 dB. Una comprobación posterior que encuentra las dos bandas más bajas 1,2 dB más altas pide recalibrar, porque 2,83 veces 0,4 dB son 1,13 dB.
A la izquierda, los niveles calibrados con su incertidumbre expandida de la tabla 2. A la derecha, cada requisito del apartado 5 como fracción de su límite: todo lo que queda por debajo de 1 cumple. Los requisitos de cada banda son curvas, y el rango de 5.4, que se cumple sobre muchas bandas a la vez, es una línea que las atraviesa; es el que más cerca queda de su límite. El índice de directividad crece con la frecuencia, a medida que la fuente radia más hacia arriba, y también el salto entre bandas vecinas, a medida que cae el espectro.
Mostrar el código de esta figura
import matplotlib.pyplot as plt
# calibration y verdict son los resultados calculados arriba.fig, (left, right) = plt.subplots(1, 2, figsize=(12.5, 5.6))calibration.plot(ax=left, language="es")verdict.plot(ax=right, language="es")plt.show()La calibración en un método de comparación
Sección titulada «La calibración en un método de comparación»Todos los métodos de comparación aceptan la calibración donde aceptan los
niveles, y leen las bandas que necesitan: sound_power_comparison y
sound_energy_comparison (ISO 3741) y high_frequency_sound_power_comparison
(ISO 9295, solo banda ancha) en tercios de octava, sound_power_hard_walled
y sound_energy_hard_walled (ISO 3743-1),
sound_power_special_room_comparison (ISO 3743-2), sound_power_in_situ y
sound_energy_in_situ (ISO 3747) en octavas, cada una la suma energética de
sus tres bandas de tercio de octava. La evaluación de idoneidad de la
ISO 3743-2, apartado 6.7, check_special_room_suitability, la toma como la
calibración frente a la que se juzga la sala, también en octavas.
sound_power_level_at la lee directamente.
La calibración guarda en las condiciones de referencia, y es lo
que llevó hasta ellas la potencia que radiaba la fuente durante la
calibración. ISO 3741 pide «corrected to the
meteorological conditions at the time of test» (fórmulas (21) y (31)),
ISO 9295 corrige como ISO 3741, y las dos partes de ISO 3743 dan «under
the meteorological conditions which occurred at the time and place of the
test» (anexo A de la parte 1, anexo E de la parte 2), así que esos métodos
leen la calibración a la temperatura y la presión del ensayo, como
con evaluado allí por la misma fórmula que usó la
calibración, la que 8.4 pide que compartan laboratorio y usuario.
ISO 3747 corrige en cambio los niveles medidos de la
fuente de referencia hasta su calibración según las especificaciones del
fabricante (ecuación (9)), y lee los niveles calibrados tal cual. Una
calibración hecha con el c2_db del fabricante no se puede leer en un
ensayo, porque solo el fabricante da allí, y lo dice.
rng = np.random.default_rng(1)lp_rss = 70.0 + rng.normal(0.0, 0.4, (6, thirds.size)) # seis posicioneslp_st = lp_rss + 4.0 # 4 dB más en todastest = emission.sound_power_comparison(lp_st, lp_rss, calibration, frequencies=thirds, temperature_c=18.0, static_pressure_kpa=96.0)print(test.sound_power_level[[0, 10, 20]].round(2)) # [90. 91.72 82.36] dBprint(calibration.sound_power_level_at( [1000.0], temperature_c=18.0, static_pressure_kpa=96.0).round(2)) # [87.59] dBprint(calibration.sound_power_level_at( [125.0, 1000.0, 8000.0], bandwidth="octave").round(2)) # [91.64 92.52 84.65] dBA 18 °C y 96 kPa la fuente radia 0,18 dB menos que en las condiciones de referencia, dB a 1 kHz, y el propio de ISO 3741, 0,13 dB, lleva de vuelta hasta ellas el resultado de la fuente en ensayo.
Las funciones de la fuente de referencia
Sección titulada «Las funciones de la fuente de referencia»| Función | Apartado | Devuelve | Notas |
|---|---|---|---|
reference_source_calibration(levels_db, *, frequencies_hz, arrangement, background_levels_db=None, maximum_levels_db=None, conditions=None, radiation="unknown", knee_frequency_hz=None, c2_db=None, intensity_sound_power_level_db=None, room_qualification=None, coverage_factor=1.96) | 8, fórmula (2) | ReferenceSourceCalibration | arrangement es "paths" o "fixed", la columna de la tabla 2; room_qualification avisa cuando la sala no cubre las bandas a 2 m (8.1) |
CalibrationConditions(*, temperature_c=23.0, static_pressure_kpa=101.325, air_absorption_db_per_m=None) | 4, 8.4 | el aire de la fórmula (2) | Temperatura y presión estática para y , por banda para |
ReferenceSourceCalibration.sound_power_level_at(frequencies_hz, *, bandwidth="one-third-octave", temperature_c=None, static_pressure_kpa=None) | 8.4 | por banda [dB] | Con las condiciones de un ensayo, allí |
verify_reference_sound_source(calibration, *, frequencies_hz=None, repeated_levels_db=None, supply_variation_db=None, directivity_index_db=None, reverberation_rooms_only=False) | 5.2, 5.4, 5.5 | ReferenceSoundSourceVerdict | Tres repeticiones de potencia o cinco de presión; el mayor cambio en el intervalo de alimentación declarado |
verify_reference_source_drift(reference_levels_db, latest_levels_db, *, frequencies_hz) | 5.6 | ReferenceSourceDriftResult | 2,83 veces la tabla 1 |
repeatability_standard_deviation(levels_db) | Fórmula (1) | por banda [dB] | Respecto a la media energética |
radiation_impedance_correction(*, temperature_c=23.0, static_pressure_kpa=101.325, radiation="unknown", frequencies_hz=None, knee_frequency_hz=None) | Anexo A | [dB] | Monopolo, dipolo aerodinámico o desconocida |
knee_frequency(d0_m, *, speed_of_sound=343.0) | Fórmula (A.1) | [Hz] | |
reference_source_reproducibility_db(frequencies_hz, *, environment, arrangement=None, bandwidth="one-third-octave") | Tabla 2 | por banda [dB] | Las columnas de tercio de octava y de octava se leen por separado |
La fórmula (A.1) tiene un defecto propio: el anexo A define su como la
mitad de la dimensión característica de la fuente de ISO 3745, que el
apartado 3.14 de ISO 3745 ya define como la distancia del origen a la esquina
más lejana de la caja de referencia. knee_frequency toma la longitud que
entra en la fórmula, y el registro de erratas
tiene los detalles.
Qué cubre esta guía
Sección titulada «Qué cubre esta guía»Cubierto
El método de la pérdida por divergencia de ISO 26101:2017 con los criterios del anexo A que escribió ISO 3745:2012/Amd.1:2017: la corrección del micrófono de control de la fórmula (1), la estimación y las desviaciones de las fórmulas (2) y (4) con el valor inicial de la fórmula (3), la intensidad de la fuente ajustada como el punto medio de su intervalo admisible, el origen matemático fijo o buscado dentro de la caja que ocupa la fuente de ensayo (5.1.3.2, A.3.3), los límites de la tabla A.1 para cámaras anecoicas y semianecoicas, las frecuencias de A.2.3 y el intervalo reducido, el radio máximo cualificado de A.2.4, el número de recorridos, los objetivos a) a e), la zona de trabajo y los ángulos de A.3.3, los puntos, su equiespaciado y la separación máxima de A.4.3 junto a la resolución espacial y la longitud del recorrido de A.4.3 y 5.1.4.3 de ISO 26101, el margen de 6 dB sobre el ruido de fondo de 5.1.2.2 c), la directividad de la fuente de ensayo del anexo B y la tabla B.1, el plano reflectante de A.2.5, y el veredicto tal como lo consume
sound_power_anechoic. ISO 6926:2016: los requisitos del apartado 5 (la tabla 1 y la variación con la alimentación de 5.2, el espectro de 5.4, el índice de directividad de 5.5 y la recalibración de 5.6), la calibración en cámara semianecoica del apartado 8 con la fórmula (2), , el del anexo A, y las bandas de intensidad del anexo B, la reproducibilidad de la tabla 2, y la calibración tal como la consumen todos los métodos de comparación, leída en las condiciones del ensayo donde ISO 3741 e ISO 3743 lo piden.No cubierto
Ninguna fuente imprime un ejemplo resuelto, así que el ajuste se ancla en formas cerradas y en las tablas impresas, y la regla que ajusta y el origen, la tolerancia del equiespaciado y la banda que rige en la frontera de una regla de separación son un diseño de esta biblioteca (apartados 2 y 4). La zona de trabajo y el intervalo de alimentación se toman tal como se declaran, y una calibración hecha con el del fabricante no se lleva a las condiciones de un ensayo. El recorrido continuo de 5.1.4.3 se toma como los puntos derivados de su registro; no se realizan la cualificación de una sala para una fuente concreta por la alternativa del anexo B de ISO 3745, la incertidumbre de medida de 5.1.6 de ISO 26101, que A.2.2 excluye, ni la corrección atmosférica de la NOTA 2 de ISO 26101. La calibración de ISO 6926 en cámara reverberante (apartado 9) se toma por su resultado, los niveles que un veredicto puede juzgar; la intensidad sonora del anexo B se toma tal como la mide ISO 9614-3.
Referencias
Sección titulada «Referencias»- International Organization for Standardization. (2016). Acoustics — Requirements for the performance and calibration of reference sound sources used for the determination of sound power levels (ISO 6926:2016). Tercera edición. Los requisitos de funcionamiento del apartado 5 con la tabla 1, la calibración en cámara semianecoica del apartado 8 con las fórmulas (1) y (2), la tabla 2, el anexo A sobre C2 y el anexo B sobre la intensidad sonora a baja frecuencia. Se ha cotejado con la adopción española UNE-EN ISO 6926:2016.
- International Organization for Standardization. (2017). Acoustics — Determination of sound power levels and sound energy levels of noise sources using sound pressure — Precision methods for anechoic rooms and hemi-anechoic rooms — Amendment 1 (ISO 3745:2012/Amd.1:2017). Sustituye el anexo A de ISO 3745:2012 por uno que remite a ISO 26101:2017, 5.1: la tabla A.1, el intervalo de frecuencias de A.2.3, el radio máximo cualificado de A.2.4, el plano reflectante de A.2.5, los recorridos de A.3.3 y la resolución espacial de A.4.3.
- International Organization for Standardization. (2017). Acoustics — Test methods for the qualification of free-field environments (ISO 26101:2017). El método de la pérdida por divergencia del apartado 5.1: las fórmulas (1) a (4), los recorridos de 5.1.3.2, la longitud del recorrido de 5.1.4.3, la tabla A.1, la resolución espacial de A.4.3 y la directividad de la fuente de ensayo del anexo B con su tabla B.1.