Вибрация квадрокоптера: ищем плохой мотор или проп по логу
Квадрик после краша стал жужжать на газу, в видео поплыло «желе», один мотор после пака горячее остальных. Классический способ — снимать пропы по одному и переставлять моторы: долго, а при плавающей проблеме ненадёжно. Если в логе записаны нужные поля, он сразу показывает конкретный мотор, а заодно отделяет настоящую вибрацию от того, что на неё только похоже: смещённого центра тяжести, перекошенного мотора, ошибок телеметрии.
Ниже — как это устроено в bbdoctor, его пороги и что показали реальные логи.
Что именно трясёт: мотор, проп или рама
| Что видно в логе | Вероятная причина | Что делать |
|---|---|---|
| У одного мотора составляющая на частоте его вращения (1×) намного выше, чем у остальных | Дисбаланс: погнутый или плохо севший проп, мусор под ступицей, погнутый колокол или вал | Новый проп, затем осмотр колокола и вала |
| У одного мотора повышены 2× или 3× частоты вращения | Повреждённая лопасть, лопасти с разным шагом или трекингом | Заменить проп |
| Мотор крутится медленнее остальных при той же команде | Изношенные подшипники, колокол задевает, подгоревшая обмотка, проп с большим шагом | Покрутить рукой, поменять местами с соседним |
| Мотор крутится быстрее остальных при той же команде | Проп создаёт меньше нагрузки: сколот, срезан, другой размер, проворачивается на валу | Осмотреть и заменить проп |
| Пик на одной частоте при любом газе | Резонанс рамы, стека, камеры или антенны | Протянуть винты, закрепить; notch — только временная мера |
| Моторы одного направления вращения всё время работают сильнее | Мотор стоит с перекосом, скрученный луч, пропы разного шага на диагоналях | Положить раму на стол, выставить моторы, одинаковые пропы |
| Одна пара (задняя или передняя) всё время нагружена сильнее, I-term по pitch не уходит в ноль | Смещённый центр тяжести | Сдвинуть батарею, а не менять моторы |
Последние две строки — не вибрация, но именно они чаще всего дают «один мотор горячее остальных».
Почему по спектру мотор не назвать
Обороты всё время меняются, и за полёт пики моторов размазываются в спектре в общую полосу. В каждый момент моторы с одинаковой нагрузкой отличаются на несколько герц, и их пики накладываются. Даже когда пары крутятся по-разному (у VX3.5 из примеров ниже из-за смещённого ЦТ задние моторы крутились в среднем на 240–280 Гц, передние — на 190–215), спектр укажет в лучшем случае на пару, но не на мотор.
Вторая проблема — частота записи. У того же 3,5-дюймового VX3.5 максимум оборотов в разных полётах был 583–644 Гц (около 35–39 тысяч оборотов в минуту), а лог писался на 1 кГц, то есть виден только диапазон до 500 Гц. Всё, что выше, «заворачивается» обратно: 600 Гц в спектре выглядят как 400 Гц, 644 Гц — как 356 Гц. Пик на месте, но его частота уже не говорит, откуда он взялся.
Какой лог нужен, чтобы увидеть конкретный мотор
Нужны две вещи: нефильтрованный гироскоп и обороты каждого мотора.
- Betaflight 4.5 и новее, включая 2025.12. Протокол DShot300 или DShot600 с bidirectional DShot, правильное число полюсов, регуляторы на Bluejay, AM32 или BLHeli_32. Оба поля в 4.5 пишутся по умолчанию. Частота записи 2 кГц лучше, чем 1 кГц: при PID-цикле 4 кГц это делитель 1/2, при 8 кГц — 1/4.
- Betaflight 4.0–4.4. Сырой гироскоп попадает в лог только через
debug_mode = GYRO_SCALED, а обороты моторов в blackbox не пишутся вовсе: оба поля появились только в 4.5. Bidirectional DShot (с 4.1) кормит RPM-фильтр, но для разбора по моторам нужно обновиться до 4.5. - ArduPilot. Обороты — через ESC-телеметрию (bidirectional DShot по маске
SERVO_BLH_BDMASKили телеметрия по проводу), сырой гироскоп — бит IMU_RAW вLOG_BITMASK, а с 4.5 ещё иINS_RAW_LOG_OPT. Подробно — в гайде анализ лога ArduPilot. - PX4. Обороты — из
esc_status(телеметрия ESC), сырой гироскоп — профильSDLOG_PROFILEс High rate и Raw FIFO gyro. См. анализ ULog.
Для Betaflight 4.5+ (14 полюсов — у большинства моторов от 18xx и крупнее; если не уверен, посчитай магниты на колоколе):
set dshot_bidir = ON set motor_poles = 14 set blackbox_disable_rpm = OFF set blackbox_disable_gyrounfilt = OFF set blackbox_sample_rate = 1/2 save
Делитель 1/2 — для PID-цикла 4 кГц; при 8 кГц ставь 1/4, иначе лог пойдёт на 4 кГц и флешка заполнится вдвое быстрее. Полёт простой: минута-две с висением, плавным газом и полётом вперёд. Фристайл с крашами хуже: удары шумят сами, а обороты моторов постоянно пересекаются и съедают пригодные данные. Подробнее о настройке записи — в гайде настройка blackbox.
Как работает разбор по моторам
Это порядковый анализ (order tracking) из диагностики вращающихся машин. Простыми словами:
- Фаза мотора. Из eRPM известна частота вращения каждого мотора в каждый момент; накопленная во времени, она даёт угол поворота ротора — фазу.
- Нарезка. Сырой гироскоп по roll и pitch (без медленных движений ниже 30 Гц) режется на окна по 0,25 с. Разрешение по частоте — 4 Гц.
- Демодуляция. Гироскоп в окне «прокручивается назад» фазой конкретного мотора. Всё, что вращается синхронно с этим мотором, складывается в одно число, а вибрации остальных моторов и шум усредняются. Так считается 1× (один раз за оборот — дисбаланс), 2× и 3×.
- Уровень шума. Тот же расчёт делается на частотах в 12 и 16 Гц по обе стороны от гармоники. Это фон, он вычитается по мощности, и в отчёт идёт вибрация «за вычетом шума».
- Отбраковка. Окно пропускается, если какой-то мотор крутится медленнее 20 Гц, а гармоника — если она ниже 40 Гц, ближе 15 Гц к половине частоты записи или ближе 10 Гц к любой другой гармонике (чужой или своей после «заворачивания»): в момент пересечения их не разделить.
- Итог. По всем окнам берётся медиана — она не боится отдельных выбросов. Нужно минимум 8 окон, то есть две секунды пригодного полёта.
Так как фаза считается от настоящей частоты вращения, алиасинг не мешает: мотор на 640 Гц при записи 1 кГц разбирается так же, как на 300 Гц. Отбраковка урезает данные: в 193-секундном полёте VX3.5 для переднего левого мотора пригодными оказались 387 окон из примерно 770.
Решение о находке принимается так:
| Условие | Порог | Зачем |
|---|---|---|
| Гармоника мотора над своим шумом | не меньше ×2,5 | Не обвинять мотор по уровню, который тонет в фоне |
| Эталон для сравнения | медиана остальных моторов, у которых гармоника хотя бы ×1,5 над шумом; если таких нет — 0,1 °/с | Сам мотор в эталон не входит, а моторы, у которых гармоника тонет в шуме, не занижают его |
| 1× сильнее эталона | от 1,8× — предупреждение, от 3× — критично | Для сравнения: в наших логах разброс без находки доходил до 1,5–1,7× |
| 2× или 3× сильнее эталона | от 2,2× — предупреждение | Эти гармоники слабее, и случайный разброс между моторами по ним больше |
| Минимум данных | 8 окон по 0,25 с, данные хотя бы у трёх моторов | На паре окон медиана ничего не значит, а сравнивать надо минимум с двумя соседями |
Что показали реальные логи
Один и тот же мотор в трёх полётах
3,5-дюймовый VX3.5 на Betaflight 4.5.2, 4S, запись 1 кГц, три полёта по 2–3 минуты. Во всех трёх отчёт отметил один мотор — M4, передний левый:
- первый полёт: 2,6 °/с против ~1,3 у остальных, 2,0×, над шумом ×6,0, 243 окна;
- второй: 2,9 против ~1,4, 2,0×, ×6,1, 387 окон;
- третий: 2,5 против ~1,2, 2,2×, ×4,9, 229 окон.

