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

Notch dinâmico e ressonância da estrutura: o que filtrar e o que corrigir

Um pico acentuado no espectro do giroscópio pode ser cortado com um filtro notch ou eliminado na origem. Este guia mostra como diferenciar o ruído dos motores da ressonância da estrutura em um log, como o bbdoctor detecta uma ressonância e por que às vezes não informa a frequência, além de quais configurações de notch pilotos de verdade usam em logs do Betaflight 4.2 a 2025.12, INAV 8 e PX4.

Notch, passa-baixa e filtro RPM: o que cada um remove e quanto custa

Todos esses filtros limpam o sinal do giroscópio antes de ele chegar ao controlador PID, e todos acrescentam atraso. A diferença está no que cada um procura:

O atraso de um notch depende de sua posição e largura. Os valores abaixo foram calculados para um laço de 4 kHz com um biquad no estilo Betaflight. O que importa é o atraso entre 20–40 Hz, faixa em que ocorre o movimento real do quadricóptero.

FiltroAtraso em 20 HzEm 40 Hz
PT1 250 Hz0.63 ms0.61 ms
PT1 100 Hz1.52 ms1.32 ms
Notch estático 160 Hz, corte em 120 (Q 1.71)0.60 ms0.68 ms
Notch estático 469 Hz, corte em 3280.24 ms0.24 ms
Notch dinâmico em 200 Hz, dyn_notch_q 5000.16 ms0.18 ms
Notch dinâmico em 100 Hz, dyn_notch_q 5000.36 ms0.52 ms
Notch dinâmico em 70 Hz, dyn_notch_q 5000.58 ms1.29 ms
Notch dinâmico em 100 Hz, dyn_notch_q 1201.45 ms1.88 ms

Duas regras se aplicam. Um notch estreito nas frequências altas do espectro quase não custa nada; um notch largo ou nas frequências baixas custa tanto quanto um bom passa-baixa. E três notches próximos atrasam o sinal três vezes mais que um.

Ruído dos motores ou ressonância da estrutura: linhas diagonais e verticais

A visualização mais clara é um mapa de calor do acelerador: frequência no eixo horizontal, acelerador no vertical e brilho indicando o nível de ruído. A rotação dos motores aumenta com o acelerador, então os harmônicos dos motores formam linhas diagonais. A ressonância da estrutura é uma frequência natural da estrutura e não depende do acelerador, então forma uma linha vertical.

Mapas de calor do giroscópio bruto de roll e pitch de um quadricóptero 6S com Betaflight 4.5.1: faixas verticais próximas de 198 e 186 Hz vão do acelerador baixo até 85 por cento
Giroscópio bruto de um quadricóptero 6S com Betaflight 4.5.1, registrado a 1013 Hz. No acelerador de voo pairado (20–30%), os motores giram em torno de 192 Hz; acima de 80%, em torno de 467 Hz. Enquanto isso, as faixas em 198 Hz (roll) e 186 Hz (pitch) permanecem no mesmo lugar em qualquer nível de acelerador. Elas ficam mais brilhantes entre 20–40%, onde o primeiro harmônico dos motores passa por elas e faz a estrutura vibrar.

Esse último ponto importa: a ressonância quase sempre fica mais brilhante onde uma linha dos motores cruza com ela. O motor é a fonte, e a estrutura amplifica a vibração. Um quadricóptero de 7 polegadas com Betaflight 4.6 mostra bem isso. O piloto já tinha configurado um notch estático em 160 Hz.

Mapas de calor de pitch de um quadricóptero de 7 polegadas: à esquerda, giroscópio bruto com linha vertical perto de 162 Hz cruzada pela diagonal dos motores; à direita, giroscópio filtrado, quase escuro na mesma escala
Quadricóptero de 7 polegadas, Betaflight 4.6.0, registrado a 1980 Hz, mesma escala de cores nos dois mapas. À esquerda, giroscópio bruto: a linha perto de 162 Hz fica 16–22 dB acima das frequências vizinhas entre 25–40% de acelerador, quando os motores giram entre 139–178 Hz, e apenas 0–8 dB acima nos demais níveis. À direita, giroscópio filtrado: em 162 Hz e com 30–40% de acelerador, o nível cai de +4 a +5 dB antes da filtragem para cerca de −39 dB depois dela.

