Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Постановка задачи
Последние год три меня доставала неприятная вибрация при разгоне автомобиля, поначалу немного, но со временем все больше и больше. Езжу я мало, в лучшие‑то годы набегало около 12 ткм в год, сейчас же использование авто свелось к практически только летней эксплуатации, поэтому вопрос решался долго. Авто, герой этой статьи это C max (2007 года, 2л, автомат), пробег 164 ткм, первая замена ШРУСов на 20 ткм (порванный пыльник) на подделку, вторая через год на родные. т. е. комплект родных проходил где‑то 130 ткм.
Симптомы:
После 60 км\ч начинается вибрация, особенно при нагрузке в горку. При езде накатом вибрация отсутствует. При увеличении загрузки авто (например, не 2, а 4 человека в салоне) вибрации растут до неприемлемых.
Вибрации трясут морду влево‑вправо, поперек машины. От дисбаланса колес (и других вращающихся элементов) вибрации ориентированы иначе (вдоль машины).
Балансировка, смена колёс летние\зимние перед\зад не влияет.
При езде в крутую горку с низкой скоростью вибраций нет.
В поворотах вибрация не меняется никак.
Очень похоже на внутренние ШРУС (ы), но со стандартным набором симптомов не совпадает скорость начала тряски. Считается, что износ ШРУСов дает вибрации начиная от 40 км\ч, а в моем случае заметные вибрации начинались от 70–75 км\ч и органолептически очень похожи на дисбаланс колес.
Год назад специалист сервисного центра прокатился на машине и уверенно сказал — это не ШРУСы. Возможно, в тот момент износ дорожек был еще достаточно мал, что и привело к неверному суждению. Прошел еще год и вибрации стали беспокоить уже сильно.
Поскольку новые ШРУСы стоят весьма дорого (около 100 тр), то хотелось бы диагностировать неисправность этих узлов максимально достоверно.
Сбор данных
Чтобы быть точно уверенным, что проблема в износе ШРУСов, можно, например, попытаться отличить вибрации о ШРУСов от вибраций, создаваемых другими вращающимися элементами. Вибрация от ШРУСов имеет втрое большую частоту от частоты вращения колес. В ШРУСе 3 ролика и 3 беговых дорожки, за один оборот привода ролики трижды ездят туда‑сюда. Попытки органолептически (хотел написать «на глазок», но вибрации ощущаются совершенно другим органом:))) определить частоту вибраций оказались неуспешны. Например, я пытался ехать рядом с машиной с такими же колесами и сопоставлять частоту ощущаемых ж**** вибраций с частотой вращения колес, наблюдаемой глазом. Казалось, что частоты совпадают…Таким образом отличить частоты я не смог и решил прибегнуть к аппаратному анализу колебаний.
Аппаратная часть
Для регистрации колебаний я собрал устройство на базе модуля GY-87 и модуля на базе ESP32. На плате GY-87 установлены трехосевой акселерометр\гироскоп MPU6050, трехосевой магнитометр HMC5883L, барометр BMP085. MPU6050 подключен к ESP32 по каналу I2C. Данные магнитометра и барометра не используются.
Фото устройства приведено на рисунке 1.
Светодиод переключается по окончании цикла в 4096 отсчетов, каждые 4 секунды. Это позволяет зрительно контролировать работу устройства, т.е. быть «ситуационно осведомленным» :). Крокодилом девайс крепился на решетку среднего отверстия вентиляции. Крепление устройства показано на рисунке 2.
На рисунке 3 отдельно показана плата GY-87.
Сбор данных на автомобиле
Программа в ESP32 инициализирует MPU6050, в бесконечном цикле считывает данные из регистров и выводит их в сериал порт. Для контроля каждые 4096 отсчетов выводится время этого цикла, т.е. в выходном потоке появляется строка с числом «4096». MPU6050 может измерять и выводить данные с минимальным тактом 1 мС (соответствует частоте опроса 1 КГц). Написанная простейшим образом программа в Ардуино позволила обеспечить чтение 14 байт и вывод их в сериал порт даже быстрее и поэтому в цикле применена задержка в ~300 мкс, чтобы считывать данные из MPU6050 c тактом 1 мС. Интересующие меня колебания имеют частоту в районе 30 Гц, оцифровывать их чаще 300 Гц не нужно, так что опрос с частотой 1000 Гц несколько избыточен, хотя и не вреден.
Данные из MPU6050 представляют собой двухбайтные числа со знаком, первый байт старший, по каждому каналу выводятся три числа, а также температура кристалла. Суммарно это составляет 14 байт. К каждому отсчету из 14 байт прибавляются два байта 0D0A.
Считанные данные выводятся через сериал порт со скоростью 230400 бод в компьютер. Для сбора данных был использован старенький ноутбук ACER Aspire ONE, волею судьбы с нормальной батареей, способной продержаться около 2-х часов.
Первые эксперименты с записью потока проводились с использованием программы PUTTY. Результаты оказались неприемлемыми – часть данных при записи в файл терялась. Я предположил, что львиная доля времени тратится PUTTY на отображение принимаемого потока данных. Поэтому была написана программа на Python для приема потока данных и записи его на диск в файл. Для запуска записи потока данных в файл на диске надо запустить программу с ключом –p[com port name] [b baudrate]. В моем случае порт COM3 и скорость 230400 установлены по умолчанию и потому мне достаточно ключа –p. При запуске без параметров программа выведет подсказку по использованию. Поток данных записывается as is, состоит из групп по 14 байт плюс байты 0D0A. На диске ноутбука появляются файлы с уникальными именами типа 2023_05_21_12_27_52_945876.txt, сгенерированными из времени начала записи. Содержимое файла выглядит, например, так, если открыть его в Блокноте (рисунок 4):
Данные записывались в процессе езды на наиболее сложных участках (езда в горку со скоростью от 60 км\ч). Вести машину и оперировать ноутбуком невозможно, второй человек на пассажирском месте запускал запись данных и останавливал ее по команде. В принципе можно было бы сделать кнопки или кнопку на руль, но для одноразовой задачи это избыточно. В результате поездки на диске ноутбука появилось несколько файлов с данными.
Обработка данных
Следующие этапы обработки данных выполняются в стационарных условиях. Первый этап – преобразование файлов с двоичными данными в вид, который можно импортировать в Excel.
Для решения этой задачи в программе на Python имеется модуль чтения двоичных данных из указанного файла, преобразовании данных в нужный формат и записи их в файл в виде, пригодном для импорта в Excel. Для преобразования конкретного файла надо запустить программу на питоне с ключами –f и –с, например: -f "I:\15\2023_05_27_15_50_14_475704.txt" –c. Ключ –f указывает имя входного файла для преобразования, а ключ –c это команда выполнить преобразование. Имя файла для записи преобразованных данных получается из исходного имени с прибавлением proc1, например, вот так: 2023_05_27_15_27_37_093126_proc1.txt. Данные в таком файле выглядят, например, так (рисунок 5):
Каждая строка состоит из шести чисел, две группы по три числа. Это ускорение по трем осям и угловая скорость по трем осям. Данные по температуре опускаются.
Дальнейшие этапы, такие как импорт данных в Excel, формирование выборки, частотный анализ с применением преобразования Фурье тривиален и описание этих шагов я опущу.
На рисунке 6 приведен пример сигнала с одного из каналов акселерометра. Длина сигнала 2048 отсчетов, постоянная составляющая удалена. Замечу на всякий случай – постоянная составляющая это проекция силы земного тяготения на конкретную ось.
Результаты обработки
На рисунке 7 приведен спектр вибраций, полученный из сигнала на рисунке 6:
Этот образец записан на скорости примерно 60-70 км\ч при езде в горку. Пик вибраций приходится на частоту около 28 Гц, что соответствует утроенной частоте вращения колес на скорости около 60-70 км\ч. Правый пик соответствует частоте около 3000 об\мин (источник колебаний - двигатель), левая группа пиков соответствует частотам вращения колес и элементов коробки передач (7 - 10 Гц).
Для желающих самостоятельно повозиться с данными файл Excel выложен тут.
Решение
На основе анализа комплекса данных я принял решение, что беспокоящие меня вибрации при разгоне вызваны повреждением беговых дорожек в ШРУСах и решился на замену. Менять имеет смысл на новые родные.
ШРУСы были заказаны в известном московским фордоводам сервисе на Турчаниновом, там же заменены. Время замены 2 часа, включая попутную замену левого ступичного подшипника. Изношенные детали были забраны из сервиса, чтобы в спокойной обстановке изучить признаки износа ШРУСов. Сервисмены похоже усомнились в моей адекватности :)) и все порывались отдать и ступичный подшипник тоже :), несмотря на попытки объяснить, зачем мне нужны изношенные привода.
Фото изношенных беговых дорожек левого ШРУСа показаны на рисунках 8-10.
На правом ШРУСе видимых следов износа нет.
Результат
Контрольный прокат после замены ШРУСов показал исчезновение вибраций.
Чтобы улучшить качество дифференциальной диагностики можно не только измерить спектр вибраций, но и определять ориентацию колебаний в пространстве. Как я уже упоминал ранее, вращающиеся элементы трансмиссии дают колебания, ориентированные преимущественно вдоль машины, а вибрации ШРУСов ориентированы поперек машины. Поскольку датчик MPU6050 дает данные по трем осям, можно определить ориентацию колебаний в пространстве.