Andrews Cordolino Sobral's profile

Digital Oscilloscope for Audio Signals (PT-BR)

Projeto de um Osciloscópio Microcontrolado para Sinais de Áudio

Disciplina: Aquisição de Dados em Tempo Real
Professor: Iuri Muniz Pepe
Alunos: Andrews Cordolino Sobral e Caroline Pacheco do Espírito Silva

Relatório Completo do Projeto em PDF

Objetivo
O objetivo do projeto é desenvolver, com o uso de um micro-controlador PIC 16F877A, um osciloscópio digital para visualização das formas de onda dos sinais de áudio em um display serial embarcado.

Introdução
O osciloscópio é um instrumento de medida eletrônico que cria um gráfico bi-dimensional visível de uma ou mais diferenças de potencial. O eixo horizontal normalmente representa o tempo, tornando o instrumento útil para mostrar sinais periódicos. O eixo vertical comumente mostra a tensão.
Para capturar os sinais analógicos, foi utilizada uma entrada do conversor A/D do micro-controlador PIC 16F877A. O sinal é digitalizado e processado pelo micro-controlador. Logo em seguida os valores são enviados ao display em forma de pontos cartesianos permitindo assim a visualização gráfica da forma de onda do sinal analógico. Neste projeto foi utilizado um display serial de 128 pontos horizontais por 64 pontos verticais.
O áudio é capturado através de um microfone de eletreto. O microfone é conectado a um pré-amplificador de áudio (neste projeto foi utilizado o CI LM386) e logo em seguida é feito um ajuste de nível DC, pois o conversor A/D do micro-controlador PIC ignora tensões negativas. Para diminuir a amplitude dos ruídos de alta freqüência foi construído um filtro RC passa-baixa analógico de 3º ordem com uma freqüência de corte em aproximadamente 16Khz.

Hardware
            Para facilitar a montagem dos circuitos eletrônicos utilizou-se placas cobreadas e perfuradas. Nas seções abaixo são apresentados os hardwares utilizados neste projeto.

Micro-controlador PIC 16F877A – Este micro-controlador é o responsável por capturar os sinais analógicos, digitalizá-los e processá-los transmitindo os dados para um display serial externo. Foi utilizado um cristal de 4 Mhz, sendo assim o tempo de conversão do ADC é de aproximadamente 2 micro-segundos, o cálculo feito utiliza a seguinte fórmula:
Tadc = Fosc / Div
Tadc = 4.000.000 / 8 = 2us.
Seguindo as especificações do datasheet do micro-controlador, para um cristal de 4 Mhz o valor recomendado do Div é 8.
Display Serial – O display serial utilizado foi o TS-12864. Este display recebe dados serialmente a velocidade de 2400 a 19200 bps e mostra no display textos ou gráficos. No modo texto ele possui 4 tamanhos diferentes de fontes. Ele possui um conjunto de instruções adicionais que permitem o controle do backlight, tamanho de fonte e posicionamento do cursor. Também possui instruções gráficas para traçar linhas, retângulos, círculos e pontos.
Neste projeto foi utilizada a configuração serial 9600 8N1 (9600bps, 8 bits de dados, sem-paridade e 1 stop-bit).
Pré-Amplificador – Este componente é utilizado para amplificar os pequenos sinais gerados pelo microfone de eletreto para tensões que podem variar entre +2.5 Volts a -2.5 Volts (valores máximos e mínimos, pois se utilizou uma fonte de 5.0 Volts). Foi utilizado o LM386 por se tratar de um CI que não precisa de uma fonte simétrica para gerar sinais negativos. Este circuito foi configurado para que o ganho máximo seja 200. Foi adicionado um potenciômetro para ajustar o ganho. Na foto do pré-amplificador observa-se que existem dois pré-amplificadores montados na mesma placa, com isto é possível ajustar a amplitude de dois canais de áudio de forma distinta podendo ser classificado como um pré-amplificador estéreo.
Ajuste de Nível DC e Filtro RC Passa-Baixa – Este componente é utilizado para ajustar o nível DC e atenuar os sinais de alta freqüência transmitidos pelo microfone de eletreto. O filtro passa-baixa foi configurado para atenuar sinais acima de 16 Khz, para isso utilizou-se resistências de 100R e capacitores de 100nF. A fórmula utilizada foi:
Fc = 1 / ( 2 * PI * R * C )
Programação
            No desenvolvimento do programa do micro-controlador foi utilizado o compilador CCS C Compilar permitindo assim compilar programas em linguagem C.
            O programa criado faz a leitura do ADC e converte para pontos cartesianos para serem enviados ao display. Durante a leitura do ADC, o programa lê 64 amostras e depois envia os pontos para o display.
Parte do código do micro-controlador.
while(1)
   {
      for(i = 0; i < N; i++)
      {
         amostras[i] = read_adc();
         delay_us(98); // 2us do ADC + 98us = 100us = aprox. 10 Khz (Freq. de amostragem)
      }
     
      for(i = 0; i < N; i++)
         display_draw_point(2*i, (amostras[i] - 96)); // Ajuste dos pontos com DMA Scope
         //display_draw_point(2*i, amostras[i]/4);
     
      display_cls_home();
   }
Simulação
Inicialmente o circuito foi simulado utilizando o software Proteus para verificar se os sinais estavam se comportando do modo desejado. Durante a simulação foi utilizado um arquivo de áudio qualquer para representar o áudio transmitido pelo microfone.
 
Simulação do pré-amplificador – Analisando o gráfico gerado pelo simulador, percebe-se que a amplitude dos sinais de saída do pré-amplificador (em verde) são mais altos que os sinais emitidos pelo microfone (em vermelho).
Simulação do ajuste de nível DC – Simulando o circuito de ajuste de nível DC observa-se que o sinal de entrada (em verde) foi deslocado verticalmente para cima (em vermelho) conforme o resultado esperado.
Simulação do filtro RC passa-baixa – Observando a análise de Fourier do filtro RC passa-baixa, percebe-se que os sinais de áudio de alta freqüência foram atenuados conforme esperado. A linha em verde é o sinal de entrada e a linha em vermelho é o sinal de saída.
Conclusão
            Durante os testes experimentais o primeiro problema encontrado foi a lenta comunicação com o display serial. Inicialmente pensou-se que uma taxa de 9600 bps seria suficiente para conseguir ver no display as formas de onda dos sinais de áudio, mas infelizmente a visualização ficou muito lenta. O ideal seria utilizar um display que suporte uma maior velocidade de comunicação.
Outro fator importante é a velocidade do clock do microcontrolador. O 16F877A suporta um clock de até no máximo 20 Mhz e foi utilizado um clock de 4Mhz torando o processamento mais lento.
O osciloscópio se comportou razoavelmente com sinais de áudio entre 100 Hz até 1000 Hz. Qualquer sinal que estivesse em uma freqüência muito abaixo ou muito acima não se conseguia visualizar claramente a forma de onda.
Bibliografia
 
Osciloscópio com PIC
 
The &microSCOPE
 
Projeto de Osciloscópio e Analisador de Espectro Utilizando Micro-Controlador PIC16F877
 
Oscilloscope Numérique
 
Virtual Oscilloscope using PIC Microcontroller
Digital Oscilloscope for Audio Signals (PT-BR)
Published:

Digital Oscilloscope for Audio Signals (PT-BR)

Digital Oscilloscope for Audio Signals

Published: