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:
- Filtros passa-baixa (
gyro_lpf1_static_hz,gyro_lpf2_static_hz) atenuam tudo acima da frequência de corte, seja o que for. O atraso é quase uniforme em toda a banda de controle. - O filtro RPM coloca notches estreitos nos harmônicos de 1×, 2× e 3× de cada motor, usando a telemetria DShot bidirecional. Ele acompanha os motores e deixa todo o resto como está. A configuração está explicada no guia do filtro RPM.
- O notch dinâmico procura os picos mais fortes no espectro do giroscópio entre
dyn_notch_min_hzedyn_notch_max_hze colocadyn_notch_countnotches por eixo nesses picos. Ele não distingue se um pico vem dos motores ou da estrutura. - Um notch estático (
gyro_notch1_hz,gyro_notch2_hz) fica sempre em uma frequência. É a ferramenta para uma ressonância conhecida.
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.
| Filtro | Atraso em 20 Hz | Em 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 em 120 (Q 1.71) | 0.60 ms | 0.68 ms |
| Notch estático 469 Hz, corte em 328 | 0.24 ms | 0.24 ms |
| Notch dinâmico em 200 Hz, dyn_notch_q 500 | 0.16 ms | 0.18 ms |
| Notch dinâmico em 100 Hz, dyn_notch_q 500 | 0.36 ms | 0.52 ms |
| Notch dinâmico em 70 Hz, dyn_notch_q 500 | 0.58 ms | 1.29 ms |
| Notch dinâmico em 100 Hz, dyn_notch_q 120 | 1.45 ms | 1.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.

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.

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:
- 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.
- 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.
- 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.
- 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.
| Log | Registro / laço PID | Pico no log | Possibilidades | Conclusão |
|---|---|---|---|---|
| BF 4.5.1, 6S, voo 1 | 1013 Hz / 4 kHz | 206 Hz roll, +8 dB, 71% das faixas | 206, 807, 1219 | nenhum notch sugerido |
| BF 4.5.1, 6S, voo 2 | 1013 Hz / 4 kHz | 186 pitch, 198 roll, +6–7 dB | 186, 827, 1199 / 198, 815, 1211 | nenhum notch sugerido |
| BF 4.5.1, 6S, voo 3 | 1013 Hz / 4 kHz | 190 e 226 pitch, 202 roll, +7 dB | 190, 823, 1203 e assim por diante | nenhum notch sugerido |
| INAV 8.0.0, 6S | 995 Hz / 2 kHz | 117 Hz pitch, +12 dB, 100% das faixas | 117, 878, 1112 | nenhum notch sugerido |
| PX4 1.15.4, 6S | 8013 Hz | 469 Hz pitch, +6 dB | sem ambiguidades | notch 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.

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ão | Como ativar | Parâmetros | Observações |
|---|---|---|---|
| 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 | o limite superior é predefinido; padrões: AUTO, 8, 120, 150 |
| 4.2 | feature DYNAMIC_FILTER | dyn_notch_max_hz substitui range, dyn_notch_min_hz, dyn_notch_width_percent, dyn_notch_q | notas do 4.2: largura 0 e Q 250 com RPM; 8 e 120 sem RPM |
| 4.3, 4.4, 4.5, 4.6, 2025.12 | dyn_notch_count maior que 0 | dyn_notch_count (até 5, até 7 no 2025.12), dyn_notch_q, dyn_notch_min_hz, dyn_notch_max_hz | novo 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óptero | Firmware | quantidade | Q | mínimo–máximo, Hz |
|---|---|---|---|---|
| Quadricóptero 6S, os três voos acima | 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, além de um notch estático em 160 Hz |
| F745, filtro RPM inativo (dshot_bidir 0) | 4.2.8 | largura 8 | 120 | 150–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 real | O que costuma vibrar | O que fazer |
|---|---|---|
| 60–250 Hz | braços e estrutura, câmera solta, antena, bateria presa por uma cinta frouxa | aperte 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 mais | stack da controladora de voo e ESC em suportes macios, fixadores, espaçadores, placa superior | verifique 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
- 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 = 1eblackbox_rate_denom = 1; no PX4, os bits 4 (High rate) e 8 (Raw FIFO high-rate IMU Gyro) emSDLOG_PROFILE; no ArduPilot 4.5 ou superior,INS_RAW_LOG_OPTmais o bit IMU_RAW emLOG_BITMASK. A memória flash enche quatro vezes mais rápido do que em 1/4. - 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. - 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.
- 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.
- 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.
- Volte a usar o divisor de registro normal.
set blackbox_sample_rate = 1/1 save
Os erros mais comuns
- Aplicar o notch a uma frequência causada por aliasing. Um log 1/4 mostra um pico em 186 Hz, você aplica o notch em 186 Hz, mas a ressonância real está em 827 Hz. Você pagou 0.6 ms de atraso na banda de controle e não cortou nada.
- Usar cinco notches junto com um filtro RPM funcionando. O atraso deles se soma, embora quase não reste nada para cortar. Comece com um e só acrescente outros se uma linha continuar visível no mapa de calor filtrado.
- Configurar min_hz tão baixo que o notch entre na banda de controle. Com dyn_notch_q 500, um notch posicionado em 70 Hz custa 1.29 ms em 40 Hz, contra 0.52 ms quando fica em 100 Hz. Defina o mínimo conforme os seus motores, não “um pouco mais baixo por segurança”.
- Usar uma faixa que não alcança o pico. Mínimo de 126 Hz no INAV para um pico de 117 Hz; notch FFT do PX4 limitado a 150 Hz para um pico de 469 Hz. O filtro está ativo, mas não está fazendo nada.
- Flexibilizar os filtros enquanto a ressonância ainda está presente. Pouco ruído após a filtragem não prova que há margem. O ruído pode estar sendo contido justamente pelo notch e pelo passa-baixa que você está prestes a flexibilizar.
- Esquecer um notch estático. Depois do reparo, faça um log. Se o pico desapareceu, remova o notch com
set gyro_notch1_hz = 0, depois fique pairando por um instante e toque nos motores para avaliar a temperatura. Atraso sem nada para filtrar não ajuda ninguém.
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: