bbdoctor
Diagnóstico de drones por el log: Betaflight, INAV, ArduPilot, PX4
RUENESPTUA

Motores calientes en Betaflight: ajusta los filtros con tu log de Blackbox

Motores demasiado calientes para tocarlos después de un vuelo, un siseo al acelerar a fondo, jello o un zumbido en estacionario: eso es ruido, y lo primero que apetece es tocar los filtros. Pero los filtros no eliminan la causa. Ocultan problemas mecánicos, añaden retardo y no sirven de nada cuando el ruido procede del feedforward que reacciona a la radio. A continuación: los cuatro valores que bbdoctor extrae de un log para encontrar el origen, logs reales de cada caso y el orden de las soluciones.

Por qué el ruido calienta los motores

El giroscopio capta más que el movimiento del cuadricóptero: desequilibrio de las hélices, un rodamiento áspero, flexión de los brazos o una pila de electrónica suelta. Los filtros eliminan parte del ruido y el resto entra en el bucle PID. P deja pasar el ruido directamente. D es una derivada, así que su salida aumenta con la frecuencia: antes del pasa bajos del término D, una vibración de 300 Hz con la misma amplitud que una oscilación de 30 Hz genera diez veces más D.

Ese ruido acaba en los comandos del motor, pero un rotor con hélice no puede seguirlo. Al comparar las RPM con el comando, bbdoctor tiene en cuenta unos 20 ms de retardo del rotor, aproximadamente un pasa bajos de 8 Hz. A 80 Hz las RPM siguen el movimiento con una amplitud unas diez veces menor; a 300 Hz apenas se mueven. No hay empuje, pero la corriente de los devanados sigue dando tirones en cada ciclo y se convierte en calor en el ESC y el motor. De ahí el umbral de 80 Hz.

Los cuatro valores

Todo se calcula solo con datos del vuelo; «ruido» significa RMS por encima de 80 Hz.

ValorCálculoBuenoAdvertenciaMalo
Giroscopio sin filtrar, deg/sRMS del giroscopio sin filtrar, peor valor entre alabeo y cabeceomenos de 44–1010 o más
Giroscopio filtrado, deg/sLo mismo para el giroscopio filtrado que reciben los PIDmenos de 1: margen disponiblemás de 3: el ruido llega a los PID—
Retardo del filtro, msDesfase en el que mejor coinciden el giroscopio sin filtrar y el filtrado (correlación cruzada), promedio de alabeo y cabeceoSin norma fija; 0,8–3,2 en los logs de esta guíamás de 1,5 con poco ruido: retardo que se puede recuperar—
Ruido HF del motor, % del recorridoRMS de los comandos de motor, peor motor; solo logs a 500 Hz o máshasta 2,5más de 2,5más de 4

El quinto valor es qué término transporta el ruido. Betaflight e INAV registran por separado los términos PID (axisP, axisD, axisF). bbdoctor aplica un pasa altos a 80 Hz a cada uno, lo convierte a porcentaje del recorrido del motor (una suma PID de 1000 equivale al recorrido completo) y calcula la proporción de energía de ruido de cada término: con un 60 % o más, ese término es el origen; de lo contrario, el resultado es «mixto».

Dos salvedades. El retardo compara el giroscopio sin filtrar con el filtrado, así que solo abarca la cadena del giroscopio (pasa bajos, notch y filtro RPM), no los filtros del término D que están más adelante. Además, el ruido del motor está en cientos de hercios, que un log de 250 Hz no puede captar (llega solo hasta 125 Hz); por eso se exige un mínimo de 500 Hz.

Espectros del giroscopio de alabeo antes y después del filtrado: a la izquierda, una amplia elevación de ruido sin filtrar entre 200–450 Hz, 35,8 deg/s sin filtrar y 1,34 deg/s filtrado; a la derecha, 4,1 deg/s sin filtrar y 0,53 deg/s filtrado
Espectro del giroscopio de alabeo antes del filtrado (gris) y después (azul); el ruido es el RMS por encima de 80 Hz (línea discontinua). A: Betaflight 4.2.5, 4S, log de 2 kHz, amplia elevación entre 200–450 Hz, 35,8 deg/s sin filtrar y 1,34 deg/s después del filtrado, mientras los motores se mantienen limpios (0,8–0,9 % de ruido HF). B: Betaflight 4.5.2, log de 1 kHz, 4,1 deg/s sin filtrar y 0,53 deg/s filtrado. Ambos paneles comparten la escala dB.

De dónde viene el ruido: cuatro casos

Mecánica: el giroscopio sin filtrar tiene ruido

Log A de la figura: Betaflight 4.2.5, 215 segundos de vuelo. El ruido sin filtrar es de 35,8 deg/s en alabeo y 23,8 en cabeceo. Después de los filtros queda en 1,34 deg/s y los motores están limpios: el informe marca como crítico el ruido sin filtrar, pero considera adecuados los filtros. Los filtros hicieron su trabajo, a costa de 3,2 ms de retardo, el valor más alto de todos los logs de esta guía. Si te guías por el giroscopio filtrado o los motores, no lo detectarías, pero esa elevación entre 200–450 Hz apunta a hélices, motores o alguna pieza suelta.

La solución es un destornillador y hélices nuevas, no tocar los filtros. Cuando baje el ruido sin filtrar, los filtros tendrán margen real para recuperar algo de retardo. Para encontrar el motor o la hélice exactos: cómo encontrar un motor o una hélice defectuosos en tu log.

El ajuste: el ruido atraviesa los filtros y D lo transporta

Log C de la segunda figura: un whoop 1S con INAV 8.0. El giroscopio sin filtrar marca 22,1 deg/s y queda en 4,8 después de los filtros, así que parte del ruido los atraviesa. El ruido HF del motor es un 5,5 %, nivel crítico, y D transporta el 97 %. Tiene sentido reducir D o bajar los cortes de los filtros del término D, pero con 4,8 deg/s después del filtrado también hay que revisar las hélices y el chasis (D amplifica todo lo que logra pasar); además, primero hay que corregir una ganancia que parece un error tipográfico (más abajo).

D puede ser el problema incluso si los motores están por debajo del 2,5 %. Cuando D por sí solo les envía un 1,5 % del recorrido (el 3 % es crítico), bbdoctor muestra por separado el hallazgo «el ruido del término D llega a los motores» y propone este orden: si el giroscopio filtrado marca 1 deg/s o más, empieza por la mecánica; si el filtro RPM está apagado (dshot_bidir = OFF o rpm_filter_harmonics = 0), actívalo; luego baja un 15 % los cortes del término D o, si el filtro del término D ya está por debajo de 70 Hz, reduce D un 10 % en su lugar, porque bajar más el corte añade retardo y aporta poca mejora. ¿Siguen calientes? Reduce D un 10 % en el siguiente vuelo. Si los motores superan el 2,5 %, la recomendación es más breve: mecánica y, después, bajar un 15 % los cortes del término D o reducir D.

Jitter del feedforward causado por la radio

Log A de la segunda figura: un VX3.5 con Betaflight 4.5.2, log de 1 kHz y ruido HF del motor del 3,0 %, nivel de advertencia. La recomendación habitual de bajar los filtros del término D o D no serviría: D transporta el 4 % del ruido, P menos del 1 % y el feedforward el 96 %. FF es la derivada de la señal de los sticks y, como la radio envía comandos en paquetes, cada salto entre paquetes provoca un tirón. En este caso, FF por encima de 40 Hz alcanzó el 3,6 % del recorrido del motor en alabeo, con 51 tirones por segundo que superaron el 5 % del recorrido durante 112 segundos de movimiento de los sticks.

La señal, incluso sin analizar el log: motores ruidosos mientras mueves los sticks y silenciosos en estacionario. El mismo informe mostró un sobreimpulso del 25–31 %, así que el primer paso de bbdoctor es reducir FF según ese hallazgo; después, aumentar el promedio y el suavizado en el vuelo siguiente y, luego, cambiar feedforward_jitter_factor de 7 a 12:

set feedforward_averaging = 2_POINT
set feedforward_smooth_factor = 65
save

Esos nombres se usan a partir de Betaflight 4.3. En la versión 4.2, bbdoctor ajusta ff_interpolate_sp (AVERAGED_2 o AVERAGED_3 con un enlace de 500 Hz), ff_spike_limit (bajarlo hasta 50) y rc_smoothing_auto_smoothness (subirlo hasta 20). Así se ve el sobreimpulso de FF en la respuesta al escalón: ajuste PID a partir de Blackbox.

Una ganancia que parece un error tipográfico

El mismo whoop: P de alabeo 17 y D 50; P de cabeceo 40 y D 35 (valor predeterminado de INAV: D 23 con P 40). En un eje, D triplica P; en el otro está por debajo de P, y en el log el término D de alabeo es 12 veces más fuerte que P. bbdoctor marca este patrón (D al menos 2×P en un eje y como máximo igual a P en el otro) como posible error tipográfico y lo pone primero porque basta una línea en CLI: D × 0,7 en ese eje. Si el ruido continúa, revisa la mecánica y los filtros del término D:

set mc_d_roll = 35
save
Tres gráficos de barras del ruido del motor por término PID: en el primero predomina FF; en el segundo y el tercero, D, pero el segundo tiene poco ruido y el tercero mucho
Ruido por encima de 80 Hz que cada término PID envía a los motores, en % del recorrido del motor (promedio de alabeo y cabeceo); debajo de cada valor aparece la proporción de energía de ruido de ese término en todos los ejes. Cada panel tiene su propia escala. A: VX3.5, Betaflight 4.5.2, motores al 3,0 %, el feedforward aporta el 96 %. B: 6S, Betaflight 4.5.1, D transporta el 83 %, pero los motores están limpios, al 0,5 %. C: whoop 1S, INAV 8.0, D transporta el 97 % y los motores están al 5,5 %.

La proporción y la magnitud son cosas distintas. En el log B, D transporta el 83 % del ruido, pero eso equivale solo al 0,5 % del recorrido: no hay nada que corregir. La proporción indica qué debes corregir; la magnitud, si merece la pena hacerlo.

Orden de las soluciones

  1. Mecánica. Usa hélices nuevas del mismo lote, aprieta los tornillos de los motores y gira cada motor a mano: debe girar suavemente, sin rozamiento ni holgura. Comprueba que los brazos no estén agrietados, que la pila esté sobre soportes blandos y que nada quede suelto, como la cámara, la antena o la correa de la batería.
  2. Filtro RPM. Necesitas DShot bidireccional (dshot_bidir = ON), ESC con Bluejay, AM32 o BLHeli_32, y el valor correcto de motor_poles (el número de imanes de la campana). Los armónicos se configuran con rpm_filter_harmonics o con gyro_rpm_notch_harmonics en 4.1–4.2; 0 significa que el filtro está apagado. Para comprobar que funciona, registra también las RPM: consulta configuración de Blackbox.
  3. Notch dinámico para las resonancias que no siguen las RPM. Si el filtro RPM funciona, normalmente bastan 1–2 notch (dyn_notch_count, BF 4.3+). bbdoctor considera que un pico que permanece en una frecuencia fija al variar el gas (6 dB sobre el nivel de fondo en al menos el 60 % de las bandas de aceleración, por encima de 60 Hz) es una resonancia del chasis o de la pila. Solo propone un notch estático cuando la frecuencia no deja dudas: el log está grabado a la frecuencia del bucle PID o a 2 kHz o más y el pico está por debajo de la mitad de la frecuencia de Nyquist. En tres logs 6S con 4.5.1 (grabados a 1013 Hz con un bucle PID de 4 kHz), los picos aparecen entre 186–226 Hz, y un pico de «206 Hz» podría ser en realidad de 206, 807 o 1219 Hz. En vez de aplicar un notch a ciegas, bbdoctor recomienda un log corto con blackbox_sample_rate = 1/1.
  4. Filtros pasa bajos. Redúcelos un 15 % respecto a los valores actuales: los del término D si D transporta el ruido; los del giroscopio si el ruido atraviesa los filtros o P lo transporta. No bajes el filtro del término D de 70 Hz.
  5. D, al final y solo si D transporta el ruido y los filtros ya están bajos. Los nombres de D cambiaron en 2025.12; consulta la sección siguiente.

