Wstęp.
„back to basics” czyli mały powrót do tematyki moich studiów połączony z „za” dużą ilością wolnego czasu na urlopie.
Chłodząc się ostatnio za pomocą małego wiatraczka przypomniały mi się zajęcia na katedrze wibroakustyki poświęcone analizie hałasu oraz drgań od urządzeń mechanicznych – a zwłaszcza wentylatorów. Postanowiłem przeprowadzić mały pomiar a następnie przeprowadzić jego analizę. Oczywiście mówimy tu o totalnej amatorce – przecież nie dysponuję laboratorium – ale idea pozostaje ta sama.
Tor pomiarowy.
Jak już wspominałem nie dysponuję laboratorium (komora bezechowa, czułe mikrofony, oscyloskop) więc wszystko zostało sprowadzone do absolutnego minimum.
Tor pomiarowy wyglądał następująco:
Jak już widać, że za mikrofon posłużyła funkcja dyktafonu z telefonu komórkowego Nokia E5. Nagrałem 5s materiału w najlepszej jakości (jaką tylko oferował telefon).
Następnie rozpakowałem plik mp4 do wav i przeszedłem do analizy.
Obliczenia.
Mając już plik wav pozostała już szybka obróbka w Matlabie.
Pierwszy plik to tylko pomocnicza funkcja wyliczająca kilka podstawowych parametrów sygnału wejściowego.
function [suma,srednia,sr_geom, wariancja] = obliczenia(x) %funkcja licząca sume elementow, srednia i wariancje suma = 0; suma_kw = 0; sr_geom = 1; for i=1:(length(x)) suma = suma + x(i); sr_geom = sr_geom*((abs(x(i)))^(1/length(x))); suma_kw = suma_kw + (x(i))^2; end srednia = suma/(length(x)); wariancja = suma_kw/(length(x) - 1);
Poniższy kod jest odpowiedzialny za całą resztę.
%Analiza danych z pliku wave
%Wczytanie pliku wave
[dane_wav,fs,format]=wavread('Wentylator.wav');
%wyrysowanie danych z pliku
wykresy_sygnalow=figure;
set(gcf,'Name', 'Wykresy wave');
plot(dane_wav);
%Wyliczanie podstawowych parametrow sygnalu
amplituda = (max(dane_wav) - min(dane_wav))/2;
maxim=max(dane_wav);
minim=min(dane_wav);
[suma srednia srednia_geom wariancja]=obliczenia(dane_wav);
wyniki(1) = maxim;
wyniki(2) = minim;
wyniki(3) = suma;
wyniki(4) = srednia;
wyniki(5) = srednia_geom;
wyniki(6) = wariancja;
wyniki(7) = amplituda;
%Wypisanie wynikow na ekran
wyniki'
%Wylicznie Szybkiej Transformaty Fouriera dla zadanego sygnalu
y1 = fft(dane_wav);
fs=2*fs;
for k=1:length(y1),
y1(k) = sqrt(real(y1(k))*real(y1(k))+imag(y1(k))*imag(y1(k)));
end;
zm = round(length(y1)/2);
y1 = y1(1:zm);
clear zm;
elementy = length(y1);
krok = (fs/2)/(elementy-1);
wfs1 = 0:krok:(fs/2);
%Wyrysowanie wykresu w dziedzinie czestotliwosci
wykresy_fft=figure;
set(gcf,'Name', 'Wykresy fft wave');
plot(wfs1,y1);
Pierwszy krok to wczytanie pliku wave do przestrzeni roboczej matlaba. Wykonujemy to za pomocą funkcjiwavread.
Następnie mamy wyświetlenie badanego sygnału na ekranie oraz wypisanie parametrów sygnału. Od linijki 28 następuje wyliczenie transformaty Fouriera-czyli reprezentacja sygnału w dziedzinie częstotliwości (linijka 29 to nic innego tylko wynik twierdzenia o próbkowaniu [tw. Kotielnikowa-Shannona / warunek Nyquista] ).
Na samym końcu następuje wyrysowanie wyników na ekran.
Wyniki.
Sygnał wejściowy z pliku wave:
Analizowany sygnał w dziedzinie częstotliwości:
Oczywiście należy pamiętać jak prymitywny był tor pomiarowy i jak wiele”śmieci” zarejestrowaliśmy (turbulencje związane z obudową wentylatora, drgania poprzez luzy na konstrukcji, zakłócenia z zewnątrz) jednakże na podstawie uzyskanych wyników widać w jakim zakresie wentylator generuje hałas.
P.S.
Plik z nagraniem pracy wentylatora znajduje się tutaj: Wentylator.



0 Komentarze.