01 · Punto de partida
Una señal que oscila
Casi todas las señales de los temas anteriores variaban despacio: una temperatura, una luz, una presión. El sonido es distinto. Es una variación de la presión del aire que oscila entre unos 20 y 20 000 veces por segundo, y lo que interesa no es el valor instantáneo sino cuánto oscila y cómo cambia esa amplitud en el tiempo. Una vez que se aprende a medir la amplitud, el sonido sirve para activar un sistema con una palmada, vigilar el ruido de una máquina, encender una luz con la voz o mostrar un indicador de nivel.
Este tema recorre el camino completo: qué mide un micrófono, cómo se lo prepara para el ADC, cómo se obtiene un nivel en decibelios, cómo se sigue la envolvente y cómo se reconocen eventos. Es una aplicación directa de herramientas ya vistas: el acondicionamiento (tema 4), el muestreo y el aliasing, el filtrado y los umbrales con histéresis (temas 5 y 7).
02 · Magnitudes
Sonido y decibelios
La magnitud física es la presión sonora p, en pascales: una variación minúscula alrededor de la presión atmosférica (de 20 µPa en el umbral de audición a unos 20 Pa en el umbral del dolor, un millón de veces más). Como el rango es tan grande y el oído responde a las proporciones, se usa una escala logarítmica, el nivel de presión sonora (SPL) en decibelios:
Dos cifras sirven de ancla: 0 dB SPL es el umbral de audición (20 µPa) y 94 dB SPL equivale a 1 Pa, el nivel de referencia con que se calibran los micrófonos. Y dos reglas para razonar con decibelios: duplicar la presión suma 6 dB (20·log 2) y multiplicar por diez suma 20 dB.
| Situación | Nivel | Presión |
|---|---|---|
| Umbral de audición | 0 dB | 20 µPa |
| Susurro, biblioteca | 30–40 dB | 0,6–2 mPa |
| Conversación normal | 60 dB | 20 mPa |
| Calle con tráfico | 70–80 dB | 63–200 mPa |
| Calibrador de micrófonos | 94 dB | 1 Pa |
| Concierto, taladro | 100–110 dB | 2–6 Pa |
| Umbral del dolor | 120–130 dB | 20–60 Pa |
Hay un detalle sobre los decibelios que confunde: no se suman como números ordinarios. Dos fuentes iguales de 60 dB juntas dan 63 dB (se suman potencias, no niveles); una de 60 y otra de 50 dan 60,4 dB. Y un nivel «en dB» sin referencia no dice nada: dB SPL (respecto de 20 µPa), dBV (respecto de 1 V) y dBFS (respecto del fondo de escala de un conversor) son magnitudes distintas.
03 · Los sensores
Los micrófonos
Un micrófono convierte la presión sonora en una señal eléctrica. Los dos tipos de uso común en electrónica son:
- Electret de condensador. Una membrana cargada permanentemente (el electret) forma un condensador con una placa fija; al vibrar con el sonido, la capacidad varía. Un transistor FET interno adapta la impedancia. Necesita un sesgo: una alimentación de 2 a 10 V a través de una resistencia de 2 a 10 kΩ. Entrega señales de pocos milivolts.
- MEMS. Una membrana microscópica de silicio con la misma idea del condensador, en un encapsulado de pocos milímetros. Los hay analógicos (salida de tensión alterna sobre un nivel de continua) y digitales (con el conversor dentro, salida PDM o I2S de 24 bits). Son pequeños, baratos y más uniformes que los electret.
Su dato clave es la sensibilidad, en dBV por pascal, a 1 kHz. Un valor típico de un electret o MEMS analógico es de −44 dBV/Pa, que equivale a 10−44/20 = 6,3 mV por pascal. Con 94 dB SPL (1 Pa), el micrófono entrega 6,3 mV eficaces; con una conversación (60 dB, 20 mPa), solo 0,13 mV. Son señales muy pequeñas, que requieren amplificación.
| Módulo | Qué contiene | Salida | Comentarios |
|---|---|---|---|
| KY-038 / «sensor de sonido» con LM393 | Electret, comparador y potenciómetro | Digital (umbral ajustable) y una salida analógica | Detecta palmadas y golpes; el umbral se ajusta a mano (tema 7); la salida analógica es débil |
| MAX4466 | Electret con preamplificador de ganancia 25–125 | Analógica, centrada en Vcc/2 | Buena para medir amplitud; trae un trimmer de ganancia |
| MAX9814 | Electret con amplificador de control automático de ganancia (AGC) | Analógica, centrada en 1,25 V | El AGC mantiene el nivel: bueno para voz, malo para medir niveles absolutos |
| INMP441 y otros MEMS I2S | MEMS digital de 24 bits | I2S | Requiere un microcontrolador con I2S (ESP32); calidad de audio |
Un detalle del MAX9814: su control automático de ganancia comprime los cambios de volumen para que la salida tenga amplitud casi constante. Es excelente para reconocimiento de voz y desastroso para un medidor de nivel: la salida deja de ser proporcional al sonido.
04 · Preparar la señal
Acondicionar la señal
La señal de un micrófono amplificado es alterna: sube y baja alrededor de un nivel de continua, el sesgo. Un ADC unipolar de 0 a 5 V no entiende de negativos, así que la salida del amplificador se centra en la mitad del rango (2,5 V con 5 V; 1,65 V con 3,3 V; 1,25 V en el MAX9814) y el ADC lee, sin sonido, un valor constante cerca de 512. Con sonido, el valor oscila en torno a él:
Dos decisiones de ganancia, con el compromiso del tema 4:
- Demasiada ganancia: los sonidos fuertes recortan (saturan) contra los rieles de la alimentación y la forma de onda se aplana; la amplitud medida deja de ser proporcional. Con 5 V y sesgo de 2,5 V, la amplitud máxima útil es de ±2,5 V.
- Poca ganancia: los sonidos suaves quedan por debajo del escalón del ADC (4,9 mV): se miden como cero.
Un ejemplo con el micrófono de −44 dBV/Pa y un preamplificador de ganancia 100 (un tercio de su rango máximo): un sonido de 94 dB SPL entrega 633 mV eficaces (894 mV de pico), cómodos; uno de 60 dB, 12,6 mV eficaces (17,8 mV de pico), apenas 3,6 escalones del ADC de pico; uno de 110 dB, 3,99 V eficaces (5,6 V de pico), que satura. El rango útil con esa ganancia es, entonces, de unos 50 a 103 dB (por encima, el amplificador recorta). Un nivel de 30 dB (0,4 mV eficaces) es invisible. La solución general es una ganancia ajustable y, para rangos grandes, ganancia automática o varios canales.
El muestreo impone otro límite. Con la velocidad de conversión por defecto de un Arduino (≈ 9,6 kmuestras/s), la frecuencia máxima que se puede representar es la mitad, 4,8 kHz. Los sonidos de frecuencia mayor se pliegan hacia abajo y aparecen como tonos falsos (aliasing, tema 4): un tono de 5 kHz muestreado a 8 kHz se ve como uno de 3 kHz. Para medir niveles esto casi no importa (la amplitud se conserva), pero para medir frecuencias sí. Un filtro RC pasa-bajos antes del ADC con corte por debajo de la mitad de la frecuencia de muestreo lo evita.
05 · Amplitud
Medir la amplitud en el programa
Una muestra aislada no dice nada sobre el nivel: puede caer justo en un cruce por cero. Hay que mirar una ventana de muestras. Para sonido general se usan ventanas de 50 ms (que abarca varios ciclos incluso de los 20 Hz más graves) y dos medidas:
- Pico a pico: el máximo menos el mínimo de la ventana. Es simple y barata, y es lo que usan los indicadores de nivel sencillos. Es sensible a un solo valor extremo.
- Valor eficaz (RMS): la raíz de la media de los cuadrados de la parte alterna. Corresponde a la energía de la señal, y es la magnitud a la que se refieren los decibelios. Para una senoide, RMS = amplitud / √2.
const uint8_t PIN_MIC = A0;
const float REF_RMS94 = 129.5; // RMS (en cuentas) con un calibrador de 94 dB, medido una vez
// Mide una ventana de 50 ms y devuelve el valor eficaz de la parte alterna, en cuentas del ADC.
float rmsVentana() {
uint32_t t0 = millis();
uint32_t n = 0, suma = 0, suma2 = 0;
while (millis() - t0 < 50) { // bloquea 50 ms: aceptable para una medición espaciada
uint32_t x = analogRead(PIN_MIC);
suma += x;
suma2 += x * x;
n++;
}
float media = (float)suma / n; // el sesgo de continua
float varianza = (float)suma2 / n - media * media;
return sqrt(varianza); // la desviación estándar es el RMS sin la continua
}
float nivelDb(float rms) {
return 94.0 + 20.0 * log10(rms / REF_RMS94); // relativo al calibrador de 94 dB
}
Dos observaciones. Primero, restar la media es esencial: sin eso el RMS incluye el sesgo de 512 y el resultado sería gigante. Segundo, los decibelios requieren calibración: la fórmula 94 + 20·log10(rms / rms94) es relativa a la lectura obtenida con un calibrador (o con un medidor de referencia) a 94 dB. Sin esa referencia, el programa puede dar un nivel relativo («6 dB más fuerte que antes»), pero no un valor absoluto. Con un electret barato, un ADC de 10 bits y sin ponderación en frecuencia, la exactitud absoluta es de ±5 dB como mucho: sirve como indicador, no como instrumento.
06 · Seguir el nivel
La envolvente
La envolvente es la curva que sigue el contorno de la amplitud: ignora las oscilaciones rápidas y muestra cómo sube y baja el volumen. Es la señal útil para decidir si hay ruido, si empezó una palmada o si terminó una frase. Se obtiene en dos pasos: rectificar (tomar el valor absoluto de la parte alterna) y suavizar con un filtro pasa-bajos. La versión de software más práctica usa un filtro exponencial con dos constantes distintas, una de ataque cuando la señal crece y otra de relajación cuando decrece:
const float ATAQUE = 0.5; // rápido: sigue los picos al instante
const float RELAJACION = 0.05; // lento: tarda en bajar y conserva el pico un rato
float envolvente = 0;
void actualizarEnvolvente(float x) { // x = |muestra - media|
float a = (x > envolvente) ? ATAQUE : RELAJACION;
envolvente += a * (x - envolvente);
}
La asimetría imita al medidor de picos de una mesa de mezclas: con un ataque rápido, el nivel sube enseguida ante un golpe; con una relajación lenta, el valor máximo se mantiene el tiempo suficiente para verlo y decidir. Si ambas constantes fueran iguales, la envolvente sería un filtro simétrico y, ante un aplauso (que dura décimas de segundo), subiría y bajaría tan despacio como una señal de voz. Si la relajación fuera demasiado rápida, la envolvente temblaría con cada ciclo de la señal. Con muestreo a 100 Hz de la amplitud, αataque = 0,5 da una constante de tiempo de 10 ms, y αrelajación = 0,05, de unos 190 ms (tema 5: τ ≈ (1 − α)/α muestras).
07 · Reconocer patrones
Detectar eventos: palmadas
Con la envolvente, un evento sonoro es un cruce de umbral. Pero los sonidos reales piden las mismas protecciones del resto del curso:
- Histéresis (temas 7 y 13): el evento se dispara al superar un umbral alto (por ejemplo 0,4) y no se vuelve a armar hasta que la envolvente baje de uno más bajo (0,25). Sin eso, el rebote de la envolvente alrededor del umbral produce varias detecciones por una sola palmada.
- Período refractario: un tiempo mínimo (100 a 300 ms) entre detecciones, para ignorar el eco y la reverberación de la habitación, que hacen que una palmada «suene» más de una vez.
- Patrón temporal: la doble palmada es muy usada para alternar una luz y descartar sonidos aislados. Se define con una ventana: dos eventos separados por entre 150 y 700 ms. Un solo aplauso espera ese tiempo a ver si llega el segundo.
const float U_ALTO = 0.40, U_BAJO = 0.25; // histéresis (envolvente normalizada)
const uint16_t REFRACTARIO = 150, MIN_ENTRE = 150, MAX_ENTRE = 700; // ms
bool armado = true;
uint32_t tUltimo = 0, tPrimera = 0;
bool esperandoSegunda = false;
// Se llama con cada valor de la envolvente (por ejemplo, a 100 Hz). Devuelve true en una doble palmada.
bool detectarDoblePalmada(float env, uint32_t ahora) {
bool doble = false;
if (armado && env > U_ALTO) { // flanco de una palmada
armado = false; // se consume aunque caiga en el período refractario
if (ahora - tUltimo >= REFRACTARIO) {
tUltimo = ahora;
if (esperandoSegunda && ahora - tPrimera >= MIN_ENTRE && ahora - tPrimera <= MAX_ENTRE) {
doble = true; // segunda palmada a tiempo
esperandoSegunda = false;
} else {
esperandoSegunda = true; // posible primera palmada
tPrimera = ahora;
}
}
} else if (!armado && env < U_BAJO) {
armado = true; // la envolvente bajó: se rearma
}
if (esperandoSegunda && ahora - tPrimera > MAX_ENTRE) esperandoSegunda = false; // venció la ventana
return doble;
}
Es otra instancia de la máquina de eventos del tema 8, aplicada a una envolvente en lugar de a un botón. Y los falsos positivos son los de siempre: una música con bajo fuerte produce picos que cruzan el umbral; un portazo es un solo evento muy grande, y los pasos o la voz pueden activar un umbral bajo. Los remedios son el umbral más alto, la ventana de doble palmada (la música rara vez produce dos picos separados por 450 ms exactos y nada más) y, si hace falta, filtrar por frecuencia, ya que una palmada es rica en agudos.
08 · Más información
Qué frecuencia tiene
Medir la amplitud no dice qué tono es. Si hace falta reconocer una nota, un silbido o una alarma de 3 kHz, hay tres técnicas, de menor a mayor costo:
- Cruces por cero: se cuenta cuántas veces la señal cruza la media en una ventana; la frecuencia es la mitad de esa cuenta por segundo. Simple, pero solo sirve con señales de un único tono limpio.
- Algoritmo de Goertzel: calcula la energía a una frecuencia concreta con muy poco cómputo. Es la herramienta para detectar un tono conocido (la alarma de un detector de humo, los tonos del teléfono).
- Transformada rápida de Fourier (FFT): calcula el espectro completo. Pide mucha memoria y cómputo; en un microcontrolador pequeño se limita a 128 o 256 muestras.
En los tres casos, el aliasing y la frecuencia de muestreo mandan: para ver hasta fmáx hay que muestrear a más de 2·fmáx, y filtrar antes del ADC lo que exceda. No los desarrollamos aquí; basta saber que existen y cuándo recurrir a ellos.
09 · Elegir
Comparación y elección
| Objetivo | Solución | Por qué |
|---|---|---|
| Detectar un golpe o palmada, sin importar el nivel exacto | Módulo KY-038 con su comparador | Una salida digital; umbral ajustable; no usa el ADC |
| Medir el nivel de ruido con una referencia | MAX4466 + ADC + RMS en ventana + calibración | Salida proporcional; ganancia ajustable |
| Reconocer palmadas y patrones con ruido de fondo | MAX4466 + envolvente + histéresis + período refractario | El software da flexibilidad que el comparador no tiene |
| Voz con volumen variable | MAX9814 con AGC | Mantiene la amplitud, aunque pierda el nivel absoluto |
| Audio de calidad, grabación | MEMS I2S (INMP441) en un microcontrolador con I2S | 24 bits, sin ruido analógico |
| Nivel sonoro con exactitud de ±1 dB | Sonómetro certificado o módulo calibrado con ponderación A | El electret barato no alcanza |
Regla general: el comparador de hardware sirve para un «hubo ruido» barato y simple; la medición de amplitud con envolvente en software sirve cuando importa el patrón o el nivel. Y la calidad de un medidor depende más de la calibración y de la ponderación que de cuántos bits tenga el ADC.
10 · Analogía con programación
Decibelios, ventanas, aliasing y palmadas
Probemos la lógica del tema sin micrófono. Primero, la conversión de decibelios a presión y a tensión de un micrófono de −44 dBV/Pa con preamplificador de ganancia 100. Segundo, un tono de 440 Hz muestreado a 8 kHz con un ADC de 10 bits y sesgo de 2,5 V: pico a pico, RMS y nivel calibrado a 94 dB, con el recorte a los rieles. Tercero, el aliasing de varios tonos. Y cuarto, una envolvente con ataque y relajación que detecta dos palmadas separadas por 450 ms.
Python en tu navegador. Los bloques son editables: cambiá los valores y presioná «Ejecutar Python». La primera vez tarda unos segundos en cargar.
import math
P0 = 20e-6 # presión de referencia: 20 µPa
SENS = 10 ** (-44 / 20) # micrófono de -44 dBV/Pa: 6,3 mV por pascal
GANANCIA = 100
LSB = 5 / 1023
def pascales(db):
return P0 * 10 ** (db / 20)
print("SPL presión micrófono tras la ganancia (eficaz · pico)")
for db in (30, 60, 94, 110):
p = pascales(db)
v = p * SENS
print(f"{db:3d} dB {p:9.5f} Pa {v * 1000:9.4f} mV {v * GANANCIA * 1000:9.2f} mV · {v * GANANCIA * 1000 * math.sqrt(2):9.2f} mV")
def muestras(db, f=440, fs=8000, n=400):
"""Un tono muestreado por un ADC de 10 bits con sesgo de 2,5 V; el amplificador recorta en 0 y 5 V."""
amplitud = pascales(db) * SENS * GANANCIA * math.sqrt(2)
x = []
for k in range(n):
v = 2.5 + amplitud * math.sin(2 * math.pi * f * k / fs)
v = max(0.0, min(5.0, v))
x.append(round(v / LSB))
return x
def estadisticas(x):
media = sum(x) / len(x)
pico_a_pico = max(x) - min(x)
rms = math.sqrt(sum((v - media) ** 2 for v in x) / len(x))
return pico_a_pico, rms
REF = estadisticas(muestras(94))[1] # calibración con 94 dB
print()
print(f"RMS de referencia a 94 dB: {REF:.2f} cuentas")
print("real pico a pico RMS nivel estimado")
for db in (50, 70, 94, 100, 110):
pp, rms = estadisticas(muestras(db))
print(f"{db:3d} dB {pp:6d} {rms:7.2f} {94 + 20 * math.log10(rms / REF):6.1f} dB")
# ---- Aliasing ----
def aparente(f, fs):
resto = f % fs
return min(resto, fs - resto)
print()
for f in (1000, 3000, 5000, 7500):
print(f"tono de {f} Hz muestreado a 8 kHz se ve como {aparente(f, 8000):.0f} Hz")
# ---- Envolvente con ataque y relajación, y doble palmada ----
def azar(semilla):
estado = semilla
while True:
estado = (1103515245 * estado + 12345) % 2**31
yield estado / 2**31
g = azar(55)
absoluto = []
for i in range(300): # 3 s a 100 Hz
t = i / 100
a = 0.05 * next(g) # ruido de fondo
for t0 in (0.5, 0.95): # palmadas con 450 ms de separación
if t >= t0:
a = max(a, 0.9 * math.exp(-(t - t0) / 0.06))
absoluto.append(a)
envolvente, valores = 0.0, []
for x in absoluto:
envolvente += (0.5 if x > envolvente else 0.05) * (x - envolvente)
valores.append(envolvente)
armado, ultimo, eventos = True, -100, []
for i, e in enumerate(valores):
if armado and e > 0.4:
armado = False # el flanco se consume aunque caiga en el período refractario
if i - ultimo >= 15:
eventos.append(i / 100)
ultimo = i
elif not armado and e < 0.25:
armado = True
print()
print(f"Palmadas detectadas en t = {eventos} s (pico de la envolvente {max(valores):.2f})")
print(f"Separación: {(eventos[1] - eventos[0]) * 1000:.0f} ms -> {'doble palmada' if 150 <= (eventos[1] - eventos[0]) * 1000 <= 700 else 'palmadas sueltas'}")
Resultado: con 94 dB SPL el micrófono entrega 6,32 mV eficaces y, con ganancia 100, 632 mV (894 mV de pico); con 110 dB, 3,99 V eficaces y 5,64 V de pico, más de lo que admite el rango de ±2,5 V. Con la calibración a 94 dB (RMS de referencia de 129,45 cuentas), los niveles de 70 y 100 dB se estiman con 70,0 y 100,0 dB; el de 50 dB da 51,3 dB (lo limita el escalón del ADC: su amplitud pico es de 1,15 cuentas) y el de 110 dB da 105,0 dB, 5 dB de menos por el recorte, con pico a pico de 1023 (todo el rango). El aliasing convierte 5 kHz en 3 kHz y 7,5 kHz en 500 Hz a 8 kHz de muestreo. El detector halla las palmadas en 0,5 s y 0,95 s, con 450 ms de separación: una doble palmada. Probá cambiar el período refractario a 60 muestras y mirá qué ocurre con la segunda.
El modelo es ideal: no incluye ruido electrónico del amplificador (que fija un piso de unos 40–45 dB), reverberación ni ponderación en frecuencia.
11 · Exploración interactiva
Un medidor de nivel y un detector de palmadas
El primer instrumento simula la cadena completa de medición: elegí el nivel sonoro real y la ganancia, y mirá la tensión del micrófono, el ADC, el pico a pico, el RMS y el nivel estimado, con los problemas típicos (sonido tan débil que no se ve, y recorte). El segundo muestra una envolvente con ataque y relajación sobre cinco escenarios (palmada, doble palmada, música, portazo y voz) y detecta eventos con umbral, histéresis y período refractario ajustables.
Instrumento 1: medidor de nivel con micrófono y preamplificador
Instrumento 2: envolvente y detector de palmadas
Recorrido guiado
- Con 80 dB y ganancia 100: el micrófono entrega 1,26 mV eficaces; tras la ganancia, 126 mV eficaces (178 mV de pico). El ADC ve unas 73 cuentas de pico a pico y el nivel estimado coincide con el real.
- Bajá el nivel a 50 dB: el pico es de 1,15 cuentas y el nivel estimado se desvía por el escalón del ADC. Subí la ganancia a 125 y a 50: observá cómo cambia el piso. La ganancia fija el rango útil.
- Subí a 110 dB con ganancia 100: aparece el recorte, el pico a pico llega a 1023 y el nivel estimado queda unos 5 dB por debajo. Con ganancia 25 el mismo sonido no recorta.
- En el instrumento 2, con una palmada, umbral de 0,40 y relajación media: se detecta un evento, el patrón es «palmada simple» y la lámpara no cambia.
- Con la doble palmada: dos eventos separados por 450 ms y la lámpara alterna. Poné el período refractario en «600 ms»: la segunda palmada cae dentro y no se detecta. Con la relajación lenta (α = 0,01) también se pierde, aunque por otro motivo: la envolvente no llega a bajar del umbral bajo antes de la segunda y el detector no se rearma.
- Con la música y el umbral de 0,40 se disparan 8 eventos por el bajo, y 4 pares separados por 500 ms que el detector toma por dobles palmadas y alternarían la lámpara. Subí el umbral a 0,60: la música ya no dispara (su envolvente llega a 0,55) y la palmada real, que alcanza 0,63, sí. Con 0,70 se pierden las dos. El umbral es un compromiso entre el ruido y la señal buscada.
- Con el portazo, la envolvente sube a 0,83 y baja despacio por la reverberación. Probá la relajación rápida (baja enseguida) y la lenta (permanece alta): siempre se detecta un único evento, pero con la lenta el detector tarda más en rearmarse, y una palmada inmediatamente después no se vería.
Desafío: elegir el umbral para un cuarto con ruido
Una sala tiene música de fondo cuyos picos llegan a 0,35 de la escala y las palmadas a 0,9. ¿Qué umbral alto y bajo elegirías? Un umbral alto de 0,6 queda por encima de la música con margen y por debajo de la palmada; el umbral bajo de 0,4 (histéresis de 0,2) evita rebotes. Con el instrumento 2, la escena de música con 0,60 no dispara y la palmada con 0,60 sí. El margen entre el ruido de fondo y la señal buscada es lo que manda: si la música tuviera picos de 0,8, ningún umbral separaría ambos, y haría falta otro criterio (la ventana de doble palmada o el contenido en frecuencia).
12 · Método de trabajo
Cómo elegir y programar un sensor de sonido
- Definí el objetivo: ¿«hubo ruido», nivel con referencia, patrón (palmada), tono o voz? Eso decide el módulo.
- Elegí la ganancia con los niveles mínimo y máximo esperados, de modo que el sonido más fuerte no recorte y el más suave supere varios escalones del ADC.
- Verificá el sesgo: sin sonido, el ADC debe leer un valor estable cerca de la mitad del rango.
- Muestreá lo bastante rápido y filtrá lo que exceda la mitad de la frecuencia de muestreo.
- Medí en ventanas de 50 ms: RMS para nivel, pico a pico para indicadores simples, restando siempre la media.
- Calibrá los decibelios con un calibrador de 94 dB o un medidor de referencia, y aceptá que un electret barato es un indicador.
- Seguí la envolvente con ataque rápido y relajación lenta, y detectá eventos con histéresis y período refractario.
- Probá en el ambiente real: el ruido de fondo, la reverberación y la distancia al micrófono cambian todo.
Si el sensor «siempre detecta», sospechá del umbral bajo o de la ganancia excesiva; si «nunca detecta», de la ganancia o del sesgo; si el nivel salta sin sentido, de que se está midiendo la señal con el sesgo incluido.
13 · Comprensión
Confusiones frecuentes
«La lectura del ADC es el volumen»
La lectura incluye el sesgo de continua y oscila a miles de ciclos por segundo. El volumen es la amplitud de esa oscilación, medida en una ventana.
«El pico a pico y el RMS son lo mismo»
El pico a pico es una diferencia de extremos; el RMS, la raíz de la media de los cuadrados. Para una senoide, el RMS es el pico a pico dividido por 2√2, pero con ruido o sonidos complejos difieren.
«Con un electret y el ADC obtengo decibelios exactos»
Sin calibración, no hay valor absoluto; y con un micrófono barato y sin ponderación en frecuencia, la exactitud es de ±5 dB como mucho.
«Dos fuentes de 60 dB dan 120 dB»
Los decibelios se suman en potencia: dos fuentes iguales dan 63 dB (3 dB más).
«Más ganancia siempre detecta mejor»
Hasta que recorta: los sonidos fuertes se aplanan contra los rieles y la medición pierde proporcionalidad. También amplifica el ruido de fondo.
«Una palmada es un solo pico»
Tiene reverberación y eco: sin histéresis ni período refractario produce varias detecciones.
14 · Práctica guiada
Predecí antes de comprobar
1. De decibelios a presión
Un sonido de 74 dB SPL, ¿qué presión eficaz tiene? ¿Y uno de 80 dB?
Ver solución
p = 20 µPa × 1074/20 ≈ 20 µPa × 5012 ≈ 0,1 Pa. Con 80 dB: 20 µPa × 10 000 = 0,2 Pa. Seis decibelios duplican la presión.
2. Señal del micrófono
Un micrófono de −44 dBV/Pa (6,3 mV/Pa) recibe 80 dB SPL. ¿Qué tensión eficaz entrega? ¿Y tras un preamplificador de ganancia 100? ¿Cuál es el pico?
Ver solución
Presión = 0,2 Pa → 0,2 × 6,3 mV = 1,26 mV. Tras la ganancia de 100: 126 mV eficaces, con pico de 126 × √2 ≈ 178 mV, es decir, unas 36 cuentas del ADC de pico.
3. ¿Recorta?
Con el mismo micrófono y ganancia 100, y sesgo de 2,5 V con alimentación de 5 V, ¿a partir de qué nivel recorta el amplificador?
Ver solución
El pico máximo es 2,5 V: eficaz máximo = 2,5/√2 ≈ 1,77 V a la salida; a la entrada del amplificador, 17,7 mV; presión = 17,7 / 6,3 ≈ 2,8 Pa → 20·log(2,8 / 20 µPa) ≈ 103 dB SPL. Por encima de ≈ 103 dB, la onda se recorta.
4. Aliasing
Se muestrea a 6 kHz un tono de 4 kHz. ¿Qué frecuencia aparente se mide? ¿Y si el muestreo fuera de 10 kHz?
Ver solución
A 6 kHz: 4 kHz mod 6 kHz = 4 kHz; la frecuencia aparente es min(4, 6 − 4) = 2 kHz (aliasing). A 10 kHz: 4 kHz < 5 kHz (la mitad), no hay aliasing: 4 kHz.
5. Constante de la envolvente
La envolvente se actualiza a 100 Hz con αrelajación = 0,05. ¿Cuánto tarda, aproximadamente, en caer a un tercio de un pico? ¿Y con α = 0,01?
Ver solución
La constante de tiempo es (1 − α)/α muestras: con 0,05, unas 19 muestras = 190 ms (la envolvente cae a 1/e ≈ 37 % en ese tiempo). Con 0,01: 99 muestras ≈ 1 s. Una relajación lenta mantiene el pico más tiempo.
6. Elegir el módulo
Elegí KY-038, MAX4466 o MAX9814 para: (a) encender una luz con una palmada, sin más; (b) medir el ruido de una fábrica con una referencia; (c) un asistente que debe entender la voz a distintas distancias.
Ver solución
(a) KY-038: su comparador da una salida digital, sin ADC. (b) MAX4466: salida proporcional, ganancia ajustable, calibrable. (c) MAX9814: el control automático de ganancia mantiene el nivel de la voz aunque la distancia cambie.
15 · Síntesis
Ideas para recordar
- El sonido es una oscilación de presión; el nivel en dB SPL es 20·log₁₀(p/20 µPa); 94 dB equivalen a 1 Pa y +6 dB duplican la presión.
- Un micrófono electret o MEMS de −44 dBV/Pa entrega 6,3 mV por pascal: señales de pocos milivolts que requieren amplificación.
- La salida amplificada es alterna sobre un sesgo (Vcc/2); la ganancia equilibra el recorte de los sonidos fuertes y la pérdida de los suaves.
- Una muestra aislada no dice el nivel: se mide en una ventana (≈ 50 ms), con pico a pico o RMS de la parte alterna.
- Los decibelios en el programa son relativos a un calibrador (94 dB); un electret barato da ±5 dB: un indicador, no un instrumento.
- La envolvente rectifica y suaviza con un ataque rápido y una relajación lenta.
- Un evento sonoro se detecta con umbral alto y bajo (histéresis), período refractario para el eco y, para patrones como la doble palmada, una ventana temporal.
- El aliasing pliega las frecuencias mayores que la mitad del muestreo; se filtra antes del ADC.
- El comparador de hardware sirve para «hubo ruido»; la medición en software, para nivel y patrones.
¿Listo para el tema 24?
Antes de avanzar, calculá la presión de un sonido de 86 dB SPL, explicá por qué hay que restar la media antes del RMS y justificá para qué sirven la histéresis y el período refractario en un detector de palmadas. Si podés justificar las tres respuestas, ya sabés trabajar con sonido.
En el próximo tema estudiamos los sensores magnéticos: el interruptor reed, los sensores de efecto Hall (digitales y lineales) y los magnetómetros.