Notch dinámico y resonancia del frame: qué filtrar y qué corregir
Un pico pronunciado en el espectro del giroscopio se puede recortar con un filtro notch o eliminar desde el origen. Esta guía explica cómo distinguir el ruido de los motores de la resonancia del frame en un log, cómo detecta bbdoctor una resonancia y por qué a veces no indica la frecuencia, y qué ajustes de notch usan pilotos reales en Betaflight 4.2 a 2025.12, INAV 8 y logs de PX4.
Notch, pasa bajos y filtro RPM: qué elimina cada uno y cuánto cuesta
Todos limpian el giroscopio antes de que llegue al controlador PID, y todos añaden retardo. La diferencia está en lo que buscan:
- Los filtros pasa bajos (
gyro_lpf1_static_hz,gyro_lpf2_static_hz) atenúan todo lo que supera la frecuencia de corte. Su retardo es casi uniforme en toda la banda de control. - El filtro RPM coloca notches estrechos en los armónicos 1×, 2× y 3× de cada motor mediante la telemetría DShot bidireccional. Sigue a los motores y deja intacto todo lo demás. La configuración se explica en la guía del filtro RPM.
- El notch dinámico busca los picos más fuertes del espectro del giroscopio entre
dyn_notch_min_hzydyn_notch_max_hz, y colocadyn_notch_countnotches por eje en esos picos. No distingue si un pico viene de los motores o del frame. - Un notch estático (
gyro_notch1_hz,gyro_notch2_hz) siempre se queda en una frecuencia. Sirve para una resonancia conocida.
El retardo de un notch depende de su frecuencia y su ancho. Las cifras siguientes se calcularon para un lazo de 4 kHz con un biquad al estilo Betaflight. Lo que importa es el retardo entre 20 y 40 Hz, donde se produce el movimiento real del dron.
| Filtro | Retardo a 20 Hz | A 40 Hz |
|---|---|---|
| PT1 250 Hz | 0.63 ms | 0.61 ms |
| PT1 100 Hz | 1.52 ms | 1.32 ms |
| Notch estático 160 Hz, corte 120 (Q 1.71) | 0.60 ms | 0.68 ms |
| Notch estático 469 Hz, corte 328 | 0.24 ms | 0.24 ms |
| Notch dinámico a 200 Hz, dyn_notch_q 500 | 0.16 ms | 0.18 ms |
| Notch dinámico a 100 Hz, dyn_notch_q 500 | 0.36 ms | 0.52 ms |
| Notch dinámico a 70 Hz, dyn_notch_q 500 | 0.58 ms | 1.29 ms |
| Notch dinámico a 100 Hz, dyn_notch_q 120 | 1.45 ms | 1.88 ms |
De aquí salen dos reglas. Un notch estrecho en la parte alta del espectro casi no cuesta nada, mientras que uno ancho o de frecuencia baja puede costar tanto como un buen pasa bajos. Y tres notches muy juntos triplican el retardo de uno solo.
Ruido de motores o resonancia del frame: líneas diagonales y verticales
La vista más clara es un mapa de calor del gas: la frecuencia va en horizontal, el gas aumenta hacia arriba y el brillo representa el nivel de ruido. La velocidad de los motores aumenta con el gas, así que sus armónicos dibujan líneas diagonales. Una resonancia del frame es una frecuencia natural de la estructura y no depende del gas, así que dibuja una línea vertical.

Ese último detalle importa: una resonancia casi siempre brilla más donde la cruza una línea del motor. El motor es la fuente y el frame actúa como amplificador. Un dron de 7 pulgadas con Betaflight 4.6 lo muestra bien. Su piloto ya había configurado un notch estático a 160 Hz.

bbdoctor no lo identificó como resonancia: la línea supera el umbral en solo cerca de la mitad de los intervalos de gas, y necesita llegar al 60 %. Es una conclusión razonable. Un pico así está en el límite entre el frame y los motores, y los filtros activos ya lo controlan. El ruido filtrado aquí es de 0.66 deg/s, así que no hay motivo para tocar los filtros. Sin embargo, el ruido sin filtrar es de 7.9 deg/s, y bbdoctor señala correctamente las hélices, los motores y el frame.
Cómo detecta bbdoctor una resonancia y por qué a veces no indica la frecuencia
Si sabes cómo funciona el detector, podrás interpretar el informe:
- El vuelo se divide en ventanas de 256 muestras, con un solapamiento del 50 %. Cada ventana se asigna a uno de 20 intervalos de gas según el promedio del gas. Un intervalo cuenta si contiene al menos 4 ventanas.
- Para roll y pitch se calcula un espectro en cada intervalo, y el «piso» es una mediana móvil de 15 frecuencias vecinas. El paso de la cuadrícula es la tasa de registro dividida por 256: unos 4 Hz en un log de 1 kHz y unos 16 Hz a 4 kHz.
- Una frecuencia cuenta como resonancia si su pico supera el piso en más de 6 dB en al menos el 60 % de los intervalos de gas. Se ignora todo lo que esté por debajo de 60 Hz o en el 5 % superior por debajo de Nyquist.
- Los picos de roll y pitch separados por menos de 10 Hz se combinan en uno.
Con un divisor de registro, la caja negra de Betaflight guarda una de cada N muestras sin filtro antialiasing. Todo lo que supera la mitad de la tasa de registro se repliega, así que un pico a 827 Hz en un log de 1013 Hz aparece a 186 Hz. El log no permite deshacerlo, así que bbdoctor muestra las frecuencias candidatas: f, fs − f y fs + f.
| Log | Registro / lazo PID | Pico en el log | Candidatas | Conclusión |
|---|---|---|---|---|
| BF 4.5.1, 6S, vuelo 1 | 1013 Hz / 4 kHz | 206 Hz roll, +8 dB, 71 % de los intervalos | 206, 807, 1219 | no se sugiere notch |
| BF 4.5.1, 6S, vuelo 2 | 1013 Hz / 4 kHz | 186 pitch, 198 roll, +6–7 dB | 186, 827, 1199 / 198, 815, 1211 | no se sugiere notch |
| BF 4.5.1, 6S, vuelo 3 | 1013 Hz / 4 kHz | 190 y 226 pitch, 202 roll, +7 dB | 190, 823, 1203 y otras | no se sugiere notch |
| INAV 8.0.0, 6S | 995 Hz / 2 kHz | 117 Hz pitch, +12 dB, 100 % de los intervalos | 117, 878, 1112 | no se sugiere notch |
| PX4 1.15.4, 6S | 8013 Hz | 469 Hz pitch, +6 dB | sin ambigüedad | notch estático |
Según la regla del código, la frecuencia no es ambigua si el log se registra a la tasa del lazo PID, o si se registra a 2 kHz o más y el pico está por debajo de la mitad de la frecuencia de Nyquist. En un log de 2 kHz eso significa menos de 500 Hz. Los tres vuelos 6S son el caso de manual. Usan blackbox_sample_rate = 1/4, así que la resonancia real podría estar a 186 Hz en los brazos o a 827 Hz en la stack. Eso cambia tanto el notch como el lugar donde debes buscar el problema.

