Centro Universitário Positivo - UnicenP Núcleo de Ciências Exatas
Transcrição
Centro Universitário Positivo - UnicenP Núcleo de Ciências Exatas
Centro Universitário Positivo - UnicenP Núcleo de Ciências Exatas e Tecnológicas – NCET Engenharia da Computação MINI OSCILOSCÓPIO DIGITAL PORTÁTIL BASEADO EM MICROCONTROLADOR PIC Curitiba 2004 1 Ederson Cichaczewski MINI OSCILOSCÓPIO DIGITAL PORTÁTIL BASEADO EM MICROCONTROLADOR PIC Relatório apresentado à disciplina de Estágio Curricular, como requisito à conclusão do Curso de Engenharia da Computação. Companheiro de estágio: Eduardo Theiss Przysiezny. Orientador: Prof. Valfredo Pilla Jr. Curitiba 2004 i SUMÁRIO RESUMO ........................................................................................................................................ 3 1 INTRODUÇÃO ........................................................................................................................... 4 2 PROJETO ..................................................................................................................................... 5 2.1 Hardware ................................................................................................................................. 7 2.1.1 Aquisição do Sinal ............................................................................................................. 8 2.1.2 Conversão Analógico / Digital........................................................................................... 8 2.1.3 Processamento do Sinal...................................................................................................... 9 2.1.4 Botões de Configuração ..................................................................................................... 9 2.1.5 Amostragem no Display..................................................................................................... 9 2.1.6 Comunicação Serial com o Computador.......................................................................... 10 2.1.7 Software Escravo .............................................................................................................. 10 2.1.8 Diagrama Esquemático e Layout ..................................................................................... 10 2.2 Software ................................................................................................................................ 14 2.2.1 Fluxograma do Firmware................................................................................................. 14 2.2.2 Software Conversor Imagem-Código ............................................................................... 15 2.2.3 Descrição do Firmware .................................................................................................... 15 2.2.4 Software Escravo .............................................................................................................. 19 3 RESULTADOS.......................................................................................................................... 20 4 CONCLUSÕES .......................................................................................................................... 21 5 REFERÊNCIAS BIBLIOGRÁFICAS ....................................................................................... 22 ii LISTA DE FIGURAS Figura 1- Pinagem do microcontrolador PIC16F877A................................................................... 5 Figura 2- Sistema de divisão em páginas do display ...................................................................... 7 Figura 3- Diagrama em blocos do mini-osciloscópio ..................................................................... 7 Figura 4- Circuito de aquisição do sinal.......................................................................................... 8 Figura 5- Diagrama esquemático do hardware ............................................................................. 11 Figura 6- Layout da placa de circuito impresso ............................................................................ 12 Figura 7- Placa de circuito impresso do mini-osciloscópio montada............................................ 13 Figura 8- Fluxograma do firmware ............................................................................................... 14 Figura 9- Software de conversão da imagem BMP para código C para PIC ................................ 15 Figura 10- Sinal de baixa freqüência sem interpolação ................................................................ 16 Figura 11- Sinal de alta freqüência sem interpolação ................................................................... 16 Figura 12- Sinal de alta freqüência com interpolação ................................................................... 17 Figura 13- Banco me memória externo ao microcontrolador ....................................................... 18 Figura 14- Layout da tela inicial ................................................................................................... 18 Figura 15- Layout da tela padrão mostrando um sinal sendo adquirido ....................................... 19 Figura 16- Osciloscópio escravo no PC ........................................................................................ 19 Figura 17- Testes com o miniosciloscópio .................................................................................... 20 3 RESUMO Este documento apresenta o projeto de um mini-osciloscópio portátil e de baixo custo, realizado como disciplina de estágio curricular supervisionado obrigatório à conclusão do curso de Engenharia da Computação do UnicenP. O projeto consiste em desenvolver um instrumento de medição de sinais analógicos com visualização gráfica (osciloscópio) baseado no microcontrolador PIC16F877, dispondo de um canal analógico para aquisição de sinais e o acoplamento deste pode ser AC ou DC. A interface com o usuário é feita através de um display gráfico de cristal líquido de 128 colunas x 64 linhas de resolução gráfica e um conjunto de botões para seleção do modo de acoplamento de entrada (DC, AC, GND), ganho do canal (Volts / divisão), base de tempo (segundos / divisão), nível de disparo (o modo de trigger será sempre o automático), congelamento do sinal e liga-desliga. 4 1 INTRODUÇÃO Levando em conta que é inviável a compra de um osciloscópio comercial para uso individual, constatou-se a necessidade de projetar um mini-osciloscópio portátil de baixo custo que possui funções restritas para uso em projetos eletrônicos e medições de instrumentação em geral, inclusive permitindo testes sem depender de uma alimentação da rede elétrica. Também com a possibilidade de gravar no computador as informações dos sinais analisados. De acordo com as especificações iniciais do projeto, o dispositivo deverá ter as seguintes características: - 1 entrada analógica para aquisição do sinal; - 3 botões para configuração do dispositivo; - 3 leds para sinalização das configurações; - 1 display de cristal líquido com capacidade gráfica para amostragem do sinal e visualização das configurações do dispositivo modelo EW13B10; - 1 placa de circuito impresso contendo o microcontrolador PIC16F877A, demais componentes e as respectivas conexões de E/S; - 1 placa de circuito impresso para o circuito recarregador de baterias; - 1 bateria recarregável de 9 volts; - 1 cabo de comunicação USB; - As definições de configuração de amostragem do sinal, como volts/div, segundos/div, trigger e congelamento do sinal, serão feitas através dos botões de configuração com o dispositivo funcionando, ou seja, fazendo a aquisição do sinal e amostrando no display. - Níveis de acoplamento: AC, DC, GND; - Interface USB com o computador; - Software escravo implementado em C++ para visualização do que está sendo amostrado no display e também armazenamento dos dados para posterior análise. 5 2 PROJETO Inicialmente, foi feito um estudo do ambiente de desenvolvimento para o PIC16F877A que é o Microchip MPLAB IDE versão 6.20 através do seu Quick Start Guide [Microchip, 2003]. Este software que possibilita a implementação e simulação de algoritmos em linguagem assembly, assim como, a programação do dispositivo juntamente com o kit de gravação McFlash [Rosário, 2002] da Mosaico Engenharia, conectado na interface serial do computador. Foi feito também um estudo do compilador CCS, que é um ambiente de programação em linguagem C para PIC [CCS, 2003]. Partindo para o microcontrolador PIC 16F877A, foi feito um estudo do mesmo através do seu datasheet [Microchip, 2001], o qual é bastante completo e possui todas as informações necessárias sobre o dispositivo, além de ser possível contar também com várias outras documentações sobre o mesmo. Este chip, que possui 40 pinos, é apresentado na Figura 1. Figura 1- Pinagem do microcontrolador PIC16F877A 6 Dentre as principais características deste microcontrolador, estão: - Possui arquitetura RISC; - Conjunto de apenas 35 instruções; - Freqüência máxima de operação de 20MHz; - Ciclo de instrução de 200? s; - Freqüência de trabalho interna dividida por 4; - 8K de memória de programa; - 368 bytes de memória RAM; - Instruções executadas em 1 ciclo de clock; - Modos de endereçamento direto e indireto; - Opções de seleção do oscilador de clock; - Consumo de corrente típico de 0,6mA a 3V e 4MHz; - Interface serial USART; - Conversor A/D de 10 bits, etc. O display gráfico utilizado no projeto é o modelo EW13B10GR [Emerging, 1999] que utiliza o controlador KS0108 [Samsung, 2003] e é de cristal líquido (LCD). Este display não possui modo texto, portanto, não possui caracteres prontos, como nos displays LCDs texto em que, no código, se manda imprimir a letra “A” e o dispositivo mostra em sua tela a letra “A”. No display gráfico os caracteres devem ser desenhados ponto a ponto. Este display possui a resolução de 128 colunas x 64 linhas, mas, na verdade, são dois módulos de 64 colunas x 64 linhas, pois possui dois controladores KS0108, selecionados pelos pinos CS1 e CS2. Assim como o display é divido em duas partes verticalmente, cada uma dessas partes é dividida horizontalmente em 8 partes, chamadas de páginas, e cada página possui 64 colunas de 8 bits, como mostrado na Figura 2. Contudo, deve-se decodificar todas estas características para conseguir escrever um único ponto no display. 7 Figura 2- Sistema de divisão em páginas do display 2.1 Hardware O hardware tem um funcionamento de acordo com as configurações acertadas no mesmo. Diferente da proposta inicial, foi utilizada a interface serial para comunicação com o computador. O diagrama em blocos do hardware é apresentado na Figura 3. Figura 3- Diagrama em blocos do mini-osciloscópio 8 2.1.1 Aquisição do Sinal É feita através de uma ponta de prova. Internamente ao circuito o sinal é recebido por 2 amplificadores operacionais, um configurado para passar o sinal em acoplamento DC e outro para passar o sinal em acoplamento AC, como visto na Figura 4. O circuito dos amplificadores implementa uma soma de +2,5VDC no sinal de entrada para fazer uma elevação do nível de referência, de forma que o sinal fique dentro dos limites do conversor A/D e também uma atenuação de 16 vezes para que se possa medir sinais maiores que 2,5VDC; com isso é possível medir sinais até 40VDC e 80VAC. O valor de amplitude do sinal é multiplicado novamente por este fator no firmware para indicar o valor real correspondente. Através dos botões de configuração do display é feita a seleção do tipo de entrada de sinal. Figura 4- Circuito de aquisição do sinal 2.1.2 Conversão Analógico / Digital É feita internamente pelo PIC16F877 e possui resolução de 10 bits (configurado no firmware). É a interface entre o sinal analógico e o sinal digital que será processado e amostrado no display de cristal líquido. O nível de entrada do sinal analógico é de 0V a 5V. 9 2.1.3 Processamento do Sinal É toda a programação realizada no microcontrolador. Faz a inicialização do display, carrega uma imagem de entrada e depois de 3 segundos apresenta a tela de aquisição do sinal. Faz o cálculo do píxel a ser mostrado no display correspondente ao valor analógico. Desenha linhas que ligam os pontos que formam o sinal (interpolação). Calcula os valores de amplitude e freqüência para apresentação no display. Envia os dados referentes ao sinal adquirido para o computador, pela interface serial USART. Faz a leitura dos botões de configuração e acionamento dos leds de indicação. 2.1.4 Botões de Configuração Fazem a seleção de modo de acoplamento, escala de amplitude, escala de freqüência e congelamento do sinal. 2.1.5 Amostragem no Display Apresentação do sinal sendo recebido pelo mini-osciloscópio, respeitando os limites destinados para o sinal na tela, assim como os valores correspondentes de freqüência, amplitude e escalas. Há dois modos de amostragem dependendo da freqüência que se quer amostrar: - Modo Contínuo: para amostragem de freqüências até 3Hz, com taxa de amostragem de 45Hz. Este modo apresenta o sinal continuamente na tela em tempo real, vai adquirindo e amostrando os pontos. - Modo Sample: para amostragem de freqüências até 40Hz, com taxa de amostragem de 320Hz. Este modo apresenta o sinal de uma só vez na tela, pois primeiro faz a aquisição e depois mostra a quantidade de períodos correspondente ao tamanho da tela. Com isso o dispositivo perde partes do sinal em cada intervalo que usa para mostrar o sinal no display, portanto, não funciona em tempo real. 10 2.1.6 Comunicação Serial com o Computador Envio dos mesmos dados que estão sendo amostrados no display do mini-osciloscópio para o computador através da interface USART, com velocidade de baud rate de 19200 bps. 2.1.7 Software Escravo Faz a amostragem do sinal recebido pela porta serial igualmente como está sendo feito no display, e tem a função de armazenar os sinais lidos para uma posterior análise. O software escravo não atua nas funções do miniosciloscópio. 2.1.8 Diagrama Esquemático e Layout O diagrama esquemático completo do hardware é apresentado na Figura 5. 11 Figura 5- Diagrama esquemático do hardware 12 O layout da placa de circuito impresso do mini-osciloscópio é mostrado na Figura 6. A figura está em tamanho maior e não no tamanho real da placa para melhor visualização. Figura 6- Layout da placa de circuito impresso 13 A placa montada, juntamente com o display conectado é mostrada na Figura 7. O tamanho real da placa é de 9,5 cm x 6,3 cm. Figura 7- Placa de circuito impresso do mini-osciloscópio montada Além dos botões de configuração e leds de sinalização (cor verde), a placa dispõe de um trimpot para regulagem de contraste para do display, uma entrada de alimentação de uma fonte externa e um led (cor vermelha) para indicar se o circuito está ligado ou desligado. Nenhum componente da placa utiliza alimentação simétrica, nem mesmo os amplificadores operacionais, cujo modelo dos mesmos foi escolhido para trabalhar apenas com tensões positivas. A tensão de alimentação para toda a placa é de 5V. 14 2.2 Software A parte de software a ser tratada inclui o firmware do microcontrolador e o software do computador. Inicialmente, o firmware começou a ser implementado em linguagem assembly, mas a dificuldade foi aumentando e foi passado a utilizar a programação em C para PIC. 2.2.1 Fluxograma do Firmware Um fluxograma genérico sobre o funcionamento do software (firmware) é apresentado na Figura 8. Figura 8- Fluxograma do firmware 15 2.2.2 Software Conversor Imagem-Código Na inicialização do mini-osciloscópio, é apresentada uma tela de abertura com o logo do UnicenP e 3 segundos depois é apresentada a tela com um layout padrão de osciloscópio onde aparece a aquisição do sinal. Como é necessário desenhar essas figuras ponto a ponto na tela do display, foi feito um software em C++ Builder que recebe uma imagem .BMP e gera o código em C para PIC que faz o desenho da imagem, visto na Figura 9. Então é copiado este código gerado para o firmware do microcontrolador. Figura 9- Software de conversão da imagem BMP para código C para PIC 2.2.3 Descrição do Firmware O código do firmware é dividido em dois arquivos extensão .c: um arquivo com as funções genéricas e um arquivo com o programa principal e as telas do display. Algumas rotinas foram retiradas de pesquisa na internet, outras foram efetivamente implementadas. Foi necessário implementar um algoritmo decodificador de linhas, páginas e controladores, de modo que essas informações fiquem transparentes. Então foi feita uma 16 função que recebe um valor e simplesmente o imprime na tela, sem querer saber de outras informações sobre localização (controlador, página, bit). A cada escrita no display, é incrementado um contador para a próxima coluna à direita. Quando a varredura volta ao início da tela, na primeira coluna da esquerda, cada ponto anteriormente plotado é apagado e o novo ponto do sinal registrado na tela do display. Foi necessário fazer um algoritmo de interpolação, ou seja, que traça linhas ligando ponto a ponto da aquisição do sinal, pois nem sempre os pontos estão bem próximos uns dos outros possibilitando uma boa visualização do sinal. Mesmo porque as distâncias entre os pontos variam conforme a freqüência do sinal e a taxa de amostragem. Por exemplo, a Figura 10 apresenta um sinal sem interpolação, mas que possui uma freqüência muito baixa e uma alta taxa de amostragem. Percebe-se que os pontos que formam o sinal são bastante próximos. Figura 10- Sinal de baixa freqüência sem interpolação Agora, a Figura 11 apresenta um sinal de mesma amplitude e taxa de amostragem, só que de maior freqüência. Percebe-se uma maior distância e um vão entre os pontos. Figura 11- Sinal de alta freqüência sem interpolação 17 A Figura 12 mostra o mesmo sinal da Figura 11, só que utilizando interpolação. Figura 12- Sinal de alta freqüência com interpolação Para a amostragem de sinais de freqüências maiores que 3 Hz, foi necessário implementar um modo diferente de aquisição do sinal, gravando primeiramente as leituras do conversor A/D em um vetor em memória e depois mostrando no display. Desta forma o processador poupa o tempo que usa para mostrar o sinal na tela cada vez lê o valor de uma amostra, conseguindo-se assim uma taxa de amostragem 8 vezes maior. O problema que ocorreu foi a pouca quantidade de memória para conseguir amostrar freqüências maiores que 40Hz, pois se utilizava um vetor de 70 posições para comportar a amostragem do sinal. De modo a resolver este problema da pouca quantidade de memória, partiu-se para a implementação de um banco de memórias, externo ao microcontrolador, de 64K utilizando uma porta com 8 bits de dados que ainda havia sobrado. Foi necessário utilizar também as saídas utilizadas anteriormente para os leds de indicação, pois não havia mais pinos disponíveis no PIC16F877A. Através da mesma porta do microcontrolador são feitos os endereçamentos e a transferência de dados da memória. A Figura 13 apresenta o esquemático do banco de memórias implementado. Foi implementado um código para acesso desta memória externa, mas nos testes práticos não houve sucesso na utilização deste banco de memórias. Não foi descoberto o motivo. 18 Figura 13- Banco me memória externo ao microcontrolador Contudo, os principais métodos do firmware são: - main(): Método principal que segue o fluxograma apresentado na Figura 8 e chama todos os outros métodos; - void displayLogo(): Possui a seqüência de código que apresenta a tela inicial com a logo do UnicenP no display, mostrada na Figura 14. Figura 14- Layout da tela inicial 19 - void displayTela(): Possui a seqüência de código que apresenta a tela padrão do miniosciloscópio no display, mostrada na Figura 15. Figura 15- Layout da tela padrão mostrando um sinal sendo adquirido Os outros métodos do firmware, descritos, serão apresentados no código fonte em anexo. 2.2.4 Software Escravo Faz a amostragem do sinal no computador, recebido pela porta serial, igualmente como está sendo feito no display, mas tem a função de armazenar os sinais lidos para uma posterior análise. O software escravo não atua nas funções do miniosciloscópio. Na Figura 16 é mostrada a tela do osciloscópio escravo. Figura 16- Osciloscópio escravo no PC 20 3 RESULTADOS O miniosciloscópio foi testado com sinais provenientes de um gerador de funções. Portanto, foram testados sinais senoidais, triangulares e quadrados. O trigger ficou em modo automático, portanto, não foi possível garantir a sincronia com outro osciloscópio, por exemplo. A amplitude máxima utilizada para os testes foi de 2,5Vpp. A freqüência amostrada com visualização do sinal em tempo real foi de 3Hz. Para a visualização de sinais acima desta freqüência foi implmentado um método que utiliza a memória RAM para um préarmazenamento do sinal lido e posterior amostragem na tela do display. A freqüência utilizada para os testes desse método de amostragem foi de 40Hz. O miniosciloscópio apresentou com êxito os sinais adquiridos, ficando igualmente a um osciloscópio comercial, como se pode ver na Figura 5. Sempre que mudasse a amplitude, freqüência ou referência, o miniosciloscópio acompanhava as mudanças sem erro, havia apenas uma diferença no ponto de disparo (trigger). Figura 17- Testes com o miniosciloscópio 21 4 CONCLUSÕES Os principais objetivos iniciais do projeto foram alcançados, conseguindo-se uma amostragem de sinais na tela do display gráfico. Entretanto, muitas dificuldades foram encontradas, dentre elas: - A pouca capacidade de memória RAM do microcontrolador PIC16F877, sendo necessário implementar um banco de memórias externo, o qual infelizmente não funcionou; - A verificação de que a implementação de um algoritmo de cálculo de freqüência é bastante complexo para implementar em um simples microcontrolador, por isso o dispositivo não mede a freqüência do sinal; - O PIC16F877A queimava muito fácil. Em uma média de 10 a 15 gravações o dispositivo já parava de funcionar. Visto que o seu custo é de 20 dólares no Brasil, ficou bastante inviável. Também não houve tempo de projetar o carregador de baterias nem a interface USB. Algumas melhorias para a conclusão deste projeto e a efetivação do dispositivo como um produto, são: - Trabalhar em conjunto com um DSP, de forma a conseguir freqüências maiores de amostragem e também um método de cálculo da freqüência do sinal, tendo também um clock de funcionamento bem maior para isso. - Implementar um controle de ganho na entrada do amplificador operacional que recebe o sinal a ser analisado, assim como uma proteção contra queima do dispositivo no caso de colocar na entrada uma tensão maior do que a máxima permitida. - Utilizar um microcontrolador mais viável economicamente e funcionalmente. Contudo, o projeto proporcionou um grande diferencial de conhecimento com o estudo dos componentes e dispositivos utilizados e também dos métodos de amostragem e de funcionamento de um osciloscópio. Este projeto serve como um primeiro e grande passo para a implementação de um dispositivo de baixo custo, que é muito interessante para ser adquirido por alunos para uso em projetos e medições, visto que o preço de um osciloscópio comercial é extremamente alto. 22 5 REFERÊNCIAS BIBLIOGRÁFICAS [CCS, 2003] Quick Start with CCS C Compiler for Microchip PICmicro® MCUs. CCS Inc. USA, 2003. Disponível em: http://www.ccsinfo.com/quickstart.zip, acessado em Maio / 2003. [Emerging, 1999] 13B10 (REFLECTIVE TYPES). File N° CAS-10075. Emerging Display Technologies Corporation, 1999. Disponível em: http://www.edtc.com/edt/products/specs/13B10REF.pdf, acessado em Maio / 2003. [Microchip, 2001] Microchip PIC16F87X Datasheet. 28/40-Pin 8-Bit CMOS FLASH Microcontrollers. Document Disponível http://ww1.microchip.com/downloads/en/DeviceDoc/30292c.pdf, em DS30292C. Microchip Technology Inc. USA, 2001. acessado em Maio / 2003. [Microchip, 2003] Microchip MPLAB IDE v6.xx Quick Start Guide. Document DS51281C. Microchip Technology Inc. USA, 2003. Disponível em http://ww1.microchip.com/downloads/en/DeviceDoc/51281c.pdf, acessado em Maio / 2003. [Rosário, 2002] ROSÁRIO, João Maurício. Micro-controladores Família PIC Gravador Micro-Flash. Curso de Mecatrônica UNICAMP. Campinas. São Paulo, 2002. Disponível em http://www.fem.unicamp.br/~rosario, acessado em Maio / 2003. [Samsung, 2003] KS0108B 64CH Segment Driver For Dot Matrix LCD. Samsung Eletronics, 2003. Disponível em http://www.lcdinfo.com/lcd/datasheets/ks0108b.pdf, acessado em Maio / 2003.