Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Eliminar el zumbido de 60 Hz de una señal

La corriente alterna en Estados Unidos y en muchos otros países oscila a una frecuenta de 60 Hz. Estas oscilaciones corrompen a menudo las mediciones y deben eliminarse.

Estudie el voltaje de lazo abierto en la entrada de un instrumento analógico en presencia de ruido de un cable de luz a 60 Hz. El voltaje se muestrea a 1 kHz.

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.

Elimine el ruido de 60 Hz utilizando un filtro de nudo de Butterworth. Utilice designfilt para diseñar el filtro. El intervalo de frecuencia entre 59 y 61 Hz define el ancho del nudo. El filtro elimina al menos la mitad de la potencia de los componentes de frecuencia que se encuentran dentro de ese rango.

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

Represente la respuesta en frecuencia del filtro. Tenga en cuenta que este filtro de nudo proporciona hasta 45 dB de atenuación.

fvtool(d,'Fs',Fs)

Figure Magnitude Response (dB) contains an axes object. The axes object with title Magnitude Response (dB) contains 2 objects of type line.

Filtre la señal con filtfilt para compensar el retardo del filtro. Observe cómo las oscilaciones disminuyen significativamente.

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.

Utilice el periodograma para comprobar que se ha eliminado el "pico" a 60 Hz.

[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.

Consulte también

| | |

Temas relacionados