Una excepción a este orden: corrige primero una ganancia que parezca un error tipográfico. Haz un solo cambio por vuelo. Después de cada cambio, vuela entre 30 y 60 segundos, aterriza, desconecta la batería y toca los motores. Si están más fríos, conserva el cambio. Si no, reviértelo.

La regla principal: no subas D si los motores están calientes y hay ruido, ni siquiera para combatir el propwash. También se aplica a la inversa: si el informe muestra sobreimpulso en alabeo o cabeceo, no bajes D para enfriar los motores; el sobreimpulso aumentará, así que bbdoctor recomienda revisar la mecánica y los filtros del término D.

Nombres de los filtros en las distintas versiones de Betaflight

FunciónBetaflight 4.0–4.2Betaflight 4.3–4.5 y 2025.12
Pasa bajos dinámico del giroscopiodyn_lpf_gyro_min_hz / dyn_lpf_gyro_max_hzgyro_lpf1_dyn_min_hz / gyro_lpf1_dyn_max_hz
Pasa bajos estático 1 del giroscopiogyro_lowpass_hzgyro_lpf1_static_hz
Pasa bajos 2 del giroscopiogyro_lowpass2_hzgyro_lpf2_static_hz
Pasa bajos dinámico del término Ddyn_lpf_dterm_min_hz / dyn_lpf_dterm_max_hzdterm_lpf1_dyn_min_hz / dterm_lpf1_dyn_max_hz
Pasa bajos estático 1 del término Ddterm_lowpass_hzdterm_lpf1_static_hz
Pasa bajos 2 del término Ddterm_lowpass2_hzdterm_lpf2_static_hz
Armónicos del filtro RPMgyro_rpm_notch_harmonics (4.1–4.2)rpm_filter_harmonics
Controles deslizantes de filtros4.2: solo en Configurator; no existen antessimplified_gyro_filter, simplified_dterm_filter

2025.12 conserva los nombres de los filtros, pero cambia el significado de D: el valor base ahora es d_roll/d_pitch y el superior es d_max_roll/d_max_pitch.

La trampa de los controles deslizantes (4.3+): con simplified_dterm_filter = ON, al guardar en Configurator una pestaña con controles deslizantes, se recalculan los cortes a partir del multiplicador y se borran los valores introducidos manualmente. En un log real del VX3.5, el término D está a 180/420 Hz con el control deslizante activado en 100, lo que daría los valores predeterminados 75/150; por tanto, esos cortes se configuraron a mano o mediante un preajuste. ¿Vas a cambiar los cortes en CLI? Desactiva el control deslizante.

Parte de tus valores actuales (get dterm_lpf los muestra). bbdoctor los toma de la cabecera del log, multiplica cada corte por 0.85 (o por 1.15 para subirlo) y desactiva el control deslizante. Para el término D de este VX3.5 (180/420 Hz, pasa bajos 1 a 158 y pasa bajos 2 a 150), una reducción del 15 % queda así; es solo un cálculo, porque en ese log el ruido viene del FF:

set dterm_lpf1_dyn_min_hz = 153
set dterm_lpf1_dyn_max_hz = 357
set dterm_lpf1_static_hz = 134
set dterm_lpf2_static_hz = 128
set simplified_dterm_filter = OFF
save

Tampoco uses simplified_tuning apply como solución rápida: recalcula filtros y PID desde los valores predeterminados de Betaflight, no desde los tuyos, y borra silenciosamente los ajustes manuales.

