Main Content

신호에서 60Hz 험 제거하기

미국 및 기타 여러 국가에서는 교류가 60Hz의 주파수로 진동합니다. 이러한 진동은 측정값을 손상시키는 경우가 많으므로 빼야 합니다.

60Hz 전력 공급선으로부터 잡음의 영향을 받고 있는 아날로그 계측기의 입력에서 개루프 전압을 조사해 보겠습니다. 전압은 1kHz로 샘플링되었습니다.

load openloop60hertz, openLoop = openLoopVoltage;

Fs = 1000;
t = (0:length(openLoop)-1)/Fs;

plot(t,openLoop)
ylabel('Voltage (V)')
xlabel('Time (s)')
title('Open-Loop Voltage with 60 Hz Noise')
grid

Figure contains an axes object. The axes object with title Open-Loop Voltage with 60 Hz Noise contains an object of type line.

버터워스 노치 필터를 사용하여 60Hz 잡음을 제거합니다. designfilt를 사용하여 필터를 설계합니다. 노치의 폭은 59Hz ~ 61Hz 주파수 구간으로 정의됩니다. 이 필터는 이 범위에 놓여 있는 주파수 성분 전력의 반 이상을 제거합니다.

d = designfilt('bandstopiir','FilterOrder',2, ...
               'HalfPowerFrequency1',59,'HalfPowerFrequency2',61, ...
               'DesignMethod','butter','SampleRate',Fs);

필터의 주파수 응답을 플로팅합니다. 참고로, 이 노치 필터는 최대 45dB의 감쇠량을 제공합니다.

fvtool(d,'Fs',Fs)

{"String":"Figure Figure 1: Magnitude Response (dB) contains an axes object. The axes object with title Magnitude Response (dB) contains 2 objects of type line.","Tex":"Magnitude Response (dB)","LaTex":[]}

filtfilt로 신호를 필터링하여 필터 지연을 보정합니다. 진동이 어떻게 크게 감소하는지 살펴봅니다.

buttLoop = filtfilt(d,openLoop);

plot(t,openLoop,t,buttLoop)
ylabel('Voltage (V)')
xlabel('Time (s)')
title('Open-Loop Voltage')
legend('Unfiltered','Filtered')
grid

Figure contains an axes object. The axes object with title Open-Loop Voltage contains 2 objects of type line. These objects represent Unfiltered, Filtered.

주기도를 사용하여 60Hz에서 "스파이크"가 제거되었음을 확인합니다.

[popen,fopen] = periodogram(openLoop,[],[],Fs);
[pbutt,fbutt] = periodogram(buttLoop,[],[],Fs);

plot(fopen,20*log10(abs(popen)),fbutt,20*log10(abs(pbutt)),'--')
ylabel('Power/frequency (dB/Hz)')
xlabel('Frequency (Hz)')
title('Power Spectrum')
legend('Unfiltered','Filtered')
grid

Figure contains an axes object. The axes object with title Power Spectrum contains 2 objects of type line. These objects represent Unfiltered, Filtered.

참고 항목

| | |

관련 항목