Escolar Documentos
Profissional Documentos
Cultura Documentos
Atividade 03
Conforme supracitado, o sinal a ser filtrado é dado pela soma de três sinais, os quais estão apresentados
na Fig. 1. O primeiro sinal é composto por uma onda senoidal com frequência de 1 Hz. O segundo
sinal é uma onda quadrada com frequência de 5 Hz, e o terceiro sinal é uma onda triangular com
frequência de 10 Hz.
O sinal que se deseja recuperar é onda senoidal de 1Hz. Avaliando o espectro de frequência do sinal
de entrada, conforme apresentado na Fig.2. Observa-se que as frequências mais representativas desse
sinal são 1 Hz, 5 Hz, 10 Hz e 15 Hz. Como se deseja filtrar a sina de 1 Hz, a frequência de corte do
filtro deve estar entre: 1 𝐻𝑧 < 𝑓𝑐 < 5 𝐻𝑧.
Fig.2: Espectro de frequência do sinal de entrada
A frequência de corte é definida como a frequência correspondente a uma atenuação de 3 dB. Assim,
quanto mais próximo 𝜔𝑐 for de 1 Hz mais atenuado será o sinal de saída, no entanto, a característica
do sinal deverá ser mais similar àquela do sinal que se deseja recuperar, isto é, a senoide de 1 Hz.
Enquanto, quanto mais distante de 1 Hz for 𝜔𝑐 o sinal será menos atenuado, no entanto, a espera-se
que característica do sinal recuperado seja mais distante da senoide de 1 Hz, uma vez que, maior será
a banda de passagem do filtro e menos atenuada será a componente referente a onda de 5 Hz.
𝑓𝑐 = 1,5 𝐻𝑧
𝜔𝑐 = 1,5𝑥2𝜋
9,42482
𝐻(𝑠) =
(𝑠 2 + √2𝑥9,4248𝑠 + 9,42482
A partir da transformação bilinear (função própria do Matlab) esse sinal foi discretizado e foi
obtido H(z), a resposta filtrada pode ser visualizada na figura abaixo:
clc
clear all
close all
f = 2*(1-(-1)^n)/(n*pi).*sin(n*w*t);
sinal_2 = sinal_2+f;
end
figure(1)
subplot(4,1,1)
plot(t,sinal_1)
ylim([-1.5 1.5])
xlabel('tempo (s)')
ylabel('Amplitude')
title('Onda senoidal 1Hz')
grid on
subplot(4,1,2)
plot(t,sinal_2)
ylim([-1.5 1.5])
xlabel('tempo (s)')
ylabel('Amplitude')
title('Onda quadrada 5Hz')
grid on
subplot(4,1,3)
plot(t,sinal_3)
ylim([-1.5 1.5])
xlabel('tempo (s)')
ylabel('Amplitude')
title('Onda triangular 10Hz')
grid on
subplot(4,1,4)
plot(t,sinal)
xlabel('tempo (s)')
ylabel('Amplitude')
title('Sinal')
grid on
% PROJETO DO FILTRO
% Segunda ordem
% Butterworth
fc = 1.5;
wc = 2*pi*fc;
[Z, P, K] = butter(2,wc,'s');
den = conv([1 -P(1)],[1 -P(2)]);
h = tf(K,den);
% Transformada bilinear
[numd,dend] = bilinear(K,den,fs);
Hz = tf(numd,dend,Ts)
figure(2)
lsim(Hz,sinal,t);
% Filtro FIR
ordem_filtro = 3;
banda = 3;
d = designfilt('lowpassfir','FilterOrder',ordem_filtro,...
'PassbandFrequency',fc,'StopbandFrequency',banda,...
'SampleRate',fs);
sinal_filtradoFIR = filter(d,sinal);
figure()
plot(t,sinal_filtradoFIR)
xlabel('tempo (s)')
ylabel('Amplitude')
title('Sinal filtrado FIR - n = 3')
grid on
% Filtro FIR
ordem_filtro = 100;
banda = 3;
d = designfilt('lowpassfir','FilterOrder',ordem_filtro,...
'PassbandFrequency',fc,'StopbandFrequency',banda,...
'SampleRate',fs);
sinal_filtradoFIR = filter(d,sinal);
figure()
plot(t,sinal_filtradoFIR)
xlabel('tempo (s)')
ylabel('Amplitude')
title('Sinal filtrado FIR n = 100')
grid on
Hz =
Para verificação da resposta do filtro projetado foi, também, utilizado o Tinkercad. Para gerar o sinal
teste (composição das três ondas) foi utilizado um amplificador somador com ganho unitário. O
circuito implementado é apresentado na Fig. 12. O sinal teste e os sinais pelos quais é constituído,
podem ser vistos no osciloscópio.
Hz =
A saída pode ser vista no monitor serial do Arduino, observa-se que o resultado obtido é similar àquele
obtido na simulação computacional, por meio do Matlab, conforme esperado.
Implementando essa equação no Arduino, o resultado pode ser visualizado na Fig. 8. A saída pode ser
verificada no monitor serial do Arduino.
Assim como no caso anterior, a saída obtida a partir do projeto no Matlab pode ser verificada na
simulação do Tinkercad, ademais, cabe comentar que à medida que se aumenta a ordem do filtro FIR
mais esse filtro se aproxima de um filtro ideal e, portanto, menos “poluído” seria o sinal filtrado, no
entanto, mais complexa seria a equação diferença a ser implementada e por isso simulou-se apenas
para n = 3.