Posts com Tag ‘DSP’

 railroad-generator-190667_1280.

Introdução

Dentre as diversas técnicas disponíveis para a manutenção preditiva de máquinas rotativas, utiliza-se muito a que é baseada na análise do sinal de vibração. Informações importantes sobre o estado de uma máquina podem ser obtidas pela análise de espectro do sinal de vibração. Amplitudes de sinal de vibração devido a falhas de rolamentos e engrenagens são centenas de vezes menores do que as amplitudes de sinal devido a problemas frequentes de desbalanceamento. Geralmente a energia de tais sinais aparece em frequências que são múltiplas da frequência de rotação da máquina e normalmente não ultrapassam os 5 kHz. Assim, o espectro a ser analisado deve ter uma alta resolução de frequência e ampla faixa dinâmica (60 dB).

O coletor e analisador detalhado a seguir é um instrumento portátil que permite que um operador possa coletar e analisar o sinal de vibração no campo, medido diretamente na máquina que se deseja analisar. Este artigo técnico apresenta todas as etapas do desenvolvimento desse instrumento, desde o hardware e o software até a avaliação do desempenho do processamento de sinal.


 

Hardware

O projeto de hardware levou em consideração as especificações da aplicação, tais como portabilidade, reduzido consumo de energia e grande capacidade de processamento. Na Figura 1 é mostrado o diagrama de bloco funcional do coletor e analisador de vibrações. O sinal do sensor (aceleração, velocidade ou deslocamento) é amplificado para garantir uma conversão A/D de 12 bits com o máximo de aproveitamento de sua faixa dinâmica. Também foram considerados frequências de corte selecionáveis (20 kHz ou 10 kHz) e filtros analógicos de anti-aliasing do tipo Butterworth, que coincidem com as frequências de amostragem do conversor A/D (51,2 kHz ou 21,6 kHz). Foi utilizado um processador digital de sinais (DSP) de ponto fixo para implementar os algoritmos necessários.

 Os menus de operação do instrumento e gráficos de dados coletados são exibidos num display de cristal líquido gráfico que possui 128 linhas x 240 colunas. Um teclado permite ao operador escolher funções específicas por meio de navegação através dos menus. Uma interface serial permite que o instrumento realize a troca de dados com PCs e compatíveis. Memórias do tipo EEPROMs armazenam as rotinas de programa relacionadas com gráficos, processamento de sinais e exibição de menus. Uma memória do tipo RAM de 1 MByte  armazena os sinais coletados em campo (domínios do tempo e frequência) e dados do PC, tais como informações sobre uma determinada rota de manutenção (tipos de máquina, sensores e as posições onde fixá-los) e dados coletados anteriormente para possibilitar comparações.

.

Coletor 1

Figura 1 – Bloco funcional do coletor / analisador de vibrações

.

Processamento digital de sinal

 A conversão para os domínios de frequência é feita por meio da aplicação de algoritmos FFT (Fast Fourier Transform). Por meio desses algoritmos, para N amostras no domínio do tempo, espaçados por Δt segundos, são obtidas N amostras, chamados linhas ou raias, igualmente espaçadas no domínio da frequência na faixa entre zero e a frequência de amostragem. A distância entre as linhas de espectro (resolução = Δf) é dada pelo quociente entre a frequência de amostragem (fs) e o número de linhas N. Assim, a resolução é inversamente proporcional ao tempo total de aquisição T (Δf = fs/N = 1/N * Δt = 1/T).

 Para realizar o cálculo das linhas do espectro é utilizada uma FFT de base-2 complexa do tipo DIF (decimação em frequência), seguida por um algoritmo que obtém 2N linhas de números reais a partir do cálculo de uma FFT complexa de N linhas (Brighman, 1974) de forma a se conseguir obter mais velocidade e eficiência nos cálculos. A partir dos menus, o operador pode escolher o número de linhas (100, 200, 400, 800, 1600, 3200) da FFT antes de iniciar a aquisição. Considerando que os sinais medidos são reais (não complexos) e nesse caso apenas a metade das amostras são de interesse, o algoritmo é mais eficiente para um número de linhas que sejam uma potência de número inteiro de dois. Assim, para N linhas mostradas, é necessário calcular 2,56 * N linhas.

 As faixas de frequência disponíveis no equipamento são [0 – fmax], onde fmax = 20, 10, 5, 2 e 1 kHz e 500, 200, 100 e 50 Hz. Foi adotada uma solução híbrida para a redução de fs. No começo é realizada uma filtragem analógica, seguida de uma conversão A/D, onde é feita uma redução da frequência de amostragem (Figura 1). Depois o sinal passa por uma filtragem digital seguida de uma eliminação de amostras, processo conhecido como decimação (Figura 2).

.

Coletor 2

Figura 2 – Diagrama do processamento digital do sinal

.

A frequência de corte do filtro digital é definida internamente como o valor de fmax, e a frequência de amostragem da sequencia do sinal reduzida para 2,56 * fmax. Assim, por exemplo, com fmáx = 50 Hz e N = 3200 é alcançada a mais alta resolução do instrumento: 15,5 mHz (50Hz/3200), por meio de uma FFT real de 8192 linhas.

 A principal vantagem de se utilizar filtros digitais é que as suas características não variam com a temperatura nem com o envelhecimento. No caso desse equipamento, o processo de filtragem deve ser realizado em tempo real. Para isso foram desenvolvidos filtros digitais elípticos do tipo IIR (Infinite Impulse Response) utilizando a aproximação da forma direta II. Se fossem especificados filtros do tipo FIR (Finite Impulse Response) com os mesmos parâmetros de projeto, seriam gerados filtros de ordem muito elevada, que consumiriam uma grande quantidade de tempo de processamento e um grande espaço de memória. Não seria possível atender às outras especificações de projeto se utilizados os filtros FIR. As especificações da banda de passagem e banda de rejeição dos filtros são compatíveis com a resolução do conversor A/D. O fato de que os filtros IIR têm a característica distorcer as fases do sinal de forma não-linear não é importante neste caso, porque mesmo o sinal sendo distorcido no domínio do tempo, a magnitude espectral não é alterada.

 Na análise de espectro (FFT) também é necessário realizar a convolução do sinal de entrada com uma função de janelamento para minimizar o espalhamento espectral indesejado (spectral leakage). Para isso, funções de janelamento tais como Flattop, uniforme e Hanning (Figura 2) também foram implementadas. Essas funções são amplamente utilizadas em análise de vibração.

