скетч "низкочастотного" анализатора спектра для балансировки тел вращения

andruxoidus

✩✩✩✩✩✩✩
7 Июл 2021
5
0
Требуется исполнитель :
любой город\любая страна
Надо изготовить :
Написать скетч с подробными комментариями для ардуино, подобие спектроанализатора от AlexGyver, но...
Надо точно выделить определенную частоту из поданного спектра и определить уровень аналогового сигнала только на заданной частоте.
Выделяемые полезные частоты от 3,3Гц до 33Гц. Не весь диапазон сразу а только одна, например 10,2Гц.
(для изменения исследуемой частоты планирую вручную в скетче менять ее величину и прошивать каждый раз контроллер, на данном этапе этого более чем достаточно)
Вывод величины аналогового сигнала достаточно в ком порт.
------------
Кратко общая картина для понимания.
Некое тело, например якорь электродвигателя, принудительно вращается в "мягких" опорах.
Эти опоры мягкие\подвижные только в одной плоскости, в этой же плоскости установлен датчик, регистрирующий колебания этих опор, если тело имеет дисбаланс, то датчик зафиксирует эти колебания\вибрацию, и чем сильнее вибрация опор тем соответственно больше уровень сигнала с датчика.
Полезный сигнал с датчика будет приходить ровно один раз за оборот вала, (точнее два, один раз со знаком+ второй со знаком-, но отрицательный не учитывается, поэтому считаем один)
Но есть большая проблема, помимо полезного сигнала, присутствуют вибро помехи от подшипников, привода, прочие шумы и вибрации на разных частотах, все это накладывается одно на другое, и сигнал с датчика превращается в частокол. Причем зачастую амплитуда полезного сигнала ниже чем помех.
Принцип работы. Например частота вращения вала стабильна и допустим это 500 об\мин или 8.33Гц. Соответственно подав на аналоговый вход сигнал с датчика мне нужно игнорировать все составляющие сигнала кроме частоты 8.33Гц, При этом добавляя или убирая грузики с вала и следя за изменением уровня сигнала именно на этой частоте, я могу точно произвести балансировку вала.
Для примера картинка (взято в интернете) как выглядит сигнал с датчика. Вал вращался 702об\минуту или 11.7Гц. Уровень полезного сигнала выделен синим.

Планируемый бюджет :
обсуждается
Сроки :
не важны
Оплата : гривны на карту\пайпал для других
Для связи :
лс
 

Вложения

Геннадий П

★★★★★★✩
14 Апр 2021
1,837
592
44
На сколько помнится, чем ниже частотный диапазон - тем больше выборка нужна. Ардуины может не хватить.

Соответственно подав на аналоговый вход сигнал с датчика мне нужно игнорировать все составляющие сигнала кроме частоты 8.33Гц,
Ставится активный узкий полосовой фильтр на операционнике, стабилизация частоты вращения под фильтр и с выхода уже замеряется уровень сигнала.
 

poty

★★★★★★✩
19 Фев 2020
2,988
895
@Геннадий П, не больше, а дольше. Количество отсчётов на один период для достижения нужной точности неизменно. Период увеличивается - количество отсчётов остаётся прежним, время получения выборки - увеличивается.
 

Геннадий П

★★★★★★✩
14 Апр 2021
1,837
592
44
@poty, В любом случае не вижу смысла измерять весь спектр частот, если нужна только одна частота.
 

poty

★★★★★★✩
19 Фев 2020
2,988
895

@Геннадий П, ну, в целом, я не вижу причины, почему бы не измерять весь интервал. Тогда и подстройка на выделяемую частоту бы не потребовалась. В порт можно было сообщать локальные пики и провалы. Да и вообще - можно было бы вывести это на экранчик, копеечное же дело.
 

andruxoidus

✩✩✩✩✩✩✩
7 Июл 2021
5
0
активный узкий полосовой фильтр на операционнике
как самый крайний вариант да, но для исключения ошибки желательно покрутить хотя бы в двух диапазонах оборотов, а это уже два фильтра итд.
да и век космических технологий на дворе)

вывести это на экранчик
Экранчик дело хорошее, но хотя бы минимальный вариант попробовать, что бы понять сработает ардуина или нет)
а по сути для полноценной работы достаточно добавить стробоскоп на светодиоде который будет вспыхивать на пике полезного сигнала и подсвечивать самый тяжелый сектор. Я пробовал на обычном компараторе отлавливать максимальные пики и зажигать светодиод, все бы хорошо, но он дает вспышку 3-4-5 раза за оборот из за мусора в сигнале.
 

maxlab

★✩✩✩✩✩✩
9 Май 2021
24
14
@kDn, с подавлением постоянной составляющей сложновато будет. Стандартная функция из ArduinoFFT плохо справляется с этой задачей. ИМХО, здесь лучше аналоговый активный, и даже перестраиваемый, полосовой фильтр мутить надо. У Maxim что то подобное видел на переключаемых кондерах. Правда, очень дорого... более 1 килорубля.
 

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
@kDn, с подавлением постоянной составляющей сложновато будет. Стандартная функция из ArduinoFFT плохо справляется с этой задачей.
АЦП контроллера работает от 0 до Uvcc (Uref), как следствие вам необходима постоянная составляющая для любого переменного сигнала. Компенсация постоянной составляющей после оцифровки это обычная операция вычитания. В чем у вас сложности я не знаю, но видимо вы что-то делаете не так.

Убедитесь что входной формирователь сигнала работает верно. Подайте тестовый синусоидальный сигнал с генератора, проверьте что после разложения на гармоники вы получаете частоту поданного сигнала. Аналогично проверьте во всем диапазоне измерений. А частоты выше 33Гц можете срезать фильтром, без проблем. Фильтр рассчитать где-нить на 66Гц, чтобы не заваливать верх диапазона.
 

Dmitri

✩✩✩✩✩✩✩
16 Мар 2021
12
0
Челябинск
Делал лабораторный стенд по динамической балансировке ротора(https://prizm.ru/catalog/389/11831/). Также замерялась частота вращения и амплитуда колебаний, правда разложение в спектр не требовалось. Боюсь что ресурсов ATMegi не хватит для вашей задачи гораздо практичней будет возложить на контроллер измерения, а всю обработку по разложению возложить на ПК.
 

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
Боюсь что ресурсов ATMegi не хватит для вашей задачи гораздо практичней будет возложить на контроллер измерения, а всю обработку по разложению возложить на ПК.
Не надо бояться, разложение не столь требовательная задача, а если еще и время реакции не критично, то вообще можно сделать "плавающее окно" семплирования, что позволит обойтись и небольшим числом семплов и более точно оценить нужный участок. Другое дело, что ТС похоже на данном форуме исполнителя не найдет))).
 

Dmitri

✩✩✩✩✩✩✩
16 Мар 2021
12
0
Челябинск
Это был учебно-лабораторный стенд для студентов по теме балансировка ротора. Я делал электронику. механическую часть и методички делал другой человек. Мне была поставлена задача мерить частоту и амплитуду колебаний. Так понимаю по наименьшей амплитуде производили балансировку, а по частоте и амплитуде искали резонанс системы.
 

photocanon

✩✩✩✩✩✩✩
15 Авг 2018
4
1
задача решается более просто, об этом ниже, а если надо качественно то нужен измерительный комплекс в виде осциллографа с усреднением. на 100-200 выборок минимум.
Ставим на переднюю и заднюю опору обычные одноканальные акселерометры аналоговые, они ставились давно в полетных контроллерах типа multiWii так вот там берем сигнал с Х У составляющей выводим на 1 2 канал осциллографа, усредняем, на 3-й канал выводим сигнал нуля координат с магнитного датчика холла, предварительно магнитим ниодимовым магнитом шлиц на роторе где ставится датчик.

делаем раскрутку частотником, на кратные обороты. чтоб было понимание по развертке - помехи это или нет.
т.е.подали 50 герц - крутится оно допустим 700-750 оборотов усреднили картинку по Х У получили максимумы отклонений.
далее подали 75 герц вал уже под 1000 оборотов, сняли картинку с усреднением сравнили с нормированием по времени одного оборота .
и третья итерация на 100герцах с 1400-1500 оборотов , все также сняли усреднение сравнили по времени одного оборота, с увеличением оборотов пики должны пропорционально вырасти, так как центробежка растет аналогично.
по сути по осциллограмме, Проще всего отследить максимум к углу поворота куда именно пихать грузик, либо сверлить вал.

Вместо акселерометра в тяж станках юзают тензодатчики на опорах, но там показания могут чуть отличаться от реальности.
Частотником можно найти скорость вращения на которой минимальны резонансные явления в роторе.

По поводу спектроскопии - идея не живая толку не будет, тут только настраивать ардуинку на максимальный съем по частоте дискретизации. и гнать цыфры в порт/память и прочее... можно на ардуине сделать 360-180 ячеек, и писать туда тупо отсчеты с уже усреднением / апроксимацией или чем то еще, и в порт тупо плевать 180 отсчетов, далее в программе раскрывать в обратку на 360 градусов интерполяцией.

т.е. допустим 10 секунд она мерит измеряет и потом выдает в порт нужные данные. уже растянутые по времени на один полный оборот. зная диаметр и вес грузиков начальных можно в программу ввести коеффициенты и выставлять грузы итоговые с большой точностью.
 
  • Лойс +1
Реакции: andruxoidus