Страница 1 из 2

Фильтрация сигнала с датчика вибрации на электродвигателе

Добавлено: 13 апр 2017, 19:59
nerwik
Здравствуйте. Для последующей работы с ним (нахождение фазы, амплитуды и т.д.) нужно отфильтровать сигнал с акселерометра. Его внешний вид с шумом на картинках.
Фактически, как мне сказали, нужно выделить оборотную гармонику (первую) и получить максимально идеальную синусоиду.
Вопрос у меня по поводу какие фильтры применять, может Vi-и конкретные, либо что вообще можно сделать с сигналом, если судить по его внешнему виду - шуму, отношению амплитуды шума к амплитуде основного сигнала и т.д. Я применял полосовой и ФНЧ Баттерворта и Чебышева (Chebyshev Filter.vi и Butterwoth filter.vi). И колебания измеренной фазы и амплитуды отфильтрованной синусоиды достаточно заметны. Может есть какие-то более эффективные способы?

Re: Фильтрация сигнала с датчика вибрации на электродвигател

Добавлено: 13 апр 2017, 22:48
Borjomy_1
Вообще, очень странно, что гармоника, которую вы выделяете - 50 Гц. Какова номинальная частота вращения? 3000 об/мин?
Для более точного вычисления необходимо больше периодов, пусть даже с меньшим временным разрешением.
Кроме того, нет никакого смысла производить фильтрацию для вычисления амплитуды и фазы. По сигналу с тахометра вы достаточно точно определяете период. Далее, набираете N-е количество периодов и тахометра и сигнала с акселерометра, после чего берете спектр и того и другого (чтобы все это работало быстро, можно делать детектирование только нужной гармоники). Далее рассматриваете амплитуду и фазу N-ной гармоники, т.е сколько периодов уместилось в массиве. И никакой фильтрации не надо. Взятие спектра само по себе - сильный узкополосный фильтр. Самое важное условие - максимально точно уложить в массив целое число колебаний. фаза сигнала производится вычитанием фазы гармоники тахометра из фазы акселерометра.

Re: Фильтрация сигнала с датчика вибрации на электродвигател

Добавлено: 14 апр 2017, 00:52
Artem.spb
Borjomy_1 писал(а):Вообще, очень странно, что гармоника, которую вы выделяете - 50 Гц..
а чего странного в наводке от "розетки"?

Re: Фильтрация сигнала с датчика вибрации на электродвигател

Добавлено: 14 апр 2017, 10:44
Borjomy_1
а чего странного в наводке от "розетки"?
Э.... Двигатель может быть асинхронный, с питанием от сети. Такие двигатели есть, с частотой вращения около 3000 оборотов в минуту, что соответствует 50 оборотам в секунду. Потому и уточняю.

По факту, получить ровный синус практически невозможно, ибо ключевым в этой ситуации является...собственный шум акселерометра, размазанный толстым слоем по всему спектру.

Re: Фильтрация сигнала с датчика вибрации на электродвигател

Добавлено: 14 апр 2017, 11:03
nerwik
Какова номинальная частота вращения? 3000 об/мин?
Вообще в теории, должен применяться и к двигателям с другой частотой вращения. Но номинальная частота вращения испытательной установки (шлифовальный станок) 2950 об/мин.

Re: Фильтрация сигнала с датчика вибрации на электродвигател

Добавлено: 14 апр 2017, 16:43
nerwik
Кроме того, нет никакого смысла производить фильтрацию для вычисления амплитуды и фазы. По сигналу с тахометра вы достаточно точно определяете период. (чтобы все это работало быстро, можно делать детектирование только нужной гармоники). Далее рассматриваете амплитуду и фазу N-ной гармоники, т.е сколько периодов уместилось в массиве. И никакой фильтрации не надо. Взятие спектра само по себе - сильный узкополосный фильтр. Самое важное условие - максимально точно уложить в массив целое число колебаний. фаза сигнала производится вычитанием фазы гармоники тахометра из фазы акселерометра.
Я бы хотел спросить у вас по этому, каким образом это можно реализовать.
Я вообще определял период и фазу с помощью детектора фронтов (на картинке). Он находил номера индексов фронтов, для сигналов тахометра и акселерометра, формировал массив, разница между соседними элементами массива являлась периодом в количестве выборок (samples - всего их количество у меня 2000). Потом вычитались элементы с одинаковыми номерами в массивах с номерами индексов, когда был зафиксирован фронт, обоих каналов. Разница в количестве выборок делилась на период в выборках - это получалась дробная часть периода. Она умножалась на 360 и получался результат в градусах разницы фаз.
То что вы объяснили можно как то с этим связать?
Еще решил попробовать получить амплитудный и фазовый спектры с помощью Amplitude and Phase Spectrum.vi - его можно использовать? Потом просто нужно вычесть значения фаз из ячеек с одинаковыми номерами в массивах с выхода Amp Spectrum Phase (radians) сигналов с тахометра и акселерометра? Я правильно понял по вашему объяснению. Или это не оно?

Re: Фильтрация сигнала с датчика вибрации на электродвигател

Добавлено: 14 апр 2017, 21:26
Borjomy_1
Гораздо (пропорционально) точнее измерять длительность N количества периодов, вырезать из буфера фрагмент сигнала акселерометра между Array out[0] и Array out[max]-1. И смотреть max гармонику. При этом фаза будет автоматически вычисляться от синхроимпульса, ведь мы вырезали массив по началу импульса.

Re: Фильтрация сигнала с датчика вибрации на электродвигател

Добавлено: 15 апр 2017, 01:16
Юрий
В этих случаях очень эффективна синхронная фильтрация. И вычислений поменьше и главное результат более достоверный. Особенно это касается измерения фазы.

Re: Фильтрация сигнала с датчика вибрации на электродвигател

Добавлено: 16 апр 2017, 16:59
nerwik
Юрий писал(а):В этих случаях очень эффективна синхронная фильтрация. И вычислений поменьше и главное результат более достоверный. Особенно это касается измерения фазы.
А сколько периодов при синхронной фильтрации должно быть достаточно? Может быть примерно хотя бы

Re: Фильтрация сигнала с датчика вибрации на электродвигател

Добавлено: 16 апр 2017, 19:37
Borjomy_1
А сколько периодов при синхронной фильтрации должно быть достаточно? Может быть примерно хотя бы
Это уже экспериментальным путем определяется. По уровню шума измеренного параметра. Попадает он в допуск или нет. Однако надо учитывать, что скорость вращения может колебаться в некотором диапазоне от номинала. Короче, вам надо делать число периодов в виде контрола. И потом подбирать по-месту

Re: Фильтрация сигнала с датчика вибрации на электродвигател

Добавлено: 16 апр 2017, 19:49
nerwik
Вы не могли бы помочь с алгоритмом синхронной фильтрации, точнее как сделать это в labview. Я написал код, но у меня не получается реализовать его с циклами for в labview, не могли бы подсказать каким образом это можно сделать?

Код: Выделить всё

%f - сигнал с шумом
%y - отфильтрованный сигнал
%Т - количество выборок в одном периоде
%N - количество периодов
y=zeros(1,T)
for s=0:T-1
    for i=0:N-1   
        y(s)=y(s)+1/N*f(s+T*i-1);
    end;
end

Re: Фильтрация сигнала с датчика вибрации на электродвигател

Добавлено: 17 апр 2017, 16:19
nerwik
Вот так сделал синхронную фильтрацию. Периодов при моем шуме понадобилось 5000 - 2M samples, загруженность процессора конечно большая, но результат достаточно хороший.

Re: Фильтрация сигнала с датчика вибрации на электродвигател

Добавлено: 17 апр 2017, 23:39
Юрий
Посмотрите. Может, так будет побыстрее.
2017-04-17_233350.png
2017-04-17_233350.png (3.99 КБ) 7772 просмотра
Если периоды сильно неравномерные, то можно привести их одинаковому количеству точек, используя функцию Interpolate 1D.vi из поллитры Математика.

Re: Фильтрация сигнала с датчика вибрации на электродвигател

Добавлено: 18 апр 2017, 00:54
Юрий
А, вот, ещё вариант. Сначала подумалось, что он будет побыстрее, но транспонирование матрицы дело портит, надо проверять.
2017-04-18_005232.png
2017-04-18_005232.png (2.83 КБ) 7772 просмотра
К стати. Вместо массива из единиц можно задавать нужную функцию, т. е. окно. Хоть синус, хоть косинус, либо другую.

Re: Фильтрация сигнала с датчика вибрации на электродвигател

Добавлено: 18 апр 2017, 10:44
nerwik
12 версия, эти файлы не открываются :)