Uma aplicação da transformada rápida de FOURIER dsPIC e o processamento digital de sinal
Muitos estudantes de Engenharia se deparam no decorrer de seu curso com as fórmulas de Euller, as Séries e as benditas Transformadas de Fourier. Muitos se perguntam pra que aprender tantos cálculos? Vou utilizar isso algum dia? A ideia básica deste projeto foi mostrar de forma prática e didática uma aplicação da Transformada Rápida de Fourier.
Márcio Rogério de Godoy
Nota: Artigo publicado na Revista Saber Eletrônica 448 de 2010.
Antes de descrever o funcionamento do circuito, vamos relembrar um pouco da Transformada de Fourier. Basicamente um sinal pode ser representado de duas formas: uma no domínio do tempo e outra no domínio da frequência. O sinal no domínio do tempo pode ser obtido naturalmente como, por exemplo, um sinal sonoro, uma música, etc. Em algumas ocasiões a análise de um sinal se torna melhor compreendida se analisada no domínio da frequência, como no caso das harmônicas presentes em uma rede elétrica.
A Transformada de Fourier (FT) é utilizada para converter uma função ou sinal do domínio do tempo para o domínio da frequência, e vice-versa.
A Transformada Discreta de Fourier (DFT) é aplicada para sinais discretos no tempo (dados coletados por um conversor analógico- digital, por exemplo).
A Transformada Rápida de Fourier (FFT) foi desenvolvida para uma execução mais rápida dos cálculos da FT, possibilitando o seu uso na computação. Dentre as suas principais aplicações estão a filtragem digital, reconhecimento de padrões, bargraph para sinais de áudio, equalizadores, eliminações de ruído e interferência de imagens.
A FFT representa a soma de uma série de ondas senoidais de diferentes frequências, fases e amplitudes:

O desenvolvimento da linha dsPIC3OF da Microchip possibilitou a utilização de algoritmos complexos para os projetos devido à alta capacidade de processamento de dados (30 MIPS — Mega instruções por segundo), aliada às instruções de DSP que otimizam o processamento digital de sinais e facilitam a execução de programas em tempo real.
O circuito proposto faz uso de um microcontrolador e DSP (Controlador Digital de Sinal -DSC) dsPIC30F4013, que coleta um sinal na faixa de 0 a 3780 Hz, aplica a FFT, calcula a frequência de maior amplitude e mostra um gráfico com o espectro de frequência do sinal, com as 63 múltiplas harmônicas de 60 Hz. O programa faz uso da biblioteca "DSP Library" da Microchip, que possui os algoritmos necessários para a execução da FFT.
A figura 1 mostra o diagrama do circuito. São utilizados poucos componentes externos além do dsPIC e do display LCD. O circuito funciona independente do display e da comunicação serial, ou seja, o leitor pode montar somente a parte do display sem a comunicação serial (MAX232), ou vice-versa, conforme os recursos que tiver.
Funcionamento do circuito
O sinal de entrada é amostrado pela entrada analógica AN2 do dsPIC em uma frequência de amostragem de 7,68 kHz (fs), lembrando que o máximo de tensão que a entrada suporta é 5 volts. O capacitor C1 faz o acoplamento do sinal e os resistores R3 e R4 centralizam o sinal em 2,5 Vcc. O ADC de 12 bits é configurado para mostrar o sinal no formato fracionário com sinal, isto é, O - 5 V é representado numa escala de -1,0 a 1,0.
É executado o algoritmo da FFT sobre 128 amostras do sinal no tempo, obtendo a amplitude de 64 frequências do sinal. A frequência de amostragem e o número de 'pontos' amostrados foi calculado para se obter as frequências múltiplas de 60 Hz (fo), a qual é de interesse em muitas áreas da elétrica, principalmente para a análise de interferências harmônicas nas redes de energia elétrica.
A frequência de maior espectro é mostrada em um display LCD 16X2 juntamente com o seu módulo. As amplitudes das frequências são enviadas para um computador através da saída UART2, o MAX232 converte os níveis TTL para RS232 para serem enviados para a porta serial do PC. O programa Analisador de Espectro FFT-PIC, desenvolvido em Visual Basic, recebe os dados do dsPIC e mostra-os na forma de gráfico de barras para a visualização do espectro de frequências do sinal amostrado.
O programa do dsPIC
O código que roda no dsPIC foi desenvolvido em linguagem C, no ambiente de desenvolvimento MPLAB IDE, juntamente com o compilador MPLAB C30 da Microchip. O programa inicia na função Main () com a configuração dos PORTS de I/O e inicialização das variáveis. Os periféricos são configurados e iniciados com as funções:
• uart_init (), inicia a comunicação UART2/RS-232 a 9600 bps, 8 bits de dados, sem paridade e 1 bit de parada;
• init_adc12 (), inicia o conversor analógico- digital;
• init_timerl (), configura a interrupção do Time1 para uma amostragem de 7,68 ksps com o ADC;
• lcd_init (), configura o display LCD para comunicação com 4 bits de dados.
São enviadas as mensagens iniciais para o display com a função envia_mensagem (TXPtr), o programa passa então para um loop infinito aguardando o fim das 128 amostragens do sinal de entrada. Estes dados são escalonados para -0,5 a 0,5 e submetidos à Transformada Rápida de Fourier pela função FFTComplexIP (). A ordem dos dados de saída, já no domínio da frequência são organizados pela função BitReverseComplex (), o sinal complexo é convertido para real através de SquareMagnitudeCplx (). A função VetorMax () retorna o índice da frequência de maior espectro. Estas últimas 4 funções pertencem à biblioteca DSP Library. É calculada a frequência de maior espectro e enviada para o LCD, assim como o seu módulo.
A função transmite_dados () envia os dados das 64 frequências para o computador, são enviados primeiramente a parte inteira, depois a parte decimal e 3 bytes para controle da comunicação. O programa faz uso do temporizador WDT configurado para 4096 ms. Um LED, ligado no pino RFO, pisca intermitente quando o programa está sendo executado normalmente. A figura 2 ilustra o protótipo do circuito amostrando um sinal de 1020 Hz.
O programa do Analisador de Espectro FFT-PIC
O programa do Analisador de Espectro FFT-PIC foi desenvolvido no Visual Basic 6.0 e testado no Windows XP SP2. Com ele, é possível visualizar o espectro das frequências do sinal que foi amostrado pelo dsPIC. A comunicação com o DSC é feita através do controle MSComm que acessa a porta COM1 do computador. A comunicação serial está configurada para 9600 bps, 8, N, 1.
O formulário possui menus e botões para conectar e desconectar a porta serial, com indicação de status da comunicação e um indicador de erros nos dados. O pacote de dados recebido do dsPIC é mostrado em um gráfico de barras. Para gerar o gráfico foi utilizado o objeto ChartSpace, pertencente ao Office Web Components. 2 combobox permitem ajustar os eixos X e Y do gráfico.
O programa inicia com a rotina Load_Form () que carrega o formulário e inicia o gráfico. Cada byte recebido pela serial chama o evento MSComm1_OnComm (). Quando o pacote de dados for recebido, a rotina carregavalorFFT () atualiza o gráfico com os novos valores recebidos dos espectros das frequências, numa escala de amplitude de 0 a 100, e a frequência de maior módulo. Uma caixa de texto permite visualizar os dados que são recebidos. Na figura 3 pode ser visto o programa com um sinal amostrado de 1020 Hz.
O circuito pode ser testado utilizando-se um programa gerador de sinais para PC, que pode ser encontrado na internet. Para teste foi utilizada a versão de demonstração do programa Multi Tone Generator e gerado um sinal senoidal que variasse de 0 a 3780 Hz em 15 segundos na saída de som para fone de ouvido do computador, lembrando que a entrada analógica do dsPIC suporta de 0 a 5 Vcc.
As linhas dos programas do dsPIC e do VB foram comentadas para facilitar a compreensão do código. Todos os cálculos referentes às configurações dos registradores da comunicação UART, do conversor A/D, da interrupção do temporizador Timer1 e do temporizador do WDT estão escritos junto às suas funções no programa principal 'main.c' . O arquivo fuses.c' contém a programação dos bits de configuração do dispositivo como a ativação do oscilador interno, a multiplicação do clock (PLL) por 16 para a operação a 30 MIPS e atribuição do tempo do WDT.
Este software foi desenvolvido para mostrar um exemplo das diversas aplicações para a Transformada de Fourier e os recursos oferecidos pelo dsPIC, e pode ser utilizado para detectar a frequência de um sinal (em passos de 60 Hz) e também para visualizar o seu espectro de frequência, sendo muito útil para analisar componentes de interferência e harmônicas em um sinal.


















