Trabalho sobre Série de Fourier

Sugere-se ler os tópicos abaixo listados:

Itens do trabalho

  1. Usando Série de Fourier, sintetize uma Onda Quadrada oscilando à 20 Hz, com aplitude de 1,0 Vpp, mas:

    a) Até sua 5a-harmônica (quinto componente não nulo);

    b) Até sua 25a-harmônica (vigésimo quinto componente não nulo).

    Apresente uma figura/tabela que compare lado à lado os gráficos geradas para os itens (a) e (b).

    Obs.: Os itens (a) e (b) devem mostrar um diagrama no tempo da forma de onda resultante e o espectro da onda (somente parte de magnitudes absolutas), além de uma tabela mostrando as amplitudes de cada harmônica.

     

  2. Simule uma onda quadrada que oscila à 20 Hz @ 1,0 Vpp, passando por um filtro Butterworth passa-baixas de 4a-ordem com frequência de corte em 50 Hz.

    Apresente um diagrama no tempo mostrado na mesma figura a onda quadrada original e o sinal filtrado. Deve resultar algo semelhante à:

    onda_quadrada_1KHz_filtro_2a_2KHz

    Obs.: a figura anterior representa uma onda quadrada que oscila à 2 Hz, passando por filtro passa baixas com frequencia de corte em 2 Hz.

    Mostre também o espectro original e filtrado da onda quadrada. Algo como:

    espectro_onda_quadrada_1KHz_filtro_2a_2KHz

    Na figura acima, a onda quadrada oscila à 1 KHz e passa por filtro passa-baixas com frequencia de corte em 2 KHz, tendo sido considerada até a 15a-harmônica. A curva em rosa corresponde ao espectro orignal da onda e a curva em azul, ao espectro da onda filtrada.

     

    Obs.: Use os valores levantados no item (1 (b)) anterior, isto é, sintetize a onda quadrada até sua 25a-harmônica.

     

O item (1) têm peso de 40% e o item (2) têm peso de 60%.


Anexos

i. Síntese de Onda Senoidal

Uma onda senoidal oscilando à 1 Hz @ 1,0 Vpp pode ser simulada fazendo-se:

.

Usando a função fplot():

ii. Síntese de Sinal Composto

Suponha agora que o sinal que queremos reproduzir no tempo seja composto por 2 senóides:

ou sejam, uma senóide, , de 1 Hz @ 1,0 Vpp e outra senóide, , oscilando à 4 Hz @ 0,25 Vpp, defasada de (inicia atrasada).

Usando fplot() ficaria:

Outra opção

Provavelmente será necessário criar um vetor tempo, e vetores para os sinas , e para poder resolver os itens deste trabalho.

Devemos gerar o vetor usando um "passo" ou fator incremental bastante baixo para evitar que apareçam distorções no traçado da onda dependendo da maior frequênica de interesse. Se sugere, "amostrar" o vetor tempo usando um incremente 50 vezes menor que o menor período de tempo da onda mais rápida. Neste caso, 3 Hz, então segundos.

O código para sintetizar estas ondas, de forma a visualizar até 2 ciclos do sinal de 1 Hz, ficaria então:

E o resultado seria algo como:

compondo_sinais

 

 

iii. Calculo Filtro Butterworth

O Matlab/Ocatve facilita o cálculo da expressão associada com um filtro Butterworth, usando-se a função butter():

No caso deste trabalho, se faz necessário descobrir a equação deste filtro, passa-baixas, analógico, com frequênica de corte de 50 Hz, então:

Note que este filtro possui um par de pólos complexos em e outro par em .

O diagrama de Bode deste filtro rende:

bode_FPB_butter_4a_50Hz

iii. Script para sintetizar onda Quadrada

Segue onda_quadrada_fourier.m usado para sintetizar uma onda quadrada usando série de Fourier:

iv. Script para considerar um filtro passa-baixas de 2a-ordem

Segue código exemplo FPB2a_ordem.m usado para computar impacto de um filtro de 2a-ordem Butterworth para certo sinal de entrada. Este script assume que você executou antes onda_quadrada_fourier.m.

Este script gera uma tabela compatível com Markdown na janela comandos. Algo como:

Obs.: Este script deverá ser adaptado para o filtro Butterworth de 4a-ordem objetivo deste trabalho.

v. Adaptando script anterior para FPB 4a-ordem

A parte do código FPB2a_ordem.m(do filtro de 2a-ordem) que computou magnitude e fase é:

e considerou equações definidas para filtro Butterworth passa-baixas de 2a-ordem:

Porém, para este trabalho deve ser considerado um filtro de 4a-ordem.

Se você sabe a equação deste filtro, pode substituir o na equação do mesmo, pelos valores de na frequênica (em rad/s) sendo considerada (lembrar que o Matlab é capaz de realizar operações matemáticas sobre números complexos).

Então... No caso do filtro de 4a-ordem:

Ou:

Se você encontrou os parâmetros deste filtro usando o Anexo iii (anterior), deve notar que está de posse dos coeficientes (denominador) e (numerador) deste filtro:

Então note, podemos calcular o ganho e defasagem gerados pelo filtro em determinada frequencia fazendo-se:

Note que os resultados obtidos anteriormente estão dentro do esperado na frequência de corte para este filtro em 50 Hz.

Adaptando-se estes cálculos no laço FOR que varia a frequência na qual o filtro deve ser aplicado, variável freq(k), basta fazer algo como:

Obs.: Falta pequenas adaptações para transformar FPB2a_ordem.m em algo como FPB4a_ordem.m.

v. Script para calcular impacto do Filtro

Segue código exemplo impacto_FPB.m que computa o impacto causado pelo filtro (executado na rotina anterior FPB2a_ordem.m) sobre os componentes da onda quadrada (calculados no script onda_quadrada_fourier.m). Note que estes 3 script devem ser executados em sequência sem limpar variáveis no ambiente do Matlab (sem usar comando clear entre a execução das mesmas).

Além de gráricos, o script anterior gera uma tabela (compatível Markdown) na janela de comandos como mostrado à seguir:

 


Fernando Passold @ 2025/1