En los tres logs, bbdoctor informa: «Filtros: hay margen, pero aún es pronto para relajarlos (retardo de 2.2–2.3 ms)». El ruido filtrado es de 0.5–0.6 deg/s, pero el giroscopio sin filtrar marca 4.8–7.4 deg/s y hay una resonancia. Subir las frecuencias de corte antes de reparar el hardware y conocer la frecuencia solo deja que ese pico llegue a los PID.
Ajustes del notch dinámico según la versión de Betaflight
Los nombres de los parámetros cambiaron dos veces, en 4.2 y en 4.3. ¿No sabes qué ofrece tu firmware? Escribe get dyn_notch en la CLI para ver todos los parámetros coincidentes.
| Versión | Cómo activarlo | Parámetros | Notas |
|---|---|---|---|
| 4.0–4.1 | feature DYNAMIC_FILTER | dyn_notch_range (LOW/MEDIUM/HIGH/AUTO), dyn_notch_width_percent, dyn_notch_q, dyn_notch_min_hz | el límite superior es un preajuste; valores predeterminados: AUTO, 8, 120, 150 |
| 4.2 | feature DYNAMIC_FILTER | dyn_notch_max_hz sustituye a range, dyn_notch_min_hz, dyn_notch_width_percent, dyn_notch_q | notas de 4.2: ancho 0 y Q 250 con RPM; 8 y 120 sin RPM |
| 4.3, 4.4, 4.5, 4.6, 2025.12 | dyn_notch_count mayor que 0 | dyn_notch_count (hasta 5; hasta 7 en 2025.12), dyn_notch_q, dyn_notch_min_hz, dyn_notch_max_hz | nuevo algoritmo SDFT; ya no existen width ni la función; valores predeterminados: 3 notches, Q 300, 150–600 Hz en 4.3 y 100–600 Hz en 2025.12 |
Estos son los ajustes de logs reales de nuestro conjunto (todos usan DShot bidireccional excepto el último):
| Dron | Firmware | count | Q | mín.–máx., Hz |
|---|---|---|---|---|
| Dron 6S, los tres vuelos anteriores | 4.5.1 | 1 | 500 | 100–600 |
| MASTER5 V2 | 4.5.1 | 2 | 350 | 120–650 |
| Nazgul F5 V2 | 4.4.1 | 2 | 500 | 120–600 |
| GEPRC, F405 | 2025.12.5 | 2 | 400 | 90–400 |
| REKON 7 | 4.6.0 | 3 | 500 | 70–400, más un notch estático a 160 Hz |
| F745, filtro RPM inactivo (dshot_bidir 0) | 4.2.8 | ancho 8 | 120 | 150–600 |
Cuántos notches. Si el filtro RPM funciona, empieza con uno o dos. Las notas de 4.3 dicen que rara vez hacen falta más de dos o tres y que muchas veces basta con uno. Sin filtro RPM, los notches hacen su trabajo, y las notas sugieren tres o cuatro con Q de alrededor de 120–150.
Q. Las notas de 4.3 indican que 300–450 es un buen rango para freestyle. En los logs con filtro RPM se usa 350–500. Un Q bajo solo tiene sentido sin filtro RPM, cuando el notch debe cubrir el ruido disperso de los motores.
min_hz y max_hz. Busca la línea más baja del mapa de calor que quieras captar (con filtro RPM suele ser la resonancia; sin él, el armónico 1× de los motores al gas de estacionario) y configura dyn_notch_min_hz unos 20 Hz por debajo. Las notas recomiendan mantener el mínimo tan alto como sea práctico para reducir el retardo. En los logs anteriores está entre 90 y 120 Hz en los drones pequeños, y en 70 Hz en el dron de 7 pulgadas, cuyos motores giran a 125–155 Hz con 20–35 % de gas. Configura dyn_notch_max_hz justo por encima del pico más alto que necesites; un rango más amplio implica una resolución más gruesa.
set dyn_notch_count = 1 set dyn_notch_q = 500 set dyn_notch_min_hz = 100 set dyn_notch_max_hz = 600 save
Es la configuración del dron 6S de la tabla: un punto de partida razonable en 4.3+ con filtro RPM, no una receta universal.
Un notch estático como solución provisional
Cuando la frecuencia no es ambigua, bbdoctor propone un comando de notch estático: centra el notch en la resonancia y fija el corte inferior en 0.7 veces esa frecuencia. Betaflight calcula Q a partir de la frecuencia central y el corte con Q = f·c / (f² − c²). Con c = 0.7f, Q ≈ 1.37, y la banda a −3 dB va de 0.7f a 1.43f. Es ancha a propósito. La resonancia varía con la tensión de los tornillos y la temperatura, y un mapa de calor de un log de 4 kHz solo la ubica con una precisión de medio paso de la cuadrícula, unos 8 Hz. Si un log 1/1 confirma que la resonancia del dron 6S está realmente a 186 Hz, el comando es:
set gyro_notch1_hz = 186 set gyro_notch1_cutoff = 130 save
El piloto del dron de 7 pulgadas eligió 160/120, que corresponde a Q 1.71 y a un corte algo más estrecho. Según la tabla anterior, añade unos 0.6 ms a 20 Hz, lo mismo que un PT1 de 250 Hz. Es un precio razonable para un pico, pero no una razón para añadir un segundo notch «por si acaso». Las notas de 4.3 añaden una recomendación útil: cuando el notch estático se encarga de una resonancia que se mantiene en la misma frecuencia, reduce dyn_notch_count en uno.
INAV. INAV no tiene notch estático para el giroscopio (solo acc_notch_hz para el acelerómetro), así que bbdoctor no ofrece ningún comando para INAV. Queda el notch dinámico: dynamic_gyro_notch_enabled, dynamic_gyro_notch_q, dynamic_gyro_notch_min_hz. Nuestro log de INAV usa Q 250 con un mínimo de 126 Hz. Si un log a tasa completa confirma una resonancia a 117 Hz, el notch dinámico no podrá alcanzarla hasta que bajes el mínimo a unos 100 Hz. Más información en la guía de la caja negra de INAV.
ArduPilot. bbdoctor activa el segundo notch armónico en modo de frecuencia fija, con un ancho de banda de f/2 y una atenuación de 40 dB. Después de configurar INS_HNTC2_ENABLE = 1, actualiza la lista de parámetros para que aparezcan los demás parámetros INS_HNTC2_*. Consulta la guía de logs de ArduPilot.
PX4. Desde la versión 1.13 se usan IMU_GYRO_NF0_FRQ y IMU_GYRO_NF0_BW; en la 1.12 y anteriores, IMU_GYRO_NF_FREQ y IMU_GYRO_NF_BW. bbdoctor fija el ancho de banda en 0.3 veces la frecuencia. El log de PX4 1.15.4 se registró a 8 kHz, así que el pico de 469 Hz no es ambiguo y los comandos son:
param set IMU_GYRO_NF0_FRQ 469 param set IMU_GYRO_NF0_BW 141
El mismo log tiene activado el notch FFT (IMU_GYRO_FFT_EN = 1), pero su rango es de 30–150 Hz y nunca llega a 469 Hz. Mientras tanto, IMU_GYRO_CUTOFF = 40 añade unos 5.6 ms de retardo, mientras que un notch de 469 Hz con un ancho de banda de 141 Hz añade unos 0.1 ms. Aun así, bbdoctor indica que todavía es pronto para relajar los filtros: el ruido sin filtrar en roll es de 6.4 deg/s, así que primero hay que corregir el hardware. Encontrarás detalles de PX4 en la guía de ULog.
Primero corrige el hardware: qué revisar según la frecuencia
bbdoctor divide las resonancias a 250 Hz e indica la causa probable en el hallazgo:
| Frecuencia real | Qué suele vibrar | Qué hacer |
|---|---|---|
| 60–250 Hz | brazos y frame, cámara floja, antena, batería con una correa poco firme | aprieta los tornillos de los brazos, revisa si tienen grietas o delaminación, asegura la cámara y la antena, aprieta la correa y pon una almohadilla antideslizante bajo la batería |
| 250 Hz o más | la stack de la controladora de vuelo y los ESC sobre soportes blandos, fijaciones, separadores, placa superior | revisa los ojales (si la stack está aplastada, ya no está montada sobre soportes blandos), las tuercas de la stack, los separadores y los tornillos de la placa superior |
Desconecta la batería y quita las hélices antes de trabajar en el frame. Antes de reparar nada, coloca hélices nuevas y revisa los motores, porque son los que excitan la resonancia. La guía de vibraciones explica cómo identificar en un log el motor culpable; la guía de motores calientes explica el ruido y los filtros en general.
Confírmalo con un log corto a tasa completa
- Registra a la tasa del lazo PID. En Betaflight 4.3+ usa
set blackbox_sample_rate = 1/1; en INAV,blackbox_rate_num = 1yblackbox_rate_denom = 1; en PX4, los bits 4 (High rate) y 8 (Raw FIFO high-rate IMU Gyro) enSDLOG_PROFILE; en ArduPilot 4.5+,INS_RAW_LOG_OPTjunto con el bit IMU_RAW enLOG_BITMASK. La memoria flash se llena cuatro veces más rápido que con 1/4. - Asegúrate de que se registre el giroscopio sin filtrar. Desde la versión 4.5 tiene un campo propio; en 4.0–4.4 necesitas
debug_mode = GYRO_SCALED. Consulta la guía de configuración de la caja negra. - Vuela durante un minuto: estacionario, una subida suave en línea recta hasta 70–80 % de gas y cambios de gas mantenidos durante unos segundos cada uno. El detector necesita ventanas en muchos intervalos de gas, no solo en estacionario.
- Sube el log a bbdoctor. Si la resonancia no es ambigua, el hallazgo dice «Resonance at X Hz at any throttle» e incluye comandos de notch.
- Corrige primero el hardware y vuelve a volar. Añade el notch solo si el pico persiste; luego registra otro log: el bulto de esa frecuencia debería haber desaparecido del giroscopio filtrado y el ruido filtrado no debería aumentar.
- Vuelve a poner el divisor de registro en su valor normal.
set blackbox_sample_rate = 1/1 save
Los errores más comunes
- Aplicar un notch a una frecuencia con aliasing. Un log 1/4 muestra un pico a 186 Hz, configuras el notch a 186 Hz, pero la resonancia real está a 827 Hz. Has añadido 0.6 ms de retardo en la banda de control sin recortar nada.
- Usar cinco notches junto con un filtro RPM que funciona. El retardo se acumula cuando casi no queda nada por recortar. Empieza con uno y añade más solo si sigue visible una línea en el mapa de calor filtrado.
- Fijar min_hz tan bajo que el notch entra en la banda de control. Con dyn_notch_q 500, un notch situado a 70 Hz añade 1.29 ms a 40 Hz, frente a 0.52 ms si está a 100 Hz. Configura el mínimo según tus motores; no lo pongas «un poco más bajo por seguridad».
- Usar un rango que no alcanza el pico. El mínimo de 126 Hz de INAV frente a un pico de 117 Hz, o el notch FFT de PX4 que llega solo a 150 Hz frente a un pico de 469 Hz. El filtro está activado, pero no hace nada.
- Relajar los filtros mientras persiste la resonancia. Un nivel bajo de ruido filtrado no demuestra que haya margen. Puede que lo mantenga bajo justo el notch y el pasa bajos que estás a punto de aflojar.
- Olvidar un notch estático. Después de una reparación, registra un log. Si el pico desapareció, quita el notch con
set gyro_notch1_hz = 0, haz un breve vuelo en estacionario y toca los motores. El retardo de un filtro que no tiene nada que filtrar no ayuda a nadie.
Cuándo dejarlo como está: bbdoctor no detecta resonancia, el ruido sin filtrar está por debajo de 4 deg/s (su indicador de «mecánica limpia»), el ruido filtrado está por debajo de 1 deg/s y los motores terminan templados, no calientes. Un notch tampoco arregla una oscilación de baja frecuencia. En un log de PX4 1.17, bbdoctor detectó un pico de 42 Hz solo en pitch en el error (giroscopio − setpoint), y la fase del motor apuntaba a que lo provocaba la P. Su recomendación es bajar la P de pitch un 10 % y comparar el siguiente vuelo, no añadir un filtro; además, el detector de resonancia ni siquiera analiza frecuencias por debajo de 60 Hz.
Sube tu propio log al analizador o consulta el informe de ejemplo. Puedes revisar una configuración sin volar en la página de comparación de cambios, que detecta casos como un notch dinámico desactivado sin filtro RPM.
Preguntas frecuentes
¿Cuántos notches dinámicos necesito si uso el filtro RPM?
Normalmente, uno o dos. El filtro RPM ya elimina los armónicos de cada motor, así que el notch dinámico solo tiene que captar lo que no está ligado a las RPM: la resonancia del frame y el ruido residual de las hélices. Las notas de ajuste de Betaflight 4.3 dicen que rara vez hacen falta más de dos o tres y que muchas veces basta con uno. En la mayoría de nuestros logs de 4.5 se usa dyn_notch_count = 1 con Q 500; un log de 2025.12 usa dos con Q 400. Cada notch adicional que se queda bajo en el espectro añade retardo.
¿Notch estático o dinámico para una resonancia del frame?
Primero corrige el hardware. Si la resonancia persiste y un log a tasa completa te da su frecuencia exacta, usa un notch estático: se coloca justo en el pico y no se desplaza para perseguir otra cosa. El notch dinámico puede controlarla si la frecuencia está entre dyn_notch_min_hz y dyn_notch_max_hz y tiene un notch disponible, pero si solo tienes uno junto al filtro RPM, tendrá que elegir entre la resonancia y el ruido residual de los motores.
¿Qué significa dyn_notch_q?
Es el valor Q del notch multiplicado por 100, así que dyn_notch_q = 500 significa Q = 5. El ancho de banda a −3 dB es la frecuencia central dividida por Q: 40 Hz de ancho a 200 Hz con Q 5. Un Q más alto produce un corte más estrecho y menos retardo en la banda de control, pero el notch debe coincidir con el pico con más precisión. Sin filtro RPM, las notas de 4.3 sugieren Q 120–150; los logs con filtro RPM suelen usar 350–500.
¿Un filtro notch puede arreglar el jello del video?
No. El jello se debe a que vibra la cámara, y un filtro del giroscopio solo cambia lo que ve el lazo PID, así que no estabiliza la cámara. Busca la causa mecánica: una hélice desequilibrada, un motor áspero o un soporte de cámara flojo. El notch solo ayuda indirectamente, cuando los motores transmiten ruido al frame. Busca la frecuencia en el log como lo harías con una resonancia.
Actualizado: