Centro Universitário Positivo - UnicenP Núcleo de Ciências Exatas

Сomentários

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.

Documentos relacionados