Это главный признак железной проблемы: случайность не повторяется три раза на одном и том же моторе. В четвёртом полёте того же квадрика M4 снова был громче всех, но на 1,75× — чуть ниже порога, и отчёт его не отметил. Порог отсекает пограничные случаи, а решение ты принимаешь по серии логов.
M3 (задний левый) тоже выше остальных, 1,6–1,7×, но порог не проходит ни разу: осмотри его заодно, не более. При этом M4 — самый ненагруженный мотор на этом квадрике (во втором полёте передняя пара в среднем работала на 21% команды, задняя — на 33%), а вибрирует сильнее всех. Значит, дело не в нагрузке, а в дисбалансе вращающейся части: проп, колокол, вал.
6S-квадрик: виноватый мотор «гуляет»
Другой аппарат, Betaflight 4.5.1, 6S, запись около 1 кГц, четыре полёта за две недели. В одном полёте отчёт отметил M3 (задний левый): 3,2 против ~1,7 °/с, 1,8×, над шумом ×12,4, 619 окон. В соседнем — M1 (задний правый): 4,0 против ~2,1, 1,9×, ×13,3, 713 окон. В двух других громче всех были M3 и M4, но на 1,5× и 1,6× — без находки.
Сигнал здесь сильнее, чем у VX3.5 (над шумом в 12–13 раз), но виноватый мотор меняется от полёта к полёту. Так обычно выглядят пропы: их меняют, они цепляют траву и колются. Когда находка «переезжает», начинай с полного комплекта новых пропов, а не с моторов.
Там же видно, зачем нужен порог над шумом. У отдельных моторов этого квадрика кратность по 2× получалась 4,8–5,3 — выглядит страшно. Но у остальных моторов 2× не поднималась над шумом даже в 1,5 раза, эталон оставался пустым, и делить приходилось на 0,1 °/с. Сама гармоника — около 0,5 °/с, над шумом всего ×1,6–1,9, ниже порога ×2,5, и отчёт её правильно отбросил.
Как читать строку «чем ровнее, тем лучше»
В отчёте есть строка с вибрацией 1× по каждому мотору. Для второго полёта VX3.5 она такая: M1: 1.4, M2: 0.7, M3: 2.3, M4: 2.9.

Абсолютные числа зависят от рамы, лучей и крепления полётника, поэтому сравнивать «2,9 °/с» между квадриками бессмысленно. Сравнивай моторы внутри одного аппарата и один аппарат со своими прошлыми логами. Если после замены пропа строка выровнялась — проблема решена, даже если отчёт до этого молчал.
Когда данных мало
Лог PX4 1.12 с записью 200 Гц на большом 6S-аппарате: моторы на 41–53 Гц, гармоники то падают ниже 40 Гц, то упираются в верхний край (85 Гц), то пересекаются. 1× посчиталась только для двух моторов. По 2× отчёт выдал «мотор 2: повышена 2-я гармоника, в 52,9× сильнее (5,3 против ~0,0 °/с)», но у остальных моторов не удалось измерить шум, в эталон они не попали, и кратность посчитана от 0,1 °/с — хотя у мотора 1 сама 2× была даже выше, 8,6 °/с. Пропы осмотреть стоит, но это не вердикт: смотри на абсолютные °/с, число окон и частоту записи, а не только на кратность.
Обороты при одинаковой команде
Вторая независимая проверка не про вибрацию, а про трение и нагрузку. Исправные моторы с одинаковыми пропами при одной и той же команде крутятся одинаково. Анализ раскладывает полёт по команде мотора (от 10 до 90% с шагом 5%; в диапазоне нужно хотя бы 0,3 с данных по каждому мотору) и сравнивает медианные обороты каждого мотора со средним остальных — чтобы один слабый мотор не делал соседей «быстрыми». Итог — среднее по диапазонам.
Тонкость: ротор разгоняется не мгновенно, обороты отстают от команды примерно на 20 мс. Если это не учесть, сильнее нагруженные моторы (например, задняя пара при смещённом ЦТ) выглядят на 2–3% «медленнее» без всякой неисправности. Поэтому команда перед сравнением пропускается через такое же запаздывание.
| Отклонение от остальных | Уровень | Что проверить |
|---|---|---|
| −6% и ниже | предупреждение | Подшипники (крути рукой — нет ли хруста), задевает ли колокол, следы перегрева обмотки, шаг пропа |
| −10% и ниже | критично | То же, и до проверки на нём лучше не летать: он съедает запас тяги и греется |
| +6% и выше | предупреждение | Проп: сколота или срезана лопасть, другой шаг или размер, проворачивается на валу |
Как выглядит норма: у VX3.5 итог +2,0%, −1,7%, +2,0%, −2,2%, в отдельных диапазонах до ±4% (рисунок выше, B). Задняя пара почти везде чуть «быстрее» передней — скорее всего, не из-за моторов: из-за смещённого ЦТ задние подолгу стоят на высокой команде, а передние доходят до неё короткими всплесками. У 6S-квадрика итоги ещё ровнее, в пределах ±0,6%. Порог 6% стоит с запасом над таким разбросом.
Сопоставляй обе проверки. Сильная 1× при нормальных оборотах — дисбаланс (так было с M4 у VX3.5). Пониженные обороты без всплеска 1× — трение или подгоревшая обмотка. И то и другое на одном моторе — чаще всего мотор после удара: погнутый вал или задевающий колокол.
Подтверди на столе
- Новый проп. Поставь на подозрительный мотор свежий проп из той же пачки и слетай. Пик ушёл — дело было в пропе. Заодно проверь, что ступица села ровно: песчинка или перекошенная шайба под пропом дают тот же дисбаланс.
- Мотор рукой. Отключи батарею, сними проп и покрути колокол (сразу после полёта мотор бывает горячим): хруст, неравномерность, люфт вала вверх-вниз, следы трения о статор — повод менять подшипники или мотор. Посмотри сбоку, не бьёт ли колокол при вращении: после удара его часто гнёт.
- Перестановка. Поменяй мотор местами с соседним. Проблема переехала — виноват мотор. Осталась на месте — ищи в регуляторе, пайке или луче.
- Геометрия. Положи раму на ровный стол и проверь, что все моторы стоят вертикально, а лучи не скручены.
- Контрольный лог. Слетай тот же простой полёт и сравни строку вибрации 1× с прошлой.
Тест на вкладке Motors с раскруткой моторов по одному — только без пропов. На столе без нагрузки часть дефектов не проявляется, поэтому последнее слово за логом.
Нумерация моторов. В Betaflight и INAV для Quad X: M1 — задний правый, M2 — передний правый, M3 — задний левый, M4 — передний левый. В ArduPilot и PX4: 1 — передний правый, 2 — задний левый, 3 — передний левый, 4 — задний правый. bbdoctor называет моторы в нумерации прошивки лога и, если раскладка рамы известна, пишет положение: «Мотор 4 (передний левый)».
Что ещё похоже на вибрацию, хотя моторы целы
- Смещённый центр тяжести. У того же VX3.5 задняя пара во всех полётах была нагружена на 42–54% сильнее передней, а I-term по pitch всё время держался на 42–55 — компенсировал перекос (похоже выглядит и много быстрого полёта вперёд). Порог предупреждения — 12% разницы между сторонами, больше 30% — критично. Сдвинь батарею так, чтобы квадрик висел ровно на пальцах под центром рамы.
- Диагональ, которая держит рыскание. Если моторы одного направления вращения в среднем работают на 12% и больше сильнее, миксер постоянно компенсирует yaw. У маленького 2S-квадрика (CS110) это было 15%, у 1S-вупера на INAV — 46%. Причина механическая (перекошенный мотор, скрученный луч, пропы разного шага), так что менять моторы бесполезно.
- Ошибки телеметрии eRPM. На ещё одном 6S-квадрике (Betaflight 4.5.1) у двух моторов, M3 и M4, было 1,3 и 1,6 скачка оборотов в секунду, у двух других — меньше 0,1. Порог — больше одного скачка в секунду или больше 1% нулей при крутящемся моторе. В эти моменты RPM-фильтр ставит вырезы не туда, и шум проходит дальше. Проверь пайку сигнального провода, помехи от силовых проводов и прошивку регулятора.
- Резонанс рамы. Пик, который стоит на одной частоте при любом газе, — механика рамы или стека, а не мотор. На записи около 1 кГц его настоящая частота неоднозначна: у 6S-квадрика (лог 1013 Гц) пик «186 Гц» мог быть и на 827, и на 1199 Гц. Как найти его на тепловой карте — в гайде как читать blackbox лог.
- Шум от настроек. Слабые фильтры или высокий D дают горячие моторы и без механических проблем. Это, как и настройка RPM-фильтра и notch, — тема гайда горячие моторы и фильтры.
Желе в видео
«Желе» — артефакт построчного считывания матрицы (rolling shutter): если камера дрожит, пока кадр читается сверху вниз, строки смещаются. Поэтому желе — прямой индикатор вибрации, которая доходит до камеры: дисбаланс пропа или колокола, болтающееся крепление, резонанс маунта.
Сначала лог: если у одного мотора выделяется 1×, меняй проп и смотри мотор, потом ставь свежий комплект пропов. Если вибрация по моторам ровная, а желе осталось, дело в креплении камеры: протяни винты, проверь, что камера не касается рамы, поставь демпферы или TPU-крепление. Мелкое высокочастотное желе стабилизация в постобработке убирает далеко не всегда.
Если оборотов в логе нет
INAV и EmuFlight, как правило, не пишут обороты каждого мотора в blackbox, Betaflight до 4.5 — тоже, а у ArduPilot и PX4 без ESC-телеметрии их неоткуда взять. Разбор по моторам тогда недоступен, и отчёт об этом пишет. Что остаётся:
- Тепловая карта шума по газу. Линии, которые растут вместе с газом, — от моторов и пропов. Линия на постоянной частоте — рама. Мотор по ней не назвать, но понятно, менять пропы или протягивать раму.
- Нагрузка моторов. Перекос пар и диагональ рыскания считаются по командам моторам, обороты для этого не нужны.
- ArduPilot пишет собственную метрику VIBE: ниже 30 м/с² норма, выше 60 почти всегда мешает удержанию высоты и позиции, плюс счётчик клиппинга акселерометра.
Тогда остаётся старый способ: сначала новые пропы, потом перестановка моторов по одному. Если регуляторы умеют bidirectional DShot, включить его на Betaflight 4.5 быстрее, чем гонять перестановки.
Как проверить автоматически
Загрузи лог в bbdoctor — бесплатно и онлайн. Он делает все проверки из этого гайда. Если нужных полей в логе нет, отчёт скажет, какие включить, и даст команды CLI. Смотри пример отчёта, а настройки до полёта проверь на странице проверки конфига.
Частые вопросы
Как понять, какой мотор даёт вибрацию?
Нужен лог с нефильтрованным гироскопом и оборотами каждого мотора (bidirectional DShot или ESC-телеметрия). Тогда вибрацию можно разложить по моторам: у виноватого составляющая на частоте его вращения (1×) заметно выше, чем у остальных. bbdoctor отмечает мотор, если она в 1,8 раза сильнее, чем у остальных, и заметно выше уровня шума. Без оборотов в логе остаются перестановки пропов и моторов.
Как отличить плохой проп от плохого мотора?
Поставь на подозрительный мотор новый проп и слетай ещё раз. Пик ушёл — был проп. Не ушёл — поменяй мотор местами с соседним: если проблема переехала вместе с мотором, виноват мотор (колокол, вал, подшипники), если осталась на месте — луч, регулятор или пайка. Если мотор выделяется полёт за полётом и после замены пропа, смотри колокол, вал и подшипники.
Почему один мотор греется сильнее остальных?
Сравни его обороты при той же команде: если он крутится на 6% и больше медленнее соседей, мотор тормозят подшипники, задевающий колокол, подгоревшая обмотка или проп с большим шагом. Если обороты в норме, чаще всего виноват смещённый центр тяжести: одна пара моторов всё время работает сильнее и греется.
Работает ли поиск плохого мотора без bidirectional DShot?
Разбор по каждому мотору — нет: без оборотов нельзя привязать вибрацию к конкретному мотору. Но по такому логу всё равно видно общий уровень шума, резонансы рамы, перекос нагрузки между парами моторов и диагональ, которая компенсирует рыскание. Конкретный мотор тогда ищется перестановкой пропов и моторов.
Обновлено: