Гарячі мотори на Betaflight: налаштуй фільтри за логом Blackbox
Після польоту мотори такі гарячі, що не торкнутися, на різких наборах чути шипіння, зображення тремтить, у висінні є дзижчання: це шум, і перший порив — крутити фільтри. Але фільтри не усувають причину. Вони приховують механічні проблеми, додають затримку й нічого не дають, коли шум спричинений реакцією feedforward на апаратуру. Нижче — чотири числа, які bbdoctor отримує з логу, щоб знайти джерело, реальні логи для кожного випадку й порядок виправлень.
Чому шум перегріває мотори
Гіроскоп вловлює не лише рух дрона: дисбаланс пропелерів, шорсткий підшипник, гнучкість променя, розхитаний стек. Фільтри зрізають частину шуму, а решта потрапляє в PID-контур. P пропускає шум безпосередньо. D — похідна, тому її вихід зростає з частотою: до фільтра низьких частот D-складової вібрація 300 Гц тієї самої амплітуди, що й хитання на 30 Гц, створює в десять разів більший D.
Цей шум потрапляє в команди моторів, але пропелерний ротор не встигає за ним. Коли bbdoctor порівнює оберти з командою, він враховує приблизно 20 мс запізнення ротора — це приблизно фільтр низьких частот на 8 Гц. На 80 Гц оберти реагують приблизно вдесятеро слабше, а на 300 Гц майже не змінюються. Тяги немає, але струм в обмотці все одно смикається в кожному циклі й нагріває ESC і мотор. Звідси поріг 80 Гц.
Чотири числа
Усе обчислюється лише за даними польоту; «шум» означає RMS понад 80 Гц.
| Показник | Як обчислюється | Добре | Увага | Погано |
|---|---|---|---|---|
| Сирий гіроскоп, град/с | RMS нефільтрованого гіроскопа, гірше зі значень roll і pitch | нижче 4 | 4–10 | 10 або більше |
| Відфільтрований гіроскоп, град/с | те саме для відфільтрованого гіроскопа, який бачать PID-регулятори | нижче 1: є запас | вище 3: шум доходить до PID-регуляторів | — |
| Затримка фільтра, мс | зсув, за якого сирий і відфільтрований сигнали гіроскопа найкраще збігаються (взаємна кореляція), середнє для roll і pitch | сталого нормативу немає; у логах цього гайда — 0,8–3,2 | понад 1,5 за низького шуму: затримку можна скоротити | — |
| ВЧ-шум моторів, % ходу | RMS команд моторів, найгірший мотор; лише для логів із частотою 500 Гц або вище | до 2,5 | понад 2,5 | понад 4 |
П'ятий показник — яка складова несе шум. Betaflight та INAV окремо записують складові PID (axisP, axisD, axisF). bbdoctor застосовує до кожної фільтр високих частот на 80 Гц, переводить значення у відсоток ходу моторів (сума PID 1000 відповідає повному ходу) й обчислює частку кожної складової в енергії шуму: 60% або більше означає, що це джерело, інакше результат «змішаний».
Два застереження. Затримка порівнює сирий і відфільтрований сигнали гіроскопа, тому враховує лише його ланцюг (фільтри низьких частот, notch, RPM-фільтр), а не фільтри D-складової далі по ланцюгу. А шум моторів лежить у сотнях герців, яких не побачить лог на 250 Гц (його межа — 125 Гц), тому потрібна частота щонайменше 500 Гц.

Звідки береться шум: чотири випадки
Механіка: шумить сирий гіроскоп
Лог A на рисунку: Betaflight 4.2.5, 215 секунд польоту. Сирий шум — 35,8 град/с по roll і 23,8 по pitch. Після фільтрів — 1,34 град/с, мотори чисті: звіт позначає сирий шум як критичний, але вважає фільтри в нормі. Фільтри впоралися, ціною затримки 3,2 мс — найбільшої серед усіх логів у цьому гайді. Якщо дивитися на відфільтрований гіроскоп або мотори, проблему не помітиш, але цей горб на 200–450 Гц спричинений пропелерами, моторами або чимось незакріпленим.
Рішення — викрутка й нові пропелери, а не фільтри. Коли сирий шум зменшиться, у фільтрів з'явиться реальний запас, щоб скоротити затримку. Як знайти конкретний мотор або пропелер: як знайти несправний мотор або пропелер за логом.
Налаштування: шум проходить крізь фільтри, і його несе D
Лог C на другому рисунку: whoop 1S на INAV 8.0. Сирий гіроскоп — 22,1 град/с, після фільтрів — 4,8, отже шум проходить. ВЧ-шум моторів критичний — 5,5%, 97% якого несе D. Тут доречно зменшити D або частоти зрізу фільтрів D-складової, але за 4,8 град/с шуму після фільтрації треба також перевірити пропелери й раму (D підсилює все, що проходить), а насамперед варто виправити коефіцієнт, який схожий на помилку (див. нижче).
D може бути проблемою, навіть якщо шум моторів нижче 2,5%. Щойно сама D-складова передає моторам 1,5% ходу (критичний рівень — 3%), bbdoctor окремо повідомляє «Шум D-складової доходить до моторів» і пропонує послідовність дій: відфільтрований гіроскоп 1 град/с або більше — спочатку механіка; RPM-фільтр вимкнено (dshot_bidir = OFF або rpm_filter_harmonics = 0) — увімкни; далі знизь частоти зрізу D-фільтрів на 15% від поточних або, якщо фільтр D-складової вже нижче 70 Гц, зменш D на 10%, адже нижча частота додає затримку за незначного ефекту. Мотори все ще гарячі? На наступному польоті зменш D ще на 10%. Якщо шум моторів перевищує 2,5%, рекомендація коротша: механіка, потім частоти зрізу фільтрів D-складової нижче на 15% або зменшення D.
Тремтіння feedforward через апаратуру
Лог A на другому рисунку: VX3.5 на Betaflight 4.5.2, лог 1 кГц, ВЧ-шум моторів на рівні попередження — 3,0%. Стандартна порада знизити фільтри D-складової або D нічого б не дала: D несе 4% шуму, P — менше 1%, feedforward — 96%. FF — це похідна від команди стика, а оскільки апаратура надсилає команди пакетами, кожен крок пакета спричиняє стрибок. Тут FF понад 40 Гц становив 3,6% ходу моторів по roll, із 51 стрибком за секунду понад 5% ходу під час 112 секунд руху стиками.
Ознаку можна помітити й без аналізу: мотори шумлять, коли рухаєш стиками, і тихі у висінні. Той самий звіт показав перерегулювання 25–31%, тож перший крок bbdoctor — зменшити FF відповідно до цієї знахідки, потім на наступному польоті ввімкнути усереднення та згладжування, а тоді змінити feedforward_jitter_factor з 7 на 12:
set feedforward_averaging = 2_POINT set feedforward_smooth_factor = 65 save
Ці назви параметрів використовуються у Betaflight 4.3 і новіших версіях. Для 4.2 bbdoctor пропонує ff_interpolate_sp (AVERAGED_2 або AVERAGED_3 для каналу 500 Гц), ff_spike_limit (знизити до 50) і rc_smoothing_auto_smoothness (підвищити до 20). Як виглядає перерегулювання FF на перехідній характеристиці: налаштування PID за Blackbox.
Коефіцієнт, який схожий на помилку
Той самий whoop: P roll — 17 і D — 50, P pitch — 40 і D — 35 (стандартне значення INAV: D 23 за P 40). На одній осі D утричі більший за P, на іншій — менший за P, а в лозі D-складова roll у 12 разів сильніша за P. bbdoctor позначає такий шаблон (D щонайменше вдвічі більший за P на одній осі й не більший за P на іншій) як імовірну помилку й ставить виправлення на перше місце, бо потрібен лише один рядок CLI: помнож D на цій осі на 0,7; якщо шум залишиться, перевір механіку й фільтри D-складової:
set mc_d_roll = 35 save

Частка й рівень — різні речі. У лозі B D несе 83% шуму, але це лише 0,5% ходу: виправляти нічого. Частка підказує, що виправляти; рівень — чи варто за це братися.
Порядок виправлень
- Механіка. Нові пропелери з однієї партії, гвинти моторів затягнуті, кожен мотор прокручується рукою: рух плавний, без скреготу й люфту. На променях немає тріщин, стек на м'яких кріпленнях, нічого не бовтається: камера, антена, ремінець акумулятора.
- RPM-фільтр. Потрібен двонаправлений DShot (
dshot_bidir = ON), ESC на Bluejay, AM32 або BLHeli_32 і правильне значенняmotor_poles(кількість магнітів у дзвоні). Гармоніки задаються черезrpm_filter_harmonics, а у версіях 4.1–4.2 — черезgyro_rpm_notch_harmonics; значення 0 вимикає фільтр. Щоб перевірити роботу, записуй у лог також RPM: див. налаштування Blackbox. - Динамічний notch для резонансів, які не залежать від RPM. Якщо RPM-фільтр працює, зазвичай достатньо 1–2 notch-фільтрів (
dyn_notch_count, BF 4.3+). bbdoctor вважає пік, який зберігається на тій самій частоті за різного газу (на 6 дБ вище фонового рівня щонайменше у 60% діапазонів газу й понад 60 Гц), резонансом рами або стека. Статичний notch він пропонує лише тоді, коли частота однозначна: лог записано з частотою циклу PID або з частотою від 2 кГц, а пік нижчий за половину частоти Найквіста. У трьох логах 6S на 4.5.1 (запис 1013 Гц, цикл PID 4 кГц) піки з'являються на 186–226 Гц, і пік «206 Гц» насправді може бути на 206, 807 або 1219 Гц. Замість випадкового notch bbdoctor просить короткий лог ізblackbox_sample_rate = 1/1. - Фільтри низьких частот. Знизь поточні значення на 15%: фільтри D-складової, якщо шум несе D; гіроскопічні фільтри, якщо шум проходить крізь них або його несе P. Не опускай частоту зрізу фільтра D-складової нижче 70 Гц.
- D — в останню чергу й лише якщо шум несе D, а фільтри вже налаштовані низько. Назви параметрів D змінилися у версії 2025.12, див. нижче.
Виняток із цього порядку: коефіцієнт, який схожий на помилку, виправляй першим. Одна зміна за політ. Після кожної зміни політа́й 30–60 секунд, приземлись, від'єднай акумулятор і перевір температуру моторів. Стали холодніші — залиш зміну. Не охололи — відкотити її.
Головне правило: не збільшуй D на гарячих моторах із шумом, навіть заради пропвошу. І навпаки: якщо звіт показує перерегулювання по roll або pitch, не зменшуй D, щоб охолодити мотори: перерегулювання зросте, тож bbdoctor радить зайнятися механікою й фільтрами D-складової.
Назви фільтрів у різних версіях Betaflight
| Параметр | Betaflight 4.0–4.2 | Betaflight 4.3–4.5 і 2025.12 |
|---|---|---|
| Динамічний фільтр низьких частот гіроскопа | dyn_lpf_gyro_min_hz / dyn_lpf_gyro_max_hz | gyro_lpf1_dyn_min_hz / gyro_lpf1_dyn_max_hz |
| Статичний фільтр низьких частот гіроскопа 1 | gyro_lowpass_hz | gyro_lpf1_static_hz |
| Фільтр низьких частот гіроскопа 2 | gyro_lowpass2_hz | gyro_lpf2_static_hz |
| Динамічний фільтр низьких частот D-складової | dyn_lpf_dterm_min_hz / dyn_lpf_dterm_max_hz | dterm_lpf1_dyn_min_hz / dterm_lpf1_dyn_max_hz |
| Статичний фільтр низьких частот D-складової 1 | dterm_lowpass_hz | dterm_lpf1_static_hz |
| Фільтр низьких частот D-складової 2 | dterm_lowpass2_hz | dterm_lpf2_static_hz |
| Гармоніки RPM-фільтра | gyro_rpm_notch_harmonics (4.1–4.2) | rpm_filter_harmonics |
| Повзунки фільтрів | 4.2: лише Configurator; раніше їх не було | simplified_gyro_filter, simplified_dterm_filter |
У версії 2025.12 назви фільтрів залишилися, але змінилося значення D: базове значення тепер задають d_roll/d_pitch, а верхнє — d_max_roll/d_max_pitch.
Пастка повзунка (4.3+): якщо simplified_dterm_filter = ON, після збереження вкладки Configurator із повзунками він перераховує частоти зрізу за множником і стирає задані вручну значення. У реальному лозі VX3.5 фільтр D-складової має значення 180/420 Гц, а повзунок увімкнений на 100 — стандартні значення були б 75/150, отже ці частоти встановили вручну або пресетом. Змінюєш частоти зрізу в CLI? Вимкни повзунок.
Відштовхуйся від поточних значень (команда get dterm_lpf їх покаже). bbdoctor бере їх із заголовка логу, множить кожну частоту зрізу на 0,85 (або на 1,15 для підвищення) і вимикає повзунок. Для фільтра D-складової цього VX3.5 (180/420 Гц, фільтр низьких частот 1 на 158, фільтр низьких частот 2 на 150) зниження на 15% виглядає так; це лише арифметика, адже шум у цьому лозі несе 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
Не використовуй simplified_tuning apply як швидке виправлення: команда перераховує фільтри й PID за стандартними значеннями Betaflight, а не за твоїми, і непомітно стирає ручне налаштування.
Коли можна послабити фільтри
Менше фільтрації означає меншу затримку й кращу реакцію на пропвош. bbdoctor радить підвищувати частоти зрізу гіроскопічних фільтрів на 15% лише за виконання всіх умов:
- шум після фільтрації нижче 1 град/с по roll і pitch;
- затримка понад 1,5 мс, інакше скорочувати нічого;
- сирий гіроскоп нижче 4 град/с;
- резонансу рами немає;
- лог записано з частотою 500 Гц або вище.
Для стандартних значень 4.5 (250/500 Гц, фільтр низьких частот 2 на 500) команди будуть такими:
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
Якщо шум і затримка відповідають умовам, але сирий гіроскоп шумний або є резонанс, у звіті сказано, що запас є, але послаблювати фільтри ще зарано. В іншому разі фільтри вважаються в нормі (або є попередження, якщо відфільтрований шум перевищує 3 град/с); для логу з частотою нижче 500 Гц висновку про послаблення не буде. Лог 6S на 4.5.1 з такими самими стандартними значеннями: відфільтрований шум — 0,6 град/с, затримка — 2,2 мс, на папері запасу вдосталь, але сирий сигнал — 7,4 град/с і є резонанс на 206 Гц. Фільтри зайняті шумною механікою, і їх послаблення передасть цей шум моторам. Лог 6S на 4.2 із частотою 534 Гц: відфільтрований шум — 0,31 град/с, затримка — 2,8 мс, але сирий сигнал — 4,7, тож і тут послаблювати зарано. Із 17 логів, де вдалося виміряти і сирий гіроскоп, і затримку, жоден не відповідав усім п'ятьом умовам. Чиста механіка трапляється рідше, ніж здається.
Затримка й пропвош
Затримка — це ціна фільтрації. У логах цього гайда вона становить від 0,8 мс (INAV 6.0) до 3,2 мс (лог 4.2.5 із горбом). Щоб оцінити її, переведи в фазу: на 50 Гц, у середньому діапазоні пропвошу, 1 мс — це відставання на 18°, а 3,2 мс — уже 58°. Що пізніше контур бачить коливання, то гірше він його гасить: звідси пропвош, а за достатньої затримки контур починає коливатися сам.
Два польоти VX3.5 на 4.5.2: у першому фільтр гіроскопа низьких частот налаштовано на 250/500 Гц, а D-складової — на 75/150; у другому — на 300/700 і 180/420. Затримка зменшилася з 2,2 до 1,2 мс, а шум після фільтрації на найгіршій осі в обох випадках залишився близько 1,4–1,5 град/с. ВЧ-шум моторів зріс із 1,6 до 3,0%, але в другому польоті 96% шуму спричинив feedforward, а стиками рухали 112 секунд проти 45. Знижувати фільтри D-складової, щоб охолодити мотори, було б марно. Про затримку на перехідній характеристиці див. налаштування PID за Blackbox.
Поширені помилки
- Знижувати фільтри, коли шум несе FF. Затримка зростає, а мотори залишаються такими самими гарячими.
- Підвищувати D на гарячих моторах заради пропвошу або «відчуття, що дрон як влитий». D підсилює саме високі частоти.
- Оцінювати шум за логом 250 Гц. Він бачить лише до 125 Гц, а шум моторів на 300 Гц складається до 50 Гц (300 − 250), де схожий на повільне коливання. Як налаштувати запис: налаштування Blackbox.
- Ставити notch на пік із логу з низькою частотою запису без перевірки однозначності частоти: відфільтруєш не ту частоту й додаси затримку.
INAV, ArduPilot і PX4
INAV. Фільтр гіроскопа низьких частот — gyro_main_lpf_hz (за замовчуванням 60 Гц), динамічний фільтр працює в діапазоні gyro_dyn_lpf_min_hz–gyro_dyn_lpf_max_hz і вмикається параметром gyro_use_dyn_lpf = ON до версії 7.x або gyro_filter_mode = DYNAMIC починаючи з 8.0 (цей режим також додає ADAPTIVE). Фільтр D-складової низьких частот — dterm_lpf_hz (за замовчуванням 110, у згаданому вище whoop — 120). D задають параметри mc_d_roll / mc_d_pitch, FF — mc_cd_roll / mc_cd_pitch. RPM-фільтр rpm_gyro_filter_enabled працює лише з окремим проводом телеметрії ESC. Докладніше: аналіз Blackbox INAV.
ArduPilot. Фільтр гіроскопа низьких частот — INS_GYRO_FILTER (20 Гц у більшості перевірених мною логів ArduCopter), фільтр D — ATC_RAT_RLL_FLTD / ATC_RAT_PIT_FLTD. bbdoctor масштабує їх так само: × 0,85 або × 1,15. Шум моторів і резонанси контролює гармонічний notch INS_HNTCH_*, керований газом, телеметрією ESC або FFT. Для нерухомого резонансу рами з однозначною частотою bbdoctor радить другий notch — INS_HNTC2_* із INS_HNTC2_MODE = 0. Докладніше: аналіз логів ArduPilot.
PX4. Фільтр гіроскопа низьких частот — IMU_GYRO_CUTOFF, фільтр D — IMU_DGYRO_CUTOFF. У PX4 часовий зсув між записаними темами не дорівнює затримці фільтра (він може показувати 0 за частоти зрізу 30–60 Гц), тож bbdoctor оцінює затримку за налаштуванням: √2/(2π·fc) для фільтра низьких частот другого порядку. За 40 Гц, як у більшості перевірених мною логів PX4, це 5,6 мс — більше, ніж у будь-якому з логів Betaflight вище. За 70 Гц — 3,2 мс. Статичний notch — IMU_GYRO_NF0_FRQ / IMU_GYRO_NF0_BW (версія 1.13 і новіші; раніше — IMU_GYRO_NF_FREQ / IMU_GYRO_NF_BW), а динамічний notch (ESC RPM або FFT) — IMU_GYRO_DNF_EN. Докладніше: аналіз PX4 ULog.
Автоматична перевірка
Завантаж лог на bbdoctor: Betaflight .bbl і .bfl, INAV .txt, ArduPilot .bin або PX4 .ulg. Звіт обчислює всі чотири показники, розділяє шум моторів на складові P, D і FF, перевіряє, чи однозначна частота резонансів, і пропонує команди CLI, розраховані від поточних частот зрізу, за потреби вимикаючи повзунок. Див. приклад звіту. Логу ще немає, але маєш diff all? Перевірка конфігурації позначає вимкнені фільтри низьких частот і динамічний notch, RPM-фільтр без телеметрії та повзунки, далекі від 1,0.
Часті запитання
Чому на Betaflight нагріваються мотори?
Шум понад 80 Гц у командах моторів. Він не створює тяги: струм в обмотці смикається туди-сюди в кожному циклі й перетворюється на тепло. Лог показує джерело: механіка (шумний сирий гіроскоп), D-складова або тремтіння feedforward через апаратуру. Чіпай фільтри лише тоді, коли знаєш, яка PID-складова несе шум.
Спершу знижувати фільтри чи D?
Спочатку механіка й RPM-фільтр. Якщо шум моторів несе D, знизь частоти зрізу фільтрів D-складової на 15% від поточних; якщо фільтр D-складової вже нижче 70 Гц, натомість знизь D на 10%. Якщо шум несе feedforward, ані фільтри, ані D не допоможуть: згладь feedforward. Одна зміна за політ.
Чи можна послабити фільтри, щоб боротися з пропвошем?
Лише коли збігаються всі умови: шум після фільтрації нижче 1 град/с, затримка понад 1,5 мс, сирий гіроскоп нижче 4 град/с, резонансу рами немає, а лог записано з частотою 500 Гц або вище. Тоді підніми частоти зрізу гіроскопічних фільтрів на 15% і перевіряй температуру моторів після кожного польоту.
Наскільки гарячі мотори — це вже забагато?
Після звичайного акумулятора одразу приземлись, від'єднай його й торкнися дзвона мотора. Якщо можеш потримати палець кілька секунд — усе гаразд. Якщо відсмикуєш руку, відчуваєш запах лаку або один мотор явно гарячіший за інші, припини польоти й шукай причину в лозі. Після будь-якої зміни фільтрів почни з короткого польоту на 30–60 секунд.
Оновлено: