Перейти к содержимому

Урок 19 из 43 · Модуль 3. Гармонический режекторный фильтр (notch)

Mission Planner для технического персонала · Урок 19 из 43 · Модуль 3. Тюнинг и автономный полёт

Основной инструмент борьбы с шумом винтов: как найти частоту, настроить фильтр и проверить результат по спектру.

Режекторный фильтр вырезает узкую полосу вокруг частоты винтов, почти не внося задержки. Это принципиальное преимущество перед понижением ФНЧ.

Содержание

1. Цели урока

После этого урока вы будете понимать:

  • как определить частоту вращения винтов по FFT в логе
  • как настроить группу параметров INS_HNTCH_*
  • три способа отслеживания частоты и их компромиссы
  • как проверить результат и что делает ATC_RAT_*_SMAX
↑ К оглавлению

2. Гармонический режекторный фильтр

Основной инструмент борьбы с шумом винтов в современном ArduPilot. Он вырезает узкую полосу вокруг частоты вращения винтов и её гармоник, оставляя остальной спектр нетронутым — то есть даёт минимальную задержку.

Определение частоты винтов

Частота вращения винтов в герцах при висении:

f [Гц] = обороты_в_минуту / 60
Для типового 10-дюймового винта на 2212 моторе:
5800 об/мин при висении  →  5800 / 60 ≈ 97 Гц
Text

Точнее её определяют по логу. Порядок:

  1. Установите INS_LOG_BAT_MASK = 1 (или 3 для двух IMU), INS_LOG_BAT_OPT = 0.
  2. Выполните полёт длительностью не менее двух минут: висение, плавные наклоны, изменения тяги.
  3. Скачайте лог, откройте DATA → DataFlash Logs → Review a Log, нажмите FFT.
  4. На графике спектральной плотности найдите основной пик. Это и есть частота винтов.
FFT прямо в Mission Planner: В окне просмотра лога кнопка FFT строит спектр по данным IMU или ISBH/ISBD (batch sampling). Второй вариант точнее: batch sampling пишет сырые данные гироскопа на полной частоте, тогда как обычные записи IMU уже прорежены.

Настройка параметров

Параметр Назначение Рекомендация
INS_HNTCH_ENABLE Включение 1
INS_HNTCH_MODE Источник частоты 1 — по газу, 3 — по ESC-телеметрии, 4 — по FFT
INS_HNTCH_FREQ Базовая частота, Гц Частота винтов при висении
INS_HNTCH_BW Ширина полосы, Гц Половина FREQ
INS_HNTCH_ATT Глубина подавления, дБ 40
INS_HNTCH_REF Опорное значение Равно MOT_THST_HOVER в режиме 1
INS_HNTCH_HMNCS Маска гармоник 3 (первая и вторая) или 7 (три)
INS_HNTCH_OPTS Опции 2 — динамические гармоники для многомоторных

Три способа отслеживания частоты

Режим 1 — по газу (INS_HNTCH_MODE = 1). Частота вычисляется из текущего значения газа по формуле, привязанной к INS_HNTCH_REF. Простой и надёжный вариант, работает без дополнительного оборудования. Точность средняя: при манёврах реальные обороты отличаются от расчётных.

Режим 3 — по ESC-телеметрии (INS_HNTCH_MODE = 3). Регуляторы с телеметрией (BLHeli32/AM32, DShot bidirectional, DroneCAN) сообщают реальные обороты каждого мотора. Самый точный метод. Требует SERVO_BLH_BDMASK или соответствующей настройки протокола.

Режим 4 — по встроенному FFT (INS_HNTCH_MODE = 4). Автопилот в реальном времени вычисляет спектр и подстраивает фильтр. Требует FFT_ENABLE = 1 и вычислительных ресурсов; на слабых платах F4 может не хватить производительности.

Второй notch для второй группы источников: ArduPilot поддерживает два независимых гармонических фильтра: INS_HNTCH_* и INS_HNTC2_*. Второй полезен, когда есть отдельный источник вибраций — например, подвес камеры, генератор или винты другого диаметра на гибридном аппарате.
↑ К оглавлению

3. Проверка результата фильтрации

После настройки повторите полёт с включённым batch sampling и сравните спектры до и после. Признаки успешной настройки:

  • пик на частоте винтов уменьшился на 20–40 дБ;
  • в диапазоне до 30 Гц спектр не изменился (полезный сигнал не тронут);
  • уровень VIBE в логе снизился;
  • моторы стали холоднее.
Фильтр не лечит механику: Режекторный фильтр убирает шум из сигнала гироскопа, но сама вибрация продолжает разрушать конструкцию, изнашивать подшипники и вносить погрешность в акселерометры (которые тоже фильтруются, но хуже). Целевой уровень VIBE ниже 15 м/с² достигается механически, фильтр — это дополнение.
↑ К оглавлению

4. Механические меры

В порядке эффективности:

  1. Балансировка винтов. Простейший балансировщик стоит копейки. Снимает 50–70 % вибраций на большинстве сборок.
  2. Отбраковка моторов. Покрутите каждый мотор рукой: люфт по оси или заедание — замена.
  3. Демпфирование контроллера. Виброгасящие «пирожки» или двусторонний вспененный скотч. Для крупных аппаратов — платформа на силиконовых втулках.
  4. Масса на платформе контроллера. Добавление 20–40 г к демпфированной платформе снижает собственную частоту системы «масса — демпфер» и улучшает подавление.
  5. Разгрузка проводов. Провода от контроллера должны иметь свободную петлю, а не быть натянутыми.
  6. Проверка затяжки. Все винты рамы, особенно крепления лучей и моторов.
  7. Мягкие крепления моторов. Резиновые прокладки под моторы для крупных аппаратов.
Слишком мягкое демпфирование: Если контроллер закреплён на очень мягком подвесе, система получает низкую собственную частоту (5–15 Гц), попадающую прямо в полосу полезного сигнала. Результат: EKF получает искажённые данные об ускорениях, аппарат «плавает» по высоте и положению. Демпфер должен быть достаточно жёстким, чтобы резонанс лежал выше 30 Гц.
↑ К оглавлению

5. Динамическое понижение усиления

ArduPilot 4.2+ умеет автоматически снижать коэффициент D при росте вибраций. Это страховка, а не замена настройке.

Параметр Назначение
ATC_RAT_RLL_FLTD Частота ФНЧ в D-канале контура крена (обычно = INS_GYRO_FILTER)
ATC_RAT_RLL_FLTT Частота ФНЧ по уставке (target)
ATC_RAT_RLL_FLTE Частота ФНЧ по ошибке
ATC_RAT_RLL_SMAX Ограничение скорости изменения выхода (slew limit), 25–50
Про SMAX: Параметр ATC_RAT_*_SMAX ограничивает скорость изменения выхода регулятора и автоматически снижает усиление при выходе на предел. Значение 25–50 практически исключает высокочастотную раскачку и рекомендуется как страховка перед AUTOTUNE.
↑ К оглавлению

6. Практика

Задания выполняются в симуляторе SITL и не требуют реального аппарата. Выполните их до перехода к следующему уроку.

Задание 19.1. Спектральный анализ

Выполняется в симуляторе SITL, реальный аппарат не требуется.

  • В SITL включите INS_LOG_BAT_MASK = 1, задайте SIM_VIB_MOT_MAX = 5 и SIM_VIB_FREQ_X = 90.
  • Выполните полёт длительностью 2 минуты с изменением тяги.
  • Постройте FFT и определите основной пик.
  • Настройте INS_HNTCH_* под найденную частоту, повторите полёт и сравните спектры.

Задание 19.2. Подбор частоты среза

Выполняется в симуляторе SITL, реальный аппарат не требуется.

  • Для трёх гипотетических аппаратов (5″ гоночный, 10″ съёмочный, 18″ тяжёлый) определите разумные INS_GYRO_FILTER.
  • Объясните, к чему приведёт установка 60 Гц на 18-дюймовом аппарате и 10 Гц на 5-дюймовом.
  • Рассчитайте частоту винтов для мотора 4008 с винтом 15″ при 3600 об/мин.
↑ К оглавлению

7. Проверьте себя

Сформулируйте ответ своими словами, прежде чем сверяться со справочником ответов (последняя статья курса).

  1. Почему D-составляющая PID особенно чувствительна к вибрациям?
  2. В чём преимущество режекторного фильтра перед простым понижением частоты ФНЧ?
  3. Какие три способа отслеживания частоты винтов поддерживает ArduPilot и в чём их компромиссы?
  4. Почему слишком мягкое демпфирование полётного контроллера ухудшает поведение аппарата?
  5. Что делает параметр ATC_RAT_RLL_SMAX и почему его стоит задать перед AUTOTUNE?
  6. Как отличить механическую проблему от проблемы фильтрации по данным лога?
↑ К оглавлению

8. Чек-лист самопроверки

Урок освоен, если каждый пункт выполнен на практике:

  • Частота винтов определена по FFT реального лога
  • Notch-фильтр настроен, спектр после фильтрации проверен
  • Уровень VIBE снизился, моторы стали холоднее
  • Задан ATC_RAT_*_SMAX как страховка перед AUTOTUNE
Результат: все пункты выполнены — переходите к следующему уроку.
↑ К оглавлению

9. Что дальше

  • Предыдущий урок: 18. Вибрации и фильтр нижних частот
  • Следующий урок: 20. Каскад PID и физический смысл коэффициентов
  • Полный перечень тем — в статье «Содержание курса».
↑ К оглавлению
  • Четверг, 30 июля 2026