PID и Rates … ↩ 7.13 m3
mod. Пятница, 09 октября 2026 09:26 . См. 137
Betaflight без GUI · Урок 7 из 13 · Модуль 3. Полётная настройка
Вся вкладка PID Tuning в командах: P/I/D/F по осям, DMin и DMax, Feedforward, I-term relax, TPA, динамический холостой ход, rates и все фильтры.
Ключевой нюанс — профили: параметры set применяются к текущему профилю. Выберите profile 0 или rateprofile 0 до правки. Имена параметров меняются между версиями — проверяйте через get.
Содержание
- 1. Цели урока
- 2. Профили
- 3. Коэффициенты P, I, D, F
- 4. DMin и DMax
- 5. Feedforward
- 6. I-term: relax, windup, rotation
- 7. TPA — снижение PID на газе
- 8. Компенсации и ограничения
- 9. Динамический холостой ход
- 10. Rates
- 11. Фильтры
- 12. Упрощённая настройка
- 13. Выравнивание: Angle и Horizon
- 14. Пример полного сценария
- 15. Расчётное задание
- 16. Проверьте себя
- 17. Чек-лист самопроверки
- 18. Что дальше
1. Цели урока
Вкладка PID Tuning в конфигураторе — самая большая: десятки ползунков и выпадающих списков. В CLI ей соответствует столько же параметров, и все они доступны без графики.
После этого урока вы будете понимать:
- зачем нужны профили и как их переключать
- все коэффициенты P, I, D, F по трём осям
- что дают DMin, DMax, Feedforward и I-term relax
- как работает TPA и зачем снижать PID на полном газе
- чем RC Rate, Super Rate и Expo отличаются и где задаются ограничения
- какие бывают фильтры и чем статический отличается от динамического
- что такое RPM-фильтры и упрощённая настройка
2. Профили
Betaflight хранит несколько независимых наборов настроек.
| Что | Команда выбора | Сколько |
|---|---|---|
| PID-профиль | profile 0 … profile 2 |
3 |
| Профиль rates | rateprofile 0 … rateprofile 5 |
6 |
| Профиль батареи | battery_profile 0 … battery_profile 2 |
3, только с версий 2026.x |
profile 0. Прежде чем менять rates — rateprofile 0. Иначе правите не тот набор. Команда profile без номера покажет, какой профиль активен сейчас.battery_profile есть только в прошивках ветки 2026.x. В 4.4, 4.5 и 2025.12 на неё приходит ###ERROR IN input: UNKNOWN COMMAND — там настройки батареи не разбиты по профилям. Убедиться: battery_profile, либо посмотреть полный список команд — help.diff all настройки сгруппированы блоками profile 0, rateprofile 0 — но только если они отличаются от заводских. diff печатает раздел лишь тогда, когда внутри есть хотя бы одно изменённое значение: прошивка проверяет каждый блок и пропускает те, что полностью совпадают с умолчаниями. Поэтому на свежем полётнике с заводскими PID блоков профилей в выводе не будет вовсе — это нормально, а не признак их отсутствия. Достаточно выполнить set p_roll = 45, и в diff all появится строка # profile 0 с этой настройкой. Полный вывод со всеми профилями и всеми значениями даёт dump all.3. Коэффициенты P, I, D, F
В графическом интерфейсе коэффициенты сведены в таблицу Basic/Acro: колонки [Proportional], [Integral], [D Max], [Derivative], [Feedforward] и строки [ROLL], [PITCH], [YAW]. Часть CLI-имён строится по правилу <коэффициент>_<ось>; у нижнего уровня D имя особое:
| Поле GUI | Roll [ROLL] | Pitch [PITCH] | Yaw [YAW] | Практический смысл |
|---|---|---|---|---|
| P [Proportional] | p_roll |
p_pitch |
p_yaw |
Исправляет текущую ошибку угловой скорости: больше P — жёстче следование команде, но выше риск быстрых колебаний. |
| I [Integral] | i_roll |
i_pitch |
i_yaw |
Накапливает длительную ошибку: удерживает заданное вращение при ветре и дисбалансе; избыток может дать медленные колебания. |
| D Max [D Max] | d_roll |
d_pitch |
d_yaw |
Верхний уровень D при активном динамическом демпфировании; больше — сильнее гашение, но чувствительнее к вибрации и нагреву моторов. |
| D [Derivative] | d_min_roll |
d_min_pitch |
d_min_yaw |
Нижний уровень D в спокойном полёте (CLI-имя d_min_*). Должен быть ниже D Max: иначе динамическое усиление D не включится. |
| F [Feedforward] | f_roll |
f_pitch |
f_yaw |
Упреждение от движения стика: ускоряет начало манёвра, но чрезмерное значение вызывает переброс и резкий отклик. |
[D Max] задаёт d_roll, а [Derivative] — d_min_roll. Это не опечатка: имена CLI говорят о верхнем и нижнем уровнях D, а не повторяют подписи таблицы. Например, крен 40/30 означает d_roll = 40 и d_min_roll = 30. При d_min_roll = 0 динамическое демпфирование по этой оси не применяется.Пример для крена [ROLL] с числами из показанного GUI (не универсальный тюн):
# profile 0
# set p_roll = 45
# set i_roll = 80
# set d_roll = 40
# set d_min_roll = 30
# set f_roll = 120
4. DMin и DMax