Avaliação

Ao implementar filtros digitais, funções de janelamento e algoritmos de FFT em aritmética de precisão de comprimento finito (ponto fixo), é necessário prestar um pouco mais de atenção nos seguintes aspectos (Figura 3a), que podem afetar a precisão e o desempenho do equipamento:

  • Quantização de bits do conversor A/D;
  • Estouro do valor calculado;
  • Quantização dos coeficientes (filtros, funções de janelamento, “fatores de twiddle” da FFT);
  • Ruído decorrente da precisão de comprimento finito.

Como uma forma de avaliar o desempenho dos algoritmos implementados, foram desenvolvidas algumas rotinas em MATLAB, vinculadas com o simulador TMS320 para a família de DSPs TMS320C2x da Texas Instruments (Figura 3b).

.

Coletor 3

Figura 3 –(a) Processamento ideal x Processamento de ponto fixo – (b) Ambiente de avaliação de desempenho do processamento

.

A estratégia para realizar a avaliação dos algoritmos baseou-se na comparação dos resultados do simulador do DSP com aqueles obtidos utilizando-se o MATLAB (ponto flutuante com precisão dupla). Esta avaliação foi realizada com sinais de teste previamente estabelecidos. Sinais de entrada tais como um impulso unitário ou a soma de senóides de diversas frequências e também ruído branco foram aplicados ao equipamento. Esses sinais acabaram tanto provando serem apropriados como estímulos de teste, como também permitiram a compreensão de alguns fenômenos do processo. Os algoritmos de FFT, filtragem e funções de janelamento foram inicialmente avaliadas separadamente e depois em conjunto.

Conclusão

O protótipo do coletor e analisador de vibração desenvolvido correspondeu a todas as especificações de projeto. Com esse projeto foi alcançado um bom nível de conhecimento em aplicações de processamento de sinal digital (DSP) e microprocessadores dedicados.

Saiba mais

Este artigo técnico pressupõe que o leitor tenha conhecimento dos fundamentos de processamento digital de sinais. Os artigos a seguir abordam esses fundamentos:

.

Agradecimentos

Agradeço aos membros da equipe de projetos que desenvolveu esse equipamento, Ney R. Moscati, Rogério Casagrande e Luiz Carlos I. Anraku pela coautoria na elaboração deste artigo técnico.

.

Referências

[1] Brigham, The Fourier Transform, Prentice Hall, 1974

[2] Burrus, C.S.;Parks, T.W., DFT/FFT and Convolution Algorithms – Theory and implementation, John Wiley & Sons, 1985

[3] Burrus, C.S.;Parks, T.W., Digital Filter Design, John Wiley & Sons, 1987

[4] Cooley, J.W.; Tukey, J.W., An algorithm for the Machine Computation of Complex Fourier Series, Mathematics of Computation, 19, pp. 297-301, April 1965

[5] Oppenheim, A.V.; Schafer, R.W., Discrete-Time Signal Processing, Englewood Cliffs NJ, Prentice-Hall International, 1989

[6] Texas Instruments, Digital Signal Processing Applications (TMS320 Family), 1986

.

Creative Commons License
Esta obra, “Coletor e analisador portátil de vibração para máquinas rotativas “, de Henrique Frank W. Puhlmann, foi licenciada sob uma Licença Creative Commons Atribuição-NãoComercial-CompartilhaIgual 3.0 Não Adaptada..

Dreamstime-recortado-660x400

.

Introdução

No artigo Trazendo o mundo real para dentro do processador – Conversor A/D foram mostrados alguns efeitos decorrentes da quantização de um sinal analógico num número finito de valores inteiros, definido pelo número de bits de resolução de um conversor Analógico / Digital. Neste artigo serão apresentados alguns recursos interessantes que o processamento digital de sinais pode oferecer. A sobre-amostragem (oversampling), aumento artificial da taxa de amostragem (upsampling) seguida de uma filtragem de reconstrução, ou interpolação, e a decimação (downsampling), que é a redução artificial da taxa de amostragem. São técnicas de processamento digital de sinais simples, porém muito poderosas.

.

Oversampling

Dá-se o nome de Oversampling à ação de realizar uma amostragem do sinal muito acima da frequência mínima de amostragem, determinada pelo critério de Nyquist-Shannon, ou seja, no mínimo 2 vezes a maior frequência do sinal a ser digitalizado. É boa prática amostrar o sinal com taxas de pelo menos 8 a 10 vezes a maior frequência do sinal. Para se fazer um oversampling, pode-se utilizar taxas maiores que 32 vezes a frequência mínima.

Por que fazer um oversampling?

Existem dois motivos principais para se utilizar desse recurso. O primeiro motivo é a simplificação do filtro analógico de anti-aliasing na entrada do conversor A/D, necessário para evitar o aparecimento de frequências fictícias na faixa útil do sinal decorrentes dos efeitos da amostragem. No caso de oversampling, pode ser utilizado um filtro passivo simples do tipo R-C, que muitas vezes já está incorporado aos conversores A/D, dispensando o uso de filtros analógicos ativos. Se necessário, pode-se aplicar ainda um filtro digital para reduzir ainda mais os sinais indesejados. O segundo motivo é o aumento de resolução em número de bits. A relação entre o aumento de resolução em bits e a taxa de amostragem mínima é a seguinte:

Formula-e1443962433291

Isso funciona, desde que o sinal seja periódico e o conversor A/D possua uma linearidade que não comprometa essa ação. Ao longo do texto serão apresentados scripts desenvolvidos para o programa Octave, que geraram os dados e as figuras apresentadas a seguir. O leitor pode copiar esses scripts e simular essas e outras situações que desejar. Será necessário também instalar o pacote adicional do Octave com funções de processamento digital de sinais, o pacote Signal.

O script a seguir gera uma senoide ideal que servirá de base para o oversampling e a posterior quantização.

Prog1

O script a seguir gera a quantização e o espectro (FFT) do sinal gerado pelo script anterior, assim se pode observar os efeitos do oversampling.

Prog2

Na Figura 1 a seguir pode-se observar o espectro da senoide amostrada com taxa de 16 amostras por ciclo e quantizada para 8 bits.

Oversampling, Upsampling e Downsampling: Senoide ideal quantizada para 8 bits

                   Figura 1 – FFT da senoide ideal quantizada para 8 bits

Se aplicarmos uma sobre-amostragem de 256 vezes, rodando o script alterando, o valor de Num_Bits_Ovr para 4, visando aumentar a resolução para 12 bits, obtemos o espectro mostrado na Figura 2.

Oversampling-12-bits

Figura 2 – FFT da senoide ideal quantizada para 8 bits e amostrada para obter 12 bits de resolução

Observando a Figura 2, pode-se notar que o número de amostras é muito grande (64 vezes maior). E vale lembrar que resolução não é o mesmo que precisão. Muitos conversores A/D especificam um parâmetro chamado de EOB (Efective number of bits – número efetivo de bits), que sempre é menor que a resolução do conversor A/D e determina a efetiva precisão do componente. Para fins de comparação observe a Figura 3, onde está retratada a FFT de uma senoide, amostrada 16 vezes por ciclo, quantizada para 12 bits de resolução. Repare que o nível do ruído de quantização se encontra num nível semelhante ao do espectro obtido após o oversampling.

FFT_Senoide_quantizada_12

Figura 3 – FFT de senoide ideal amostrada para 12 bits

 .

Upsampling

Upsampling é um técnica de processamento digital de sinais para aumentar artificialmente a taxa de amostragem em N vezes, inserindo um número N-1 de zeros entre as amostras originais do sinal, e passando o conjunto obtido por um filtro de reconstrução, que nada mais é que um filtro do tipo passa-baixas. Para mostrar essa técnica utilizaremos o programa anterior ligeiramente modificado. O script a seguir simula o upsampling da senoide ideal e realiza a filtragem de reconstrução.

Prog3

Na Figura 4 pode-se observar como fica o sinal original intercalado com zeros entre as amostras, nesse caso com 255 zeros (fator_up = 256).

Upsampling1

Figura 4 – Gráfico mostrando a senoide intercalada com 255 zeros

Evidentemente essa técnica impõe limites de aplicação. É intuitivo o fato que quanto maior a interpolação, mais a informação referente ao sinal original é distorcida ou perdida. Na Figura 5 pode-se observar a forma de onda resultante após a reconstrução da senoide original interpolada para aumentar a taxa de amostragem em 8 vezes (fator_up = 8). O filtro de reconstrução é do tipo FIR, que não distorce a fase do sinal.

Recosntruct

Figura 5 – Senoide reconstruída

Escolhendo o trecho da onda reconstruída que está livre dos transitórios decorrentes da filtragem, e calculando a FFT desse trecho, obtém-se o espectro mostrado na Figura 6.

FFT-reconstruída

                                 Figura 6 – FFT da onda reconstruída

Note que houve uma melhora do nível de ruído de quantização, quando comparado com o espectro original. O script a seguir calcula a FFT da senoide reconstruida.

Prog4

.

Downsampling

Downsampling ou decimação é a técnica de redução da taxa de amostragem. Isso é feito simplesmente separando uma amostra a cada N. Há uma inevitável distorção do sinal. Na Figura 7 está retratada a forma de onda decimada e na Figura 8 o seu espectro.

Senoide-decimada

                                         Figura 7 – Senoide decimada

FFT-decimada

                                  Figura 8 – FFT da senoide decimada

O script para gerar a decimação ilustrada nas Figuras 7 e 8 encontra-se a seguir.

Prog5a

Prog5b

.

Conclusão

As técnicas apresentadas neste artigo técnico são muito úteis para a manipulação de sinais digitalizados. São aplicadas para se desenvolver sistemas de controle ou filtragens adaptativas. É necessário relembrar que, como quase tudo na vida real, essas técnicas têm limitações que devem ser consideradas, e que não existem soluções perfeitas. As soluções são sempre de compromisso. Assim cabe ao projetista escolher, segundo os seus critérios, a melhor solução para o seu projeto.

.

Referências

[1] Processamento Digital de Sinais – DSP – Parte 2

[2] Enhancing ADC resolution by oversampling

Crédito para a imagem destacada: Roundness – Van Truan | Dreamstime Stock Photos

Licença Creative Commons
Esta obra, “DSP – Oversampling, upsampling e downsampling “, de Henrique Frank W. Puhlmann, foi licenciada sob uma Licença Creative Commons Atribuição-NãoComercial-CompartilhaIgual 3.0 Não Adaptada.

cropped-id-100802101.jpg

Introdução

As transformadas discretas de Fourier ou DFTs (Discrete Fourier Transforms) permitem que o espectro de frequências de um sinal à qual essa transformada é aplicada seja disponibilizado para sistemas digitais ou computacionais. Elas transformam um sinal real, contínuo no tempo, amostrado adequadamente, numa decomposição discreta de suas frequências. Neste artigo técnico vamos abordar uma particularização da transformada conhecida por algoritmo de Goertzel (ou transformada de Goertzel).

.

A DFT de Goertzel

A transformada discreta de Goertzel é uma simplificação da DFT tradicional. Ela calcula o conteúdo espectral de uma única raia e não o espectro todo. Isso diminui consideravelmente o volume de cálculos necessários, podendo facilmente ser utilizado em aplicações práticas. Por exemplo, em telefonia digital é necessário realizar a detecção dos tons de linha, ocupado ou chamada. Também é necessário realizar a captura de teclas digitadas por usuários, quando esses acessam um serviço de computação digital do tipo URA (Unidade de Resposta Audível) ou semelhante. O sistema de tons das teclas do telefone é conhecido por sistema DTMF (Dual-Tone Multi-Frequency signaling). Para compreender melhor o sistema DTMF de telefonia, veja a Tabela 1, onde é mostrado como é composto o tom multi-frequencial de cada tecla do telefone.

Tabela 1 – Composição frequencial do teclado DTMF

Teclado Telefone DTMF

.

Quando o DTMF foi criado, a detecção dos tons das teclas era realizada por meio de filtros analógicos passa-faixas sintonizados. Com a chegada dos sistemas digitais, essa detecção passou a ser realizada por técnicas de processamento digital de sinais usando-se o algoritmo de Goertzel. Para maiores detalhes consulte as referências [1] e [3].

Para ilustrar a diferença entre a transformada discreta de Fourier e a de Gortzel podemos observar nas figuras a seguir o resultado simulado de uma operação de DFT num sinal hipotético (Figura 1) e o cálculo da DFT de Goertzel para uma determinada frequência desse sinal (Figura 2).

 

.

Espectro DFT

Figura 1 – Espectro de um sinal hipotético

.

Espectro Goertzel

Figura 2 – DFT de Goertzel calculada no mesmo sinal hipotético

.

Observe que numa situação ideal, após o cálculo da DFT de Goertzel as demais frequências do espectro são totalmente suprimidas. Em situações reais, isto não é bem assim. Mas adiante serão abordados alguns cuidados que deverão ser tomados quando se utiliza esse algoritmo.

A seguir vamos mostrar as fórmulas resultantes do desenvolvimento do algoritmo de Goertzel. O desenvolvimento completo dessas fórmulas pode ser encontrado nas referências. O resultado da DFT de Goertzel é calculado em duas fases: A primeira em que se processam N amostras do sinal e a segunda em que se calcula o resultado final.

 

Primeira fase (Repetir N vezes)

Form1

Onde:

 

x(n) = amostra atual do sinal a ser processado;

z(2) = z(0) atrasado de duas amostras;

z(1) = z(0) atrasado de uma amostra;

z(0) = resultado acumulado da primeira fase;

coefk = 2 * cos(2 * π * k/N);

N = número de amostras a serem utilizadas no cálculo;

k = N * Fi/Fs => Fi = frequência desejada e Fs = frequência de amostragem.

 

Segunda fase (Cálculo final da amplitude na frequência desejada)

Form2

 

Ou então a magnitude:

Form3

 

A função a seguir, desenvolvida para o programa Scilab, implementa o algoritmo de Goertzel. O algoritmo é muito simples!

Goertz2

Observe que quanto mais k se aproximar de um número inteiro, maior a precisão na detecção da amplitude da frequência desejada. Para citar um exemplo, voltamos ao caso do DTMF. Como se trata de um sistema de telefonia, podemos pressupor que a taxa de amostragem do canal telefônico é de 8 kHz. Na referência [3], é apresentada a seguinte tabela exemplo para N = 105  e o “k” calculado para cada frequência do DTMF (Tabela 2).

 Tabela 2 – Valores de k para N = 105

Tabela DTMF 2

.

Note que para 697 Hz o valor de k calculado é de 105 * 697 / 8.000 = 9,148 e foi truncado para 9. A detecção das frequências de DTMF com os valores calculados na Tabela 2 tem um erro máximo de ± 3,0% .

Tanto a escolha de N como k,  como tudo na vida real, é uma solução de compromisso. Quanto maior N, maior a resolução em frequência no espectro, maior a atenuação das frequências indesejadas e mais estreito o filtro para a frequência desejada. Quanto maior o N, maior o tempo de processamento que será necessário para calcular a DFT. Nas Figuras 3 e 4 são ilustradas duas situações onde a relação de k/N = 4, porém K e N diferentes em cada figura.

 

Goertz 1

Figura 3 – Resposta em frequência da DFT de Goertzel p/ k = 1 e N = 4

 

Goertz 2

Figura 4 – Resposta em frequência da DFT de Goertzel p/ k = 8 e N = 32

.

Conclusão

A DFT de Goertzel é um recurso muito interessante do ponto de vista de aplicação de processamento digital de sinais, pois realiza uma filtragem bastante seletiva e com baixo gasto de processamento. As aplicações em telefonia são as mais conhecidas e óbvias. Mas seu uso também pode ser interessante em sensores com excitação em corrente alternada senoidal, tais como sensores de posicionamento linear, ou sensores de massa, torque ou pressão, que utilizem pontes de Wheatstone.

 .

Saiba mais

Para um melhor embasamento teórico, recomendo a leitura dos artigos técnicos:

 

Referências

[1] Discrete Time Signal Processing – Allan V. Oppenheim, Ronald W. Schafer, John R. Buck

[2] The Scientist and Engineer’s Guide to Digital Signal Processing  – Steven W. Smith 

[3] Modified Goertzel Algorithm in DTMF Detection Using the TMS320C80

.

Licença Creative Commons
Esta obra, “Transformada Discreta de Fourier – Algoritmo de Goertzel“, de Henrique Frank W. Puhlmann, foi licenciada sob uma Licença Creative Commons Atribuição-NãoComercial-CompartilhaIgual 3.0 Não Adaptada.

 

 railroad-generator-190667_1280

 

Introduction

One of the available techniques for predictive maintenance of rotating machines is based on vibration signal analysis. Important information about the state of a machine can be obtained by signal spectrum analysis. Vibration signal amplitudes due to bearing and gear faults are hundreds of times smaller than signal amplitudes due to often present unbalances. Generally speaking, the energy of such signals appears in frequencies which are multiple of the machine rotating frequency, and typically do not exceed 5 kHz. Thus, the spectrum must have a high resolution in frequency and large dynamic range (60 dB).

The following collector and analyzer is a portable instrument which enables an operator to collect and analyze the signal at the field. This work presents all the development steps of the instrument, from hardware, software, signal processing to performance evaluation.

.

Hardware

Hardware design considered application specifications such as portability, reduced energy consumption and enhanced processing capability. In Figure 1 is shown the functional block diagram of the vibration collector an analyzer. The signal of the sensor (acceleration, velocity or displacement) is amplified to guarantee a 12 bit A/D conversion. Selectable cut-off frequency (20 kHz or 10 kHz), anti-aliasing analog filters (Butterworth) matched to A/D sample frequencies (51.2 kHz or 21.6 kHz) are included. A digital signal processor (DSP) is used to implement the algorithms. Instrument operation menus and graphs of collected data are displayed on a 128 line/ 240 columns liquid crystal display. A keyboard enables the operator to choose specific functions. A serial interface enables the instrument to interchange data with PCs and compatibles. EEPROMs store routines related to signal processing, graphs and display menus. A 1 Mbyte RAM stores the signals (time and frequency domains), and data from the PC such as information about a a maintenance route (machine, positions and sensors types) and previous collected data to make comparisons possible.

 Figura 1

Figure 1 – Functional block diagram of the vibration collector and analyzer

.

Digital signal processing

The conversion to the frequency domains is done by FFT (Fast Fourier Transform) algorithms. In these algorithms, for N samples in the time domain, spaced by Δt seconds are obtained N samples, called lines, equally spaced in the frequency domain between zero and the sample frequency. The distance between the spectrum lines (resolution = Δf) is given by the quotient between the sample frequency fs and the number of lines N. Thus the resolution is inversely proportional to the acquisition time T (Δf = fs/N = 1/N * Δt = 1/T).

A DIF (Decimation in Frequency) complex radix-2 FFT is used, followed by an algorithm that obtains a real 2N line FFT from a complex N line FFT (Brighman, 1974). The operator can choose the number of lines (100, 200, 400, 800, 1600, 3200) of the FFT before starting the acquisition. Considering that for real signals only half of the samples are of interest, the algorithm is efficient for a number of lines that is an integer power of two, for N lines shown, it is necessary to calculate 2.56 * N lines.

The available frequency ranges are [0 – fmax], where fmax = 20, 10, 5, 2 and 1 kHz and 500, 200, 100 and 50 Hz. A hybrid solution for the fs reduction was adopted. At first, analog filtering followed by A/D sample frequency reduction is done (Figure 1) and then digital filtering followed by elimination of samples, process known as decimation (Figure 2).

Figura 2

Figure 2 – DSP processing diagram

.

The cut-off frequency of the filter is set to the value of fmax, and fs is reduced to 2.56 * fmax. Thus, with fmax = 50 Hz and N = 3200, the highest resolution of the instrument, 15.5 mHz (50Hz/3200) is reached, with a real 8192 line FFT.

The main advantage of digital filters is that their characteristics do not vary with temperature and aging. Filtering process must be performed in real time. Elliptic IIR (Infinite Impulse Response) filters were developed in the direct form II approach. FIR (Finite Impulse Response) filters, if specified with the same design parameters, would yield large order filters which consume a large amount of processing time and a large memory space, failing to match other design specifications. The specifications of the pass-band and stop-band of the filters are matched to the A/D converter resolution. The fact that these filters have a non-linear phase characteristics does not matter in this case, because even if the signal is distorted in the time domain, the spectral magnitude will not be altered.

In spectrum analysis (FFT)it is necessary to convolute the input signal with a window function to minimize spectral leakage. Window functions such as Flattop, Uniform and Hanning (Figure 2) are implemented. These functions are widely used in vibration analysis.

.

Evaluation

When implementing digital filters, window functions and FFT algorithms in finite length precision arithmetic (fixed point) some attention is needed in the following aspects (Figure 3a):

  • Bit quantization of the A/D converter;
  • Overflow;
  • Coefficient quantizations (filters, window functions, “twiddle factors”);
  • Finite length precision noise.

As a way to evaluating performance of the implemented algorithms, some routines were developed in MATLAB, linked with the TMS320 simulator (Figure 3b).

Figura 3

Figure 3 – (a) Ideal processing x Fixed-point processing (b) Processing performance evaluation environment

.

The strategy for evaluating the algorithms was based in comparing the results of the TMS simulator with those attained using MATLAB (floating point/ double precision). This evaluation was performed with pre-established test signals. Input signals such as an impulse, or sum of sinusoids and also white noise were applied, which as well as proving to be appropriate to the problem in question, also allowed the understanding of some process phenomena. The algorithms of FFT, filters and window functions were first evaluated separately and then altogether.

.

Conclusion

The vibration collector/ analyzer prototype developed matched all design specifications. With this design, a knowledge in digital signal processing (DSP) applications and dedicated microprocessors was attained. The next step in evaluation will be the testing of the equipment with real machine signals, by a staff specialized in mechanical vibrations. It is important to mention that with a few modifications this device can be used on other engineering applications such as civil, electrical etc.

As a concluding remark, we emphasize that the researcher involved with the vibration analysis area must realize on the importance of DSP. Thus, some theoretical knowledge in ho the instrument works and DSP is needed.

.

Authors

  • Puhlmann, Henrique Frank W.
  • Moscati, Ney R.
  • Casagrande, Rogério
  • Anraku, Luiz Carlos I.

.

Bibliography

Brigham, The Fourier Transform, Prentice Hall, 1974

Burrus, C.S.;Parks, T.W., DFT/FFT and Convolution Algorithms – Theory and implementation, John Wiley & Sons, 1985

Burrus, C.S.;Parks, T.W., Digital Filter Design, John Wiley & Sons, 1987

Cooley, J.W.; Tukey, J.W., An algorithm for the Machine Computation of Complex Fourier Series, Mathematics of Computation, 19, pp. 297-301, April 1965

Oppenheim, A.V.; Schafer, R.W., Discrete-Time Signal Processing, Englewood Cliffs NJ, Prentice-Hall International, 1989

Texas Instruments, Digital Signal Processing Applications (TMS320 Family), 1986

.

Creative Commons License
This work, “Development of a portable data collector and analyzer for rotating machine vibrations“, by Henrique Frank W. Puhlmann, Ney R Moscati, Rogério Casagrande, Luiz Carlos I. Anraku, is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Caro(a) Colega,

Nesse artigo são abordados alguns conceitos fundamentais do processamento digital de sinais, sem entrar muito na matemática da coisa. Esse artigo foi publicado originalmente no site Embarcados e é de minha autoria.

Para ler outros artigos técnicos nesse blog, acesse a seção de ARTIGOS TÉCNICOS. Mais artigos técnicos com o foco em sistemas embarcados, acesse diretamente no site Embarcados.

Abraço,

Henrique

consulte sempre um engenheiro eletrônico

======

Processamento Digital de Sinais – DSP – Parte 2

Waves_700x300

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)
  • The Scientist and Engineer’s Guide to Digital Signal Processing –  – Steven W. Smith (Pode-se ler online de graça e baixar o livro em pdf)

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.

Figura_1_Onda-Quadrada-Fourier-_1-315x206

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.

Figura_2
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-contínua_300

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_300

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.

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.

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.

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

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

Figura_9_Outra_Representação

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

 

Transformadas Discretas de Fourier – DFT ( Discrete Fourier Transform)

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.

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_Onda-Quadrada-Discretizada_60-660x351

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.

Figura_11_Espectro_11

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_12_Espectro-Discreto-Onda-Quadrada_60-660x351

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 _ (Fast Fourier Transform)

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_Senoide_Amostrada_60_80_90-660x351

Figura 13: Senóide amostrada

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

Figura_15Senoide_Amostrada_Descon_50_80

Figura 15: Senóide amostrada com descontinuidade

Figura_16_Espectro_Descon_40

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_40

Figura 17: Janela de Hanning

Figura_18_Senóide-janelada_40

Figura 18: Senóide janelada

Figura_20_Espectro_HAnning_40

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.

Leia também:

 

Licença Creative Commons
Esta obra, “Introdução ao Processamento Digital de Sinais – DSP – Parte 2“, de Henrique Frank W. Puhlmann, foi licenciada sob uma Licença Creative Commons Atribuição-NãoComercial-CompartilhaIgual 3.0 Não Adaptada.

Caro(a) Colega,

esse assunto é bastante complexo, difícil, porém muito interessante. Vou tentar passar para você uma ideia do que é processamento digital de sinais e da sua importância. Esse artigo foi publicado originalmente no site Embarcados e é de minha autoria.

Para ler outros artigos técnicos nesse blog, acesse a seção de ARTIGOS TÉCNICOS. Mais artigos técnicos com o foco em sistemas embarcados, acesse diretamente no site Embarcados.

Abraço,

Henrique

consulte sempre um engenheiro eletrônico

==================

Processamento Digital de Sinais – DSP – Parte 1

6350332-133870-illustration-technology-background_700x300

Introdução

O processamento digital de sinais (DSP – Digital Signal Processing) de maneira geral já faz parte do nosso cotidiano. Ele está presente nos celulares, nas câmeras fotográficas, televisores, nos automóveis, computadores, equipamentos médicos, sistemas de automação, de controle, de comunicação, etc. Poucas pessoas porém, têm consciência da exata dimensão da ciência envolvida e da complexa tecnologia que está por trás de tudo isso. Para nós, usuários, é tudo muito simples e fácil de usar. Basta apertar um botão.

 Nessa sequência de artigos, vou abordar de uma maneira bastante superficial esse tema e explicar alguns tópicos básicos e importantes sobre processamento digital de sinais. Não tenho a pretensão de apresentar um curso sobre esse assunto.  Isso seria muito longo e tedioso. Quem quiser realmente estudar esse assunto, pode consultar o livro a seguir:

  • Discrete-Time Signal Processing – 3rd Edition – Alan V. Oppenheim & Ronald W. Schafer (2011)

Analógico x Digital

Todos os sistemas ou processos naturais são na sua essência analógicos. O desenvolvimento da eletrônica foi pelo mesmo caminho:  analógica em sua essência. Dessa forma, condicionamentos de sinais, filtragens e até operações matemáticas eram implementadas de forma analógica. Não existiam meios computacionais que pudessem ser utilizados de maneira eficiente e economicamente viáveis para a implementação de equipamentos mais complexos. A FIGURA 1 ilustra um circuito eletrônico analógico com alguma complexidade.

 Como tudo que é natural, os componentes eletrônicos também estão sujeitos às variações de condições ambientais, tais como temperatura, umidade, envelhecimento, pressão, ataques químicos, corrosão, etc. Fazia-se necessária a utilização de complexos procedimentos de compensação para corrigir os erros decorrentes dessas variações.

Stock image of 'Printed-circuit board- It is photographed by close up'

FIGURA 1: Circuito analógico

Com a criação dos primeiros circuitos integrados por volta do início dos anos de 1960 e a posterior criação dos microprocessadores integrados em silício a partir de 1971, foi aberto o caminho para se pensar em digitalizar os sinais do mundo real e processá-los digitalmente. A vantagem mais óbvia do sinal digitalizado é que esse sinal não sofre mais as variações a que os sinais analógicos estão sujeitos. Pode-se reduzir as interfaces analógicas ao mínimo, o suficiente para transformar o sinal analógico em digital com precisão e deixar que o microprocessador se encarregue de tratar e processar esse sinal. O mesmo ocorre para o caso de se fazer necessária a saída para o mundo real, convertendo-a para um sinal analógico. Ao mesmo tempo abriu-se uma oportunidade ainda pouco explorada de desenvolver tecnologias para os sinais digitalizados. As possibilidades são quase infinitas.

Highslide JS

FIGURA 2: Processador INTEL 4004

Contínuo x Discreto

Os sinais analógicos são por natureza contínuos no tempo. São teoricamente constituídos por uma sequência de infinitos pontos. Quando digitalizamos esses sinais, eles passam por um processo conhecido por amostragem e são transformados numa sequência finita de pontos discretos. Essa transformação é realizada por componentes conhecidos como conversores Analógicos / Digitais ou simplesmente conversores A/D. A transformação dos sinais digitais em analógicos é realizada por componentes eletrônicos conhecidos por conversores Digitais / Analógicos, ou conversores D/A. Na FIGURA 3, pode-se observar um exemplo do processo de transformação do sinal analógico contínuo em um sinal discretizado.

Continuo_Discreto

FIGURA 3: Transformação do sinal analógico em discreto

O efeito decorrente devido à amostragem do sinal é visível: O sinal discretizado não é exatamente igual ao sinal analógico. Na FIGURA 3 o sinal discretizado é uma reprodução grosseira do sinal original. Isso tem uma série de consequências e implicações. Por outro lado, transformar um sinal contínuo em sinal discreto traz as vantagens de se poder adequar o  tamanho do sinal a ser processado à capacidade limitada de memória dos processadores. A memória do processador, por maior que seja, é sempre finita, assim como sua capacidade de processamento. Aqui já apontamos alguns dos problemas que devem ser levados em consideração e resolvidos quando se pensa em projetar sistemas de processamento digital de sinais.

Afinal, o que é Processamento Digital de Sinais?

Ao leigo pode parecer que o processamento digital de sinais só é possível de ser realizado com o auxílio de DSPs, processadores integrados em silício especialmente desenvolvidos para essa função. Isso é um engano compreensível. Os DSPs são processadores com uma arquitetura de hardware diferenciada, desenvolvidos para a realização de operações típicas da implementação de procedimentos de processamento digital de sinais. Muitos fabricantes adotaram uma arquitetura conhecida como Arquitetura de Harvard, onde existem vias de dados e de endereçamento separados para as memórias de dados e de instruções, um conceito bem mais moderno que a arquitetura tradicional de Von Neumann. Na Arquitetura de Harvard é possível endereçar e acessar numa mesma instrução mais de uma posição de memória simultaneamente, num único ciclo de máquina.  Apesar de terem uma arquitetura diferenciada, os DSPs podem ser utilizados como microcontroladores, tanto que há uma pressão por parte de alguns fabricantes desses componentes, de que  também sejam adotados esses DSPs para operações convencionais. Alguns deles foram até rebatizados de DSCs (Digital Signal Controlers), ou seja controladores digitais de sinais.

O processamento digital de sinais propriamente dito, é uma tecnologia, uma ciência, uma série de conceitos abstratos que se traduz na aplicação de algoritmos computacionais para a realização de operações específicas sobre dados digitais. Alguns exemplos de processamento digital de sinais:

  • Filtragem digital de sinais;
  • Reconhecimento e síntese de voz;
  • Tratamento e reconhecimento de padrões em imagens;
  • Rádio e TV digitais;
  • etc.

Os algoritmos de processamento digital de sinais podem ser executados em DSPs, desenvolvidos especialmente para otimizar o desempenho desses algoritmos e permitir operações em tempo real. Porém, mantidas as devidas proporções e em aplicações adequadas, pode-se realizar o processamento digital de sinais em microprocessadores comuns, com baixo desempenho, ou até off-line num computador pessoal, tablet, etc.

No próximo segmento iremos nos aprofundar um pouco mais na teoria e nos detalhes dessa arte, como por exemplo o que são transformadas de Fourier, DFT, FFT, Critério de Nyquist – Shannon, entre outras coisas. Tudo isso e um pouco mais no artigo Processamento Digital de Sinais – DSP – Parte 2

Licença Creative Commons
Esta obra, “Introdução ao Processamento Digital de Sinais – DSP – Parte 1“, de Henrique Frank W. Puhlmann, foi licenciada sob uma Licença Creative Commons Atribuição-NãoComercial-CompartilhaIgual 3.0 Não Adaptada.

Caro(a) Colega,

a minha experiência profissional é baseada no desenvolvimento de software básico (firmware) para microprocessadores, microcontroladores de 8 ou 16 bits e DSPs (Digital Signal Processors). Qual o sistema operacional que costumo utilizar? Nenhum desses tradicionais. Na verdade, em geral desenvolvo os sistemas para os meus projetos. Para os tipos de processadores citados dificilmente tem algum sistema operacional que seja enxuto e eficiente.  Afinal, processadores de 8 ou 16  bits são relativamente lentos, possuem pouca memória interna, mas têm grandes vantagens, dependendo da aplicação em que são utilizados: são simples, baratos, diminutos no seu tamanho físico e extremamente eficientes para pequenas aplicações. Tem algumas versões de microcontroladores PIC, por exemplo,  com encapsulamento de 8 pinos.

Retornando ao assunto do sistema operacional, no meu caso, de certa forma, um loop infinito é um sistema operacional de alta eficiência se associado a outros recursos dos processadores, tais como temporizações e interrupções por hardware. É uma maneira de se unir as vantagens citadas dos microcontroladores e conseguir um desempenho em tempo real adequado para algumas aplicações.

Quando se fala de software de tempo real, deve-se lembrar que isso não implica na necessidade de se realizar as tarefas no menor tempo possível, mas sim em que a velocidade de processamento, monitoramento e controle do seu projeto deve ser suficientemente veloz  e compatível com a velocidade de resposta do sistema para o qual ele foi projetado. Existem processos, principalmente os térmicos,  que levam horas ou até dias para progredirem ou mudarem de estado. Neste caso, não é necessário que o processador execute todo o seu programa em frações de segundos. Poderia até levar horas para isso, pois não afetaria o desempenho do sistema como um todo e ainda assim seria um sistema de tempo real.

Para poder ilustrar o que foi dito até aqui com um resultado prático e real do uso dessas boas práticas, vou apresentar rapidamente algumas características de um projeto que desenvolvi. Trata-se de um equipamento que faz uma varredura periódica em até 32 detectores de vazamento de combustíveis e cuja principal função é a proteção ambiental na medida em que previne a contaminação do solo de postos de combustíveis.

Algumas características do equipamento:

  • Permite a  reconfiguração sempre que necessário;
  • É capaz de detectar curto-circuitos ou rompimento dos cabos dos sensores;
  • Sinaliza a varredura por meio de LEDs;
  • Sinaliza falhas por meio de códigos apresentados em displays de 7 segmentos;
  • Gera um registro em memória não volátil a cada evento anormal, gravando a data e hora dessa ocorrência e a data/hora de quando o a ocorrência foi solucionada;
  • Quando solicitado, gera um relatório formatado para uma  impressora;
  • Gerencia um teclado;
  • Gerencia um relógio de tempo real;
  • Conecta-se em rede a um computador ou à internet para permitir um monitoramento remoto.

Tudo isso  e algumas coisinhas a mais, sendo executado num microcontrolador de 8 bits da família MCS-51, com clock de 4 MHz, 12 kBytes de memória EEPROM, 256 Bytes de RAM e  que custa em torno de R$ 20,00 no varejo.

O software foi todo escrito em C. Seu código fonte tem em torno de 8.000 linhas de programa.  É incrível? Mágica? Nem tanto…

Vale ressaltar que até hoje, 10 anos depois da primeira versão, tive que realizar apenas uma pequena correção no software e alterações decorrentes do upgrade do microprocessador para versões mais atualizadas.

Mas voltemos ao tema. Essas práticas funcionam muito bem se aplicadas a microcontroladores.  Pode ser que não sirva para você, se acaso você trabalha com um software de alto nível, Visual C por exemplo. Desenvolvo meus projetos de software na forma estruturada, aplicando práticas de encapsulamento de entradas e saídas, essas típicas de software orientado a objetos.

O que é um software estruturado?

Para quem não conhece, discorrendo resumidamente sobre o assunto, um software estruturado é organizado em blocos, o fluxo é muito bem definido e tem regras rígidas  para a recursão. Em princípio cada bloco tem uma entrada e uma saída e não se utiliza o recurso do “GOTO” em hipótese alguma, pois ele destrói e corrompe qualquer organização que se tenha realizado no software. A linguagem C, por exemplo, é na sua essência uma linguagem computacional com características de software estruturado. Difícil, não é? A seguir vou explicar e fundamentar porque se deve dar preferência à programação estruturada no caso de microcontroladores e alguns DSPs.

Representação gráfica de um programa estruturado.

Fonte: DEVMEDIA

Porque não usar programação orientada a objeto?

O principal motivo para não usar programação orientada a objeto é o tamanho do código gerado. Outro motivo é o fato de se  perder um pouco o controle de como o código é gerado e de como a memória é utilizada. Isso complica muito quando é necessário otimizar o código principalmente quando a velocidade de processamento é crítica. Quando se utiliza a linguagem C, depois de algum tempo você aprende a escrever seu código de forma a favorecer a sua otimização. Na hora do aperto, dá até para inserir inline pequenos trechos de código em Assembly (Não é recomendado, mas às vezes não há alternativa…).  Isso te dá o controle quase total sobre o que vai ser gerado no final, o quanto de memória vai ser utilizado, como vai ser utilizada essa memória, etc.

Reconheço as qualidades do software orientado a objetos, tais como a portabilidade, velocidade de desenvolvimento de código e, facilidade de manutenção , até porque aproveitei o encapsulamento de dados, típico de programação orientada a objetos,  para melhorar o software estruturado. Apenas afirmo que para o uso em microprocessadores de 8 e 16 bits, frequentemente não é a melhor alternativa. Acredito também, que com o avanço das tecnologias dos compiladores de linguagens orientadas a objeto, pode ser apenas uma questão de tempo para que esses compiladores se tornem mais eficientes e produzam resultados melhores que os compiladores de linguagens estruturadas.

O que é encapsulamento de entradas e saídas?

É um método  de organização do software que determina regras rígidas para o acesso aos parâmetros ou recursos de um determinado periférico. O acesso tem que ser realizado sempre por meio de um mesmo conjunto de rotinas. Por exemplo: suponhamos que você tenha previsto a utilização de um canal de comunicação serial no seu projeto e que haja a necessidade de se utilizar uma rotina para transmitir dados e outra para receber dados. Se o canal de comunicação for organizado de forma encapsulada, qualquer acesso ao canal serial deverá obrigatoriamente se dar por meio dessas mesmas rotinas de qualquer ponto do seu programa. Assemelha-se muito ao conceito de objeto e métodos associados, conforme definido na programação orientada a objetos, não é mesmo? A diferença é que esse objeto e os métodos associados não são genéricos, mas feitos sob medida para essa aplicação. Por isso que ela tem todas as vantagens decorrentes dessa forma de organização aliada às vantagens de ser específica: enxuta, veloz entre outras.

Vale ressaltar que a aplicação desse método a um programa estruturado deve ser realizada por iniciativa e disciplina do desenvolvedor, uma vez que os compiladores de linguagens estruturadas não oferecem ferramentas ou facilidades para fazê-lo.

Qual a vantagem dessa forma de organização?

Uma vez depuradas as rotinas que administram o seu periférico, você não precisa mais se preocupar com elas ou com o funcionamento dele. Se acaso for detectada alguma falha nesse conjunto, você corrige essas rotinas e todo o seu programa volta a funcionar corretamente.

Para ilustrar o que foi dito até aqui, no final desse artigo, disponibilizei o código de duas rotinas que escrevi para acessar uma E2PROM serial. Essas rotinas têm outros elementos recomendados de boas práticas, que discutiremos nos próximos artigos.

Talvez o jovem profissional, já habituado a utilizar ferramentas de produção de software orientadas a objeto ou de alto nível, não perceba a diferença. Isso porque as ferramentas orientadas a objeto já encapsulam os dados naturalmente. É que é muito comum o programador de software básico ou firmware, por pressa ou preguiça, não organizar o programa desse jeito e acessar diretamente o seu periférico de diversos pontos do seu programa.  É uma grande tentação fazer isso e confesso, que se o programa é pequeno, talvez até seja uma solução rápida. Quando funciona bem, que maravilha!!!!! Mas quando dá “pau” …. É um inferno!!! Fica quase impossível encontrar o problema no código e evitar que a correção do problema eventualmente mal planejada se propague de forma negativa e gere  outros defeitos imprevistos em outras partes do código.

Nos próximos artigos são abordadas algumas sugestões de como proceder para dar nomes a rotinas, variáveis e constantes de forma a aumentar a sua eficiência na produção e manutenção do seu software. Vou comentar um pouco sobre a notação húngara. Parece grego?

Também é apresentada uma ferramenta de produtividade pouco conhecida, que porém, para mim, foi um divisor de águas. Não sei como eu conseguia programar antes de utilizar essa ferramenta. Minha velocidade de produção multiplicou-se.

Confira:

Abraço!

Henrique

consulte sempre um engenheiro eletrônico

 

Licença Creative Commons
Esta obra, “Boas práticas para o desenvolvimento de software – Algumas ideias de como organizar o seu software – I“, de Henrique Frank W. Puhlmann, foi licenciada sob uma Licença Creative Commons Atribuição-NãoComercial-CompartilhaIgual 3.0 Não Adaptada.

=================================================================================================

Rotina para escrever na E2PROM:

Rotina em C para escrita na E2PROM

Rotina em C para escrita na E2PROM – Parte 1

Rotina em C para escrita na E2PROM - segunda parte

Rotina em C para escrita na E2PROM – Parte 2

=============================================================================

Rotina para Leitura da E2PROM

Rotina em C para leitura de uma E2PROM - parte 1

Rotina em C para leitura de uma E2PROM – parte 1
Rotina em C para leitura de uma E2PROM - parte 2

Rotina em C para leitura de uma E2PROM – Parte 2

Rotina em C para leitura de uma E2PROM - parte 3

Rotina em C para leitura de uma E2PROM – Parte 3