Cuándo puedes relajar los filtros

Filtrar menos reduce el retardo y mejora la respuesta al propwash. bbdoctor solo recomienda subir un 15 % los cortes del giroscopio si se cumplen todas estas condiciones:

Con los valores predeterminados de 4.5 (250/500 Hz y pasa bajos 2 a 500), los comandos serían:

set gyro_lpf1_dyn_min_hz = 288
set gyro_lpf1_dyn_max_hz = 575
set gyro_lpf1_static_hz = 288
set gyro_lpf2_static_hz = 575
set simplified_gyro_filter = OFF
save

Si el ruido y el retardo están dentro de los límites, pero el giroscopio sin filtrar tiene ruido o hay una resonancia, el informe indica que hay margen, pero que aún es pronto para relajar los filtros. En los demás casos los considera adecuados (o avisa si el giroscopio filtrado supera 3 deg/s); si el log está por debajo de 500 Hz, no recomienda relajarlos. En un 6S con 4.5.1 y exactamente esos valores predeterminados: 0,6 deg/s filtrados y 2,2 ms de retardo, mucho margen en teoría, pero 7,4 deg/s sin filtrar y una resonancia a 206 Hz. Los filtros están ocupándose de una mecánica ruidosa; relajarlos enviaría ese ruido a los motores. Un log 6S con 4.2 a 534 Hz: 0,31 deg/s filtrados y 2,8 ms, pero 4,7 sin filtrar, así que también es pronto. De los 17 logs en que pude medir tanto el giroscopio sin filtrar como el retardo, ninguno cumplió las cinco condiciones. La mecánica limpia es menos habitual de lo que parece.

Retardo y propwash

El retardo es el coste del filtrado. En los logs de esta guía va de 0,8 ms (INAV 6.0) a 3,2 ms (el log de 4.2.5 con la elevación de ruido). Para valorarlo, conviértelo a fase: a 50 Hz, en plena banda del propwash, 1 ms equivale a 18° de desfase y 3,2 ms ya son 58°. Cuanto más tarde detecte el bucle una oscilación, peor podrá amortiguarla: de ahí el propwash; con suficiente retardo, el bucle empieza a oscilar por sí solo.

Dos vuelos del VX3.5 con 4.5.2: en el primero, el pasa bajos del giroscopio está a 250/500 Hz y el del término D a 75/150; en el segundo, a 300/700 y 180/420. El retardo bajó de 2,2 a 1,2 ms y el peor eje del giroscopio filtrado se mantuvo en torno a 1,4–1,5 deg/s en ambos vuelos. El ruido HF del motor subió del 1,6 al 3,0 %, pero en el segundo vuelo el feedforward aportó el 96 % y los sticks se movieron durante 112 segundos, frente a 45 en el primero. Bajar otra vez los filtros del término D para enfriar los motores no serviría de nada. Para ver el retardo en la respuesta al escalón, consulta ajuste PID a partir de Blackbox.

Errores habituales

INAV, ArduPilot y PX4

INAV. El pasa bajos del giroscopio es gyro_main_lpf_hz (60 Hz de forma predeterminada); el dinámico funciona entre gyro_dyn_lpf_min_hz y gyro_dyn_lpf_max_hz y se activa con gyro_use_dyn_lpf = ON hasta la versión 7.x o con gyro_filter_mode = DYNAMIC desde la 8.0 (que también añade ADAPTIVE). El pasa bajos del término D es dterm_lpf_hz (110 de forma predeterminada, 120 en el whoop anterior). D es mc_d_roll / mc_d_pitch; FF es mc_cd_roll / mc_cd_pitch. El filtro RPM, rpm_gyro_filter_enabled, solo funciona con un cable independiente de telemetría del ESC. Más información en análisis de Blackbox de INAV.