Динамическое D работает между двумя уровнями: [Derivative] — нижний уровень при спокойном полёте, [D Max] — верхний при быстрых изменениях угловой скорости или команды стика. Это части одного механизма, а не два взаимоисключающих способа настройки.
| Элемент в GUI | CLI | Практический смысл |
|---|---|---|
| [D Max] [ROLL] | set d_roll = 40 |
Верхний предел D по крену: помогает гасить колебания на резких манёврах; повышение усиливает и чувствительность к шуму. |
| [Derivative] [ROLL] | set d_min_roll = 30 |
Нижний уровень D по крену: уменьшает постоянную нагрузку на моторы; 0 отключает динамическое переключение по этой оси. |
| [D Max] [PITCH] | set d_pitch = 46 |
Верхний уровень D по тангажу; подбирается отдельно от крена. |
| [Derivative] [PITCH] | set d_min_pitch = 34 |
Нижний уровень D по тангажу: должен быть меньше d_pitch. |
| [D Max] [YAW] / [Derivative] [YAW] | set d_yaw = 0 / set d_min_yaw = 0 |
На показанном экране оба значения равны нулю: D по рысканью не используется. |
| [Коэффициент усиления] (блок «Динамическое демпфирование») | set d_max_gain = 37 |
Определяет, насколько охотно D поднимается от нижнего уровня к верхнему при движении/возмущениях; не подменяет d_roll и d_min_roll. |
| [Коэффициент опережения] (блок «Динамическое демпфирование») | set d_max_advance = 20 |
Регулирует долю реакции на изменение команды стика: больше — раньше поднимается D при резком вводе команды. |
0 < d_min_roll < d_roll (аналогично для других осей). Установка d_min_roll = 40 при d_roll = 30 отключит динамическое изменение D, а не усилит его.5. Feedforward
В графическом интерфейсе этому соответствует блок [Feedforward] в секции «Настройки PID-контроллера».
Команды CLI (числа взяты из показанного GUI и не служат готовым тюном):
| Поле GUI (блок «Feedforward») | CLI | Практический смысл |
|---|---|---|
| [Feedforward] в строках ROLL / PITCH / YAW | set f_roll = 120 |
Упреждение от движения стика: выше значение — быстрее начальный отклик, но при избытке возможен переброс; 0 убирает вклад FF этой оси. |
| [Подавление дрожания] | set feedforward_jitter_factor = 7 |
Подавляет малые скачки FF от микродвижений стика и неточных RC-пакетов; слишком сильное подавление скрывает и мелкие намеренные коррекции. |
| [Сглаживание] | set feedforward_smooth_factor = 25 |
Сглаживает изменение команды до расчёта FF: уменьшает рывки, но может сделать начало манёвра менее отчётливым. |
| [Усреднение] | set feedforward_averaging = OFF |
Усредняет несколько входящих RC-пакетов: подавляет неровный сигнал ценой дополнительного запаздывания; OFF — без усреднения. |
| [Усиление] | set feedforward_boost = 15 |
Прибавляет FF при ускорении стика: быстрый старт вращения, но при избытке — переброс и дрожание на резких движениях. |
| [Предел макс. значение] | set feedforward_max_rate_limit = 90 |
Ограничивает FF, когда требуемая скорость близка к максимальной: уменьшает риск переброса у края стика; код применяет это к крену/тангажу, не к yaw. |
| [Переход] | set feedforward_transition = 0 |
Ослабляет FF вблизи центра стика, плавно возвращая его при отклонении; это не переход между коэффициентами P и FF. |

6. I-term: relax, windup, rotation

В интерфейсе настройки сгруппированы в блоки [Ослабление I] и [Вращение I]:
| Поле GUI / параметр CLI | CLI | Практический смысл |
|---|---|---|
| [Оси] (блок «Ослабление I») | set iterm_relax = RP |
Ограничивает НАРАСТАНИЕ I при резкой команде: RP — крен и тангаж, RPY — ещё и yaw, *_INC допускает уменьшение уже накопленного I. Не сбрасывает I в ноль. |
| [Тип] (блок «Ослабление I») | set iterm_relax_type = SETPOINT |
Выбирает способ ослабления прироста I: SETPOINT опирается на резкость команды, GYRO также учитывает расхождение с реальной скоростью вращения. |
| [Отсечка] (блок «Ослабление I») | set iterm_relax_cutoff = 15 |
Частота среза фильтра команды для I-term relax: меняет, какие движения стика считаются быстрыми; не является величиной I-коэффициента. |
| [Вращение I] | set iterm_rotation = OFF |
При повороте аппарата переносит накопленный вектор I между осями; полезно при сложных манёврах, это не повышение I. |
| I-term Windup | set iterm_windup = 100 |
Порог по выходу PID, выше которого рост I ограничивается: снижает накопление интегратора при насыщении моторов. |
| I-term Limit | set iterm_limit = 400 |
Ограничивает абсолютный вклад I в выход регулятора; защита от чрезмерного накопления, не то же самое, что iterm_windup. |
iterm_relax = RP включён по умолчанию и заметно улучшает поведение на резких движениях.7. TPA — снижение PID на газе

