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

Простейшие вопросы в области инженерной разработки

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

Postby nerwik on 13 Apr 2017, 19:59

Здравствуйте. Для последующей работы с ним (нахождение фазы, амплитуды и т.д.) нужно отфильтровать сигнал с акселерометра. Его внешний вид с шумом на картинках.
Фактически, как мне сказали, нужно выделить оборотную гармонику (первую) и получить максимально идеальную синусоиду.
Вопрос у меня по поводу какие фильтры применять, может Vi-и конкретные, либо что вообще можно сделать с сигналом, если судить по его внешнему виду - шуму, отношению амплитуды шума к амплитуде основного сигнала и т.д. Я применял полосовой и ФНЧ Баттерворта и Чебышева (Chebyshev Filter.vi и Butterwoth filter.vi). И колебания измеренной фазы и амплитуды отфильтрованной синусоиды достаточно заметны. Может есть какие-то более эффективные способы?
Attachments
1.PNG
3.PNG
4.PNG
nerwik
beginner
beginner
 
Posts: 18
Joined: 16 Feb 2017, 10:48
LabVIEW Version: 12
Karma: 0

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

Postby Borjomy_1 on 13 Apr 2017, 22:48

Вообще, очень странно, что гармоника, которую вы выделяете - 50 Гц. Какова номинальная частота вращения? 3000 об/мин?
Для более точного вычисления необходимо больше периодов, пусть даже с меньшим временным разрешением.
Кроме того, нет никакого смысла производить фильтрацию для вычисления амплитуды и фазы. По сигналу с тахометра вы достаточно точно определяете период. Далее, набираете N-е количество периодов и тахометра и сигнала с акселерометра, после чего берете спектр и того и другого (чтобы все это работало быстро, можно делать детектирование только нужной гармоники). Далее рассматриваете амплитуду и фазу N-ной гармоники, т.е сколько периодов уместилось в массиве. И никакой фильтрации не надо. Взятие спектра само по себе - сильный узкополосный фильтр. Самое важное условие - максимально точно уложить в массив целое число колебаний. фаза сигнала производится вычитанием фазы гармоники тахометра из фазы акселерометра.
Borjomy_1
expert
expert
 
Posts: 1765
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 309
VIP

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

Postby Artem.spb on 14 Apr 2017, 00:52

Borjomy_1 wrote:Вообще, очень странно, что гармоника, которую вы выделяете - 50 Гц..

а чего странного в наводке от "розетки"?
Artem.spb
expert
expert
 
Posts: 1220
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 214
CLD hardware I/O VIP freelance

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

Postby Borjomy_1 on 14 Apr 2017, 10:44

а чего странного в наводке от "розетки"?

Э.... Двигатель может быть асинхронный, с питанием от сети. Такие двигатели есть, с частотой вращения около 3000 оборотов в минуту, что соответствует 50 оборотам в секунду. Потому и уточняю.

По факту, получить ровный синус практически невозможно, ибо ключевым в этой ситуации является...собственный шум акселерометра, размазанный толстым слоем по всему спектру.
Borjomy_1
expert
expert
 
Posts: 1765
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 309
VIP

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

Postby nerwik on 14 Apr 2017, 11:03

Какова номинальная частота вращения? 3000 об/мин?

Вообще в теории, должен применяться и к двигателям с другой частотой вращения. Но номинальная частота вращения испытательной установки (шлифовальный станок) 2950 об/мин.
nerwik
beginner
beginner
 
Posts: 18
Joined: 16 Feb 2017, 10:48
LabVIEW Version: 12
Karma: 0

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

Postby nerwik on 14 Apr 2017, 16:43

Кроме того, нет никакого смысла производить фильтрацию для вычисления амплитуды и фазы. По сигналу с тахометра вы достаточно точно определяете период. (чтобы все это работало быстро, можно делать детектирование только нужной гармоники). Далее рассматриваете амплитуду и фазу N-ной гармоники, т.е сколько периодов уместилось в массиве. И никакой фильтрации не надо. Взятие спектра само по себе - сильный узкополосный фильтр. Самое важное условие - максимально точно уложить в массив целое число колебаний. фаза сигнала производится вычитанием фазы гармоники тахометра из фазы акселерометра.

Я бы хотел спросить у вас по этому, каким образом это можно реализовать.
Я вообще определял период и фазу с помощью детектора фронтов (на картинке). Он находил номера индексов фронтов, для сигналов тахометра и акселерометра, формировал массив, разница между соседними элементами массива являлась периодом в количестве выборок (samples - всего их количество у меня 2000). Потом вычитались элементы с одинаковыми номерами в массивах с номерами индексов, когда был зафиксирован фронт, обоих каналов. Разница в количестве выборок делилась на период в выборках - это получалась дробная часть периода. Она умножалась на 360 и получался результат в градусах разницы фаз.
То что вы объяснили можно как то с этим связать?
Еще решил попробовать получить амплитудный и фазовый спектры с помощью Amplitude and Phase Spectrum.vi - его можно использовать? Потом просто нужно вычесть значения фаз из ячеек с одинаковыми номерами в массивах с выхода Amp Spectrum Phase (radians) сигналов с тахометра и акселерометра? Я правильно понял по вашему объяснению. Или это не оно?
Attachments
pain.JPG
nerwik
beginner
beginner
 
Posts: 18
Joined: 16 Feb 2017, 10:48
LabVIEW Version: 12
Karma: 0

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

Postby Borjomy_1 on 14 Apr 2017, 21:26

Гораздо (пропорционально) точнее измерять длительность N количества периодов, вырезать из буфера фрагмент сигнала акселерометра между Array out[0] и Array out[max]-1. И смотреть max гармонику. При этом фаза будет автоматически вычисляться от синхроимпульса, ведь мы вырезали массив по началу импульса.
Borjomy_1
expert
expert
 
Posts: 1765
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 309
VIP

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

Postby Юрий on 15 Apr 2017, 01:16

В этих случаях очень эффективна синхронная фильтрация. И вычислений поменьше и главное результат более достоверный. Особенно это касается измерения фазы.
Юрий
adviser
adviser
 
Posts: 247
Joined: 28 Feb 2010, 18:04
LabVIEW Version: LV2011
Karma: 52

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

Postby nerwik on 16 Apr 2017, 16:59

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

А сколько периодов при синхронной фильтрации должно быть достаточно? Может быть примерно хотя бы
nerwik
beginner
beginner
 
Posts: 18
Joined: 16 Feb 2017, 10:48
LabVIEW Version: 12
Karma: 0

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

Postby Borjomy_1 on 16 Apr 2017, 19:37

А сколько периодов при синхронной фильтрации должно быть достаточно? Может быть примерно хотя бы

Это уже экспериментальным путем определяется. По уровню шума измеренного параметра. Попадает он в допуск или нет. Однако надо учитывать, что скорость вращения может колебаться в некотором диапазоне от номинала. Короче, вам надо делать число периодов в виде контрола. И потом подбирать по-месту
Borjomy_1
expert
expert
 
Posts: 1765
Joined: 28 Jun 2012, 09:32
Location: город семи холмов
Medals: 3
Activity (1) Professionalism (1) Silver (1)
LabVIEW Version: 4-8.6,9-14
Karma: 309
VIP

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

Postby nerwik on 16 Apr 2017, 19:49

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

Code: Select all
%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
nerwik
beginner
beginner
 
Posts: 18
Joined: 16 Feb 2017, 10:48
LabVIEW Version: 12
Karma: 0

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

Postby nerwik on 17 Apr 2017, 16:19

Вот так сделал синхронную фильтрацию. Периодов при моем шуме понадобилось 5000 - 2M samples, загруженность процессора конечно большая, но результат достаточно хороший.
Attachments
Снимок.JPG
Last edited by nerwik on 18 Apr 2017, 09:55, edited 1 time in total.
nerwik
beginner
beginner
 
Posts: 18
Joined: 16 Feb 2017, 10:48
LabVIEW Version: 12
Karma: 0

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

Postby Юрий on 17 Apr 2017, 23:39

Посмотрите. Может, так будет побыстрее.
2017-04-17_233350.png
2017-04-17_233350.png (3.99 KiB) Viewed 1882 times

Если периоды сильно неравномерные, то можно привести их одинаковому количеству точек, используя функцию Interpolate 1D.vi из поллитры Математика.
Attachments
СинхроФильтр.vi
(9.75 KiB) Downloaded 34 times
Юрий
adviser
adviser
 
Posts: 247
Joined: 28 Feb 2010, 18:04
LabVIEW Version: LV2011
Karma: 52

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

Postby Юрий on 18 Apr 2017, 00:54

А, вот, ещё вариант. Сначала подумалось, что он будет побыстрее, но транспонирование матрицы дело портит, надо проверять.
2017-04-18_005232.png
2017-04-18_005232.png (2.83 KiB) Viewed 1882 times

К стати. Вместо массива из единиц можно задавать нужную функцию, т. е. окно. Хоть синус, хоть косинус, либо другую.
Attachments
СинхроФильтр+.vi
(10.34 KiB) Downloaded 29 times
Юрий
adviser
adviser
 
Posts: 247
Joined: 28 Feb 2010, 18:04
LabVIEW Version: LV2011
Karma: 52

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

Postby nerwik on 18 Apr 2017, 10:44

12 версия, эти файлы не открываются :)
nerwik
beginner
beginner
 
Posts: 18
Joined: 16 Feb 2017, 10:48
LabVIEW Version: 12
Karma: 0

Next

Return to Для чайников

Who is online

Users browsing this forum: No registered users and 16 guests

cron