ArduPilot. El pasa bajos del giroscopio es INS_GYRO_FILTER (20 Hz en la mayoría de los logs de ArduCopter que probé); el filtro D es ATC_RAT_RLL_FLTD / ATC_RAT_PIT_FLTD. bbdoctor los escala del mismo modo: × 0.85 o × 1.15. El ruido del motor y las resonancias se gestionan con el notch armánico INS_HNTCH_*, controlada por el gas, la telemetría del ESC o FFT. Para una resonancia fija del chasis con una frecuencia inequívoca, bbdoctor recomienda el segundo notch: INS_HNTC2_* con INS_HNTC2_MODE = 0. Más información en análisis de logs de ArduPilot.

PX4. El pasa bajos del giroscopio es IMU_GYRO_CUTOFF; el filtro D es IMU_DGYRO_CUTOFF. En PX4, el desfase temporal entre los temas registrados no equivale al retardo del filtro (puede indicar 0 con un corte de 30–60 Hz), así que bbdoctor estima el retardo a partir del ajuste: √2/(2π·fc) para un pasa bajos de segundo orden. A 40 Hz, donde se sitúa la mayoría de los logs de PX4 que probé, son 5,6 ms, más que en cualquier log de Betaflight anterior. A 70 Hz son 3,2 ms. El notch estática es IMU_GYRO_NF0_FRQ / IMU_GYRO_NF0_BW (desde la versión 1.13); antes se usaban IMU_GYRO_NF_FREQ / IMU_GYRO_NF_BW. El notch dinámico (RPM del ESC o FFT) es IMU_GYRO_DNF_EN. Más información en análisis de ULog de PX4.

Compruébalo automáticamente

Sube tu log a bbdoctor: archivos .bbl y .bfl de Betaflight, .txt de INAV, .bin de ArduPilot o .ulg de PX4. El informe calcula los cuatro valores, separa el ruido del motor entre P, D y FF, comprueba si las resonancias tienen una frecuencia inequívoca y ofrece comandos CLI calculados a partir de tus cortes actuales; cuando hace falta, desactiva el control deslizante. Consulta el informe de ejemplo. ¿Aún no tienes un log, pero sí un diff all? La revisión de configuración detecta pasa bajos y notch dinámicos desactivados, un filtro RPM sin telemetría y controles deslizantes muy alejados de 1,0.

Preguntas frecuentes

¿Por qué se calientan los motores con Betaflight?

Por el ruido por encima de 80 Hz en los comandos del motor. No produce empuje: la corriente de los devanados cambia bruscamente en cada ciclo y se convierte en calor. El log muestra su origen: la mecánica (ruido en el giroscopio sin filtrar), el término D o el jitter del feedforward causado por la radio. Ajusta los filtros solo después de saber qué término PID transporta el ruido.

¿Debo bajar primero los filtros o D?

Empieza por la mecánica y el filtro RPM. Si el ruido del motor viene de D, baja un 15 % los cortes de los filtros del término D respecto a sus valores actuales; si el filtro del término D ya está por debajo de 70 Hz, baja D un 10 % en su lugar. Si viene del feedforward, ni los filtros ni D ayudarán: suaviza el feedforward. Haz un solo cambio por vuelo.

¿Puedo relajar los filtros para combatir el propwash?

Solo si se cumplen todas estas condiciones: ruido filtrado inferior a 1 deg/s, retardo superior a 1,5 ms, giroscopio sin filtrar por debajo de 4 deg/s, sin resonancia del chasis y un log grabado a 500 Hz o más. Entonces sube un 15 % los cortes de los filtros del giroscopio y comprueba la temperatura de los motores después de cada vuelo.

¿Qué temperatura es demasiado alta para los motores?

Aterriza justo después de un vuelo normal, desconecta la batería y toca la campana del motor. Si puedes dejar el dedo unos segundos, está bien. Si lo apartas enseguida, huele a barniz o un motor está claramente más caliente que los demás, deja de volar y busca la causa en el log. Después de cambiar un filtro, empieza con un vuelo corto de 30–60 segundos.

Actualizado:

Más guías