Діагностика гулу в колесі смартфоном: порядковий аналіз вібрації Audi Q7 за допомогою ШІ Claude

Метод універсальний і працює на будь-якому сучасному автомобілі — BMW X5, Mercedes GLE, Range Rover, Tesla Model Y, Volvo XC90, Porsche Cayenne, VW Touareg, Ford Ranger, Toyota Land Cruiser. Марка значення не має: фізика обертання колеса однакова для всіх.

Проблема, яку не бачить бортова електроніка
Сучасний преміум-автомобіль начирований датчиками. Audi Q7 4M зчитує швидкість кожного колеса 48 разів за оберт, знає поздовжнє та поперечне прискорення кузова, висоту підвіски в чотирьох точках, положення кожного клапана пневмосистеми. Діагностичний сканер видасть сотні параметрів у реальному часі.
І при цьому бортова система принципово не здатна відповісти на питання «чому на 55 км/год з'явився гул».
Причина в архітектурі. Датчики детонації на блоці двигуна — це широкосмугові п'єзоакселерометри з смугою 1–20 кГц, рівно те, що потрібно для віброаналізу. Але ЕБУ обробляє їхній сигнал всередині, у вузькому вікні близько верхньої мертвої точки кожного циліндра, і назовні віддає тільки результат: кут корекції випередження запалювання. Сирого потоку немає в жодному протоколі.
Датчики прискорення кузова доступні як значення, але читаються через UDS запит-відповідь зі швидкістю 5–20 значень на секунду на всі параметри одразу. За теоремою Котельникова це стеля 2–10 Гц. Дефект колеса на 50 км/год сидить в районі 6–25 Гц. Спектр побудувати фізично неможливо — не вистачає частоти дискретизації на порядок.
Висновок, який важливо прийняти одразу: штатна електроніка автомобіля спроектована для управління, а не для віброаналізу. Це обмеження не конкретного сканера, а самої архітектури автомобільних шин даних. Механічні дефекти кочення бортова система не бачить і побачити не може.
Тут і з'являється місце для зовнішнього вимірювання та ШІ-обробки.
Чому я взагалі за це взявся
Я працюю інженером у компанії Mind4Ship, яка займається предиктивною діагностикою суднового обладнання. Ми вішаємо промислові датчики шуму та вібрації на підшипники, редуктори та вали, знімаємо спектри, проганяємо через алгоритми та попереджаємо про поломку до того, як вона станеться. Дефект підшипника видно за тижні до відмови — за характерними ударними імпульсами в спектрі огинаючої.

Коли у власному Audi Q7 3.0 TDI на пневмопідвісці з'явився гул в районі правого заднього колеса, реакція була професійною: це рівно те завдання, яке я вирішую на роботі, тільки об'єкт інший.
Але мені стало цікаво інше. Чи можна зробити те саме побутовими засобами? Без промислових акселерометрів за €600 штука, без аналізатора, без виїзної бригади. Смартфон, шкільна фізика та сучасний ШІ — чи вистачить цього, щоб поставити діагноз до візиту в сервіс?
Далі — як це вийшло.
Перший тупик: додатки, які «діагностують самі»
На YouTube повно роликів про NVH-додатки. Ставиш на телефон, їдеш, додаток каже «у вас дисбаланс переднього лівого». Красиво.
Вивчив найпопулярніший — NVH від Vibrate Software, $99.99. У нього база з 276 джерел вібрацій, готові вердикти «причина — наслідок — рішення». Версія для iOS оновлюється, є бази моделей до 2026 року, підтримка 303 електромобілів.
І тут перше важливе рішення, яке визначило весь подальший метод.
Такий додаток продає не вимірювання, а довідник. Він бере спектр, знаходить домінуючий порядок, шукає його в базі та видає список з десятків можливих причин. Він не покаже, з якого кута машини йде вібрація. Він не дасть сирих даних. Він не дозволить перевірити власну гіпотезу.

Як фахівець з ШІ я розумів: мені потрібен сирий потік з акселерометра. Маючи його, я оброблю дані будь-яким алгоритмом і отримаю відповідь точніше, ніж будь-яка готова база. Не маючи — я заручник чужих порогів і чужої логіки.
Тому замість довідника за $99 я взяв інструмент за €12.
Вибір інструменту: додаток, який просто пише дані
Зупинився на CarNVH (Android, com.motordoktor.carnvh). Логіка вибору суто технічна:
| CarNVH Pro €12 | NVH Vibrate $99 | |
|---|---|---|
| Експорт сирих даних | є | ні |
| Спектр огинаючої | є | ні |
| Spectral kurtosis | є | ні |
| Мікрофон до 10 кГц | є | ні |
| Вісь в порядках оберту | є | ні |
| Спектрограма 2D | є | ні |
| База «276 причин» | ні | є |
Восьмиразна різниця в ціні — і за вимірювальними можливостями дешевший інструмент об'єктивно багатший. Envelope-аналіз і kurtosis, якими ловлять підшипник, у дорогого додатка відсутні взагалі.
Перевірка заліза — етап, який усі пропускають
Купувати телефон під завдання я не став. Вдома без діла лежав Samsung Galaxy A51 — залишився як запасний апарат після зміни основного. Ідеальний кандидат: виділений пристрій, який не шкода приклеїти скотчем до підлоги багажника.
Але перш ніж платити за додаток, потрібно було переконатися, що залізо взагалі годиться.
Завдання: дізнатися реальну частоту дискретизації акселерометра. Специфікації тут брешуть — виробники на середніх моделях часто ріжуть частоту в системному шарі, хоча сам чіп вміє тисячі герц. Плюс починаючи з Android 12 система за замовчуванням обмежує датчики планкою 200 Гц.
Інструмент: безкоштовний додаток phyphox, експеримент «Спектр прискорення». Він прямо показує частоту збору даних, рахувати нічого не треба.

Результат на A51: 506 Гц, частота Найквіста 253 Гц.
Перевіримо, чи вистачає цього. Для Q7 на 255/55 R19 при 55 км/год колесо робить 6.65 оберту на секунду:
| Джерело | Частота |
|---|---|
| 1× колеса | 6.6 Гц |
| 3-й порядок колеса | 20 Гц |
| Підшипник, зовнішнє кільце | 23–30 Гц |
| Кардан | 40–60 Гц |
| Двигун 2× при 2500 об/хв | 83 Гц |
Все потрібне лежить нижче 100 Гц. За Найквістом потрібно 200 Гц, є 506 — запас у п'ять разів. Телефон годиться, купувати нічого не потрібно.
Висновок для тих, хто повторює метод: спочатку поміряйте phyphox, потім платіть за софт. П'ять хвилин перевірки вирішують, чи буде у вас вимірювання чи сміття.
Налаштування, яке вирішує все
У CarNVH є галочка «Request High Sampling Rate». Вона запитує системний дозвіл HIGH_SAMPLING_RATE_SENSORS. Без неї Android ріже потік до 200 Гц незалежно від можливостей заліза.
Інші критичні налаштування:

- Окружність колеса. Для 255/55 R19: діаметр = 19 × 25.4 + 2 × (255 × 0.55) = 763.6 мм, окружність геометрична 2399 мм, робоча з урахуванням просідання під навантаженням ≈ 2300 мм
- Порядки колеса: увімкнути 0.5, 1, 2, 3 — інакше додаток малює маркер тільки на першому
- Логарифмічна вісь X — вимкнути для вібрографіка (на лінійній шкалі гармоніки стають рівномірною гребінкою, яку видно миттєво) і увімкнути для шумового (там охоплення 10 Гц–10 кГц)
- Autoscale Y — вимкнути, зафіксувати 0.2 м/с². Інакше два записи неможливо порівняти за амплітудою
- Number of local maxima: 5
Кріплення
Це половина точності вимірювання, і тут помиляються найчастіше.
Телефон кріпиться жорстко до підлоги або порогу, екраном вгору, довгою стороною вперед, на двосторонній скотч 3M VHB або щільну липучку.
Місце встановлення визначає, що ви отримаєте на виході. Я в першій поїздці поклав телефон по центру підлоги багажника — це виявилося помилкою, яку варто не повторювати.
Центр багажника рівновіддалений від обох задніх арок, тому вібрація від лівого та правого колеса приходить туди приблизно однаково. Такий запис дає все, крім одного: він відповідає на питання «чи є дефект», «який це порядок» і «чи пов'язаний він з двигуном», але не відповідає, яке з двох коліс винне. Заради цього потім доводиться їхати наново.
Правильно з самого початку:
- Перший запис — телефон впритул до тієї арки, звідки ймовірно йде шум. Не по центру, а зсунути максимально в бік підозрюваного колеса, наскільки дозволяє підлога багажника.
- Другий запис — біля протилежної арки. Той самий маршрут, та сама швидкість, той самий фіксований масштаб Y, та сама орієнтація телефону.
Порівняння амплітуди на цільовій частоті між двома записами і дає сторону: де вище, там дефект. Різниця зазвичай кратна, помилитися складно.
Автомасштаб при цьому має бути вимкнений в обох записах — інакше додаток піджене шкалу під кожну поїздку окремо і порівняння втратить сенс.
Що не працює: тримачі на присосці та гнучкій ніжці (механічний фільтр, зрізає все вище 20 Гц і додає власний резонанс), сидіння та килим з ворсом (поролон гасить саме потрібний діапазон), рука (тремор кисті дає стійкий пік 8–12 Гц — я це побачив на першому ж тесті).
Осі після кріплення: Z вертикально — головна для підшипника та биття, Y вздовж машини, X впоперек, важлива в тесті з перекладанням.

