Processamento Digital de Sinais - DSP - Parte 2

Processamento Digital de Sinais
Este post faz parte da série DSP. Leia também os outros posts da série:

Introdução

Na primeira parte dessa série de artigos foi apresentada uma breve história do processamento digital de sinais e alguns conceitos básicos. Nesse artigo serão abordados alguns conceitos específicos referentes ao processamento digital de sinais voltado para aplicações de análise espectral, filtragem digital de sinais, tratamento de sinais etc. Para isso devemos começar apresentando um pouquinho de teoria, nesse caso o teorema ou as séries de Fourier. Não vou transcrever as fórmulas e as demonstrações que se fariam necessárias para uma compreensão mais aprofundada desses desenvolvimentos. Vou apenas sintetizar e comentar os resultados de uma forma superficial e direta para tentar passar para você a essência desses conceitos. Quem quiser se aprofundar nesse tema, pode consultar diretamente a internet, pois há muito material disponível na rede,  ou então recorrer a um dos livros considerados como referências para esse assunto:

  • DFT/FFT and Convolution Algorithms - Theory and Implementation - C.S. Burrus and T.W. Parks (1984)
  • Discrete-Time Signal Processing - 3rd Edition - Alan V. Oppenheim & Ronald W. Schafer (2011)

 

 Séries de Fourier (Teorema de Fourier)

 

Jean-Baptiste Joseph Fourier desenvolveu um teorema muito interessante e curioso. O teorema mostra que toda forma de onda periódica pode ser decomposta em ondas senoidais, com frequências que são múltiplos inteiros da frequência fundamental da forma de onda original. Essas senóides são chamadas de harmônicas. São harmônicas pares, se os multiplicadores da frequência forem pares e harmônicas ímpares para os multiplicadores ímpares. Para ilustrar esse teorema, podemos aplicá-lo a uma onda quadrada de frequência ω, conforme pode ser observado na Figura 1.

Onda Quadrada Fourier _1
Figura 1: Composição de uma onda quadrada a partir das harmônicas

 

 

Observe que a decomposição da onda quadrada em harmônicas segue um padrão curioso: As harmônicas são todas ímpares e sua amplitude é dividida pelo índice da harmônica. Não é legal? Para ilustrar melhor esse exemplo, observe a Figura 2, onde foram somadas progressivamente as harmônicas de índices até 5, 11 e 49. Na Figura 2 também se observa que a somatória das harmônicas ilustradas ainda não formou uma onda quadrada perfeita. Para isso seria necessário realizar uma soma de infinitas harmônicas.

enter image description here
Figura 2: Efeito decorrente da soma de um número cada vez maior de harmônicas

 

 

É muito útil para o profissional que trabalha com processamento digital de sinais a utilização de ferramentas de software de matemática para engenharia ou ciências para geração de sinais de testes, verificação de hipóteses, etc. Os gráficos acima foram gerados em programas assim. Alguns dos programas mais conhecidos e populares são:

  • MATLAB
  • MATHCAD
  • MATHEMATICA
  • OCTAVE (Este é gratuito!)
  • SCILAB (Este é gratuito!)

 

 

Transformadas de Fourier

 

Considerando que, pelo teorema de Fourier, qualquer sinal periódico pode ser decomposto numa somatória de suas harmônicas, seria útil de se ter uma ferramenta que faça isso de forma direta. A transformada de Fourier faz isso. É uma operação matemática que, quando aplicada a um sinal qualquer, que está no domínio do tempo, o transforma  numa representação desse sinal no domínio das frequências, onde são representadas as frequências resultantes dessa transformação, suas respectivas fases e as amplitudes que compõem esse sinal. Essa transformação pode ser realizada em qualquer tipo de sinal, não precisa ser periódico. O resultado da transformada de Fourier no domínio das frequências também é conhecido como o espectro do sinal. Para ilustrar isso, observe a Figura 3, onde se vê uma forma de onda do tipo degrau.

Figura 3: Forma de onda não periódica
Figura 3: Forma de onda não periódica

Na Figura 4, podemos observar a transformada de Fourier correspondente. É bastante complexo, como pode-se notar.

Figura 4: Transformada de Fourier da forma de onda da Figura 3
Figura 4: Transformada de Fourier da forma de onda da Figura 3

A transformada resultante é uma sequência infinita de frequências com suas amplitudes e fases. Do ponto de vista teórico o resultado é lindo! Do ponto de vista prático, ainda não há como se aproveitar desse resultado para processá-lo digitalmente. Antes de continuarmos, vou listar abaixo algumas propriedades importantes das transformadas de Fourier e das correspondências bilaterais entre os domínios do tempo e das frequências:

Definindo que há a correspondência:        v(t)      ↔   V(f)

onde v(t) é uma função no tempo contínuo  e V(f) a sua transformada de Fourier no domínio das frequências.

Temos as seguintes propriedades:

Operação                                                  Função                                     Transformada

----------------------------------------------------------------------------------------------------------------

Linearidade                                            αv(t) + βw(t)                           αV(f) + βW(f)

Deslocamento no tempo                   v(t-td)                                        V(f)e-jwtd

Alteração de escala                             v(αt)                                           1/|α| V(f/α)

Dualidade                                              V(t)                                                v(-f)

Convolução                                           v * w(t)                                          V(f)W(f)

Multiplicação                                      v(t)w(t)                                          V*W(t)

-----------------------------------------------------------------------------------------------------------------

As propriedades acima nos permitem muitas vezes avaliar, se determinadas operações são melhores de serem realizadas no domínio do tempo ou no domínio das frequências, sem que o resultado das operações seja alterado,s. A lista completa dessas propriedades você pode consultar na internet, ou no livro:

  • Communication Systems, An Introduction to Signals and Noise in Electrical Communications - 5th Edition- de A. Bruce Carlson (2009).

Sistemas Amostrados - Teorema de Nyquist - Shannon

 

Para que se possa avançar um pouco mais em direção às aplicações práticas das transformadas de Fourier, é necessário que seja apresentado um pouco de teoria adicional. É a teoria que aborda os sistemas amostrados e suas propriedades. Suponhamos que um determinado sinal contínuo no tempo seja um sinal de banda limitada, cujo maior frequência é fc. O teorema de Nyquist-Shannon  demonstra que para que seja preservada toda a informação contida nesse sinal, é necessário que o sinal seja amostrado em períodos equi-espaçados no tempo de tal forma que a frequência de amostragem seja maior ou igual a duas vezes a frequência máxima fc do sinal. Parece mágica, não?  Vamos em seguida mostrar alguns efeitos decorrentes desse teorema.

Suponhamos que o espectro de um sinal, que queremos amostrar, seja contínuo no tempo e tenha banda limitada e cuja frequência máxima seja Fc, conforme pode-se observar na Figura 5.

Sinal_Banda_LImitada
Figura 5: Espectro de um sinal cuja banda está limitada

Se o sinal for amostrado com uma frequência de amostragem igual a duas vezes a máxima frequência do sinal (Fs = 2 * Fc), o espectro resultante pode ser visto na Figura 6.

Espectro_FS_2
Figura 6: Espectro do sinal amostrado com Fs = 2 * Fc

Repare que o espectro acaba sendo reproduzido infinitamente a cada múltiplo inteiro de Fs. Na Figura 7 pode-se observar o efeito chamado de aliasing, que ocorre quando a frequência de amostragem não obedece ao critério de Nyquist-Shannon e há uma sobreposição dos espectros do sinal. A consequência imediata disso é uma distorção do conteúdo espectral. Nesse caso a frequência de amostragem é   Fs < 2 * Fc.

Aliasing
Figura 7: Espectro decorrente de aliasing

Para completar a ilustração dos efeitos decorrentes das relações entre a frequência máxima do sinal e a frequência de amostragem, observe na Figura 8, quando Fs >> 2 * Fc. Na prática, utiliza-se quando possível, uma frequência de amostragem mínima entre oito e dez vezes a máxima frequência do sinal.

Sample_Maior
Figura 8: Espectro resultante de uma amostragem do sinal muito maior que Fc

 

 

Para fechar esse assunto, ainda precisamos apresentar a forma mais comum de se apresentar o espectro de um sinal amostrado. O gráfico mostra as frequências entre "zero" (0) e a frequência de amostragem Fs. Fica subentendido que esse espectro é repetido a cada Fs para cada lado do gráfico apresentado. Confira essa representação na Figura 9.

 

 

Outra_Representação
Figura 9: Representação usual do espectro de um sinal amostrado

 

 

 

Transformadas Discretas de Fourier - DFT (Discrete Fourier Transforms)

A transformada discreta de Fourier (DFT) é equivalente à transformada de Fourier, porém é aplicada a sinais do tempo discretizados, ou amostrados. É a principal ferramenta que se utiliza em processamento digital de sinais. Essa transformada revela o espectro do sinal discretizado, mostrando as senóides que compõem o sinal original, com suas amplitudes e fases. A principal diferença com relação à transformada de Fourier original é que o espectro é composto pelo mesmo número de frequências discretas que o número de amostras ao qual foi aplicada a transformada. Essas frequências são chamadas de raias. São como "janelinhas" que mostram o nível de sinal, se é que há algum, dentro dos seus limites.

A Figura 10 apresenta uma forma de onda quadrada discreta, com 32 amostras, destacadas como pontos vermelhos. As 32 amostras correspondem a 2 ciclos completos da onda.

Figura 10:
Figura 10: Onda quadrada amostrada

 

 

Na Figura 11 pode-se observar o  espectro (DFT) correspondente à primeiras 16 amostras (1 ciclo) no seu valor absoluto para simplificar a visualização. Observe que nesse caso, Fs = 16  * Fc. O espectro revela revela 16 raias no total, espelhadas em torno de Fs/2.

 

 

Espectro_1
Figura 11: Espectro da onda quadrada calculada com 16 amostras

 

 

Se for calculada a transformada discreta de Fourier (DFT) sobre a mesma onda amostrada, porém com 32 amostras, ou seja 2 ciclos completos da onda, obtém-se o espectro ilustrado na Figura 12. Repare que a distribuição das frequências se manteve, mas o espectro possui mais raias. São 32 ao todo.

Conclusão:  quanto mais amostras forem utilizadas para calcular a DFT, maior a resolução em frequência do resultado obtido.

 

 

Figura 11:
Figura 12: Espectro absoluto da onda quadrada calculada com 2 ciclos (32 amostras)

 

 

Se observarmos com atenção, as Figuras 10, 11 e 12 acima perceberemos que a frequência propriamente dita da forma de onda quanto as frequências do espectro desapareceram e foram transformadas numa sequência de amostras e uma sequencia de raias. A frequência original do sinal ficou implícita e a relação entre as frequências também.

Conclusão:  para qualquer que seja a frequência da forma de onda mostrada  na Figura 10, seus espectros serão os mesmos mostrados nas Figuras 11 e 12, se for mantida a relação entre essa frequência e a taxa de amostragem e se os espectros forem calculados sobre o mesmo número de amostras.

Não é genial???

Algumas considerações adicionais que devemos fazer quando calculamos uma DFT:

  • Deverá ser respeitado o critério de Nyquist-Shannon (só para relembrar!);
  • O sinal, a ser transformado, deverá ser de banda de frequências limitada;
  • A transformada discreta de Fourier, pressupõe que o sinal amostrado é necessariamente periódico.

O critério de Nyquist, por motivos óbvios deverá ser respeitado para que a informação, ou o espectro do sinal possa ser preservado.

Quanto à banda do sinal ser limitada, nem sempre é possível garantir isso quando se trata de sinais analógicos reais. É recomendado que sempre se utilize recursos eletrônicos analógicos de filtragem passiva ou ativa, do tipo filtros  passa-baixas, para definir melhor o limite da banda do sinal antes de realizar a mostragem por meio de conversores Analógicos / Digitais (A/D). Esse tipo de filtragem é conhecida por filtragem anti-alias ou anti-aliasing. Alguns conversores analógicos / digitais mais especializados, possuem internamente uma filtragem para limitação de banda de frequências. Nesse caso, o filtro externo é opcional.

A presunção de que a DFT é calculada sobre sinais periódicos deve ser sempre levada em consideração, pois se o sinal não o é, o resultado da DFT varia conforme o trecho que é analisado, não traduzindo a transformada em resultado coerente.

Transformadas rápidas de Fourier - FFT

 

As transformadas rápidas de Fourier, mais conhecidas por FFT (Fast Fourier Transforms) nada mais são do que algoritmos para computador desenvolvidos especialmente para realizar a transformada discreta de Fourier de forma rápida e eficiente. Existem inúmeras variantes desses algoritmos, cada um otimizando o desempenho para um tipo de resultado diferente que se espera obter no final.

"Janelamento de Sinais"

 

Há situações em que o sinal analógico e contínuo, ao qual será aplicada a transformada de Fourier discreta, é nitidamente periódico, mas devido a um efeito indesejável causado pelo ponto em que se inicia a amostragem, o sinal apresenta descontinuidades nas suas extremidades, causando o aparecimento de frequências inexistentes ou fictícias no espectro desse sinal, que na prática traduz-se na forma de um ruído de fundo. Para rapidamente ilustrar esse efeito, suponhamos que o sinal a ser analisado seja o da Figura 13. Se forem tomados todas as amostras desse sinal conforme mostradas nessa figura, o espectro resultante está mostrado na Figura 14. Note que a escala vertical está normalizada e em dB, para que se possa comparar os espectros diretamente.

 

 

Figura 13 Sen[oide amostrada
Figura 13 Senóide amostrada

 

 

Espectro_da_senoide_40
Figura 14: Espectro da senóide original

Se for reduzido o número de amostras, o sinal amostrado fica conforme ilustrado na Figura 15, e o respectivo espectro normalizado na Figura 16.

Senoide_Amostrada_Descon_50_80
Figura 15: Senóide amostrada com descontinuidade
Figura 16: Espectro da senóide com descontinuidade
Figura 16: Espectro da senóide com descontinuidade

 

 

Nesse caso em particular o efeito acabou sendo um pouco sutil. Para minimizar esse efeito indesejável foram criadas as técnicas de janelamento. Existem muitos tipos de janelamento, algumas listadas a seguir:

  • Retangular;
  • Triangular;
  • Hanning;
  • Hamming;
  • Kaiser-Bessel;
  • Flattop;
  • Blackman.

 

Cada janela tem suas características próprias e realça alguma característica do espectro, quando aplicada. O importante é frisar que o janelamento não distorce o conteúdo espectral do sinal. Apenas realça algumas partes. O detalhamento desse assunto é um capítulo à parte, poderia ser matéria de outro artigo técnico. Aqui vou apenas mostrar a aplicação da janela de Hanning ao nosso exemplo. A janela de Hanning é uma das janelas mais utilizadas em processamento digital de sinais. Na Figura 17 pode-se observar o formato da janela de Hanning. Na Figura 18, o efeito produzido pelo janelamento, em que as amostras da janela e as amostras do sinal são multiplicados um a um. Na Figura 19 pode-se observar o espectro resultante dessa operação sobre a senóide com descontinuidade. O efeito sobre o espectro é espantoso, pois praticamente eliminou o ruído de fundo desse espectro.

Figura 17: Janela de Hanning
Figura 17: Janela de Hanning
Figura 18: Senóide janelada
Figura 18: Senóide janelada
Figura 19: Espectro da senóide janelada
Figura 19: Espectro da senóide janelada

 

 

Com a apresentação do janelamento encerramos aqui o nosso curso introdutório  expresso de processamento digital de sinais. O assunto é muito extenso, tem inúmeras áreas especializadas, tais como tratamento de imagens, ou reconhecimento de voz, telecomunicações, entre muitas outras. Se você tiver perguntas, dirija-as ao site Embarcados que na medida do possível tentaremos respondê-las.

Nos próximos artigos vamos apresentar mais alguns detalhes dessa arte.

Outros artigos da série

<< Processamento Digital de Sinais - DSP - Parte 1
Este post faz da série DSP. Leia também os outros posts da série:

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

31
Deixe um comentário

avatar
 
8 Comment threads
23 Thread replies
1 Followers
 
Most reacted comment
Hottest comment thread
12 Comment authors
MichellyGuilherme HollwegHaroldo AmaralPaulo BayardVinicius Maciel Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Michelly
Visitante
Michelly

Olá Henrique.
Muito bem explicado.
Sou aluna de Mestrado na UFU e estou usando o DSP para fins de controle de um inversor.
Até mais.

Guilherme Hollweg
Visitante
Guilherme Hollweg

Olá, Henrique.
Ótima matéria e excelente site. Parabéns!
Vou acompanhar sempre.
Sou aluno de final de graduação em engenharia elétrica da UFSM, e trabalho com sistemas embarcados há uns bons anos, pouco antes de ingressar no curso. Estava discutindo com uns amigos aspirantes a engenheiros eletricistas, e nos surgiu uma dúvida. Creio que tu possa me esclarecer. hehe
As harmônicas pares de sinais periódicos são sempre destrutivas/nulas?
Se aplicarmos Fourier em um sinal periódico não puro, perceberemos que as componentes pares se anulam, pois são integrais simétricas, pares, e consequentemente zero.
Devemos considerar harmônicas pares em sinais periódicos? Li algo que motores e outros dispositivos sofrem com a sexta harmônica, por exemplo, o que me deixa na dúvida. Dei uma pesquisada a cerca do assunto, mas não achei muito material.
Poderia me esclarecer?
Muito obrigado!

Paulo Bayard
Visitante
Paulo Bayard

Em 1º lugar parabenizar pelo blog estou entrando na área de eletrônica e estou com uma divida para
determinar qual deve ser a menor frequência para fazer a amostragem de um sinal com as características
abaixo
frequancia de amostragem

Fundamental: 5 KHz

Harmônica 1: 10 KHz

Harmônica 2: 15 KHz

Harmônica 3: 20 KHz
Se possivel me explicar pois ja pesquisei sob teorema não consegui resolver esse exercicio, qual livro me recomendaria para meu enriquecimento cultural

HERTZ
Visitante
HERTZ

Olá Henrique muito legal o blog, esta me ajudando muito. Gostaria de uma ajuda, estou fazendo um analisador de espectro para áudio (com 128 pontos) com microcontrolador e display de LED. Gostaria de sua ajuda. Teria algum algum algoritmo para cálculo de FFT ou FHT em linguagem C, para me disponibilizar ?

Abraço

HERTZ
Visitante
HERTZ

Agradeço ao retorno Henrique
Justamente esse livro que estou utilizando, porem esse algoritmo é lento para minha aplicação, leva cerca de 117ms só para fazer calculo da FFT.
Abraço

HERTZ
Visitante
HERTZ

Estive conversando com Marcelo Jo, e ele me recomendou utilizar o código de Goertzel, citou seu nome inclusive, não sei ainda como funciona mas esta nos planos fazer esse teste.
Estou utilizando microcontrolador 8 bits a 16MHz.
No caso de uma FFT de 128 pontos o ideal para minha aplicação seria um tempo de 20ms para a execução do calculo.

HERTZ
Visitante
HERTZ

Obrigado pela força Henrique.
Implementei o Goertzel. Simples e funciona. No meu caso tive que executar o Goertzel 20 vezes, um para cada valor de frequencia desejada. Neste caso as 20 execuções foram mais demoradas que a a minha FFT.
Sei que minha tarefa com esse micro não é impossivel pois neste analisador: https://www.youtube.com/watch?v=w9uCCSE4KBo .. esse analisador foi feito com um Atmega 8bits rodando a 8MHz. Acredito ter uma ferramenta de calculo muito veloz.

Vinicius Maciel
Membro
Vinicius Maciel

Ola HERTZ,

Existe um detalhe. Você disse que usa um microcontrolador de 8 bits a 16MHz, seria um PIC da Microchip?

Um Atmega rodando a 8MHz é mais rápido que um PIC rodando a 16MHz porque ele executa as instruções em um único ciclo de máquina, ou seja, 1 dividido pela frequência de operação. Enquanto que o PIC precisa de quatro ciclos, isto é, 4/Freq.

Então, ATmega--> 1/8MHz=125ns, PIC16F --> 4/16MHz=250ns.

HERTZ
Visitante
HERTZ

Olá Vinifr. Estou usando um STM8S105 que roda a exatos 16MHz. Com tempo de instrução de 62,5ns.

HERTZ
Visitante
HERTZ

Realmente Henrique, parece que você deu uma olha no meu software, isso mesmo que eu faço.

Tenho um buffer com os dados do display e um timer exclusivo para fazer o controle do display, funcionam sem parar.
Em paralelo com isso tenho um outro timer responsável pelo período de amostragem, apos fazer as 128 amostras o timer é desativado e então faço o calculo da FFT ou goertzel, atualizo o buffer do display e ativo o timer da amostragem novamente... assim pensei...

Gostei dessa ideia sua de atualizar o display para cada frequência calculada e não para todos de uma vez só, vou testar assim que der.

Pensei também em aproveitar seu algoritmo para que algumas partes dele possam ser reaproveitadas para o calculo de múltiplas frequências. Já pensou nisso ?

Obrigado pelas suas dicas!

HERTZ
Visitante
HERTZ

Henrique, me tira uma duvida, quando você diz para fazer de 3 a 10 atualizações por segundo, o que realmente você quer dizer?

HERTZ
Visitante
HERTZ

Boa tarde Henrique, ontem encontrei um algoritmo mais veloz que o meu, pouca coisa. Estou conseguindo fazer a amostragem do sinal(128 amostras a 40KHz), o calculo da FFT e atualizar o buffer do display em 100ms... isso faz com que meu dado no display seja atualizado 10 x por segundo, me corrija se eu estiver errado..

Quando eu falo que a velocidade de processamento da FFT é insuficiente, é baseado no fato de ter a impressão que o dado do display não corresponde ao som escutado naquele instante. Existe um certo atraso.

Haroldo Amaral
Membro
Haroldo Amaral

Hertz, você poderia indicar onde encontrou este outro algoritmo? Estou estudando um pouco sobre o assunto.

Obrigado!

HERTZ
Visitante
HERTZ

Opa! Faz o pedido pelo e-mail que assim que chegar em casa te mando o link.
[email protected]
Ate mais!

Caio Pereira
Membro
Caio Pereira

Uma referência bem bacana e gratuíta é o site http://www.dspguide.com (The Scientist and Engineer's Guide to Digital Signal Processing By Steven W. Smith, Ph.D.)

Severino S. Santos
Visitante
Severino S. Santos

Caro Henrique,

Na minha tentativa de aprender sobre DSP como autodidata, procurei e li várias fontes, mas esse seu artigo esclareceu muito principalmente pela forma clara e até lúdica da explicação, muito obrigado. Eu desconheço algum curso ou fonte para aprender DSP aqui no Brasil, presencial de preferência, que não esteja inserido em outros como Telecomunicações por exemplo, para profissionais com experiência em eletrônica e embarcados, ou seja um curso específico, se souber de algum, eu agradeço a indicação.

Abraço.

Severino S. Santos
Visitante
Severino S. Santos

Caro Henrique,

Obrigado pela atenção e agradeço desde já a sua ajuda.

Sucesso.

Abraço

Daniel Mazzer
Membro
Daniel Mazzer

Ola Henrique,
Muito legal o artigo.
Para complementar a lista de softwares científicos livres, recomendo o Octave (http://www.gnu.org/software/octave/), que inclusive está ganhando uma interface gráfica em sua nova versão (http://www.phoronix.com/scan.php?page=news_item&px=MTU1NDg).
Aguardo os próximos artigos!
Abraço!

Celso Bairros Varella Neto
Membro
Celso Bairros Varella Neto

Ótimo artigo Henrique.

Sou geofísico e trabalho com processamento de sinais, mais especificamente sinais sísmicos e sismológicos, onde tenho que processar os dados, aplicando filtros, deconvolução, etc, para posteriormente realizar uma análise dos mesmos. Através de seus artigos foi possível esclarecer algumas dúvidas.

Irei ficar aguardando os próximos artigos!!!!!

Marcelo Jo
Membro
Marcelo Jo

Olá Henrique ótimo post!

Sim, existe o octave e eu fiz um post um dia de como compilar ele no meu blog (http://www.marcelojo.org). Quando tiver tempo, posso traduzir e colocar também no embarcados!)