В интерфейсе этому соответствует блок [TPA]. На полном газу аппарат становится избыточно резким и начинает звенеть — TPA уменьшает коэффициенты по мере роста газа:
| Поле GUI (блок «TPA») | CLI | Практический смысл |
|---|---|---|
| [Режим TPA] | set tpa_mode = D |
Определяет затронутые составляющие: D ослабляет только демпфирование, PD — и демпфирование, и точность P при высоком газе. |
| [Коэффициент TPA (%)] | set tpa_rate = 65 |
Задаёт максимальное ослабление выбранных составляющих к верхнему краю газа: 65 означает сильное ослабление, а не рекомендуемое значение для любого дрона. |
| [Порог TPA (μs)] | set tpa_breakpoint = 1350 |
Точка на кривой газа в мкс, после которой TPA нарастает; ниже порога обычный высокогазовый TPA не действует. |
| TPA Low Rate | set tpa_low_rate = 20 |
Дополнительное ослабление на низком газе: помогает при низкогазовых колебаниях, но может ухудшить удержание траектории. |
| TPA Low Breakpoint | set tpa_low_breakpoint = 1050 |
Ниже этого значения действует низкогазовая часть TPA; это иной порог, чем tpa_breakpoint для верхней части. |
| TPA Low Always | set tpa_low_always = OFF |
Выбирает, продолжать ли низкогазовый TPA после первого перехода выше нижнего порога; это не включение всего TPA. |
8. Компенсации и ограничения
Параметры из блоков [Антигравити], [Параметры газа и моторов] и [Другие настройки]:
| Поле GUI / параметр CLI | CLI | Практический смысл |
|---|---|---|
| [Коэффициент усиления] (блок «Антигравити») | set anti_gravity_gain = 8000 |
На резких изменениях газа временно усиливает I, чтобы аппарат не терял заданную ориентацию; CLI 8000 соответствует показу 8.0 в GUI. |
| Anti Gravity P Gain | set anti_gravity_p_gain = 0 |
Добавляет временный P при изменении газа и малом отклонении стика; не заменяет основной p_roll/p_pitch. |
| Anti Gravity Cutoff | set anti_gravity_cutoff_hz = 5 |
Частота фильтра изменения газа для антигравитации: определяет, насколько быстрые изменения газа запускают коррекцию. |
| [Компенсация просадки аккумулятора (%)] | set vbat_sag_compensation = 0 |
Меняет выход моторов при падении напряжения, чтобы тяга ощущалась стабильнее на протяжении разряда; требует корректного измерения напряжения. |
| [Линеаризация тяги (%)] | set thrust_linear = 0 |
Корректирует нелинейную зависимость тяги от команды моторам; влияет на моторное управление, а не на форму кривой стика газа. |
| [Ускорение газа] | set throttle_boost = 5 |
Кратковременно добавляет газ при быстром движении стика; избыток даёт рывки вместо ровного набора тяги. |
| [Ограничение выхода на двигатель] | set motor_output_limit = 100 |
Ограничивает максимальную команду моторам; снижает пиковую мощность, но не исправляет перегрев от вибраций/неверных PID. |
| [Значение динамического холостого хода [* 100 об/мин]] | set dyn_idle_min_rpm = 0 |
Целевая нижняя граница оборотов при нулевом газе: 20 означает 2000 об/мин; нужен двусторонний DShot и данные оборотов. |
| [Абсолютный контроль] | set abs_control_gain = 0 |
Дополнительная коррекция длительного расхождения между желаемым и фактическим вращением; без измерений не стоит использовать как лечение любого переброса. |
| [Интегрированный Yaw] | set use_integrated_yaw = OFF |
Меняет способ формирования выхода регулятора yaw: интегрирует команду по времени; экспериментальная настройка, не равна i_yaw. |
| [Акро тренер лимит угла] | set acro_trainer_angle_limit = 20 |
Граница наклона, при приближении к которой тренерский режим ограничивает дальнейшее отклонение; в обычном Acro не действует. |
| Crash Recovery | set crash_recovery = ON |
Поведение после распознанного удара/падения: автоматическое восстановление либо сигнал/разоружение; проверять только безопасно, без винтов. |
9. Динамический холостой ход
Dynamic Idle удерживает минимальные обороты моторов, чтобы они не «захлёбывались» на нулевом газу. Работает только при включённом bidirectional DShot.
# set dshot_bidir = ON
# set dyn_idle_min_rpm = 20
# set dyn_idle_p_gain = 50
# set dyn_idle_i_gain = 50
# set dyn_idle_d_gain = 50
# set dyn_idle_max_increase = 150
# set dyn_idle_start_increase = 50
| Параметр | Что делает |
|---|---|
dyn_idle_min_rpm |
Целевой минимум по телеметрии ESC: 20 × 100 = 2000 об/мин; 0 отключает динамический idle. Требует bidirectional DShot. |
dyn_idle_p_gain / i_gain / d_gain |
P реагирует на текущую ошибку оборотов, I — на длительное отставание, D — на быстрое изменение; без логов обычно не менять. |
dyn_idle_max_increase |
Предел дополнительного моторного выхода, который регулятор idle может запросить для удержания нижних оборотов; это не процент газа на стике. |
dyn_idle_start_increase |
Ограничение добавки в начале работы регулятора до полного вступления Airmode; не устанавливает целевые обороты. |
10. Rates
[Настройки профиля Rates] определяют, какую угловую скорость контроллер запросит при отклонении стиков. На скриншоте выбран [Тип коэффициентов] Actual и [Rate-профиль 1]. Первому профилю в CLI соответствует rateprofile 0. Имена CLI по осям одинаковы для разных типов rates, но смысл и масштаб чисел отличаются.
| Поле на скриншоте (Actual) | Roll [Крен [A]] | Pitch [Тангаж [E]] | Yaw [Рыск.[R]] | Практический смысл |
|---|---|---|---|---|
| [Чувствительность по центру] | roll_rc_rate |
pitch_rc_rate |
yaw_rc_rate |
Наклон кривой около центра: на скриншоте 70 град/с даёт CLI 7 (число CLI умножается на 10). |
| [Максимальный коэффициент] | roll_srate |
pitch_srate |
yaw_srate |
Целевая угловая скорость на краю стика: на скриншоте 670 град/с даёт CLI 67. В режиме Actual это НЕ Super Rate из типа Betaflight. |
| [Экспонента] | roll_expo |
pitch_expo |
yaw_expo |
Меняет форму между центром и краем, не изменяя эти две крайние характеристики; GUI 0.00 соответствует CLI 0. |
rc_rate × 10 град/с, а при srate ≥ rc_rate край стика даёт srate × 10 град/с. На снимке это условие выполнено. Числа 70 и 670 нельзя буквально записать в CLI-параметры roll_rc_rate и roll_srate.При нулевой экспоненте, как на скриншоте, и относительном положении стика \(x\in[-1,1]\) отклик в град/с можно проверить по формуле:
\[\omega(x)=C x+(M-C)x|x|,\quad C=10r_c,\quad M=10r_s\]Для значений крена на скриншоте при половине хода стика: \(\omega(0{,}5)=70\cdot0{,}5+(670-70)\cdot0{,}25=185\) град/с. Столбец [Макс. скор. град/сек] на экране — вычисленный результат, а не отдельное поле для ввода roll_rate_limit.
# rateprofile 0
# set rates_type = ACTUAL
# set roll_rc_rate = 7
# set pitch_rc_rate = 7
# set yaw_rc_rate = 7
# set roll_srate = 67
# set pitch_srate = 67
# set yaw_srate = 67
# set roll_expo = 0
# set pitch_expo = 0
# set yaw_expo = 0
rateprofile 0. Перед изменениями проверьте активный профиль через rateprofile и сохраните текущий diff all.Пять типов Rates: как читать сравнительный скриншот
На нижней полосе большого скриншота показаны другие типы Rates при настройке крена. Прошивка хранит те же три CLI-поля roll_rc_rate, roll_srate, roll_expo, но обрабатывает их пятью разными формулами. Приведены числа именно этих снимков, а не таблица взаимозаменяемых тюнов:
| [Тип коэффициентов] | GUI, крен: три видимых числа | CLI: rc_rate / srate / expo | Край стика и смысл |
|---|---|---|---|
| Actual | 70 / 670 / 0.00 | 7 / 67 / 0 |
670 град/с: первый параметр задаёт отклик у центра, второй — скорость у края. |
| Betaflight | 1.00 / 0.70 / 0.00 | 100 / 70 / 0 |
Около 667 град/с: RC Rate задаёт базовую чувствительность, Rate усиливает отклик к краю. |
| Raceflight | 370 / 80 / 50 | 37 / 80 / 50 |
666 град/с: поле [Acro+] влияет на рост скорости к краю, экспонента 50 меняет форму кривой. |
| KISS | 1.00 / 0.70 / 0.00 | 100 / 70 / 0 |
Около 667 град/с: при показанных нулевой экспоненте и rc_rate = 100 кривая совпадает с Betaflight; это частный случай. |
| Quick | 1.00 / 670 / 0.00 | 100 / 67 / 0 |
670 град/с: близкие к Betaflight значения первого поля, но второе — максимальная скорость, а не Super Rate. |
Проверка различий: при половине хода стика крена и показанных настройках Actual запрашивает около 185 град/с, Raceflight — 162 град/с, Betaflight и KISS — по 154 град/с, Quick — около 154 град/с. При этом у края все пять примеров показывают близкие 666–670 град/с. Расчёт выполнен по функциям Rates прошивки 4.5.4; это не результат замера моторов.
Три числа в каждой строке идут слева направо по полям GUI. У Raceflight это [Коэффициент], [Acro+], [Экспонента]; у KISS — [RC Rate], [Rate], [Кривая RC]. Поля под рисунком помогают сопоставить числа, но не превращают разные формулы в одинаковую настройку.
rates_type с BETAFLIGHT на ACTUAL и ждать прежней управляемости. Сначала сохраните diff all.Если выбран тип BETAFLIGHT
На отдельном фрагменте GUI для rates_type = BETAFLIGHT видны [RC Rate], [Rate] и [RC Expo]. Отдельной надписи Super Rate на этом скриншоте нет: так называют действие [Rate], среднего столбца. Для крена это CLI-параметр roll_srate (для тангажа и рысканья — pitch_srate и yaw_srate). Те же имена CLI имеют другую интерпретацию при выборе Actual. Не переносите сюда числа Actual из верхней части скриншота:
| Поле GUI Betaflight | Roll | Pitch | Yaw | Практический смысл |
|---|---|---|---|---|
| [RC Rate] | roll_rc_rate |
pitch_rc_rate |
yaw_rc_rate |
Значение 1.00 в GUI означает 100 в CLI; задаёт базовую чувствительность, а не скорость у центра в град/с. |
| [Rate] | roll_srate |
pitch_srate |
yaw_srate |
Среднее поле GUI: 0.70 соответствует 70 в CLI. В типе BETAFLIGHT его действие называют Super Rate — усиление скорости ближе к краю стика. |
| [RC Expo] | roll_expo |
pitch_expo |
yaw_expo |
Значение 0.00 в GUI означает 0 в CLI; большая экспонента смягчает отклик у центра. |
| Поле на скриншоте / параметр вне скриншота | CLI | Практический смысл |
|---|---|---|
| [Тип коэффициентов] | set rates_type = ACTUAL |
Выбирает именно ту формулу, которую показывает скриншот. BETAFLIGHT, ACTUAL, QUICK и другие варианты не взаимозаменяемы. |
| Не на скриншоте: Rate Limits (не [Макс. скор. град/сек]) | set roll_rate_limit = 1998 |
Жёсткий предел командуемой угловой скорости, град/с; отдельно для pitch и yaw. Число 670 на скриншоте — расчёт кривой Actual, а не этот предел. |
| Не на скриншоте: Rates Expo (Quick) | set quickrates_rc_expo = OFF |
Форма экспоненты для типа QUICK; в Actual не заменяет roll_expo и остальные осевые expo. |
| [Ограничение газа] | set throttle_limit_type = OFF |
Способ ограничения: SCALE сжимает диапазон газа, CLIP срезает верх; OFF не ограничивает. |
| [Ограничение газа (%)] | set throttle_limit_percent = 100 |
Процент ограничения при SCALE/CLIP; 100 на скриншоте сохраняет полный диапазон. |
| [Газ, средняя точка] | set thr_mid = 50 |
GUI 0.5 соответствует CLI 50: центр кривой экспоненты газа; не ограничивает максимальную тягу. |
| [Газ, экспонента] | set thr_expo = 0 |
Меняет форму кривой газа вокруг средней точки; 0 на скриншоте даёт линейную кривую. |
| Не на скриншоте: Throttle Boost | set throttle_boost = 5 |
Краткая прибавка газа при резком движении стика; описана в разделе компенсаций и не отображается на этом скриншоте. |
| Не на скриншоте: Throttle Boost Cutoff | set throttle_boost_cutoff = 15 |
Частота фильтра краткой прибавки throttle_boost; не является ограничением газа. |
get roll_ покажет roll_rc_rate, roll_srate, roll_expo и roll_rate_limit. Сначала проверьте rates_type и выбранный профиль через rateprofile, иначе числа легко истолковать неверно.11. Фильтры
На скриншоте [Настройки фильтров] блок гироскопа слева не зависит от выбранного PID-профиля, а блок D Term справа — зависит. Числа в таблицах ниже взяты со скриншота выше (для пояснения параметров), и это не готовый набор фильтров для конкретного аппарата. Lowpass подавляет широкий диапазон высокочастотного шума, notch — узкую область вокруг резонанса, RPM-notch следует за оборотами моторов. НЕ ПРИМЕНЯТЬ НИ К КАКОМУ ДРОНУ!
| Поле GUI: Gyro НЧ фильтры | CLI | Практический смысл |
|---|---|---|
| [Множитель фильтров гироскопа] | set simplified_gyro_filter_multiplier = 100 |
Значение 100 отображается как 1.00. В упрощённой настройке уменьшение множителя снижает частоты среза (больше подавление, больше задержка); действует на гироскоп независимо от PID-профиля. |
| [Фильтр низких частот гироскопа - 1 «Lowpass»] [Режим: Динамический] [Мин. частота среза] / [Макс. частота среза] | set gyro_lpf1_dyn_min_hz = 250 / set gyro_lpf1_dyn_max_hz = 500 |
Активный на скриншоте динамический LPF1: срез меняется в пределах 250–500 Гц. Эти значения относятся к гироскопу, не к D Term. |
| [Тип фильтра] (Gyro LPF1) | set gyro_lpf1_type = PT1 |
Тип первого каскада гироскопа: GUI показывает PT1; другие видимые варианты BIQUAD, PT2, PT3 дают иное сочетание подавления и задержки. |
| [Фильтр низких частот гироскопа - 2 «Lowpass»] [Статическая частота среза] | set gyro_lpf2_static_hz = 500 |
Второй каскад гироскопа со статической частотой 500 Гц; работает отдельно от динамического первого каскада. |
| [Тип фильтра] (Gyro LPF2) | set gyro_lpf2_type = PT1 |
Тип второго каскада; на снимке PT1. |
| [Статический] режим Gyro LPF1 (не выбран) | set gyro_lpf1_dyn_min_hz = 0 / set gyro_lpf1_static_hz = 250 |
Пример переключения на статический режим: при действующем динамическом LPF1 значение static_hz не задаёт его рабочую частоту. |
| Не на этом скриншоте: аппаратный LPF | set gyro_hardware_lpf = NORMAL |
Аппаратная фильтрация внутри датчика; не путать с программными каскадами Gyro LPF1/LPF2. |
D Term и фильтр рысканья
| Поле GUI: D Term / Yaw | CLI | Практический смысл |
|---|---|---|
| [Множитель фильтров D-Term] | set simplified_dterm_filter_multiplier = 100 |
Значение 100 отображается как 1.00. Упрощённый множитель частот фильтра D Term относится к выбранному PID-профилю, а не ко всем профилям сразу. |
| [D-term фильтр низких частот - 1 «Lowpass»] [Режим: Динамический] [Мин. частота среза] / [Макс. частота среза] | set dterm_lpf1_dyn_min_hz = 75 / set dterm_lpf1_dyn_max_hz = 150 |
На снимке динамический срез D Term меняется от 75 до 150 Гц. Слишком низкая частота добавляет задержку демпфирования; слишком высокая пропускает шум. |
| [Динамическая экспоненциальная кривая] | set dterm_lpf1_dyn_expo = 5 |
Меняет форму перехода между минимальной и максимальной частотами D Term LPF1; это не Expo стика Rates. |
| [Тип фильтра] (D Term LPF1) | set dterm_lpf1_type = PT1 |
Тип первого каскада D Term на снимке — PT1. |
| [D-term фильтр низких частот - 2 «Lowpass»] [Статическая частота среза] | set dterm_lpf2_static_hz = 150 |
Дополнительный статический каскад D Term с частотой 150 Гц. |
| [Тип фильтра] (D Term LPF2) | set dterm_lpf2_type = PT1 |
Тип второго каскада D Term на снимке — PT1. |
| [НЧ фильтр по рысканию] [Статическая частота среза] | set yaw_lowpass_hz = 100 |
Отдельный lowpass для P-составляющей рысканья (Yaw), не третий каскад фильтра гироскопа. |
| [Статический] режим D Term LPF1 (не выбран) | set dterm_lpf1_dyn_min_hz = 0 / set dterm_lpf1_static_hz = 75 |
Пример альтернативного режима: при активном динамическом LPF1 static_hz не задаёт его текущий срез. |
gyro_lpf1_dyn_min_hz или dterm_lpf1_dyn_min_hz включает динамическую настройку соответствующего первого каскада. При переходе на статический режим обнулите нужный *_dyn_min_hz и задайте *_static_hz. Перед копированием цифр убедитесь, что выбран именно тот режим в GUI.Режекторные фильтры
| Поле GUI | CLI | Практический смысл |
|---|---|---|
| [Режекторный фильтр гироскопа - 1 «Notch»] [Центральная частота] / [Частота среза] | set gyro_notch1_hz = 400 / set gyro_notch1_cutoff = 300 |
Первый фиксированный notch гироскопа: подавляет полосу вокруг измеренного резонанса; 400/300 Гц — значения экрана, не универсальная рекомендация. |
| [Режекторный фильтр гироскопа - 2 «Notch»] [Центральная частота] / [Частота среза] | set gyro_notch2_hz = 400 / set gyro_notch2_cutoff = 300 |
Независимый второй notch гироскопа. Наличие двух одинаковых пар на экране не означает, что аппарату нужны два одинаковых фильтра. |
| [D Term режекторный фильтр] [Центральная частота] / [Частота среза] | set dterm_notch_hz = 260 / set dterm_notch_cutoff = 160 |
Отдельный фиксированный notch в D-канале; полезность проверяют по Blackbox и нагреву моторов. |
| [Динамический Режекторный фильтр] [Количество режекторных фильтров] | set dyn_notch_count = 3 |
До трёх отслеживаемых пиков вибраций; 0 отключает динамический notch. Это не feature-команда. |
| [Коэффициент Q (×100)] | set dyn_notch_q = 300 |
Добротность динамических notch: чем больше число, тем уже подавляемая полоса; в CLI вводится 300, без деления на 100. |
| [Мин. частота] / [Макс. частота] (динамический notch) | set dyn_notch_min_hz = 100 / set dyn_notch_max_hz = 600 |
Диапазон поиска меняющихся вибрационных пиков на снимке — 100–600 Гц. |
RPM-фильтры
[Gyro RPM фильтр] строит режекторы по телеметрии оборотов ESC; переключатель GUI сам по себе недостаточен — нужен работающий bidirectional DShot.
| Поле GUI / параметр вне снимка | CLI | Практический смысл |
|---|---|---|
| [Гармоники] (Gyro RPM фильтр) | set rpm_filter_harmonics = 3 |
Число гармоник каждого мотора, для которых строятся notch-фильтры; 0 отключает RPM-фильтрацию. |
| [Мин. частота] (Gyro RPM фильтр) | set rpm_filter_min_hz = 100 |
Нижняя граница RPM-notch, показанная на скриншоте. |
| Не показано: RPM Filter Q | set rpm_filter_q = 500 |
Добротность RPM-notch; значение — пример CLI, не число с данного скриншота. |
| Не показано: RPM Filter Fade Range | set rpm_filter_fade_range_hz = 50 |
Плавное ослабление RPM-notch возле нижней границы; значение — пример CLI. |
| Не показано: RPM Filter LPF | set rpm_filter_lpf_hz = 150 |
Сглаживание входных данных RPM перед размещением notch; не является lowpass гироскопа. |
get gyro_lpf, get dterm_lpf, get dyn_notch, get rpm_filter.12. Упрощённая настройка
В GUI этой функции соответствует левый блок [Ползунки настройки PID]. Вместо правки десятков коэффициентов можно двигать «крупные» ползунки — прошивка сама пересчитает P, I, D, DMax, Feedforward и фильтры:
| Ползунок GUI / параметр CLI | CLI | Практический смысл |
|---|---|---|
| [Режим:] (RPY) | set simplified_pids_mode = RPY |
Выбирает оси, на которые распространяются ползунки: RP — крен/тангаж, RPY — также yaw, OFF — без упрощённого пересчёта. |
| [Мастер-множитель:] (1.00) | set simplified_master_multiplier = 100 |
Общий множитель упрощённого тюна: повышение одновременно меняет несколько связанных коэффициентов, поэтому результат нужно смотреть в фактических PID. |
| [Трекинг: P & I Gains] (1.00) | set simplified_pi_gain = 100 |
Увеличивает слежение за командой (P) и удержание при постоянной нагрузке (I); не изменяет FF тем же ползунком. |
| [Демпфирование: D Gains] (1.00) | set simplified_d_gain = 100 |
Сдвигает базовое демпфирование: больше подавляет колебания, но может усилить шум и нагрев моторов. |
| [Динамическое демпфирование: D Max] (1.00) | set simplified_dmax_gain = 100 |
Отдельно меняет верхний предел динамического D, сохраняя зависимость от общего демпфирования. |
| [Отзывчивость стиков: FF Gains] (1.00) | set simplified_feedforward_gain = 100 |
Меняет упреждение на движение стика: выше — быстрее начальный отклик, выше риск переброса. |
| [Дрейф - Колебание: I Gains] (1.00) | set simplified_i_gain = 100 |
Отдельно меняет удержание при продолжительной нагрузке; помогает при дрейфе, но не устраняет вибрацию. |
| [Демпфирование по тангажу: Pitch:Roll D] (1.00) | set simplified_pitch_d_gain = 100 |
Настраивает отношение демпфирования тангажа к крену; полезно, если механика/масса аппарата по этим осям отличается. |
| [Трекинг по тангажу: Pitch:Roll P I & FF] (1.00) | set simplified_pitch_pi_gain = 100 |
Меняет отношение отклика тангажа к крену сразу по P, I и FF; это не изменение всех осей одновременно. |
| Только CLI: множитель фильтра гироскопа | set simplified_gyro_filter_multiplier = 100 |
Масштаб частот среза фильтров гироскопа в упрощённом режиме: выше — меньше задержка и меньше подавление шума. |
| Только CLI: множитель фильтра D | set simplified_dterm_filter_multiplier = 110 |
Масштаб частот среза D-term lowpass в упрощённом режиме: выше — отзывчивее D, но чувствительнее к вибрации. |
| Только CLI: упрощённый фильтр гироскопа / D | set simplified_gyro_filter = ON / set simplified_dterm_filter = ON |
Включает расчёт фильтров из упрощённых ползунков; OFF оставляет фильтры для ручной настройки. Это не автоматический анализ Blackbox. |
diff all и сохраните вывод.13. Выравнивание: Angle и Horizon
В интерфейсе эти поля расположены непосредственно под таблицей Basic/Acro (строки [Угол] и [Горизонт]). Они работают только при включённом самовыравнивании (режимы ANGLE и HORIZON):
| Поле GUI / параметр CLI | CLI | Практический смысл |
|---|---|---|
| [Угол] [Скорость наклона] (50) | set angle_p_gain = 50 |
Насколько быстро ANGLE исправляет наклон; в Acro не действует. Повышение делает возврат энергичнее. |
| [Макс. угол наклона] (60) | set angle_limit = 60 |
Предел наклона в ANGLE; это не предел скорости вращения и не ограничение для Acro. |
| Angle Feedforward | set angle_feedforward = 50 |
Даёт опережение на команду наклона в ANGLE; не является f_roll из режима Acro. |
| Angle Earth Ref | set angle_earth_ref = 100 |
Влияние ориентации относительно земли на управление самовыравниванием; без необходимости оставьте значение профиля. |
| [Горизонт] [Скорость наклона] (75) | set horizon_level_strength = 75 |
Возврат к горизонту при небольших отклонениях стика; ближе к краю стика самовыравнивание ослабевает. |
| [Горизонт] [Переход] (75) | set horizon_limit_degrees = 75 |
Угол наклона, при приближении к которому HORIZON ослабляет выравнивание; это не значение rate. |
| Horizon Delay | set horizon_delay_ms = 500 |
Задержка перед возвратом горизонта после активной команды; помогает избежать резкого возврата, но удлиняет его ожидание. |
| Level Race Mode | set level_race_mode = OFF |
OFF / ON — режим для гонок |
14. Пример полного сценария
Это отдельный пример rates типа BETAFLIGHT. Числа внутри разных типов нельзя переносить по аналогии. Перед применением сделайте diff all.
# profile 0
# set p_roll = 45
# set i_roll = 95
# set d_roll = 30
# set f_roll = 90
# set p_pitch = 47
# set i_pitch = 97
# set d_pitch = 32
# set f_pitch = 95
# set d_min_roll = 25
# set d_min_pitch = 27
# set iterm_relax = RP
# set tpa_rate = 20
# set tpa_breakpoint = 1350
# set tpa_mode = D
# rateprofile 0
# set rates_type = BETAFLIGHT
# set roll_rc_rate = 100
# set roll_srate = 70
# set roll_expo = 0
# set pitch_rc_rate = 100
# set pitch_srate = 70
# set pitch_expo = 0
# set yaw_rc_rate = 100
# set yaw_srate = 70
# set yaw_expo = 0
# filters
# set dyn_notch_count = 3
# set dyn_notch_min_hz = 100
# set dyn_notch_max_hz = 600
# save
diff с секциями profile 0 {...} и rateprofile 0 {...}. Вставьте эти блоки в CLI вместе с save. Обязательно берите тюн для вашей версии прошивки: имена параметров между версиями меняются.15. Расчётное задание
Задание выполняется на бумаге или в калькуляторе. Решение — в статье «Ответы на контрольные вопросы курса», раздел «Ответы к расчётным заданиям».
Задание 7.1. Частота винтов и notch-фильтр
Расчётное задание, реальный аппарат не требуется.
- Мотор с номиналом \(\mathrm{KV} = 2400\), батарея 4S (полное напряжение 16,8 В).
- Вычислите частоту вращения винта \(n\) (об/мин) и частоту первой гармоники вибраций \(f\) (Гц).
- Используйте соотношения \(n = \mathrm{KV} \cdot V_{bat}\) и \(f = \frac{n}{60}\).
- Определите, на какую частоту настроить режекторный (notch) фильтр, и укажите вторую гармонику \(f_2 = 2f\).
16. Проверьте себя
Сформулируйте ответ своими словами, прежде чем сверяться со справочником ответов (последняя статья курса).
- Зачем выбирать
profile 0перед правкой PID? - Чем поля
[RC Rate],[Rate]и[RC Expo]отличаются при типе BETAFLIGHT? Где здесь Super Rate? - Почему показанные в Actual 70 и 670 нельзя буквально записать в
roll_rc_rateиroll_srate? - Что такое Feedforward (F)?
- Как перенести готовый «тюн» из интернета?
17. Чек-лист самопроверки
- Понимаю, зачем выбирать
profile 0/rateprofile 0перед правкой - Знаю все 12 имён:
p_roll,i_pitch,d_yaw,f_rollи остальные - Понимаю, чем DMin и DMax отличаются от обычного D
- Знаю, зачем нужны
iterm_relaxиtpa_rate - Знаю разницу между RC Rate, Super Rate и Expo
- Знаю, где искать имя параметра, если оно поменялось (
get+ часть имени)
18. Что дальше
- Предыдущий урок: 6. Режимы полёта
- Следующий урок: 8. Питание и батарея
- Полный перечень тем — в статье «Содержание курса».
- мод. : Пятница, 09 октября 2026