Запис: маршрут і перші граблі
Схема проста: увімкнув запис стоячи, проїхав маршрут не торкаючись телефону, повернувся, зупинив, зберіг. Розділяти поїздку на файли не потрібно — все розбирається потім за часом та обертами.
Маршрут на 4–6 хвилин:
| Відрізок | Дія | Що дає |
|---|---|---|
| 0–1 хв | Стоячи, двигун працює | базова лінія, гармоніки двигуна |
| 1–2 хв | Розгін плавно | видно, росте пік лінійно чи це резонансний горб |
| 2–3 хв | Постійна швидкість, гладкий асфальт | чистий спектр |
| 3–4 хв | Накат на нейтралі | відокремлює кочення від трансмісії |
| 4–5 хв | Постійна швидкість, шорсткий асфальт | там, де чути дефект |
| 5–6 хв | S-повороти плавно вліво-вправо | перекладання навантаження, визначення борту |
Перші граблі: файл вийшов 145.7 МБ за 4.2 хвилини. Текстовий формат, повна точність float, три осі на 500 Гц плюс мікрофон на 5.7 кГц. Завантажити таке в чат з ШІ не можна, відкрити в Excel не можна, обробити вручну не можна.
Другі граблі: GPS не записався. Додатку не вистачило дозволу на точне місцеположення. Записалися тільки оберти двигуна через OBD-адаптер — 679 значень з частотою 3 Гц.
Обидві проблеми вирішилися програмно, і друга несподівано виявилася подарунком.
Інструмент 1: підготовка даних
Написав скрипт nvh_prep.py (код — у репозиторії методу). Завдання — перетворити 145 МБ сировини на кілька мегабайт, придатних для аналізу, нічого при цьому не втративши.
Що він робить:
Розбирає формат. CarNVH пише .txt з роздільником «крапка з комою» без лапок і .csv з комою та полем даних у лапках. Скрипт визначає формат сам.
Склеює перекриваючі кадри. Додаток пише не безперервний потік, а вікна по 256 відліків з кроком близько 52 мс. Сусідні вікна перекриваються: нових відліків у кожному всього 26 з 256. Скрипт знаходить зсув кореляцією і відновлює безперервний сигнал.
Рахує реальну частоту дискретизації. Не за загальною тривалістю (дає завищення через джиттер), а за відношенням «нових відліків на кадр» до кроку часу між кадрами. Вийшло рівно 500.0 Гц — тобто High Sampling Rate дійсно спрацював.
Відкидає мікрофон. Він займає основну частину обсягу, а для розділення «шина проти підшипника» вирішальний канал — акселерометр.
Ріже на відрізки по 20 секунд, рівномірно по всьому запису, і окремо зберігає всі записи OBD цілком.
Результат: замість 145.7 МБ — звіт на 17 КБ, сегменти на 2.6 МБ і OBD-дані на 20 КБ.
Інструмент 2: порядковий аналіз
Другий скрипт, nvh_analyze.py, робить власне діагностику. Логіка в чотири кроки.
Крок 1. Тест на прив'язку до двигуна
Ключова ідея всього методу, і вона дає відповідь раніше будь-якого спектра.
Всі джерела вібрації діляться на два класи: прив'язані до обертів двигуна (опори, демпфер, навісне, вихлоп) і прив'язані до швидкості руху (колеса, шини, підшипники, кардан).
Розділити їх можна одним маневром — кікдауном. При різкому натисканні газу оберти підскакують вдвічі, а швидкість за пару секунд майже не змінюється. Якщо частота піку пішла за обертами — джерело в двигуні. Якщо залишилася на місці — джерело в коченні.
Ось що показали мої дані:
| Сегмент | Оберти | Частота піку |
|---|---|---|
| 3 | 1184 → 2418 | 13.00 → 13.00 Гц |
| 6 | 777 → 2070 | 5.00 → 11.00 Гц |
| 2 | 717 → 1788 | 25.00 → 14.50 Гц |
Середній ріст обертів: ×2.39. Середній зсув частоти: ×1.00.
Оберти виросли більш ніж удвічі — частота не зсунулася. Двигун, коробка та кардан виключені за одну ітерацію, без жодного розбирання.
Крок 2. Порядковий аналіз
Далі береться відрізок зі стабільною швидкістю — скрипт вибирає його сам за критерієм «максимальна амплітуда при мінімальному розкиді обертів». У мене це 20 секунд на 51 км/год.
Спектр розкладається за кратними частоти обертання колеса:
Порядок частота Z X Y Z/фон
1x 6.45 Гц 0.1020 0.0252 0.0192 2.3
2x 12.25 Гц 0.4416 0.0574 0.1205 10.1
3x 18.20 Гц 0.0705 0.0111 0.0039 1.6
4x 24.70 Гц 0.1170 0.0264 0.0178 2.7
5x 30.50 Гц 0.0830 0.0471 0.0230 1.9
Додатково рахується добротність головного піку: Q = 122, ширина за рівнем −3 дБ всього 0.10 Гц. Це вузька дискретна лінія, а не резонансний горб. Для порівняння, на розгоні по нерівному асфальту Q падає до 1.4 — ось це резонанс підвіски, і його не можна плутати з дефектом.
Крок 3. Аналіз огинаючої — перевірка на підшипник
Дефект підшипника — це не вібрація, а ударні імпульси. Вони проявляються як модуляція високочастотної несучої, і ловляться тільки через демодуляцію: смуговий фільтр, перетворення Гільберта, спектр огинаючої.
Скрипт робить це в смугах 60–240 і 100–240 Гц і шукає дискретні лінії. Найважливіша ознака: частоти дефектів підшипника нецілі відносно оберту колеса — зовнішнє кільце зазвичай 3.5–4.5×, внутрішнє 5.5–6.5×. Цілі порядки до підшипника стосунку не мають.
У моїх даних максимальний пік огинаючої — 8.6 медіан фону, дискретних ліній немає. Підшипник виключено.
Крок 4. Вердикт
Скрипт співставляє домінуючий порядок з механічною причиною і порівнює амплітуду з порогами (0.30 м/с² — помітно, 0.50 — дефект).
Результат і помилка, яка ледь не завела вбік
Перший прогін дав невірну відповідь, і варто показати чому.
Скрипт знайшов домінуючу лінію на 12.25 Гц і за замовчуванням прийняв її за перший порядок колеса. З цього випливала швидкість 101 км/год і діагноз «дисбаланс».
Діагноз був би невірним. При окружності 2.30 м перший порядок на 60 км/год дорівнює 7.25 Гц — а я на цій поїздці швидше 60 не їхав. Отже 12.25 Гц не може бути першим порядком фізично.
Єдина версія, що сходиться: 12.25 Гц — це другий порядок, перший дорівнює 6.125 Гц, швидкість ≈ 51 км/год.
Перевірка незалежним шляхом, через трансмісію:
- оберти колеса при 6.125 Гц = 368 об/хв
- загальне передатне відношення = 1460 / 368 = 3.97
- п'ята передача 8HP: 1.285 × 3.204 головна пара = 4.12
Розбіжність 4% — в межах допуску на окружність шини. П'ята передача на 51 км/год при 1460 об/хв абсолютно нормальна. Версія підтвердилася.
Перерахована картина:
- Перший порядок: 0.083 м/с², практично на рівні фону → дисбаланс виключено
- Другий порядок: 0.442 м/с², у 10 разів вище фону → домінує
- Напрямок: 71% вертикаль → радіальна нерівномірність, не бокова
Другий порядок колеса при чистому першому означає: еліптичність шини, знос по двох протилежних точках, деформація обода в двох точках або початок розшарування брекера.
Збіг із симптомами повний. Гул з'являється на 50–60 км/год — виміряно рівно на 51. На газ не реагує — доведено кікдауном. Діапазон вузький — 12.25 Гц потрапляє в зону власної частоти непідресореної маси задньої осі, тому саме там дефект розгойдується найсильніше, а вище і нижче йде з резонансу.
Балансування тут не допоможе: воно править перший порядок, а він чистий. Потрібен замір радіального биття на верстаті, окремо диск і колесо в зборі.
Роль ШІ в цій роботі
Варто бути точним, тому що навколо теми багато магії.
ШІ не «почув поломку». Claude не замінив ані датчик, ані верстат для вимірювання биття.
Що він реально зробив:
- Задав вимоги до вимірювання. Розрахунок необхідної частоти дискретизації від частот дефектів, вимоги до кріплення, набір маневрів у маршруті — все це визначається фізикою завдання, і помилка тут знецінює будь-яку подальшу обробку.
- Написав обидва інструменти. Скрипти розбору перекриваючих кадрів і порядкового аналізу з перетворенням Гільберта — це кілька годин роботи вручну, тут зайняло хвилини.
- Провів сам аналіз. Тест на прив'язку до двигуна через кікдаун, розрахунок добротності, envelope-аналіз, звірка передатних відношень — вся аналітична частина.
- Зловив власну помилку по одній репліці. Фраза «я більше 60 не розганявся» повністю змінила інтерпретацію: діагноз переїхав з першого порядку на другий, з дисбалансу на еліптичність. Це ключовий момент — ШІ перевіряє гіпотезу проти фізики, а не захищає її.
Розподіл праці вийшов чесним: людина дає контекст і фізичні обмеження, ШІ рахує і перевіряє неузгодженість. Без репліки про 60 км/год діагноз був би красивим і невірним.
Підсумок: що коштує метод
| Позиція | Ціна |
|---|---|
| CarNVH Pro | €12 |
| phyphox | безкоштовно |
| Смартфон | старий A51, лежав вдома |
| OBD-адаптер | вже був, і в підсумку не знадобився |
| Скрипти | написані один раз, багаторазово використовувані |
| Разом | €12 |
Проти $99.99 за додаток-довідник, який не віддає сирих даних, і проти візиту в сервіс з формулюванням «щось гуде ззаду».
Метод переноситься на будь-який автомобіль без змін. Змінюються тільки два числа: окружність колеса і передатні відношення. Фізика обертання однакова для Audi Q7, BMW X5, Mercedes GLE, Range Rover, Tesla Model Y, Volvo XC90, Porsche Cayenne, VW Touareg, Ford Ranger, Toyota Land Cruiser і будь-якої іншої машини.
Для Range Rover, Q7, Touareg, Cayenne та інших позашляховиків на пневмопідвісці є одна додаткова умова: всю поїздку тримати один режим висоти. Зміна кліренсу змінює кути карданного вала і навантаження на підвіску, що робить записи незрівнянними.
Для електромобілів метод працює навіть краще: двигун не шумить, механічні джерела чутно як в лабораторії, а тест на прив'язку до обертів не потрібен зовсім.
Що далі
Наступний крок — визначення сторони, і тут я розплачуюся за телефон, покладений по центру багажника. Така точка рівновіддалена від обох арок і борт не виділяє. Потрібні два записи зі зсувом до правої та до лівої арки, одна швидкість, один фіксований масштаб. Різниця амплітуд на 12.25 Гц покаже колесо.
І обов'язковий контрольний замір після ремонту: та сама ділянка, та сама швидкість, ті самі налаштування. Якщо пік на 12.25 Гц впав до рівня фону — дефект усунуто об'єктивно, а не «ніби тихіше стало». Саме так працює предиктивна діагностика на суднах, і рівно цей принцип повністю переноситься на автомобіль.
Скрипти nvh_prep.py, nvh_analyze.py та повний технічний опис методу опубліковані на GitHub: github.com/gptariacom/car-nvh-order-analysis (MIT).
Автор — інженер Mind4Ship, предиктивна діагностика суднового обладнання.
Подобається цей кейс?
Запустіть схожий проект — опишіть «хочу так само», і виконавці надішлють робочі прототипи. Посилання на цей кейс уже буде в брифі.
Замовити схожий проект