O bbdoctor não classificou esse caso como ressonância: a linha supera o limite em apenas cerca de metade das faixas de acelerador, e o limite é 60%. É uma decisão razoável. Um pico assim fica na fronteira entre a estrutura e os motores, e os filtros já configurados dão conta dele. O ruído filtrado aqui é de 0.66 deg/s, então não há motivo para mexer nos filtros. O ruído bruto, porém, é de 7.9 deg/s, e o bbdoctor aponta corretamente para as hélices, os motores e a estrutura.

Como o bbdoctor encontra uma ressonância e por que às vezes não informa a frequência

Entender como o detector funciona ajuda a interpretar o relatório:

  1. O voo é dividido em janelas de 256 amostras com 50% de sobreposição. Cada janela entra em uma de 20 faixas de acelerador, conforme o acelerador médio. Uma faixa é contabilizada se contiver pelo menos 4 janelas.
  2. Para roll e pitch, cada faixa recebe um espectro, e o “piso” é uma mediana móvel calculada sobre 15 frequências vizinhas. O passo da grade é a taxa de registro dividida por 256: cerca de 4 Hz em um log de 1 kHz e cerca de 16 Hz em um log de 4 kHz.
  3. Uma frequência conta como ressonância se seu pico ficar mais de 6 dB acima do piso em pelo menos 60% das faixas de acelerador. Frequências abaixo de 60 Hz ou nos 5% superiores antes de Nyquist são ignoradas.
  4. Picos de roll e pitch separados por até 10 Hz são agrupados em um só.

Com um divisor de registro, o blackbox do Betaflight grava uma de cada N amostras sem filtro anti-aliasing. Tudo que estiver acima da metade da taxa de registro retorna em uma frequência mais baixa; por isso, um pico em 827 Hz num log de 1013 Hz aparece em 186 Hz. O log sozinho não permite desfazer isso, então o bbdoctor lista as possibilidades: f, fs − f e fs + f.

LogRegistro / laço PIDPico no logPossibilidadesConclusão
BF 4.5.1, 6S, voo 11013 Hz / 4 kHz206 Hz roll, +8 dB, 71% das faixas206, 807, 1219nenhum notch sugerido
BF 4.5.1, 6S, voo 21013 Hz / 4 kHz186 pitch, 198 roll, +6–7 dB186, 827, 1199 / 198, 815, 1211nenhum notch sugerido
BF 4.5.1, 6S, voo 31013 Hz / 4 kHz190 e 226 pitch, 202 roll, +7 dB190, 823, 1203 e assim por diantenenhum notch sugerido
INAV 8.0.0, 6S995 Hz / 2 kHz117 Hz pitch, +12 dB, 100% das faixas117, 878, 1112nenhum notch sugerido
PX4 1.15.4, 6S8013 Hz469 Hz pitch, +6 dBsem ambiguidadesnotch estático

A regra no código: a frequência não é ambígua se o log roda na taxa do laço PID ou se é registrado a 2 kHz ou mais e o pico está abaixo da metade da frequência de Nyquist. Para um log de 2 kHz, isso significa abaixo de 500 Hz. Os três voos 6S são o exemplo clássico. Eles usam blackbox_sample_rate = 1/4, então a ressonância real pode estar em 186 Hz nos braços ou em 827 Hz na stack. Isso muda tanto o notch quanto o lugar onde você deve procurar o problema.

Espectros de roll e pitch antes e depois da filtragem: o giroscópio bruto mostra picos em 202 Hz no roll e 190 e 226 Hz no pitch; o giroscópio filtrado fica 26 a 28 dB abaixo
Terceiro voo do mesmo quadricóptero 6S, espectro do voo inteiro. Cinza é o giroscópio bruto (picos de −1 a −3 dB em 202 Hz no roll e 190 e 226 Hz no pitch); azul é o sinal após a filtragem (−28 a −30 dB). O filtro RPM, um notch dinâmico e os passa-baixa reduzem esses picos em 26–28 dB, mas pequenas elevações nas mesmas frequências ainda passam pelos filtros.

Nos três logs, o bbdoctor informa “Filtros: há margem, mas ainda é cedo para flexibilizá-los (atraso de 2.2–2.3 ms)”. O ruído filtrado é de 0.5–0.6 deg/s, mas o giroscópio bruto registra 4.8–7.4 deg/s e há uma ressonância. Aumentar as frequências de corte antes de corrigir a parte mecânica e confirmar a frequência só deixa esse pico chegar aos PIDs.

Configurações do notch dinâmico por versão do Betaflight

Os nomes dos parâmetros mudaram duas vezes, no 4.2 e no 4.3. Não sabe o que seu firmware tem? Digite get dyn_notch na CLI para listar todos os parâmetros correspondentes.

VersãoComo ativarParâmetrosObservações
4.0–4.1feature DYNAMIC_FILTERdyn_notch_range (LOW/MEDIUM/HIGH/AUTO), dyn_notch_width_percent, dyn_notch_q, dyn_notch_min_hzo limite superior é predefinido; padrões: AUTO, 8, 120, 150
4.2feature DYNAMIC_FILTERdyn_notch_max_hz substitui range, dyn_notch_min_hz, dyn_notch_width_percent, dyn_notch_qnotas do 4.2: largura 0 e Q 250 com RPM; 8 e 120 sem RPM
4.3, 4.4, 4.5, 4.6, 2025.12dyn_notch_count maior que 0dyn_notch_count (até 5, até 7 no 2025.12), dyn_notch_q, dyn_notch_min_hz, dyn_notch_max_hznovo algoritmo SDFT; largura e o recurso foram removidos; padrões: 3 notches, Q 300, 150–600 Hz no 4.3 e 100–600 Hz no 2025.12

Configurações usadas em logs reais do nosso conjunto (todos com DShot bidirecional, exceto o último):

QuadricópteroFirmwarequantidadeQmínimo–máximo, Hz
Quadricóptero 6S, os três voos acima4.5.11500100–600
MASTER5 V24.5.12350120–650
Nazgul F5 V24.4.12500120–600
GEPRC, F4052025.12.5240090–400
REKON 74.6.0350070–400, além de um notch estático em 160 Hz
F745, filtro RPM inativo (dshot_bidir 0)4.2.8largura 8120150–600

Quantidade de notches. Com o filtro RPM funcionando, comece com um ou dois. As notas do 4.3 dizem que raramente são necessários mais de dois ou três e que muitas vezes um basta. Sem o filtro RPM, os notches fazem esse trabalho, e as notas sugerem três ou quatro com Q em torno de 120–150.

Q. As notas do 4.3 indicam 300–450 como uma boa faixa para voo freestyle. Nos logs com o filtro RPM, o Q fica entre 350–500. Um Q baixo só faz sentido sem o filtro RPM, quando o notch precisa cobrir o ruído dos motores espalhado por várias frequências.

min_hz e max_hz. Encontre a linha mais baixa que você realmente quer capturar no mapa de calor (com o filtro RPM, geralmente é a ressonância; sem ele, o harmônico 1× dos motores no acelerador de voo pairado) e configure dyn_notch_min_hz cerca de 20 Hz abaixo dela. As notas recomendam manter o mínimo tão alto quanto for prático, pois isso reduz o atraso. Nos logs acima, o valor fica entre 90–120 Hz nos quadricópteros menores e em 70 Hz no modelo de 7 polegadas, cujos motores giram a 125–155 Hz com 20–35% de acelerador. Configure dyn_notch_max_hz logo acima do pico mais alto que precisa capturar: uma faixa mais larga significa resolução mais grosseira.

set dyn_notch_count = 1
set dyn_notch_q = 500
set dyn_notch_min_hz = 100
set dyn_notch_max_hz = 600
save

Essa é a configuração do quadricóptero 6S na tabela: um ponto de partida razoável no 4.3 ou superior com o filtro RPM, mas não uma receita universal.

Notch estático como solução temporária

Quando não há ambiguidade na frequência, o bbdoctor fornece um comando para notch estático: centralize-o na ressonância e configure a frequência de corte inferior para 0.7 vezes esse valor. O Betaflight calcula Q a partir do centro e do corte usando Q = f·c / (f² − c²). Com c = 0.7f, Q ≈ 1.37, e a banda de −3 dB vai de 0.7f a 1.43f. Ela é larga de propósito. A ressonância varia com o aperto dos parafusos e a temperatura, e um mapa de calor de um log de 4 kHz só a localiza até metade de um passo da grade, cerca de 8 Hz. Se um log 1/1 confirmar que a ressonância do quadricóptero 6S está mesmo em 186 Hz, o comando é:

set gyro_notch1_hz = 186
set gyro_notch1_cutoff = 130
save

O piloto do modelo de 7 polegadas escolheu 160/120, que corresponde a Q 1.71 e a um corte um pouco mais estreito. Como mostra a tabela acima, isso custa cerca de 0.6 ms em 20 Hz, o mesmo que um PT1 de 250 Hz. É um preço razoável para um único pico, mas não justifica acrescentar outro “por precaução”. As notas do 4.3 acrescentam uma dica útil: quando o notch estático assume uma ressonância que ocorre sempre na mesma frequência, reduza dyn_notch_count em um.

INAV. O INAV não tem notch estático para o giroscópio (só acc_notch_hz para o acelerômetro), então o bbdoctor não fornece um comando para o INAV. Resta o notch dinâmico: dynamic_gyro_notch_enabled, dynamic_gyro_notch_q, dynamic_gyro_notch_min_hz. Nosso log do INAV usa Q 250 com mínimo de 126 Hz. Se um log em taxa máxima confirmar a ressonância em 117 Hz, o notch dinâmico não consegue alcançá-la até você baixar o mínimo para cerca de 100. Saiba mais no guia do blackbox do INAV.

ArduPilot. O bbdoctor ativa o segundo notch harmônico no modo de frequência fixa, com largura de banda de f/2 e atenuação de 40 dB. Depois de configurar INS_HNTC2_ENABLE = 1, atualize a lista de parâmetros para que os outros parâmetros INS_HNTC2_* apareçam. Consulte o guia de logs do ArduPilot.

PX4. A partir da versão 1.13, os parâmetros são IMU_GYRO_NF0_FRQ e IMU_GYRO_NF0_BW; na 1.12 e anteriores, IMU_GYRO_NF_FREQ e IMU_GYRO_NF_BW. O bbdoctor define a largura de banda como 0.3 vezes a frequência. O log do PX4 1.15.4 foi registrado a 8 kHz, então o pico de 469 Hz não é ambíguo e os comandos são:

param set IMU_GYRO_NF0_FRQ 469
param set IMU_GYRO_NF0_BW 141

O mesmo log está com o notch FFT ativado (IMU_GYRO_FFT_EN = 1), mas sua faixa vai de 30–150 Hz e nunca alcança 469 Hz. Já IMU_GYRO_CUTOFF = 40 custa cerca de 5.6 ms de atraso, enquanto um notch em 469 Hz com largura de banda de 141 Hz custa cerca de 0.1 ms. Mesmo assim, o bbdoctor diz que ainda é cedo para flexibilizar os filtros: o ruído bruto de roll é de 6.4 deg/s, então a parte mecânica vem primeiro. Os detalhes do PX4 estão no guia do ULog.

Corrija a parte mecânica primeiro: o que verificar conforme a frequência

O bbdoctor separa as ressonâncias em 250 Hz e indica em sua análise a causa provável:

Frequência realO que costuma vibrarO que fazer
60–250 Hzbraços e estrutura, câmera solta, antena, bateria presa por uma cinta frouxaaperte os parafusos dos braços, verifique se há rachaduras ou delaminação, prenda a câmera e a antena, aperte a cinta e coloque uma superfície antiderrapante sob a bateria
250 Hz ou maisstack da controladora de voo e ESC em suportes macios, fixadores, espaçadores, placa superiorverifique os anéis de borracha (uma stack esmagada já não fica montada de forma flexível), as porcas da stack, os espaçadores e os parafusos da placa superior

Desconecte a bateria e retire as hélices antes de mexer na estrutura. Antes de qualquer reparo, coloque hélices novas e verifique os motores, pois são eles que excitam a ressonância. O guia de vibração explica como identificar no log qual motor está causando o problema; o guia de motores quentes explica o ruído e a filtragem em geral.

Confirme com um log curto em taxa máxima

  1. Registre na taxa do laço PID. No Betaflight 4.3 ou superior, use set blackbox_sample_rate = 1/1; no INAV, blackbox_rate_num = 1 e blackbox_rate_denom = 1; no PX4, os bits 4 (High rate) e 8 (Raw FIFO high-rate IMU Gyro) em SDLOG_PROFILE; no ArduPilot 4.5 ou superior, INS_RAW_LOG_OPT mais o bit IMU_RAW em LOG_BITMASK. A memória flash enche quatro vezes mais rápido do que em 1/4.
  2. Confirme que o giroscópio bruto está sendo registrado. A partir do 4.5, ele tem um campo próprio; no 4.0–4.4, você precisa de debug_mode = GYRO_SCALED. Os detalhes estão no guia de configuração do blackbox.
  3. Voe por um minuto: fique pairando, suba em linha reta e suavemente até 70–80% de acelerador e mantenha alguns patamares de acelerador por alguns segundos cada. O detector precisa de janelas em várias faixas de acelerador, não apenas durante o voo pairado.
  4. Envie o log para o bbdoctor. Se a ressonância não for ambígua, a análise dirá “Ressonância em X Hz em qualquer nível de acelerador” e incluirá comandos para o notch.
  5. Corrija primeiro a parte mecânica e voe de novo. Só acrescente o notch se o pico continuar; depois, faça mais um log: a elevação naquela frequência deve desaparecer do giroscópio filtrado, e o ruído filtrado não deve aumentar.
  6. Volte a usar o divisor de registro normal.
set blackbox_sample_rate = 1/1
save

Os erros mais comuns

Quando deixar como está: o bbdoctor não detecta ressonância, o ruído bruto fica abaixo de 4 deg/s (o limite que indica “mecânica em boas condições”), o ruído filtrado fica abaixo de 1 deg/s e os motores terminam o voo mornos, não quentes. Um notch também não corrige uma oscilação de baixa frequência. Em um log do PX4 1.17, o bbdoctor encontrou um pico de 42 Hz no erro (giroscópio − referência) apenas no pitch, e a fase do motor apontava o P como causa. A recomendação é reduzir o P do pitch em 10% e comparar com o voo seguinte, sem adicionar um filtro; além disso, o detector de ressonância nem analisa frequências abaixo de 60 Hz.

Envie seu próprio log para o analisador ou consulte o relatório de exemplo. Você também pode verificar uma configuração sem voar na página de comparação de diferenças, que detecta casos como notch dinâmico desativado sem filtro RPM.

Perguntas frequentes

Quantos notches dinâmicos preciso usar com o filtro RPM ativo?

Normalmente, um ou dois. O filtro RPM já remove os harmônicos de cada motor, então o notch dinâmico só precisa capturar o que não está ligado à RPM: a ressonância da estrutura e o ruído residual das hélices. As notas de ajuste do Betaflight 4.3 dizem que raramente são necessários mais de dois ou três e que muitas vezes um basta. Na maioria dos nossos logs do 4.5 usamos dyn_notch_count = 1 com Q 500; um log de 2025.12 usa dois com Q 400. Cada notch extra nas frequências baixas do espectro acrescenta atraso.

Notch estático ou dinâmico para uma ressonância da estrutura?

Primeiro, corrija a parte mecânica. Se a ressonância persistir e um log em taxa máxima mostrar a frequência exata, use um notch estático: ele fica exatamente no pico e não se desloca para perseguir outra coisa. O notch dinâmico consegue lidar com isso se a frequência estiver entre dyn_notch_min_hz e dyn_notch_max_hz e houver um notch disponível, mas, com um único notch ao lado do filtro RPM, ele acaba dividido entre a ressonância e o ruído residual dos motores.

O que significa dyn_notch_q?

É o Q do notch multiplicado por 100, então dyn_notch_q = 500 significa Q = 5. A largura de banda de −3 dB é a frequência central dividida por Q: 40 Hz de largura em 200 Hz com Q 5. Um Q maior significa um corte mais estreito e menos atraso na banda de controle, mas o notch precisa acertar o pico com mais precisão. Sem o filtro RPM, as notas do 4.3 sugerem Q 120–150; logs com o filtro RPM normalmente usam 350–500.

Um filtro notch pode corrigir o efeito gelatina no vídeo?

Não. O efeito gelatina vem da vibração da própria câmera, e um filtro do giroscópio só altera o que o laço PID recebe, então não vai estabilizar a câmera. Procure a causa mecânica: hélice desbalanceada, motor áspero ou suporte da câmera solto. O notch só ajuda indiretamente, quando os motores transmitem vibração para a estrutura. Encontre a frequência no log da mesma forma que faria para uma ressonância.

Atualizado:

Mais guias