trabalho final curso - ubiwebx.ubi.pt/~a13852/projecto/trabalho_final_curso.pdf · o osciloscópio...

131
AGRADECIMENTOS Em primeiro lugar há que salientar a elevada importância do Prof. Dr. António Manuel Gonçalves Pinheiro que apresentou sempre disponibilidade durante o decorrer do projecto para o esclarecimento de dúvidas que foram surgindo ao longo do tempo. Agradecimentos ao Sr. Rui Barata, pelo apoio dado no que diz respeito ao fornecimento do material necessário e também pelos seus conhecimentos úteis. Uma especial atenção para a Eng. a Rute Eiras, por todo o seu apoio nos melhores e piores momentos na realização deste projecto. Um agradecimento muito especial para as nossas famílias e amigos, que tiveram sempre do nosso lado nos momentos de maiores dificuldades. À Universidade da Beira Interior pelos meios que colocou à nossa disposição, que tornaram possível a conclusão deste projecto. A todas as, demais, pessoas que, aqui, não se encontram directamente referenciadas, queremos deixar um Bem-Haja!

Upload: others

Post on 25-Jul-2020

16 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

AGRADECIMENTOS

Em primeiro lugar há que salientar a elevada importância do Prof. Dr. António Manuel

Gonçalves Pinheiro que apresentou sempre disponibilidade durante o decorrer do

projecto para o esclarecimento de dúvidas que foram surgindo ao longo do tempo.

Agradecimentos ao Sr. Rui Barata, pelo apoio dado no que diz respeito ao fornecimento

do material necessário e também pelos seus conhecimentos úteis.

Uma especial atenção para a Eng.a Rute Eiras, por todo o seu apoio nos melhores e

piores momentos na realização deste projecto.

Um agradecimento muito especial para as nossas famílias e amigos, que tiveram sempre

do nosso lado nos momentos de maiores dificuldades.

À Universidade da Beira Interior pelos meios que colocou à nossa disposição, que

tornaram possível a conclusão deste projecto.

A todas as, demais, pessoas que, aqui, não se encontram directamente referenciadas,

queremos deixar um

Bem-Haja!

Page 2: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

ii

Page 3: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

iii

RESUMO

O objectivo principal deste projecto é elaborar um Kit de Instrumentação Virtual

baseado num computador pessoal denominado por “KIV”, este é constituído por um

Osciloscópio, um Analisador Lógico e um Voltímetro. O KIV é composto por um

Módulo de Aquisição onde se ligam as entradas do Osciloscópio, Voltímetro e

Analisador Lógico, e que comunica com o PC através de uma conexão USB. Este

também é composto por um software, que permite a representação gráfica das diferentes

medidas efectuadas.

A utilização da interface USB permite transferências rápidas dos dados adquiridos pelo

Módulo de Aquisição a uma velocidade máxima de 1MB/s.

O Módulo de Aquisição tem como finalidade a aquisição de dados, sendo este

constituído por um módulo USB, um bloco de acondicionamento de sinal, um conversor

A/D e um microcontrolador.

O software foi desenvolvido em Borland C++ Builder, e é responsável pela

apresentação do painel frontal do KIV e pelo controlo do Módulo de Aquisição.

PALAVRAS-CHAVE

Instrumentação Virtual

Módulo de Aquisição de Dados

Comunicação USB

Programação C++ Builder

Page 4: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

iv

Page 5: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

v

ÍNDICE GERAL Índice de Figuras ............................................................................................................ vii Índice de Tabelas ............................................................................................................. ix 1. Introdução................................................................................................................. 1

1.1. Descrição e Enquadramento do Projecto.......................................................... 1 1.1.1. Osciloscópio ............................................................................................. 2 1.1.2. Analisador Lógico .................................................................................... 4 1.1.3. Voltímetro................................................................................................. 5

1.2. Motivação ......................................................................................................... 5 1.3. Organização do Relatório ................................................................................. 6

2. Módulo de Aquisição ............................................................................................... 7 2.1. Diagrama de Blocos.......................................................................................... 7 2.2. O Módulo DLP ................................................................................................. 8 2.2.1. Características Gerais ................................................................................... 9

2.2.2. Ciclos de Leitura e Escrita........................................................................ 9 2.2.3. Ligação ao Microcontrolador ................................................................. 10

2.3. Conversor A/D................................................................................................ 11 2.4. Microcontrolador ............................................................................................ 13 2.5. Circuito Analógico ......................................................................................... 18 2.6. Protecção de Entradas..................................................................................... 21

3. Software.................................................................................................................. 25 3.1. Funções API para Aceder à Porta Série.......................................................... 25 3.2. Programa de Teste do DLP............................................................................. 29 3.3. Programa do KIV ........................................................................................... 30 3.4. Osciloscópio ................................................................................................... 32 3.5. Analisador Lógico .......................................................................................... 43 3.6. Voltímetro....................................................................................................... 46 3.7. Créditos........................................................................................................... 47

4. Testes dos Sistemas ................................................................................................ 49 4.1. Osciloscópio ................................................................................................... 49 4.2. Analisador Lógico .......................................................................................... 54 4.3. Voltímetro....................................................................................................... 55

5. Conclusões.............................................................................................................. 59 6. Perspectivas de Trabalho Futuro ............................................................................ 61 7. Bibliografia............................................................................................................. 63 Anexos............................................................................................................................ 65

Page 6: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

vi

Page 7: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

vii

ÍNDICE DE FIGURAS

Figura 1: Topologia do KIV ............................................................................................. 1 Figura 2: Osciloscópio DS2200C [15] ............................................................................. 4 Figura 3: ANT8 – Analisador Lógico de oito canais [15]................................................ 5 Figura 4: Voltímetro analógico [14]................................................................................. 5 Figura 5: Diagrama de blocos do Módulo de Aquisição .................................................. 7 Figura 6: Fluxograma do Módulo de Aquisição............................................................... 8 Figura 7: Módulo DLP-USB245M [3] ............................................................................. 8 Figura 8: Ciclo de Escrita [3] ......................................................................................... 10 Figura 9: Ciclo de Leitura [3] ......................................................................................... 10 Figura 10: Ligação ao Microcontrolador [3] .................................................................. 11 Figura 11: Alimentação do DLP [3] ............................................................................... 11 Figura 12: Diagrama Temporal do conversor A/D [4] ................................................... 12 Figura 13: Fluxograma do programa do microcontrolador ............................................ 14 Figura 14: Fluxograma da subrotina de serviço da Interrupção 0 .................................. 16 Figura 15: Fluxograma da subrotina da Interrupção 1 ................................................... 17 Figura 16: Operação do circuito analógico..................................................................... 19 Figura 17: Circuito analógico para acondicionamento de sinal ..................................... 19 Figura 18: Simulação do Circuito Analógico ................................................................. 21 Figura 19: Protecção de entrada para o modo Osciloscópio/Voltímetro........................ 22 Figura 20: Simulação da protecção de entrada para o modo Osciloscópio/Voltímetro . 22 Figura 21: Protecção de entrada para o modo Analisador Lógico ................................. 23 Figura 22: Simulação da protecção de entrada para o modo Analisador Lógico ........... 23 Figura 23: Uso da função CreateFile() da API do Windows.......................................... 26 Figura 24: Uso das funções GetCommState() e SteCommState().................................. 27 Figura 25: Uso da função GetCommTimeouts() e GetCommTimeouts()...................... 28 Figura 26: Uso da função ReadFile() ............................................................................. 28 Figura 27: Uso da função WriteFile() ............................................................................ 29 Figura 28: Uso da função CloseHandle() ....................................................................... 29 Figura 29: Interface do programa de teste do DLP ........................................................ 30 Figura 30: Interface principal do KIV ............................................................................ 30 Figura 31: Exemplo de conversão dos dados ................................................................. 31 Figura 32: Hierarquia iScope [8] .................................................................................... 32 Figura 33: Exemplo de como adicionar dados ao iScope............................................... 32 Figura 34: Interface do Osciloscópio.............................................................................. 33 Figura 35: Painel de Controlo......................................................................................... 33 Figura 36: Propriedades de controlo............................................................................... 34 Figura 37: Propriedade de Controlo da Impressão ......................................................... 35 Figura 38: Propriedade do canal..................................................................................... 36 Figura 39: Propriedade do ecrã....................................................................................... 37 Figura 40: Propriedade da base de tempo....................................................................... 38 Figura 41: Propriedade do trigger .................................................................................. 39 Figura 42: Inclinação positiva onde o mecanismo de trigger é accionado [8]............... 40 Figura 43: Inclinação negativa onde o mecanismo de trigger é accionado [8].............. 40 Figura 44: Controlo do cursor do ecrã............................................................................ 41 Figura 45: Controlo do Cursor do Value X Style ............................................................ 41 Figura 46: Controlo do Cursor do Value Y Style ............................................................ 42 Figura 47: Controlo do Cursor do Period Style .............................................................. 42 Figura 48: Controlo do Cursor do Peak-Peak Style ....................................................... 43

Page 8: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

viii

Figura 49: Controlo do Cursor do Frequency Style........................................................ 43 Figura 50: Interface do Analisador Lógico..................................................................... 44 Figura 51: Painéis de controlo do Analisador Lógico .................................................... 45 Figura 52: Interface do Voltímetro................................................................................. 46 Figura 53: Cálculo da tensão contínua ........................................................................... 46 Figura 54: Calculo da tensão alternada .......................................................................... 46 Figura 55: Interface dos Créditos ................................................................................... 47 Figura 56: Onda rectangular (1KHz).............................................................................. 49 Figura 57: Onda sinusoidal (1KHz) ............................................................................... 49 Figura 58: Onda Triangular (1KHz)............................................................................... 50 Figura 59: Onda rectangular (≈≈≈≈2Hz) .............................................................................. 50 Figura 60: Onda Sinusoidal (≈≈≈≈2Hz)................................................................................ 51 Figura 61: Onda Triangular (≈≈≈≈2Hz)................................................................................ 51 Figura 62: Onda Rectangular (≈5KHz) .......................................................................... 52 Figura 63: Onda Sinusoidal (≈≈≈≈5KHz)............................................................................. 52 Figura 64: Onda Triangular (≈≈≈≈5KHz)............................................................................. 53 Figura 65: Onda Rectangular (≈≈≈≈10KHz) ........................................................................ 53 Figura 66: Onda Sinusoidal (≈≈≈≈10KHz)........................................................................... 54 Figura 67: Onda Triangular (≈≈≈≈10KHz)........................................................................... 54 Figura 68: Sinal de relógio com frequência de 1Hz ....................................................... 55 Figura 69: Sinal de relógio com frequência de 5KHz .................................................... 55 Figura 70: Sinal de relógio com frequência de 100KHz ................................................ 55 Figura 71: Tensão contínua de 5V.................................................................................. 56 Figura 72: Tensão contínua de -5V ................................................................................ 56 Figura 73: Tensão contínua de 0V.................................................................................. 56 Figura 74: Tensão alternada com amplitude de ≈≈≈≈ 10V................................................... 57

Page 9: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

ix

ÍNDICE DE TABELAS

Tabela 1: Configuração dos portos do microcontrolador ............................................... 13 Tabela 2: Constantes e valores da API do Windows utilizadas para configurar a Porta Série ................................................................................................................................ 27 Tabela 3: Volts por divisão............................................................................................. 36 Tabela 4: Segundos por divisão...................................................................................... 39 Tabela 5: Comparação entre os Osciloscópios ............................................................... 60 Tabela 6: Comparação entre Analisadores Lógicos ....................................................... 60 Tabela 7: Especificações Gerais do Voltímetro ............................................................. 60

Page 10: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

x

Page 11: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

xi

ACRÓNIMOS µP – Microprocessador

AC ou ACV – Corrente alternada

A/D – Analógico/Digital

API – Interface de Programação de Aplicativos (Aplication Programming Interface)

COM – Porto série

DC ou DCV – Corrente contínua

DCB – Bloco de controlo do dispositivo (Device Control Block)

FIFO – First in first out

KIV – Kit de Instrumentação Virtual

NTSC – Comité Nacional do Sistema Televisivo (National Television System

Comittee)

PAL – Linha de Fase Alternado (Phase Alternating Line)

PC – Computador Pessoal

USB – Barramento Série Universal (Universal Serial Bus)

VCP – Porta COM Virtual (Virtual COM Port)

Page 12: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

xii

Page 13: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

1

1. INTRODUÇÃO

1.1. Descrição e Enquadramento do Projecto

Outrora, o espaço na secretária de um amador ou profissional era maioritariamente ocupado

por instrumentos alojados em grandes caixas com um pequeno ecrã, mas actualmente muitas

dessas funcionalidades podem ser obtidas através de um PC. Uma pequena caixa pode

transformar um PC normal num instrumento de medida com funcionalidades acrescidas.

Os PC’s transformaram-se em ferramentas essenciais, tanto em casa como no escritório, assim

como, no mundo da electrónica. Por exemplo, os PC’s são usados para desenhar esquemas de

circuitos electrónicos, simular circuitos e desenhar placas de circuito impresso. A utilização

do PC num sistema de medida é agora uma ideia óbvia.

A ideia principal deste projecto é elaborar um Kit de Instrumentação Virtual baseado num

computador pessoal denominado por “KIV”, este é constituído por um Osciloscópio, um

Analisador Lógico e um Voltímetro. A topologia do KIV é constituída por um Módulo de

Aquisição onde se ligam as entradas do Osciloscópio, Voltímetro e Analisador Lógico, e que

comunica com o PC através de uma conexão USB (ver figura1). No PC foi desenvolvido um

software para a representação gráfica das diferentes medidas efectuadas.

Figura 1: Topologia do KIV Actualmente, com o desenvolvimento da tecnologia USB, a qual permite o aumento da

velocidade de comunicação entre os dispositivos externos e o PC, levou a que o

Page 14: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

2

processamento, passasse cada vez mais pelo computador. Assim, consegue-se implementar

funcionalidades que anteriormente necessitavam de um hardware relativamente complicado

de desenvolver, bastando para isso utilizar um software de aplicação adequado.

A utilização da interface USB permitiu que a transferência dos dados entre Módulo de

Aquisição e o PC pudesse ser realizada até uma velocidade de 1 Mbyte/s, bastante superior à

velocidade típica na Porta Paralela e Série.

Por outro lado o módulo USB – DLP-USB245M – utilizado não requer a utilização de

memórias para se armazenar dados a serem enviados para o PC, uma vez que este módulo

possui um buffer FIFO de transmissão de 384 bytes e um buffer FIFO de recepção de 128

bytes.

Tanto os Osciloscópios, como os Analisadores Lógicos, como os Voltímetros tornaram-se

instrumentos de medida essenciais no mundo da electrónica. De seguida apresenta-se um

breve sumário sobre o funcionamento destes instrumentos de medida.

1.1.1. Osciloscópio

Inicialmente os Osciloscópios eram relativamente simples, alojados em caixas enormes com

uma gama de frequência limitada e apenas um canal. Posteriormente surgiram as versões de

vários canais, aparecendo mais tarde os Osciloscópios digitais, tornando possível “congelar”

uma certa imagem e guardá-la em memória. As versões mais luxuosas incluíam por vezes

uma pequena impressora embutida, de modo a que as imagens guardadas em memória possam

ser impressas. Devido aos avanços da electrónica, as caixas foram diminuindo e a frequência

máxima de medida foi aumentando gradualmente.

O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional1

visível de uma ou mais diferenças de potencial. O eixo vertical do display mostra a tensão,

enquanto que o eixo horizontal, normalmente, representa o tempo, transformando-o num

instrumento útil para apresentar sinais periódicos. O monitor é constituído por um "ponto"

que "varre" periodicamente o monitor da esquerda para a direita.

1 Eixo vertical x e eixo horizontal y

Page 15: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

3

Basicamente, o Osciloscópio desenha uma linha horizontal2 da esquerda para a direita sendo

esta posicionada a meio do monitor. A velocidade de amostragem desta linha é controlada

através do controlador da base de tempo e é calibrada em segundos por divisão.

Caso a tensão de entrada seja diferente de zero, o traço pode ser desviado tanto para cima

como para baixo. Para determinar a escala deste desvio vertical recorre-se ao controlador

vertical que é calibrado em Volts por divisão. O traço resultante é um gráfico de tensão

eléctrica em função do tempo.

Para obter um traço mais estável, os Osciloscópios modernos tem uma função chamada

trigger (disparo). Quando o trigger é utilizado, o instrumento irá parar cada vez que a

varredura alcance o extremo direito do monitor e retorne ao lado esquerdo do monitor. Então,

o Osciloscópio aguarda um evento específico antes de iniciar o desenho do próximo traço. O

trigger é comum quando a forma de onda da entrada atinge uma tensão numa direcção

específica (tensão crescente ou decrescente) determinada pelo utilizador.

Este efeito serve para sincronizar a base de tempo ao sinal de entrada, impedindo o

deslizamento horizontal do traço. Desta forma, o trigger permite a visualização de sinais

periódicos, tais como, ondas quadradas e ondas sinusoidais. O circuito de trigger permite

também a visualização de sinais não periódicos, tais como pulsos que não se repetem numa

taxa fixa.

Existem os seguintes tipos de trigger:

• trigger externo - um pulso de uma fonte externa conectada a uma entrada dedicada do

Osciloscópio.

• trigger de limiar - um detector de limiar que gera um pulso quando o sinal passa de

uma tensão limiar especificada numa direcção específica.

• video trigger - um circuito que extrai pulsos síncronos de formatos de vídeo tais como

PAL e NTSC e disparam a base de tempo em todas as linhas, numa linha específica,

em todos os campos, ou num quadro. Este circuito é tipicamente encontrado nos

dispositivos monitores de forma de onda.

• trigger por atraso - aguarda um tempo específico após passar por uma tensão limiar

antes de começar a varredura. Nenhum circuito de trigger funciona instantaneamente,

2 Traço

Page 16: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

4

ocorre sempre um pequeno atraso, porém um circuito de trigger por atraso estende

este valor até um intervalo conhecido e ajustável.

Neste momento existe um vasto leque de Osciloscópios no mercado, desde dos mais simples

aos mais complexos.

Para o desenvolvimento deste projecto efectuou-se uma análise de mercado, a qual,

proporcionou uma base de comparação entre o nosso Osciloscópio e o comercial. Uma das

soluções comerciais disponíveis, a um custo relativamente reduzido, é o módulo DS2200C da

empresa USB Instruments (ver figura 2).

Figura 2: Osciloscópio DS2200C [15]

1.1.2. Analisador Lógico

O Analisador Lógico, é um instrumento electrónico utilizado para a visualização no tempo

dos estados lógicos de vários pontos de um circuito electrónico digital. Basicamente vários

canais de monitorização são conectados ao circuito real e o resultado é apresentado num ecrã.

Dessa forma, pode-se analisar o comportamento e a temporização de todos os componentes

digitais de um circuito.

Para se verificar as capacidades do Analisador Lógico desenvolvido realizou-se uma

comparação com o modelo comercial ANT8-8 Channel Logic Analyzer, da empresa USB

Instruments (ver figura 3).

Page 17: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

5

Figura 3: ANT8 – Analisador Lógico de oito canais [15]

1.1.3. Voltímetro

O Voltímetro – figura 4 – é um aparelho para medir a tensão associada a uma dada corrente

eléctrica. Pode medir tensões contínuas ou alternadas, dependendo das qualidades do

aparelho, estas são expressas na unidade volt.

Figura 4: Voltímetro analógico [14]

O software utilizado para o desenvolvimento deste projecto foi, Borland C++ Builder da

empresa Borland. Esta linguagem tem vindo a ter uma grande evolução, não só a nível gráfico

mas também ao nível das funções disponibilizadas, tornando-se bastante versátil no que diz

respeito à aquisição, processamento e representação de sinais.

1.2. Motivação

Este projecto foi bastante aliciante pois aplicamos uma grande parte dos conhecimentos

adquiridos ao longo da licenciatura de Engenharia Electrotécnica. Assim sendo pensa-se que a

realização deste trabalho, assumiu um grande desafio e uma elevada importância para a nossa

experiência profissional.

Page 18: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

6

1.3. Organização do Relatório

O trabalho é constituído por três partes principais. Em primeiro lugar descreve-se o Módulo

de Aquisição. Em segundo lugar descreve-se o software do PC. Por último caracteriza-se o

desempenho prático do KIV.

Page 19: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

7

2. MÓDULO DE AQUISIÇÃO

2.1. Diagrama de Blocos

O Módulo de Aquisição (ver figura 5) tem como finalidade a aquisição de dados para dois

modos distintos. O primeiro modo é relativo à aquisição dos sinais analógicos para o canal do

Osciloscópio, do Voltímetro e posterior envio para o PC. O segundo modo diz respeito à

aquisição dos sinais digitais para o Analisador Lógico e o posterior envio para o PC.

Figura 5: Diagrama de blocos do Módulo de Aquisição

No primeiro modo, os sinais analógicos são acondicionados de uma gama de -15 a 15 V para

uma gama de -5 a 5 V através do circuito analógico. Em seguida, o sinal é convertido para um

sinal digital através de um conversor A/D. Posteriormente, o sinal digital é encaminhado para

o PC através do módulo USB. Todo este processo é controlado pelo microcontrolador AVR

AT90S2313. No segundo modo, os sinais digitais são enviados directamente para o PC

através do módulo USB.

Ambos os modos são seleccionados através de um interruptor externo. Na figura abaixo está

representado o fluxograma que resume os dois modos anteriores (ver figura 6).

Page 20: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

8

Figura 6: Fluxograma do Módulo de Aquisição

2.2. O Módulo DLP

O módulo DLP-USB245M, como referido na introdução deste projecto, foi o módulo

utilizado para se fazer a comunicação USB entre o Módulo de Aquisição e o PC (ver figura

7).

Figura 7: Módulo DLP-USB245M [3]

Page 21: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

9

2.2.1. Características Gerais

O módulo DLP-USB245M é um módulo de baixo custo que integra o dispositivo da FTDI

FT245BM, que é um FIFO USB. Este dispositivo é ideal para implementação de interface

USB entre uma aplicação externa e um PC.

O FTDI FT245BM implementa uma FIFO de leitura e de escrita que resulta na prática num

porto bidireccional de 8 bits de leitura e escrita com memória. A escolha deste dispositivo não

requer a utilização de memórias para armazenar os dados a serem enviados para o PC uma

vez que este módulo possui um buffer FIFO de transmissão de 384 bytes e também um buffer

FIFO de recepção de 128 bytes.

O desenvolvimento da aplicação no PC pode ser efectuada utilizando um driver de COM

virtual ou via driver em que a aplicação comunica com o mesmo via DLL. No primeiro caso o

PC vê o módulo com se fosse uma porta série, o software é escrito como se tratasse de uma

aplicação na porta série. No segundo caso é necessário conhecer as especificações das funções

implementadas pela biblioteca dinâmica (DLL).

Neste projecto recorre-se à primeira forma, ou seja, como uma porta série em que foi

necessário usar os drivers fornecidos pelo fabricante.

As taxas de transferência podem chegar até 1 Megabyte por segundo, sendo o método FIFO

uma mais valia para criar o interface com um microcontrolador, através das portas de I/O,

pois assim consegue-se controlar o envio e a recepção de palavras ( de 1 byte) ao PC.

Este dispositivo tem integrado um regulador de tensão de 3,3V, logo não é necessário um

regulador externo.

2.2.2. Ciclos de Leitura e Escrita

Os diagramas temporais de escrita (ver figura 8) e leitura (ver figura 9) no dispositivo USB,

estão representados nas figuras abaixo.

Para enviar dados, simplesmente é necessário colocar os dados disponíveis nas 8 linhas de

dados do DLP (D[7..0]). Quando TXE = 0, um impulso de 0 para 1 na linha de controlo WR

Page 22: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

10

faz com que os dados sejam guardados no buffer de 384 bytes do DLP. Quando a linha TXE =

1, significa que o buffer de envio está cheio, logo não se pode enviar dados. Os dados são

posteriormente retirados do buffer pelo PC realizando-se desta forma vários ciclos de leitura.

A recepção dos dados enviados pelo PC só pode ser feita quando a linha de controlo RXF = 0.

Quando for 0, esta linha indica que o buffer de recepção tem dados enviados pelo PC.

Neste caso, apenas é necessário um impulso de 1 para 0 na linha de controlo RD para que os 8

bits fiquem disponíveis em D [7..0].

Figura 8: Ciclo de Escrita [3]

Figura 9: Ciclo de Leitura [3]

2.2.3. Ligação ao Microcontrolador

Na figura 10, está patente quais as linhas de controlo do DLP-USB245M que o

microcontrolador deve controlar para que o dispositivo USB execute uma leitura/escrita.

Basta efectuar o controlo das duas entradas, TXE# e RXF#, e de duas saídas, WR e RD#.

Page 23: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

11

Figura 10: Ligação ao Microcontrolador [3]

Existem várias formas de alimentar o DLP, tais como:

•••• Basic Bus-Powered 5V System – configuração em que o módulo é alimentado a

partir da porta USB do PC.

•••• Self-Powered 5V System – alimentação proveniente de um transformador.

•••• Bus-Powered 5V System with 3,3V Logic Interface – serve para alimentar

dispositivos que funcionem com uma tensão de 3,3V.

•••• Power Controlled by Sleep – utilização de um transístor Mosfet canal P para

controlar a alimentação dos circuitos lógicos externos.

A ligação escolhida foi a Self-Powered 5V System (ver figura 11), pois desta maneira não

retiramos potência do barramento USB.

Figura 11: Alimentação do DLP [3]

2.3. Conversor A/D

Inicialmente foi utilizado o conversor A/D ADC0809, da National Semiconductor. Trata-se

de um conversor com uma resolução de 8bits e com um tempo de conversão de 100 µs.

Page 24: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

12

Os resultados obtidos com este conversor A/D não foram satisfatórios, pois a largura de banda

do Osciloscópio estava limitada a uma frequência máxima de 1KHz. Outra desvantagem deste

conversor A/D é a necessidade de um relógio externo, este é gerado por um outro

microcontrolador.

Após uma pesquisa, decidiu-se utilizar o conversor A/D MAX153 da Maxim, com as

seguintes características:

•••• Tempo de conversão: 660 ns;

•••• Não necessita de relógio externo;

•••• ADC Flash de 8 bits;

•••• Resolução de 39 mV para uma gama de sinal de 10V;

•••• Velocidade de Conversão Máxima de 1 Msps.

Neste conversor A/D utiliza-se como tensões de referência ±5V, o que perfaz uma gama de

sinal de 10V.

Na figura 12 esta expresso o diagrama temporal deste conversor A/C.

Figura 12: Diagrama Temporal do conversor A/D [4]

O conversor A/D vai ser controlado através de três pinos: o CS, o RD e o INT. O CS permite

habilitar ou desabilitar o conversor A/D, assim quando o Analisador Lógico estiver a

funcionar, o microcontrolador desabilita o conversor A/D para evitar conflitos entre os dados

do Analisador Lógico e as saídas do conversor A/D.

Page 25: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

13

Caso o Osciloscópio/Voltímetro estiver a funcionar, o microcontrolador habilita o conversor

A/D, como também vai habilitar o pino RD para indicar ao conversor A/D o início de uma

nova conversão. Em seguida, o microcontrolador espera pela activação do pino INT até que

este indique o fim de conversão para permitir ao módulo USB o envio dos dados válidos para

o PC.

2.4. Microcontrolador

O microcontrolador utilizado neste projecto foi o AT90S2313, que é uma arquitectura de 8

bits da ATMEL com uma memória Flash integrada de 2 KByte. Para além disso, esta

arquitectura tem também as seguintes características:

•••• Uma EEPROM de 128 Bytes;

•••• Uma RAM de 128Bytes;

•••• 15 Linhas de entrada e saída;

•••• Dois temporizadores/contadores, um de 8 bits e outro de 16 bits;

•••• Duas interrupções externas;

•••• Um porto série UART programável;

•••• Um contador programável watchdog;

•••• Relógio externo de 4MHz ou de 10MHz.

A escolha deste microcontrolador deve-se à nossa familiarização com o mesmo, à sua

simplicidade de implementação e à sua disponibilidade no laboratório.

Na tabela 1 está representada a configuração dos portos B e D do microcontrolador.

Porto B PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0

RD WR RD CS Porto D PD6 PD5 PD4 PD3 PD2 PD1 PD0

Interruptor

Externo INT Teste ao

Interruptor TXE

Tabela 1: Configuração dos portos do microcontrolador O porto B está configurado como saída, e é usado para o controlo tanto do DLP como do

conversor A/D, ou seja, os pinos PB0 e PB1 que controlam o funcionamento do conversor

A/D e os pinos PB2 e PB3 que controlam a leitura e escrita do DLP.

Page 26: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

14

O porto D está configurado como entrada, e é utilizado para o controlo do conversor A/D e o

DLP. O pino PD0 permite ao microcontrolador verificar quando deve habilitar o DLP a

efectuar uma nova escrita na FIFO. O pino PD2 indica ao microcontrolador que ocorreu o fim

de conversão do conversor A/D, significando assim que neste momento os dados se

encontram válidos para uma nova leitura. Os pinos PD1 e PD3 estão relacionados, ou seja, o

pino PD3 indica ao microcontrolador quando deve mudar o modo de funcionamento e o pino

PD1 permite ao microcontrolador sair desse mesmo modo.

Na figura abaixo está representado o fluxograma do programa do microcontrolador e a sua

explicação – ver figura 13.

Figura 13: Fluxograma do programa do microcontrolador

Explicação:

Início – O programa inicia quando o µP é ligado a 5 volts entrando num ciclo infinito. Só

termina quando o µP for desligado dos 5 volts;

Page 27: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

15

1 – As inicializações servem para habilitar o µP com os componentes necessários para a

execução do programa, ou seja, habilita-se a “stack” para o µP possuir memória para os

registos, programam-se os portos de forma a definir quais os bits destes portos que são de

entrada ou de saída, habilitam-se as interrupções para se poder executar as acções nas

ocasiões pretendidas e define-se quais os níveis lógico de activação destas interrupções;

2 – No fim das inicializações para o µP, este fica operacional. Então, coloca-se o DLP num

estado de espera (nem a ler e nem a escrever) e habilita-se o conversor A/D para que comece

a realizar uma nova conversão;

3 – Após todas as inicializações, o µP irá constantemente verificar qual o nível lógico do

interruptor externo (ext_int1) para saber qual o opção a seguir: se a opção for o

Osciloscópio/Voltímetro, o µP irá habilitar todo o hardware para adquirir os dados

pretendidos, se a opção for o Analisador Lógico, o µP tem que desabilitar o conversor A/D

(CS = 1) para não haver conflito com as entradas do DLP pois esta opção apenas necessita do

DLP para adquirir dados;

4 – Na opção do Osciloscópio/Voltímetro o sistema entra em modo de espera (o µP entra num

ciclo infinito) até que uma das interrupções, ext_int0 ou ext_int1, ocorra;

5 – No modo de espera da opção do Osciloscópio/Voltímetro, o µP verifica sempre se ocorre

o fim de conversão por parte do conversor A/D (ext_int0) ou se ocorre uma mudança no nível

lógico por parte do interruptor externo (ext_int1);

6 – Se ocorrer o fim de conversão por parte do conversor A/D, o µP irá executar a subrotina

de serviço da Interrupção 0 e irá constantemente verificar se ocorre uma transição no nível

lógico pelo interruptor externo (ext_int1), pois esta interrupção é a que tem o grau de

prioridade maior para evitar o conflito no hardware.

7 – Se a opção escolhida pelo interruptor externo (ext_int1) for o Analisador Lógico então o

µP irá executar a subrotina de serviço do Interruptor 1.

Na figura 14 está representado o fluxograma da subrotina da Interrupção 0 do

microcontrolador e a sua explicação.

Page 28: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

16

Não

Sim

Verifica mudança de programa

Qual o

programa a

seguir?

Inicio da

subrotina

Osciloscópio/Voltímetro

CS = 01

Modo de Espera 2

DLP

pronto?3

Interrupção 1 6

Habilita-se DLP para

ler4

Analisador Lógico

CS = 1

Nova conversão do

ADC5

Programa

principal

Figura 14: Fluxograma da subrotina de serviço da Interrupção 0

Explicação:

Início da subrotina – Quando se activa a Interrupção 0 (ext_int0), o µP vai deixar o

programa que estava a correr e vai iniciar com a Interrupção 0;

1 – Nesta subrotina (Interrupção 0) verificar-se constantemente qual o nível lógico do

interruptor externo (ext_int1) de modo a evitar um conflito no hardware se houver mudança

de subrotina, ou seja, mudar do Osciloscópio/Voltímetro para o Analisador Lógico;

2 – Quando o µP receber o sinal de conversão, então vai começar a executar a subrotina da

Interrupção 0, e entra num modo de espera até que o DLP indique que está pronto para

escrever (TXE = 0) para a FIFO (memória interna do DLP). Atenção que, embora o µP esteja

à espera do DLP, vai verificando sempre o estado do interruptor externo (ext_int1);

3 – O µP verifica constantemente qual o nível lógico das interrupções, isto é, se continua em

modo de espera (ver ponto 2), se prossegue com a restante subrotina após a indicação do DLP

Page 29: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

17

(ver ponto 4 e 5), ou se muda para a subrotina da Interrupção 1 (ver ponto 6) caso seja

pretendido pelo utilizador com o interruptor externo (ext_int1).

4 – Após a indicação do DLP que está pronto para escrever (TXE = 0) para a FIFO, o µP vai

permitir ao DLP ler os dados do conversor A/D (WR = 1);

5 – No fim da escrita do DLP, o µP vai desabilitar o DLP da escrita (WR = 1) e habilitar o

conversor A/D para uma nova conversão (transição do RD do nível lógico de 1 para 0);

Programa principal – No fim deste programa, o µP volta ao programa principal para esperar

por um novo fim de conversão pelo conversor A/D (Transição do nível lógico de INT de 1

para 0);

6 – Durante esta subrotina, o µP vai verificando sempre se ocorre alguma interrupção no

interruptor externo (ext_int1). Se sim, o µP vai deixar esta subrotina e vai executar a subrotina

da Interrupção 1.

A figura 15 representa e explica o fluxograma da subrotina da Interrupção 1.

Figura 15: Fluxograma da subrotina da Interrupção 1

Page 30: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

18

Explicação:

Início da subrotina – Quando se activa a Interrupção 1 (ext_int1), o µP vai deixar o

programa que estava a correr e vai iniciar a subrotina da Interrupção 1;

1 – Nesta subrotina (Interrupção 1) verificar-se constantemente qual o nível lógico do

interruptor externo (ext_int1) de modo a evitar um conflito no hardware se houver mudança

de subrotina, ou seja, mudar do Analisador Lógico para o Osciloscópio/Voltímetro;

2 – Após o µP executar a subrotina da Interrupção 1, ele vai estar sempre no modo de espera

até o DLP indicar ao µP que já está pronto para escrever os dados (TXE = 0) para a FIFO, ou

se o interruptor externo variar no seu nível lógico, o que significa que se pretendeu mudar de

subrotina;

3 – O µP verifica constantemente quais os estados das interrupções: se continua em modo de

espera, se prossegue com a restante subrotina após a indicação do DLP para prosseguir, ou se

muda para o programa principal se for o pretendido pelo utilizador com o interruptor externo

(ext_int1);

4 – Após a indicação do DLP que está pronto para escrever (TXE = 0), o µP vai permitir ao

DLP ler directamente os dados das suas entradas e em seguida torna a verificar se existe

mudança de subrotina;

5 – Se ocorrer uma mudança de subrotina, o µP vai activar o conversor A/D (CS = 0) para

uma nova conversão (transição do RD do nível lógico de 1 para 0);

Programa principal – O µP volta ao programa principal para esperar por um novo fim de

conversão do conversor A/D (Transição do nível lógico de INT de 1 para 0).

2.5. Circuito Analógico

Para o acondicionamento de sinal é utilizado o MAX494 da Maxim, trata-se de um

amplificador operacional com as seguintes características:

•••• Baixo consumo de 150µA;

•••• Tensão de offset de 200µV;

Page 31: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

19

•••• Um ganho de largura de banda de 500KHz;

•••• Tensão de alimentação de ±5V.

Este amplificador operacional foi seleccionado devido ao seu baixo consumo e ser possível

alimentá-lo com apenas ±5V, sendo esta a tensão que está disponível no nosso circuito.

Como o conversor A/D tem tensões de referência de ±5V, ou seja, uma gama de sinal de 10V,

só poderá converter sinais analógicos dentro desta gama. Definiu-se que a gama de sinal

máximo recebida pelo Módulo de Aquisição é de ±15V. Para isso é então necessário

acondicionar esta gama de sinal para a mesma permitida pelo conversor A/D, ver figura 16.

Figura 16: Operação do circuito analógico

Para o acondicionamento de sinal é utilizado um circuito analógico (ver figura 17), onde são

necessários apenas dois amplificadores operacionais, um serve para amplificar o sinal e outro

serve para o inverter.

Figura 17: Circuito analógico para acondicionamento de sinal

Page 32: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

20

Como se pretende converter uma gama de sinal de ±15V em ±5V é necessário ter um ganho

de 1/3. Para tal, utiliza-se uma montagem inversora, expressa pela seguinte equação:

AViVo = (2.1)

Onde Vo é a tensão de saída, Vi a tensão de entrada e A o ganho do amplificador.

O ganho de um amplificador inversor é dado por:

2

1

R

RA −= (2.2)

Assumindo que R1= 10KΩ e 3/1A −= então substituindo em (2.2) temos:

Ω=⇔Ω

−=− KRR

K302

2

10

3

1

Como teoricamente é necessário utilizar uma resistência de 10KΩ mas na pratica só existe um

valor aproximado a este, então no circuito analógico é utilizado um potenciómetro de 20KΩ

em vez da resistência R1 de 10KΩ, para se poder calibrar o circuito analógico para uma

melhor precisão.

Como o resultado do primeiro amplificador tem um sinal contrário ao que é pretendido,

utiliza-se outro amplificador com o objectivo de inverter este sinal. Para isso basta apenas

utilizar duas resistências iguais para se obter um ganho de -1, no lugar de uma destas

resistências utiliza-se um potenciómetro para se poder calibrar o circuito analógico para uma

melhor precisão.

Pode-se verificar através da simulação – figura 18 – que para uma tensão de entrada com

amplitude de 15V (cor verde) resulta numa tensão de saída com amplitude de 5V (cor

vermelha).

Page 33: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

21

Figura 18: Simulação do Circuito Analógico

2.6. Protecção de Entradas

O Módulo de Aquisição tem dois tipos de protecções de entrada. Uma protecção para o canal

do Osciloscópio/Voltímetro e outra para as entradas do Analisador Lógico.

No modo do Osciloscópio/Voltímetro a protecção de entrada tem que limitar a tensão de

entrada entre ±5V, para isso são usados dois diodos zener com uma queda de tensão de 10V

(ver figura 19).

Na figura 20 pode-se verificar através do simulador, que para uma tensão de entrada com

amplitude superior a 5V (cor verde) o circuito de protecção limita a tensão de saída a uma

amplitude máxima de 5V (cor vermelha).

Page 34: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

22

Figura 19: Protecção de entrada para o modo Osciloscópio/Voltímetro

Figura 20: Simulação da protecção de entrada para o modo Osciloscópio/Voltímetro

O modo do Analisador Lógico tem oito protecções iguais para as oito entradas. Esta protecção

de entrada tem que limitar a tensão de entrada entre 0V e 5V. Para isso são usados dois diodos

zener com uma queda de tensão de 5V – figura 21

Na figura 22 pode-se verificar através do simulador, que para uma tensão de entrada com

amplitude superior a 5V (cor verde) o circuito de protecção limita a tensão de saída a um

máximo entre 0V a 5V (cor vermelha).

Page 35: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

23

Figura 21: Protecção de entrada para o modo Analisador Lógico

Figura 22: Simulação da protecção de entrada para o modo Analisador Lógico

Page 36: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

24

Page 37: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

25

3. SOFTWARE

O software responsável pela apresentação do painel frontal do KIV e pelo controlo do Módulo

de Aquisição foi desenvolvido em Borland C++ Builder.

Como já foi referido, é utilizado um driver que cria um porto COM virtual (VCP) no PC (ver

Anexo C). Este porto pode ser acedido da mesma forma que os outros portos COM do PC.

3.1. Funções API para Aceder à Porta Série

Para realizar a comunicação com qualquer dispositivo externo é necessário um API –

Application Programming Interface.

A seguir encontram-se algumas das funções do API do Windows, com o objectivo de aceder a

Porta Série:

CreateFile()Utilizada para abrir a Porta Série.

CloseHandle()Utilizada para fechar a Porta Série.

ReadFile() e WriteFile() Utilizadas para ler e enviar dados através da Porta Série.

GetCommState() e SetCommState()Utilizadas para obter e alterar as configurações da

Porta Série, como velocidade, número de bits de dados, paridade e número de stop de bits.

BuildCommDCB()Utilizada para preencher os campos da estrutura DCB com valores

especificados numa string de controlo de dispositivos.

GetCommTimeouts() e SetCommTimeouts() Utilizadas para obter e alterar os

parâmetros actuais de Timeouts associados às funções WriteFile() e ReadFile().

A função CreateFile() da API do Windows (ver figura 23) é responsável pela abertura da

Porta Série. Ela aceita vários parâmetros, sendo que o primeiro é o nome da porta "COM1",

"COM2", etc. O segundo especifica o tipo de acesso: leitura (GENERIC_READ), escrita

(GENERIC_WRITE) ou leitura e escrita (GENERIC_READ | GENERIC_WRITE), em

que o "|" representa o operador (OR) e a sua função é combinar as duas constantes formando

um novo valor. O terceiro parâmetro especifica a “partição”, se for definido como 0 (zero), a

Page 38: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

26

Porta não será partilhada, ou seja, enquanto um programa estiver a usar a Porta série nenhum

outro poderá abri-la.

hCom é uma variável do tipo HANDLE (identificador) que armazenará todas as informações

necessárias sobre o dispositivo aberto, no nosso caso, a Porta Série. Essa variável será

utilizada como parâmetro para as funções que irão configurar, alterar, ler e escrever a Porta

Série.

Se houver algum tipo de erro na abertura da Porta Série, a função CreateFile() retornará um

valor do tipo INVALID_HANDLE_VALUE para a variável hCom. Portanto, é

imprescindível que o programa teste a variável hCom para verificar se houve erro, antes de

usar as demais funções de acesso à Porta Série.

Figura 23: Uso da função CreateFile() da API do Windows

As funções GetCommState() e SetCommState() (figura 23) funcionam em conjunto e têm

como objectivos obter as configurações actuais da Porta Série depositadas na estrutura DCB,

como também alterar os seus atributos.

Page 39: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

27

Figura 24: Uso das funções GetCommState() e SteCommState()

Na tabela 2, estão representadas as constantes e valores da API do Windows utilizadas para

configurar a Porta Série.

BaudRate

Velocidade

ByteSize

Tamanho dos

dados

Parity

Paridade

StopBits

Bits de paragem

CBR_110 CBR_38400 5 EVENPARITY

(ímpar) ONESTOPBIT (1)

CBR_300 CBR_56000 6 MARKPARITY

(marca)

ONE5STOPBITS

(1.5)

CBR_600 CBR_57600 7 NOPARITY

(nenhuma)

TWOSTOPBITS

(2)

CBR_1200 CBR_115200 8 ODDPARITY (par)

CBR_2400 CBR_128000

CBR_4800 CBR_256000

CBR_9600 CBR_921600

CBR_14400

CBR_19200

Tabela 2: Constantes e valores da API do Windows utilizadas para configurar a Porta Série

As funções GetCommTimeouts() e SetCommTimeouts() trabalham juntas e têm como

objectivos obter e modificar as configurações actuais dos timeouts da Porta Série. Qualquer

mudança nos valores dos atributos da estrutura COMMTIMEOUTS afectará

consideravelmente os tempos de leitura e escrita na Porta Série. Os valores de tempos

definidos na figura 25 são os mais adequados para este projecto.

Page 40: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

28

Figura 25: Uso da função GetCommTimeouts() e GetCommTimeouts()

É através da função ReadFile() (figura 26) que é feita a leitura dos dados que chegam á Porta

Série. Esta função aceita 5 parâmetros, sendo o primeiro (hCom) o identificador da Porta

Série retornada na abertura da mesma através da função CreateFile(). O segundo é um buffer,

ou seja, é um local temporário na memória onde os dados lidos da Porta Série são

armazenados. O terceiro informa à função ReadFile(), qual o tamanho do buffer de dados

(BufferRecebe). O quarto é uma variável do tipo ponteiro inteiro longo, onde a função

ReadFile() armazenará a quantidade exacta de bytes lidos. O quinto e último é um ponteiro

para uma estrutura "overlapped", no nosso caso não será utilizada, portanto definimos este

parâmetro com (NULL).

A cada chamada à função ReadFile(), os dados lidos da Porta Série são armazenados na

variável BufferRecebe, e a quantidade total de bytes são armazenados na variável BytesLidos.

Figura 26: Uso da função ReadFile()

É através da função WriteFile() (figura 27) que os nossos programas enviam dados pela Porta

Série. Esta função aceita 5 parâmetros, sendo o primeiro (hCom) o identificador da Porta

Série retornado na abertura da mesma através da função CreateFile().

Page 41: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

29

O segundo é um buffer, ou seja, é um local na memória onde deverá ser depositados os dados

a serem enviados para a Porta Série.

O terceiro informa a função WriteFile() sobre qual o tamanho do buffer de dados

(BufferEnvia). O quarto é uma variável do tipo ponteiro inteiro longo, onde a função

WriteFile() armazena a quantidade exacta de bytes escritos.

O quinto e último é um ponteiro para uma estrutura "overlapped", no nosso caso não será

utilizada, portanto definimos este parâmetro com (NULL).

A cada chamada à função WriteFile(), os dados armazenados no buffer (BufferEnvia) serão

enviados para Porta Série.

Figura 27: Uso da função WriteFile()

A função CloseHandle() (figura 28) fecha a Porta Série aberta pela função CreateFile(),

disponibilizando-a para que outros programas possam acede-la normalmente.

Figura 28: Uso da função CloseHandle()

3.2. Programa de Teste do DLP

O programa de teste do DLP (figura 29) é um método de verificar se o DLP está operacional

ou seja, verificar se os drivers do DLP estão bem instaladas e se o DLP está bem conectado.

O teste é realizado através do envio e recepção de dados e assim verificar se os dados que são

enviados e recebidos são válidos e garantir que o DLP está a funcionar correctamente.

Page 42: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

30

Figura 29: Interface do programa de teste do DLP

3.3. Programa do KIV

Na figura 30, está representado a interface principal do KIV. Este interface permite ao

utilizador seleccionar qual o instrumento de medida pretendido.

Figura 30: Interface principal do KIV

Legenda:

1- Permite ligar e desligar a porta COM escolhida em 5;

2- Permite iniciar o programa do Osciloscópio;

Page 43: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

31

3- Permite iniciar o programa do Voltímetro;

4- Permite iniciar o programa do Analisador Lógico;

5- Permite seleccionar a porta COM criada pelos drivers do DLP;

6- Permite visualizar os créditos deste projecto;

7- Texto rolante;

8- Permite verificar se o programa está a correr.

Para os instrumentos de medida, Osciloscópio e Voltímetro, utilizarem os dados adquiridos

pelo Módulo de Mquisição é necessário “tratá-los”, isto é, converter os dados que se

encontram compreendidos entre 0 e 10, numa gama de -15 a 15 (ver figura 31).

Figura 31: Exemplo de conversão dos dados

Page 44: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

32

3.4. Osciloscópio

Para a realização deste programa é utilizado o componente iScope da Iocomp Software.

O componente iScope é um substituto directo para um Osciloscópio actual Analógico ou

Digital. Tem como base interna o trigger e unidade de Base de Tempo e pode suportar um

número ilimitado de canais. Podemos ver na figura 32, a hierarquia deste componente.

Figura 32: Hierarquia iScope [8]

A figura 33 mostra como adicionar dados contínuos ao componente iScope, após se

adquirirem os dados através da função ReadFile() (ver figura 26).

Figura 33: Exemplo de como adicionar dados ao iScope

A figura 34 representa a interface do Osciloscópio. Esta interface possui um ecrã, onde se

visualizam os sinais provenientes do Módulo de Aquisição e possui também um painel de

controlo onde o utilizador pode interagir directamente com o programa. De seguida explica-se

pormenorizadamente cada controlo (ver figura 35).

Page 45: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

33

Figura 34: Interface do Osciloscópio

Figura 35: Painel de Controlo

Page 46: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

34

Legenda:

1- Permite ocultar o painel de controlo e assim realizar um “Full Screen” do ecrã;

2- Permite alterar a escala de amplitude, a posição vertical do canal e o acoplamento

DC/AC;

3- Permite alterar o valor do trigger, controlar a inclinação positiva ou negativa e

seleccionar o trigger manual ou automático;

4- Permite alterar a base temporal;

5- Barra de ferramentas, que permite a impressão, a cópia e salvar a imagem do ecrã,

permite alterar as configurações do componente e activar o cursor do canal;

Na figura 36 apresenta-se as propriedades de controlo, e de seguida explicam-se essas

mesmas propriedades.

Figura 36: Propriedades de controlo

Samples Per Second: Usa-se o Samples Per Second para especificar o número de amostras

dos dados que serão adicionadas à placa por segundo. É necessário especificar o número de

amostras por segundo de modo que o componente saiba a distância de tempo entre cada

amostra.

Page 47: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

35

Update Imagem Rate: Usar Update Imagem Rate para iniciar ou ajustar a taxa de frame que

se deseja que a esta se reproduza. A taxa da frame é usada para melhorar o desempenho ao

controlar o número de tempos que o ecrã reproduz por segundo.

Auto Frame Rate: Usar o Auto Frame Rate para especificar se o ecrã define a taxa de frame,

isto é, a taxa de reprodução do ecrã por segundo.

Na figura 37 apresenta-se as propriedades de controlo da impressão.

Figura 37: Propriedade de Controlo da Impressão

Print Show Dialog: Usar o Print Show Dialog para especificar se o diálogo da instalação de

impressora é apresentado ao utilizador quando o método de Print Imagem é chamado. Se for

habilitado, o utilizador pode seleccionar um local ou a impressora da rede, especifica a

orientação, o número das cópias, antes de imprimir a imagem.

Print Orientation: Usar Print Orientation para ajustar a orientação da imagem na página

impressa.

Margins: Especifica as margens superior, da esquerda, da direita, e inferior ao imprimir a

imagem.

Print Document Name: Usar o Print Document Name para introduzir ou ajustar o nome do

documento indicado no ecrã da impressora, se suportado pela impressora.

Na figura 38 apresenta-se as propriedades do canal.

Page 48: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

36

Figura 38: Propriedade do canal

Title Text: Usar o Title Text para introduzir ou ajustar o texto do título para o canal.

Volts Per Division: Usar o Volts Per Division para especificar o número de volts por divisão

no ecrã da linha vertical. Há 8 divisões principais. A extensão total da tensão indicada será 8x

este valor. Nota: O valor especificado deve ser de um dos valores da tabela 3. Se não houver

especificação de um dos seguintes valores, esta propriedade não mudará.

Tensão Valor Real

500 mV 0.500

1 V 1000

2 V 2000

5 V 5000

10 V 10000

20 V 20000

50 V 50000

Tabela 3: Volts por divisão

Position: Especifica o offset vertical de todo o canal em percentagem do ecrã.

Coupling: Especifica o acoplamento do canal.

Page 49: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

37

Ref Line Show: Usar o Ref Line Show para especificar se a linha de referência do canal será

mostrada. Se esta propriedade for VERDADEIRA, então uma linha tracejada é mostrada

horizontalmente através do centro dos dados do canal. Esta linha permite que se mova a

referência do canal com o rato juntamente com as funcionalidades do painel de controlo.

Color: Usar o Color para introduzir ou ajustar a cor do canal.

Trace Visible: Usar o Trace Visible para especificar se a linha de traço do canal é visível.

Trace Line Width: Especifica a largura da linha usada ao extrair a linha de traço do canal.

Scaler Multiplier: Especifica o multiplicador da escala dos dados do canal. Todos os dados

do canal serão escalados de acordo com esta propriedade. Por exemplo, ajustar esta

propriedade a 2 irá dobrar todos os dados adicionados. Ajustando esta propriedade a 0.5 irá

retirar metade a todos os dados adicionados.

Scaler Offset: Usar o Scaler Offset para especificar o deslocador de escala dos dados do

canal. Todos os dados do canal serão deslocados de acordo com esta propriedade. Por

exemplo, ajustando esta propriedade a 0.5 deslocará todos os dados adicionados. Adicionar

um valor de 2 ao canal resultará no valor que está a ser interpretado como 2.5.

Na figura 39 apresentam-se as propriedades do ecrã.

Figura 39: Propriedade do ecrã

Page 50: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

38

Text Show: Especifica se o texto do canal e da informação da Base de Tempo, são mostrados

no ecrã.

Horz Scroll Show: Especifica se a barra de deslocamento horizontal é mostrada no ecrã.

Grid Color: Especifica a cor das linhas da grelha presentes no ecrã do Osciloscópio.

Na figura 40 apresenta-se as propriedades da base de tempo.

Figura 40: Propriedade da base de tempo

SEC/DIV: Especifica o número dos segundos por divisão na linha horizontal do ecrã. Há 10

divisões principais. A extensão de tempo do total indicado será 10 vezes este valor.

Nota: O valor especificado deve ser um dos valores da tabela 4. Se não houver especificação

de um dos seguintes valores, esta propriedade não mudará.

Tempo Valor Real

10 µs 0.00001

20 µs 0.00002

50 µs 0.00005

0.1 µs 0.0001

0.2 µs 0.0002

0.5 µs 0.0005

1 ms 0.001

2 ms 0.002

Page 51: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

39

5 ms 0.005

10 ms 0.01

20 ms 0.02

50 ms 0.05

0.1 s 0.1

Tabela 4: Segundos por divisão

Position: Especifica o deslocamento horizontal total do canal em percentagem do ecrã. O

offset máximo é ±50% do ecrã, mais 10% para cada divisão de PreCapture ou de PostCapture.

PreCapture: Especifica quantos dados a capturar antes do começo do ecrã. O valor é

especificado nas divisões da linha horizontal.

PostCapture: Especifica quantos dados a capturar após a extremidade do ecrã. O valor é

especificado nas divisões da linha horizontal.

Na figura 41 apresentam-se as propriedades do trigger.

Figura 41: Propriedade do trigger

Level: Especifica o nível onde o mecanismo do trigger provoca uma nova frame a ser

apresentada. Tal é utilizado conjuntamente com a propriedade positiva da inclinação. O nível

é uma propriedade de percentagens de inteiros e escalas no valor de 10-90.

Se a inclinação for ajustada à inclinação positiva e quando o sinal for inferior à marca de 5% e

supera o nível de trigger é gerado uma nova frame (ver figura 42).

Page 52: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

40

Figura 42: Inclinação positiva onde o mecanismo de trigger é accionado [8]

Se a inclinação estiver ajustada à inclinação negativa, então quando o sinal supera a marca de

95% e for inferior ao nível do trigger, é gerado um novo frame (ver figura 43).

Figura 43: Inclinação negativa onde o mecanismo de trigger é accionado [8]

Source: Especifica o canal usado para trigger.

Positive Slope: Especifica se o trigger é disparado na inclinação positiva ou negativa.

Quando esta propriedade é VERDADEIRA, então usa-se a inclinação positiva. Caso contrario

utiliza-se a inclinação negativa. Esta propriedade é utilizada conjuntamente com a

propriedade Level.

Page 53: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

41

Auto: Especifica se o trigger é automático ou manual. Se este valor for VERDADEIRO, o

trigger estará avaliado automaticamente sempre que o DataBlockEnd é evocado. Se este valor

for FALSO, deve-se manualmente avaliar o trigger pressionando a tecla na secção do trigger

do painel do Osciloscópio.

O cursor do ecrã permite ao utilizador medir cada sinal individual no Osciloscópio (ver figura

44)

Figura 44: Controlo do cursor do ecrã

O Value X Style (ver figura 45) permite ao utilizador medir no ecrã o valor de x. Um único

ponteiro possibilita ao utilizador mover este através do ecrã.

Figura 45: Controlo do Cursor do Value X Style

O Value Y Style permite ao utilizador medir o valor de y no ecrã (ver figura 46). Um único

ponteiro permite ao utilizador mover este através do ecrã.

Page 54: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

42

Figura 46: Controlo do Cursor do Value Y Style

A figura 47 representa o Period Style que permite ao utilizador medir o período no ecrã. As

duas barras verticais são mostradas e o utilizador pode movê-las independentemente.

Figura 47: Controlo do Cursor do Period Style

A figura 48 representa o Peak-Peak Style que permite ao utilizador medir a tensão de pico a

pico no ecrã. Duas barras horizontais são mostradas e o utilizador pode movê-las

independentemente.

Page 55: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

43

Figura 48: Controlo do Cursor do Peak-Peak Style

A figura 49 representa o Frequency Style que permite ao utilizador medir a frequência no

ecrã. Duas barras verticais são mostradas e o utilizador pode movê-las independentemente.

Figura 49: Controlo do Cursor do Frequency Style

3.5. Analisador Lógico

A figura 50 representa a interface do Analisador Lógico. Esta interface contém um ecrã e um

conjunto de oito leds onde constam os sinais digitais provenientes do Módulo de Aquisição.

Tem ainda um painel de controlo onde o utilizador pode interagir directamente com o

programa.

Page 56: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

44

Figura 50: Interface do Analisador Lógico

Para a elaboração do ecrã do Analisador Lógico recorre-se ao mesmo componente do

Osciloscópio, mas alterado de modo a funcionar como Analisador Lógico. Por defeito, o

trigger do Analisador Lógico encontra-se a um nível de 50% e com o flanco positivo, sem a

possibilidade de ser alterado pelo utilizador.

Na figura abaixo, está visível a explicação de cada controlo do Analisador Lógico – figura 51.

Page 57: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

45

Figura 51: Painéis de controlo do Analisador Lógico

Legenda:

1- Permite ao utilizador habilitar os oitos canais de uma só vez com o botão “Ver

Todos”, ou seleccionar um canal de cada vez com os botões “D0” a “D7”;

2- Permite a visualização dos sinais digitais no ecrã em tempo real;

3- Permite armazenar numa tabela um número de amostras definido pelo utilizador,

guardar esta tabela num ficheiro de texto, abrir ficheiros de tabelas já guardadas e

também visualizar no ecrã todos os dados da tabela;

4- Permite gravar ou imprimir a imagem do ecrã e activar uma grelha no ecrã;

5- Permite alterar a base temporal.

Page 58: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

46

3.6. Voltímetro

A interface do Voltímetro (ver figura 52) contém um ecrã digital onde é apresentado o valor

da tensão, com a possibilidade do utilizador seleccionar entre a tensão contínua – DCV - e a

tensão alternada - ACV. Através de dois leds, V e mV, é possível determinar qual a escala

onde se encontra a tensão.

Figura 52: Interface do Voltímetro

Para o cálculo da tensão contínua é determinada a média aritmética dos valores recebidos,

como consta na figura 53.

Figura 53: Cálculo da tensão contínua

Para o cálculo da tensão alternada, é determinado o valor eficaz, ou seja, verifica-se qual o

valor máximo dos valores recebidos e divide-se posteriormente esse valor por raiz de dois

(ver figura 54).

Figura 54: Calculo da tensão alternada

Page 59: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

47

3.7. Créditos

Através da interface dos Créditos, figura 55, é possível visualizar o título deste projecto, os

autores, o orientador, a instituição e o curso.

Figura 55: Interface dos Créditos

Page 60: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

48

Page 61: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

49

4. TESTES DOS SISTEMAS

4.1. Osciloscópio

Para a análise do desempenho do Osciloscópio, aplica-se à entrada do Módulo de Aquisição

diferentes tipos de ondas com diferentes frequências e amplitudes.

Em primeiro lugar analisa-se um caso típico do Osciloscópio onde estão representadas as

ondas rectangular, sinusoidal e triangular respectivamente a uma frequência de 1KHz e uma

amplitude de 20V pico a pico (ver figuras 56,57 e 58).

Figura 56: Onda rectangular (1KHz)

Figura 57: Onda sinusoidal (1KHz)

Page 62: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

50

Figura 58: Onda Triangular (1KHz)

Em seguida analisa-se um caso crítico do Osciloscópio, ou seja, a frequência mínima lida pelo

Osciloscópio. A frequência mínima lida é de aproximadamente 2Hz com uma amplitude de

20 volts pico a pico, pois é possível observar o período completo desta onda. Nas três figuras

abaixo pode-se constatar os diferentes tipos de onda: rectangular (ver figura 59), sinusoidal

(ver figura 60) e triangular (ver figura 61).

Figura 59: Onda rectangular (≈2Hz)

Page 63: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

51

Figura 60: Onda Sinusoidal (≈2Hz)

Figura 61: Onda Triangular (≈2Hz)

Em seguida analisa-se outro caso crítico do Osciloscópio, ou seja, a frequência máxima lida

pelo Osciloscópio. A frequência máxima lida é de aproximadamente 5KHz com uma

amplitude de 20 volts pico a pico, mas neste caso a onda rectangular apresenta uma certa

deformação, enquanto que para as restantes ondas é possível aumentar ligeiramente a

frequência máxima com esta amplitude. Nas três figuras abaixo pode-se constatar os

Page 64: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

52

diferentes tipos de onda: rectangular (ver figura 62), sinusoidal (ver figura 63) e triangular

(ver figura 64).

Figura 62: Onda Rectangular (≈≈≈≈5KHz)

Figura 63: Onda Sinusoidal (≈5KHz)

Page 65: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

53

Figura 64: Onda Triangular (≈5KHz)

Por último, com uma amplitude igual ou inferior a 10V é possível aumentar a frequência

máxima. Nas figuras 65, 66 e 67 visualiza-se as ondas rectangular, sinusoidal e triangular,

respectivamente, a uma frequência de aproximadamente 10KHz e uma amplitude de 10V pico

a pico. Para frequências superiores, o Osciloscópio começa a ser limitado.

Figura 65: Onda Rectangular (≈10KHz)

Page 66: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

54

Figura 66: Onda Sinusoidal (≈10KHz)

Figura 67: Onda Triangular (≈10KHz)

4.2. Analisador Lógico

Para a análise do desempenho do Analisador Lógico, aplica-se à entrada do canal D0 do

Módulo de Aquisição um sinal de relógio com diferentes frequências.

Page 67: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

55

Nas figuras que se seguem pode-se verificar o resultado do Analisador Lógico para diferentes

tipos de frequência. Na figura 68 utiliza-se a frequência mínima possível (1 Hz) para o

Osciloscópio, na figura 69 recorre-se a uma frequência intermédia de 5KHz e por último, na

figura 70, usa-se uma frequência máxima de 100KHz.

Figura 68: Sinal de relógio com frequência de 1Hz

Figura 69: Sinal de relógio com frequência de 5KHz

Figura 70: Sinal de relógio com frequência de 100KHz

Podemos verificar através dos resultados obtidos que o Analisador Lógico representa os sinais

digitais correctamente para frequências inferiores a 100KHz. A partir desta frequência os

sinais digitais, embora se consigam visualizar, deixam de ser válidos devido à falta de

sincronismo.

4.3. Voltímetro

Para a análise do desempenho do Voltímetro realizam-se dois testes diferentes. No primeiro

aplicam-se diferentes tensões contínuas e no segundo aplica-se uma tensão alternada de uma

onda sinusoidal.

Page 68: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

56

Nas figuras 71, 72 e 73 estão visíveis os valores lidos para as tensões de entrada de 5V, -5V e

0V, respectivamente, e também os valores lidos por um Multímetro, para se verificar qual o

erro do nosso Voltímetro.

Figura 71: Tensão contínua de 5V

Figura 72: Tensão contínua de -5V

Figura 73: Tensão contínua de 0V

Page 69: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

57

Na figura 74 está representado o valor lido para uma onda sinusoidal com uma

frequência de 1KHz e uma amplitude de aproximadamente 10V.

Figura 74: Tensão alternada com amplitude de ≈ 10V

Page 70: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

58

Page 71: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

59

5. CONCLUSÕES

Este projecto foi bastante aliciante e cativante, pois permitiu testar grande parte dos

conhecimentos adquiridos ao longo da licenciatura. Por outro lado, foi também um projecto

difícil de se realizar, devido á sua grandeza e complexidade.

Estas dificuldades deparam-se, sobretudo ao nível da frequência máxima de amostragem e

também na alimentação do Módulo de Aquisição já que tentamos alimentar este unicamente

com o porto USB. Isso não foi conseguido devido a diferentes factores, tais como, a

necessidade de uma tensão negativa de 5V e a existência de um elevado ruído, optando-se

então pelo uso de uma fonte externa.

Apesar de destas dificuldades, conseguiu-se construir um Kit de Instrumentação Virtual com

capacidades bastante aceitáveis que serve perfeitamente para a maioria de apreciadores de

electrónica.

Terminado o trabalho pode-se tirar algumas conclusões que apesar de serem finais, no

trabalho, podem ser melhoradas no futuro – ponto 6 deste projecto.

Através de uma comparação entre o KIV e um comercial denominado por DS2200C – tabela

5 – podemos concluir que os dois Osciloscópios são bastante semelhantes nas suas

especificações, contudo o Osciloscópio comercial tem uma resolução de conversão superior

enquanto que o KIV apresenta uma frequência de amostragem máxima superior.

Na tabela 6 apresenta-se a comparação entre dois Analisadores Lógicos, o KIV e o ANT8. Ao

analisar a tabela abaixo verifica-se que o ANT8 tem uma velocidade de amostragem muito

superior à do KIV, mas este consegue apresentar velocidades de amostragem mais baixas.

Em relação ao Voltímetro conseguiu-se atingir as seguintes especificações – tabela 7.

Page 72: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

60

Tabelas:

KIV_Osciloscópio DS2200C3

Gama de Sinal ± 15 V ± 10 V

Resolução do conversor A/D 8 Bits 12 Bits

Velocidade de amostragem máxima 420 000 Amostras/s 200 000 Amostras/s

Largura de Banda 5KHz _

Fichas de entrada BNC 50 ohm x 1 BNC 50 ohm x 2

Impedância de entrada 1M Ohm 1M Ohm

Fonte de Alimentação Externa USB

Escalas de Amplitude 500mV/Div até 50V/Div 0,1 V/Div até 5V/Div

Bases de Tempo 10 µs/Div até 0.1s/Div 50µs/Div até 1s/Div

Selecção de Acoplamento AC\DC Sim Sim

Tabela 5: Comparação entre os Osciloscópios

KIV ANT83

Velocidade de amostragem 1Hz a 100KHz 100Hz a 500MHz

Numero de Canais 8 8

Threshold 1.5V 1.4V

Impedância de entrada 200Kohms 100Kohms

Fonte de Alimentação Externa USB

Tabela 6: Comparação entre Analisadores Lógicos

KIV

Resolução 1.17mV

Numero de Dígitos 5

Tensão máxima de entrada (AC/DC) ±15V

Fonte de alimentação Externa

Indicador automático de escala V/mV

Tabela 7: Especificações Gerais do Voltímetro

3 Retirado [15] www.usb-instruments.com

Page 73: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

61

6. PERSPECTIVAS DE TRABALHO FUTURO

No futuro, o equipamento concebido pode ser melhorado nos seguintes pontos:

1. Aumentar a frequência de amostragem do sistema.

2. Alimentar o Módulo de Aquisição unicamente pelo porto USB.

3. Aumentar a precisão do sistema, com a utilização de um conversor A/D de 12 ou mais

bits.

4. Aumentar o número de canais do Osciloscópio.

5. Aumentar a gama de sinal máxima do sistema.

6. Acrescentar ao sistema um amperímetro, um ohmímetro e um gerador de sinais.

7. Utilizar um microcontrolador PIC, como por exemplo, o PIC18F2455, já que este

circuito integrado substitui, quase todo o módulo de aquisição de dados pois dispõe de

uma interface USB 2.0, um conversor A/D de 10 canais com uma resolução de 10 bits

cada. Além disso é um microprocessador com uma velocidade de relógio interno de

8MHz e a possibilidade de utilizar um relógio externo de 48MHz.

Page 74: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

62

Page 75: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Engenharia Electrotécnica kit de Instrumentação Virtual

63

7. BIBLIOGRAFIA

[1] webx.ubi.pt/~a13852/projecto

[2] www.atmel.com

[3] www.dlpdesign.com

[4] www.maxim-ic.com

[5] www.digicontrole.com

[6] www.dicasbcb.com.br

[7] www.rogercom.com

[8] www.iocomp.com

[9] www.tmssoftware.com/tiw.htm#samples

[10] elvex.ugr.es/decsai/builder/index.html

[11] www.datasheetcatalog.com

[12] msdn.microsoft.com/library

[13] paginas.terra.com.br/lazer/py4zbz/teoria/digitaliz.htm

[14] pt.wikipedia.org/wiki

[15] www.usb-instruments.com

Page 76: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível
Page 77: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

ANEXOS

Page 78: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível
Page 79: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

ANEXO A (Diagrama Digital do Modulo de Aquisição)

Page 80: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível
Page 81: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível
Page 82: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível
Page 83: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

ANEXO B (Desenho da placa de circuito impresso do Módulo de Aquisição)

Page 84: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível
Page 85: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Figura 1: Parte superior

Figura 2: Parte inferior

Page 86: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível
Page 87: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

ANEXO C (Instalação das Drivers do DLP)

Page 88: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível
Page 89: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Para instalar os drivers VCP para o dispositivo FT245BM, sobre um sistema operativo

Windows XP, segue-se as instruções abaixo:

Se um dispositivo do mesmo tipo já está instalado no PC e os drivers que estão a ser

instaladas são diferentes daquelas já instaladas, então os drivers originais necessitam de

ser desinstaladas.

Descarregar a última versão disponível do driver VCP da página de Internet da FTDI e

descompactar este para uma posição do PC.

Se o sistema operativo a “correr” for o Windows XP SP 1 ou Windows XP, desliga-se

temporariamente o PC da Internet. Isto pode ser feito através da remoção do cabo da

rede do PC. A conexão pode ser habilitada novamente depois que a instalação esteja

completa. Este último caso não é necessário para o sistema operativo Windows XP SP2

se este estiver configurado para perguntar antes de conectar ao Update de Windows. O

Windows XP SP2 pode ter as opções para o Update de Windows alterados através do

“painel controlo/sistema” selecciona-se o “Hardware” e selecciona-se “Update

Windows”.

Conecta-se o dispositivo a um porto de USB no PC. Isto lançará no Windows um novo

hardware encontrado. Se não houver nenhuma conexão disponível da Internet ou se o

Windows XP SP2 estiver configurado para perguntar antes de conectar ao Update do

Windows, a figura 1 será mostrada. Seleccionar “Não, não desta vez” das opções

disponíveis, e então, clicar “Seguinte” para prosseguir com a instalação. Se houver uma

conexão disponível da Internet, o Windows XP conectará ao Update do site do

Windows e instala todo o driver apropriado que encontrar para o dispositivo de

preferência o driver seleccionado manualmente.

Page 90: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Figura 1: Fase 1

Seleccionar “Instalar a partir de uma lista ou de uma posição específica (avançadas)”

como se apresenta na figura 2 e então clicar “Seguinte”.

Figura 2: Fase 2

Page 91: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Seleccionar “Procurar o melhor controlador nestas localizações” (figura 3) ou então

procurar pelas drivers através do botão “Procurar”. Uma vez que o ficheiro já se

apresenta na caixa de texto, clica-se “Seguinte” para continuar.

Figura 3: Fase 3

Se o Windows XP for configurado para advertir quando os drivers não assinados estão a

um ponto de ser instalados, a figura 4 será apresentada no ecrã. Clicar sobre “Continuar

de qualquer maneira” para continuar com a instalação. Se Windows XP for configurado

para ignorar avisos da assinatura do ficheiro, nenhuma mensagem aparecerá.

Page 92: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Figura 4: Fase 4

A figura 5 será apresentada no ecrã enquanto o Windows XP copia os ficheiros dos

drivers requeridos.

Figura 5: Fase 5

Page 93: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

O Windows deve então indicar uma mensagem que indica que a instalação foi bem

sucedida (figura 6). Clicar em “Terminar” para completar com a instalação. Isto instalou

o conversor de série. O driver emulador da porta COM deve ser instalado depois da

instalação estar completa.

Figura 6: Fase 6

Após ter-se clicado no botão “Terminar”, o dispositivo de procura de um novo hardware

continuará a instalar os drivers do emulador da porta COM. O procedimento é o mesmo

que o mencionado em acima para instalar os drivers do conversor da série.

Abre-se o gestor de dispositivo (situado em “Painel de Controlo \ Sistema” selecciona-

se então o “Hardware” e clica-se no “Gestor de dispositivo”) e selecciona-se “Ver

dispositivos por Tipo”. O dispositivo aparece como uma porta COM adicional com a

etiqueta de “Porta de Série USB” (figura 7).

Page 94: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Figura 7: Fase 7

Quando se pretender desinstalar os dispositivos do Windows XP, eles devem sempre ser

concluídos com o utilitário adicionar/remover programas porque este usa o programa de

desinstalar os drivers do FTDI para remover os ficheiros e os registos de entrada para

deixar um sistema “limpo”. Outros métodos podem deixar fragmentos do driver que

podem interferir com as instalações futuras.

Para se desinstalar os drivers VCP seguem-se as seguintes instruções:

Desconecta-se qualquer dispositivo FTDI que esteja ligado ao PC.

Abre-se o utilitário adicionar/remover programas situado no “painel

controlo/adicionar/remover programas”. Seleccionar o "FTDI USB Serial Converter

Drivers" da lista de programas instalados (figura 8).

Page 95: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Figura 8: Fase 8

Clicar no botão “mudar/remover”. Isto executará o programa de desinstalar da FTDI

(figura 9). Clica-se em “continuar” para prosseguir com a desinstalação ou “Cancelar”

para sair do programa.

Figura 9: Fase 9

Quando o desinstalador tiver terminado de remover o dispositivo do sistema, o botão de

“Cancelar” vai mudar para “Terminou”. Clicar em “Terminou” para completar o

processo (figura 10).

Page 96: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Figura 10: Fase 10

Page 97: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

ANEXO D (Programa do microprocessador AVR AT90S2313)

Page 98: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível
Page 99: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

include "2313def.inc" ; Biblioteca para o microprocessador AT90S2313.

rjmp main ; Carregar registos e programa principal.

rjmp ext_int0 ; AVR/ADC/DLP habilitados -> osciloscópio.

rjmp ext_int1 ; AVR/DLP habilitados -> analisador lógico.

main:

ldi r16,$df ;Stack.

out spl,r16

clr r16 ;Portos para definir as entradas e as saídas.

ser r17

out ddrd,r16

out ddrb,r17

ldi r16,$c0 ;As duas interrupções habilitadas (ext_int0 e ext_int1).

out gimsk,r16

ldi r16,$02 ;Definir o nível lógico para activar as interrupções.

out mcucr,r16 ;Nível alto/baixo -> ext_int0 // Apenas nível baixo -> ext_int1.

ldi r16,$0a ;Iniciar o ADC e o DLP.

out portb,r16 ;DLP: RD=1,WR=0 // ADC: RD=1,CS=0.

ldi r16,$08 ;Executa uma transição no nível lógico de 1 para 0 no RD do ADC para

out portb,r16 ;iniciar uma nova conversão e mantém os restantes bits iguais (ADC e

; DLP).

programa:

sei ;Habilita as interrupções a partir desta posição do programa.

rjmp programa ;Realiza um ciclo infinito para o sistema estar em modo de espera

;até ocorrer uma interrupção.

Page 100: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

ext_int0: ;O sub-programa Interrupção 0 executa quando se verificar um fim

;de conversão do ADC (INT=0).

sei ;Habilita a interrupção 1 (ext_int1) porque é a interrupção com maior

;prioridade.

voltar:

in r16,pind ;Verifica se o DLP está pronto para ler para a fifo (TXE=0),

sbrc r16,0 ;senão fica em modo de espera até o DLP indicar que está pronto para ler

rjmp voltar ;ou então ocorrer uma interrupção.

ldi r16,$0c ;Após o DLP indicar que está pronto para ler, o microprocessador

out portb,r16 ; habilita a leitura do DLP (WR=1).

;…………………….....................................................;

;Altura em que o DLP está a ler os dados para o PC....;

;.....................................................................................;

novo:

ldi r16,$0a ;Ao fim de duas instruções,o microprocessador vai desabilitar a leitura

out portb,r16 ;ao DLP e vai preparar o ADC para uma nova conversão.

ldi r16,$08 ;Após a preparação do ADC, o microprocessador vai então indicar a

;este

out portb,r16 ;para realizar uma nova conversão.

rjmp programa

ext_int1: ;O sub-programa Interrupção 1 executa quando se verificar uma

;transição no nível lógico (transição de 1 para 0) no interruptor externo.

ldi r16,$09 ;Desabilita-se o ADC para prevenir o hardware de curto-circuito pois

Page 101: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

out portb,r16 ;nesta opção apenas se precisa do DLP para a aquisição dos dados.

voltar1:

in r16,pind ;Verifica se não há mudança de programa através da transição no nível

sbrs r16,1 ;lógico (transição de 1 para 0) no interruptor externo.

rjmp ler ;Se não houver mudança de programa o microprocessador vai permitir

;ao DLP adquirir dados.

rjmp novo ;Se houver mudança de programa,o microprocessador vai habilitar o ADC

;para uma nova conversão e colocar o DLP em modo de espera.

ler:

in r16,pind ;Verifica se o DLP está pornto para ler.

sbrc r16,0

rjmp voltar1 ;Se não estiver pronto,o microprocessador torna a verificar se não há

;mudança de programa.

ldi r16,$0d ;Após o DLP indicar que está pronto para ler, o microprocessador

;habilita a leitura do DLP (WR=1) mantendo também o ADC

; desactivo (CS=1).

out portb,r16

;.....................................................................................;

;Altura em que o DLP está a ler os dados para o PC....;

;…………………….....................................................;

ldi r16,$09 ;Ao fim de duas instruções,o microprocessador vai desabilitar a leitura

out portb,r16 ;ao DLP e manter o ADC desactivo (CS=1).

rjmp voltar1 ;No fim do sub-programa,o microprocessador volta a verificar se

;houve mudança de programa.

Page 102: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível
Page 103: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

ANEXO E (Código fonte do KIV)

Page 104: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível
Page 105: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

E1-Principal.cpp

//-------------------------------------------------------------------------

#include<stdlib.h>

#include<stdio.h>

#include<math.h>

#include <vcl.h>

#pragma hdrstop

//-------------------------------------------------------------------------

#include "Principal.h"

#include "Osciloscopio.h"

#include "Geradordesinais.h"

#include "Analizadorlogico.h"

#include "Multimetro2.h"

//-------------------------------------------------------------------------

#pragma package(smart_init)

#pragma link "VrButtons"

#pragma link "VrControls"

#pragma link "VrLcd"

#pragma link "VrLeds"

#pragma link "iComponent"

#pragma link "iCustomComponent"

#pragma link "iLedSpiral"

#pragma link "iPositionComponent"

#pragma link "iProgressComponent"

#pragma link "iVCLComponent"

#pragma link "iSwitchLed"

#pragma link "VrMatrix"

#pragma resource "*.dfm"

TForm1 *Form1;

HANDLE hCom; // Handle para a Porta Serial (identificador).

DCB dcb; //Estrutura DCB é utilizada para definir

//todos os parâmetros da comunicação

COMMTIMEOUTS CommTimeouts;

int a=0,h,b,i;

char porta[4];

Page 106: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

DWORD BytesLidos = 0;

unsigned char BufferRecebe[6000];//buffer do voltimetro

unsigned char BufferRecebe2[6000];//buffer do osciloscopio

unsigned char BufferRecebe3[380];//buffer do analisador

unsigned char BufferRecebe31[760];//buffer auxiliar do analisador

double voltimetro[6000];

double scope[6000];

double analizador[8];

int analizador2[8];

FILE *ficheiro,*famostras;

int n,y;

double igual;

int cont=0;

float namostras;

unsigned char *vamostras0;

unsigned char *vamostras1;

unsigned char *vamostras2;

unsigned char *vamostras3;

unsigned char *vamostras4;

unsigned char *vamostras5;

unsigned char *vamostras6;

unsigned char *vamostras7;

int pro=20, ant=0;

double maior;

int x=0;

float m=0.0;

//-------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

//-------------------------------------------------------------------------

//funcao para activar o osciloscopio

void __fastcall TForm1::VrPowerButton1Click(TObject *Sender)

if(VrPowerButton1->Active==true)

Form2->Visible=true;

Page 107: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Form2->Enabled=true;

Timer1->Enabled=true;

if(VrPowerButton1->Active==false)

Form2->Visible=false;

Form2->Enabled=false;

Timer1->Enabled=false;

//-------------------------------------------------------------------------

//funcao para activar o voltimetro

void __fastcall TForm1::VrPowerButton2Click(TObject *Sender)

if(VrPowerButton2->Active==true)

Form6->Visible=true;

Form6->Enabled=true;

Timer2->Enabled=true;

if(VrPowerButton2->Active==false)

Form6->Visible=false;

Form6->Enabled=false;

Timer2->Enabled=false;

//-------------------------------------------------------------------------

//funcao para activar o analisador

void __fastcall TForm1::VrPowerButton4Click(TObject *Sender)

if(VrPowerButton4->Active==true)

Form5->Visible=true;

Form5->Enabled=true;

Timer3->Enabled=true;

if(VrPowerButton4->Active==false)

Form5->Visible=false;

Page 108: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Form5->Enabled=false;

Timer3->Enabled=false;

//-------------------------------------------------------------------------

//funcao para abrir a porta serie e configurar os seus parametros

void __fastcall TForm1::VrDemoButton1Click(TObject *Sender)

strcpy(porta,ComboBox4->Text.c_str());

if(VrDemoButton1->Caption=="Ligar")

VrPowerButton1->Enabled=true;

VrPowerButton2->Enabled=true;

VrPowerButton4->Enabled=true;

ficheiro=fopen("teste.txt","w");

char *NomePorta = porta;//COM1, COM2...COM9 ou portas virtuais "\\.\COMx".

hCom = CreateFile(

NomePorta,//Nome da porta.

GENERIC_READ | GENERIC_WRITE, //Para leitura e escrita.

0, //(Zero) Nenhuma outra abertura será permitida.

NULL, //Atributos de segurança. (NULL) padrão.

OPEN_EXISTING, //Criação ou abertura.

0, //Entrada e saída sem overlapped.

NULL //Atributos e Flags. Deve ser NULL para COM.

);

if(hCom == INVALID_HANDLE_VALUE)

ShowMessage("Erro ao tentar abrir a porta especificada.");

a=1;

SetupComm(hCom, 10000,10000); // tamanho do buffer de recepção da serial

Page 109: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

if(!GetCommState(hCom,&dcb))

ShowMessage("Erro na leitura de DCB");//Erro na leitura de DCB

dcb.BaudRate=CBR_921600;

dcb.ByteSize=8;

dcb.Parity=NOPARITY;

dcb.StopBits=ONESTOPBIT;

//define novo estado

if(SetCommState(hCom,&dcb)==0)

ShowMessage("Erro na configuração dos parametros");

if( GetCommTimeouts(hCom, &CommTimeouts) == 0 )

ShowMessage("Erro na leitura de CommTimeouts de DCB");

//Define novos valores.

CommTimeouts.ReadIntervalTimeout =MAXDWORD;

CommTimeouts.ReadTotalTimeoutMultiplier =0;

CommTimeouts.ReadTotalTimeoutConstant = 0;

CommTimeouts.WriteTotalTimeoutMultiplier = 0;///5;

CommTimeouts.WriteTotalTimeoutConstant = 0;//5;

if( SetCommTimeouts(hCom, &CommTimeouts) == 0 )

ShowMessage("Erro na configuração dos parametros de CommTimeouts ");

if(a!=1)

VrDemoButton1->Caption="Desligar";

Shape1->Brush->Color=clGreen;

else if(VrDemoButton1->Caption=="Desligar")

VrPowerButton1->Enabled=false;

VrPowerButton2->Enabled=false;

VrPowerButton4->Enabled=false;

Page 110: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

CloseHandle( hCom );

//Fecha a porta aberta anteriormente por CreateFile().

VrDemoButton1->Caption="Ligar";

a=0;

Shape1->Brush->Color=clRed;

//-------------------------------------------------------------------------

//funcao que mostra todas as portas COM's abertas

void __fastcall TForm1::FormCreate(TObject *Sender)

//Cria e aloca espaço na memória para o objeto.

TRegistry *Registro = new TRegistry;

//Cria e aloca espaço na memória para o objeto.

TStringList *Lista = new TStringList;

Registro->RootKey = HKEY_LOCAL_MACHINE; //Define chave raiz.

//Abre a chave.

Registro->OpenKey("HARDWARE\\DEVICEMAP\\SERIALCOMM", false);

//Obtém uma string contendo todos os nomes

//de valores associados com a chave atual.

Registro->GetValueNames(Lista);

//Count é a quantidade de portas instaladas no sistema.

for(int indice=0; indice <= Lista->Count-1; indice++)

//Pega nos nomes das portas e ediciona-as no ComboBox1.

Form1->ComboBox4->Items->Add(Registro->ReadString( Lista->Strings[indice] ) );

if( Form1->ComboBox4->Items->Count > 0) //Se há ítens.

Form1->ComboBox4->ItemIndex = 0; //Exibir o primeiro nome da porta no ComboBox.

Lista->Free(); //Libera memória.

Registro->CloseKey(); //Fecha a chave.

Registro->Free(); //Libera memória.

//-------------------------------------------------------------------------

////VOLTIMETRO///////////////////////////////////////////////////////////////

void __fastcall TForm1::Timer2Timer(TObject *Sender)

if(Form6->Visible==false)VrPowerButton2->Active=false;

if(VrDemoButton1->Caption=="Desligar")

Page 111: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

//LEITURA dos dados

ReadFile( hCom, BufferRecebe,6000, &BytesLidos, NULL );

//calculo dos valores recebidos (vindos do ADC)

//transforma-los numa gama de -15 a 15 volts

//os valores recebidos correspondem a uma gama de valores compreendidos

//entre 0 e 10

for(y=0;y<6000;y++)

if(((BufferRecebe[y])&(0x80))==(0x80))

voltimetro[y]=10.0/2.0+(10.0/256.0);

else voltimetro[y]=0;

if(((BufferRecebe[y])&(0x40))==(0x40))

voltimetro[y]=voltimetro[y]+(10.0/4.0);

if(((BufferRecebe[y])&(0x20))==(0x20))

voltimetro[y]=voltimetro[y]+(10.0/8.0);

if(((BufferRecebe[y])&(0x10))==(0x10))

voltimetro[y]=voltimetro[y]+(10.0/16.0);

if(((BufferRecebe[y])&(0x08))==(0x08))

voltimetro[y]=voltimetro[y]+(10.0/32.0);

if(((BufferRecebe[y])&(0x04))==(0x04))

voltimetro[y]=voltimetro[y]+(10.0/64.0);

if(((BufferRecebe[y])&(0x02))==(0x02))

voltimetro[y]=voltimetro[y]+(10.0/128.0);

if(((BufferRecebe[y])&(0x01))==(0x01))

voltimetro[y]=voltimetro[y]+(10.0/256.0);

voltimetro[y]=-4.975+voltimetro[y];

//subtraimos -5 para tornar os valores recebidos numa gama de -5 a 5V

voltimetro[y]=voltimetro[y]*3.151;

//multiplica-se por 3 porque o ganho do amplificador é de um terço

//e assim transformamos a gama de -5 a 5V em -15 a 15 V

//tensao continua(DCV)

Page 112: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

if(Form6->VrDemoButton1->Color==clRed)

//calcular a media dos valores

for(y=1;y<6000;y++)

voltimetro[0]=voltimetro[0]+voltimetro[y];

voltimetro[0]=voltimetro[0]/6000.0;

//Tensao alternada

if(Form6->VrDemoButton2->Color==clRed)

//Calculo do valor eficaz para os valores recebidos

maior=voltimetro[0];

for(y=0;y<6000;y++)

if(voltimetro[y]>maior)maior=voltimetro[y];

voltimetro[0]=maior/(sqrt(2.0));

//amostragem do valor no display

if(voltimetro[0]>1.0 || voltimetro[0] <-1.0)

Form6->VrUserLed1->Active=true;

Form6->VrUserLed2->Active=false;

Form6->VrDigitGroup1->Decimals=3;

//se o valor for pequeno multiplica-se por 1000

//e activa-se o led dos milivolts

else

Form6->VrUserLed2->Active=true;

Form6->VrUserLed1->Active=false;

voltimetro[0]=(voltimetro[0])*1000;

Form6->VrDigitGroup1->Decimals=2;

Form6->VrDigitGroup1->Value=voltimetro[0];

//-------------------------------------------------------------------------

///OSCILOSCOPIO//////////////////////////////////////////////////////////////

void __fastcall TForm1::Timer1Timer(TObject *Sender)

Page 113: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

if(Form2->Visible==false)VrPowerButton1->Active=false;

if(VrDemoButton1->Caption=="Desligar")

//ler dados

ReadFile(hCom, BufferRecebe2,6000, &BytesLidos, NULL );

//ENVIO DOS DADOS PARA O OSCILOSCOPIO

Form2->iScope1->DataBlockBegin();

for(y=0;y<6000;y++)

if(((BufferRecebe2[y])&(0x80))==(0x80))

scope[y]=10.0/2.0+(10.0/256.0);

else scope[y]=0;

if(((BufferRecebe2[y])&(0x40))==(0x40))

scope[y]=scope[y]+(10.0/4.0);

if(((BufferRecebe2[y])&(0x20))==(0x20))

scope[y]=scope[y]+(10.0/8.0);

if(((BufferRecebe2[y])&(0x10))==(0x10))

scope[y]=scope[y]+(10.0/16.0);

if(((BufferRecebe2[y])&(0x08))==(0x08))

scope[y]=scope[y]+(10.0/32.0);

if(((BufferRecebe2[y])&(0x04))==(0x04))

scope[y]=scope[y]+(10.0/64.0);

if(((BufferRecebe2[y])&(0x02))==(0x02))

scope[y]=scope[y]+(10.0/128.0);

if(((BufferRecebe2[y])&(0x01))==(0x01))

scope[y]=scope[y]+(10.0/256.0);

scope[y]=-5.0+scope[y];

scope[y]=scope[y]*3.0;

Page 114: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

// fprintf(ficheiro,"%d %f\n",x,scope[y]);//escreve para um ficheiro

//x++;

Form2->iScope1->AddChannelData(0,scope[y]);

Form2->iScope1->DataBlockEnd();

//-------------------------------------------------------------------------

//ANALIZADOR LÓDICO//////////////////////////////////////////////////////////

void __fastcall TForm1::Timer3Timer(TObject *Sender)

if(Form5->Visible==false)VrPowerButton4->Active=false;

if(VrDemoButton1->Caption=="Desligar")

////////////////////////////////////////////////////////////////////////

////LER dados em "tempo real"___________________________________________

if(Form5->iLedRound12->Active==true)

ReadFile(hCom, BufferRecebe3,380, &BytesLidos, NULL );

//Repete todos os sinais

for(y=0,h=0;y<380,h<760;y++,h=h+2)

BufferRecebe31[h]=BufferRecebe3[y];

BufferRecebe31[h+1]=BufferRecebe3[y];

Form5->iScope1->DataBlockBegin();

for(y=0;y<760;y++)

if(((BufferRecebe31[y])&(0x80))==(0x80))

analizador[0]=2.5;Form5->iLedRound4->Active=true;

elseanalizador[0]=0;Form5->iLedRound4->Active=false;

if(((BufferRecebe31[y])&(0x40))==(0x40))

analizador[1]=2.5;Form5->iLedRound5->Active=true;

else analizador[1]=0;Form5->iLedRound5->Active=false;

if(((BufferRecebe31[y])&(0x20))==(0x20))

analizador[2]=2.5;Form5->iLedRound6->Active=true;

else analizador[2]=0;Form5->iLedRound6->Active=false;

Page 115: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

if(((BufferRecebe31[y])&(0x10))==(0x10))

analizador[3]=2.5;Form5->iLedRound7->Active=true;

else analizador[3]=0;Form5->iLedRound7->Active=false;

if(((BufferRecebe31[y])&(0x08))==(0x08))

analizador[4]=2.5;Form5->iLedRound8->Active=true;

else analizador[4]=0;Form5->iLedRound8->Active=false;

if(((BufferRecebe31[y])&(0x04))==(0x04))

analizador[5]=2.5;Form5->iLedRound9->Active=true;

else analizador[5]=0; Form5->iLedRound9->Active=false;

if(((BufferRecebe31[y])&(0x02))==(0x02))

analizador[6]=2.5;Form5->iLedRound10->Active=true;

else analizador[6]=0; Form5->iLedRound10->Active=false;

if(((BufferRecebe31[y])&(0x01))==(0x01))

analizador[7]=2.5;Form5->iLedRound11->Active=true;

else analizador[7]=0; Form5->iLedRound11->Active=false;

Form5->iScope1->AddChannelData(0,(analizador[0])-20);

Form5->iScope1->AddChannelData(1,(analizador[1])-15);

Form5->iScope1->AddChannelData(2,(analizador[2])-10);

Form5->iScope1->AddChannelData(3,(analizador[3])-5);

Form5->iScope1->AddChannelData(4,(analizador[4])+0);

Form5->iScope1->AddChannelData(5,(analizador[5])+5);

Form5->iScope1->AddChannelData(6,(analizador[6])+10);

Form5->iScope1->AddChannelData(7,(analizador[7])+15);

Form5->iScope1->DataBlockEnd();

//_______________________________________________________________________

/////////////////////////////////////////////////////////////////////////

//Ler o numero de amostras pretendidas (LER)

//_______________________________________________________________________

if(Form5->iLedRound1->Active==true && Form5->iLedRound12->Active==false)

namostras=((Form5->UpDown1->Position)/760.0)+1;

Page 116: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

famostras=fopen("amostras.txt","w");

for(int z=0;z<int(namostras);z++)

ReadFile(hCom, BufferRecebe3,380, &BytesLidos, NULL );

//Repete todos os sinais

for(y=0,h=0;y<380,h<760;y++,h=h+2)

BufferRecebe31[h]=BufferRecebe3[y];

BufferRecebe31[h+1]=BufferRecebe3[y];

for(y=0;y<380;y++)

if(y+(380*z)<(Form5->UpDown1->Position))

if(((BufferRecebe3[y])&(0x80))==(0x80))

analizador[0]=2.5;Form5->iLedRound4->Active=true;

elseanalizador[0]=0;Form5->iLedRound4->Active=false;

if(((BufferRecebe3[y])&(0x40))==(0x40))

analizador[1]=2.5;Form5->iLedRound5->Active=true;

else analizador[1]=0;Form5->iLedRound5->Active=false;

if(((BufferRecebe3[y])&(0x20))==(0x20))

analizador[2]=2.5;Form5->iLedRound6->Active=true;

else analizador[2]=0;Form5->iLedRound6->Active=false;

if(((BufferRecebe3[y])&(0x10))==(0x10))

analizador[3]=2.5;Form5->iLedRound7->Active=true;

else analizador[3]=0;Form5->iLedRound7->Active=false;

if(((BufferRecebe3[y])&(0x08))==(0x08))

analizador[4]=2.5;Form5->iLedRound8->Active=true;

else analizador[4]=0;Form5->iLedRound8->Active=false;

if(((BufferRecebe3[y])&(0x04))==(0x04))

analizador[5]=2.5;Form5->iLedRound9->Active=true;

else analizador[5]=0; Form5->iLedRound9->Active=false;

if(((BufferRecebe3[y])&(0x02))==(0x02))

Page 117: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

analizador[6]=2.5;Form5->iLedRound10->Active=true;

else analizador[6]=0; Form5->iLedRound10->Active=false;

if(((BufferRecebe3[y])&(0x01))==(0x01))

analizador[7]=2.5;Form5->iLedRound11->Active=true;

else analizador[7]=0; Form5->iLedRound11->Active=false;

for(int t=0;t<8;t++)

if(analizador[t]==2.5)analizador2[t]=1;

else analizador2[t]=0;

fprintf(famostras,"%d=%d %d %d %d %d %d %d %d\n",y,//

analizador2[0],analizador2[1],analizador2[2],analizador2[3],analizador2[4],//

analizador2[5],analizador2[6],analizador2[7]);

Form5->iLedRound1->Active=false;

fclose(famostras);

//Ler as amostras do ficheiro para a tabela

Form5->ValueListEditor1->Strings->LoadFromFile("amostras.txt");

//_________________________________________________________________________

//Guardar as amostras para um ficheiro de texto com o nome pretendido

if(Form5->iLedRound3->Active==true)

Form5->iLedRound3->Active=false;

if (Form5->SaveDialog1->Execute())

Form5->ValueListEditor1->Strings->SaveToFile(Form5->SaveDialog1->FileName);

//Abrir as amostras para a tabela de um ficheiro

if(Form5->iLedRound13->Active==true)

Form5->iLedRound13->Active=false;

if (Form5->OpenDialog1->Execute())

Form5->ValueListEditor1->Strings->LoadFromFile(Form5->OpenDialog1->FileName);

//_______________________________________________________________________

Page 118: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

/////////////////////////////////////////////////////////////////////////

//ver as amostras pretendidas(VER)

////Mostrar as amostras de 20 em 20 no visor____________________________

if(Form5->iLedRound2->Active==true)

Form5->iScope1->DataBlockBegin();

for(y=ant;y<pro;y++)

if(((BufferRecebe31[y])&(0x80))==(0x80))

analizador[0]=2.5;Form5->iLedRound4->Active=true;

elseanalizador[0]=0;Form5->iLedRound4->Active=false;

if(((BufferRecebe31[y])&(0x40))==(0x40))

analizador[1]=2.5;Form5->iLedRound5->Active=true;

else analizador[1]=0;Form5->iLedRound5->Active=false;

if(((BufferRecebe31[y])&(0x20))==(0x20))

analizador[2]=2.5;Form5->iLedRound6->Active=true;

else analizador[2]=0;Form5->iLedRound6->Active=false;

if(((BufferRecebe31[y])&(0x10))==(0x10))

analizador[3]=2.5;Form5->iLedRound7->Active=true;

else analizador[3]=0;Form5->iLedRound7->Active=false;

if(((BufferRecebe31[y])&(0x08))==(0x08))

analizador[4]=2.5;Form5->iLedRound8->Active=true;

else analizador[4]=0;Form5->iLedRound8->Active=false;

if(((BufferRecebe31[y])&(0x04))==(0x04))

analizador[5]=2.5;Form5->iLedRound9->Active=true;

else analizador[5]=0; Form5->iLedRound9->Active=false;

if(((BufferRecebe31[y])&(0x02))==(0x02))

analizador[6]=2.5;Form5->iLedRound10->Active=true;

else analizador[6]=0; Form5->iLedRound10->Active=false;

if(((BufferRecebe31[y])&(0x01))==(0x01))

analizador[7]=2.5;Form5->iLedRound11->Active=true;

else analizador[7]=0; Form5->iLedRound11->Active=false;

Page 119: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Form5->iScope1->AddChannelData(0,(analizador[0])-20);

Form5->iScope1->AddChannelData(1,(analizador[1])-15);

Form5->iScope1->AddChannelData(2,(analizador[2])-10);

Form5->iScope1->AddChannelData(3,(analizador[3])-5);

Form5->iScope1->AddChannelData(4,(analizador[4])+0);

Form5->iScope1->AddChannelData(5,(analizador[5])+5);

Form5->iScope1->AddChannelData(6,(analizador[6])+10);

Form5->iScope1->AddChannelData(7,(analizador[7])+15);

Form5->iScope1->DataBlockEnd();

pro=pro+20;

ant=ant+20;

if(pro>(Form5->UpDown1->Position))pro=40;ant=0;

Form5->iLedRound2->Active=false;

//-------------------------------------------------------------------

void __fastcall FormDestroy(TObject *Sender)

//fclose(ficheiro); //fecha o ficheiro.

CloseHandle( hCom );

//Fecha a porta aberta anteriormente por CreateFile().

//-------------------------------------------------------------------

//função para a animação da barra de animação

void __fastcall TForm1::Timer4Timer(TObject *Sender)

if(VrDemoButton1->Caption=="Desligar")

switch(cont)

case(1):

VrUserLed1->Active=true;

VrUserLed9->Active=true;

break;

Page 120: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

case(2):

VrUserLed2->Active=true;

VrUserLed8->Active=true;

break;

case(3):

VrUserLed3->Active=true;

VrUserLed7->Active=true;

break;

case(4):

VrUserLed4->Active=true;

VrUserLed6->Active=true;

break;

case(5):

VrUserLed5->Active=true;

break;

case(6):

VrUserLed5->Active=false;

break;

case(7):

VrUserLed4->Active=false;

VrUserLed6->Active=false;

break;

case(8):

VrUserLed3->Active=false;

VrUserLed7->Active=false;

break;

case(9):

VrUserLed2->Active=false;

VrUserLed8->Active=false;

break;

case(10):

VrUserLed1->Active=false;

VrUserLed9->Active=false;

break;

Page 121: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

cont++;

if(cont>10)cont=0;

//CRÉDITOS-----------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

Form3->Visible=true;

Form3->Enabled=true;

//-------------------------------------------------------------------------

E2-Osciloscopio.cpp

#include <vcl.h>

#pragma hdrstop

#include "Osciloscopio.h"

#include "Principal.h"

//-------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm2 *Form2;

//-------------------------------------------------------------------------

__fastcall TForm2::TForm2(TComponent* Owner)

: TForm(Owner)

//-------------------------------------------------------------------------

void __fastcall TForm2::Button1Click(TObject *Sender)

if(Button1->Caption=="Full Screen")

iScope1->HideControlPanels=true;

Panel1->Visible=false;

Button1->Caption="Normal Screen";

else if(Button1->Caption=="Normal Screen")

iScope1->HideControlPanels=false;

Panel1->Visible=true;

Button1->Caption="Full Screen";

Page 122: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

E3-Analisadorlogico.cpp

//---------------------------------------------------------------------------

#include <vcl.h>

#include<string.h>

#pragma hdrstop

#include "Analizadorlogico.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma link "iComponent"

#pragma link "iCustomComponent"

#pragma link "iPlot"

#pragma link "iPlotComponent"

#pragma link "iVCLComponent"

#pragma link "VrControls"

#pragma link "VrScope"

#pragma link "VrButtons"

#pragma link "iScope"

#pragma link "iLed"

#pragma link "iLedRound"

#pragma link "iSwitchLed"

#pragma resource "*.dfm"

TForm5 *Form5;

int valor;

//-------------------------------------------------------------------------

__fastcall TForm5::TForm5(TComponent* Owner)

: TForm(Owner)

//-------------------------------------------------------------------------

void __fastcall TForm5::VrPowerButton1Click(TObject *Sender)

if(VrPowerButton1->Active==true)iScope1->Channel[7]->TraceVisible=true;

else iScope1->Channel[7]->TraceVisible=false;

Page 123: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

//-------------------------------------------------------------------------

void __fastcall TForm5::VrPowerButton2Click(TObject *Sender)

if(VrPowerButton2->Active==true)iScope1->Channel[6]->TraceVisible=true;

else iScope1->Channel[6]->TraceVisible=false;

//-------------------------------------------------------------------------

void __fastcall TForm5::VrPowerButton3Click(TObject *Sender)

if(VrPowerButton3->Active==true)iScope1->Channel[5]->TraceVisible=true;

else iScope1->Channel[5]->TraceVisible=false;

//-------------------------------------------------------------------------

void __fastcall TForm5::VrPowerButton4Click(TObject *Sender)

if(VrPowerButton4->Active==true)iScope1->Channel[4]->TraceVisible=true;

else iScope1->Channel[4]->TraceVisible=false;

//------------------------------------------------------------------------

void __fastcall TForm5::VrPowerButton5Click(TObject *Sender)

if(VrPowerButton5->Active==true)iScope1->Channel[3]->TraceVisible=true;

else iScope1->Channel[3]->TraceVisible=false;

//-------------------------------------------------------------------------

void __fastcall TForm5::VrPowerButton6Click(TObject *Sender)

if(VrPowerButton6->Active==true)iScope1->Channel[2]->TraceVisible=true;

else iScope1->Channel[2]->TraceVisible=false;

//-------------------------------------------------------------------------

void __fastcall TForm5::VrPowerButton7Click(TObject *Sender)

if(VrPowerButton7->Active==true)iScope1->Channel[1]->TraceVisible=true;

else iScope1->Channel[1]->TraceVisible=false;

Page 124: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

//-------------------------------------------------------------------------

void __fastcall TForm5::VrPowerButton8Click(TObject *Sender)

if(VrPowerButton8->Active==true)iScope1->Channel[0]->TraceVisible=true;

else iScope1->Channel[0]->TraceVisible=false;

//-------------------------------------------------------------------------

void __fastcall TForm5::Button1Click(TObject *Sender)

if(iLedRound12->Active==false)

if(iLedRound1->Active==false)

iLedRound1->Active=true;

iLedRound2->Active=false;

else iLedRound1->Active=false;

//-------------------------------------------------------------------------

void __fastcall TForm5::Button2Click(TObject *Sender)

if(iLedRound12->Active==false)

if(iLedRound2->Active==false)

iLedRound2->Active=true;

iLedRound1->Active=false;

else iLedRound2->Active=false;

//-------------------------------------------------------------------------

void __fastcall TForm5::Button3Click(TObject *Sender)

if(iLedRound1->Active==false)

iLedRound3->Active=true;

//-------------------------------------------------------------------------

Page 125: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

void __fastcall TForm5::Button4Click(TObject *Sender)

if(iLedRound12->Active==false)

iLedRound12->Active=true;

iLedRound1->Active=false;

iLedRound2->Active=false;

Button4->Caption="STOP";

elseiLedRound12->Active=false;

Button4->Caption="RUN";

//-------------------------------------------------------------------------

void __fastcall TForm5::Timer1Timer(TObject *Sender)

if(iSwitchLed1->Active==false)iScope1->Display->GridColor=clBlack;

else iScope1->Display->GridColor=clTeal;

//-------------------------------------------------------------------------

void __fastcall TForm5::Button5Click(TObject *Sender)

if(iLedRound1->Active==false)

iLedRound13->Active=true;

//-------------------------------------------------------------------------

void __fastcall TForm5::Button7Click(TObject *Sender)

VrPowerButton1->Active=true;

VrPowerButton2->Active=true;

VrPowerButton3->Active=true;

VrPowerButton4->Active=true;

VrPowerButton5->Active=true;

VrPowerButton6->Active=true;

VrPowerButton7->Active=true;

VrPowerButton8->Active=true;

iScope1->Channel[7]->TraceVisible=true;

iScope1->Channel[6]->TraceVisible=true;

Page 126: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

iScope1->Channel[5]->TraceVisible=true;

iScope1->Channel[4]->TraceVisible=true;

iScope1->Channel[3]->TraceVisible=true;

iScope1->Channel[2]->TraceVisible=true;

iScope1->Channel[1]->TraceVisible=true;

iScope1->Channel[0]->TraceVisible=true;

//-------------------------------------------------------------------------

void __fastcall TForm5::BitBtn1Click(TObject *Sender)

iScope1->ToolBar->DoButtonClickSave();

//-------------------------------------------------------------------------

void __fastcall TForm5::BitBtn2Click(TObject *Sender)

iScope1->PrintDisplay();

//-------------------------------------------------------------------------

void __fastcall TForm5::Timer2Timer(TObject *Sender)

ComboBox1->ItemIndex=UpDown2->Position;

if(strcmp(ComboBox1->Text.c_str(),"0.1 s")==0)

iScope1->TimeBase->SecPerDiv=0.1;

if(strcmp(ComboBox1->Text.c_str(),"50 ms")==0)

iScope1->TimeBase->SecPerDiv=0.05;

if(strcmp(ComboBox1->Text.c_str(),"20 ms")==0)

iScope1->TimeBase->SecPerDiv=0.02;

if(strcmp(ComboBox1->Text.c_str(),"10 ms")==0)

iScope1->TimeBase->SecPerDiv=0.0

if(strcmp(ComboBox1->Text.c_str(),"5 ms")==0)

iScope1->TimeBase->SecPerDiv=0.005;

if(strcmp(ComboBox1->Text.c_str(),"2 ms")==0)

iScope1->TimeBase->SecPerDiv=0.002;

if(strcmp(ComboBox1->Text.c_str(),"1 ms")==0)

iScope1->TimeBase->SecPerDiv=0.001;

Page 127: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

if(strcmp(ComboBox1->Text.c_str(),"0.5 ms")==0)

iScope1->TimeBase->SecPerDiv=0.0005;

if(strcmp(ComboBox1->Text.c_str(),"0.2 ms")==0)

iScope1->TimeBase->SecPerDiv=0.0002;

if(strcmp(ComboBox1->Text.c_str(),"0.1 ms")==0)

iScope1->TimeBase->SecPerDiv=0.0001;

if(strcmp(ComboBox1->Text.c_str(),"50 us")==0)

iScope1->TimeBase->SecPerDiv=0.00005;

if(strcmp(ComboBfox1->Text.c_str(),"20 us")==0)

iScope1->TimeBase->SecPerDiv=0.00002;

if(strcmp(ComboBox1->Text.c_str(),"10 us")==0)

iScope1->TimeBase->SecPerDiv=0.00001;

if(strcmp(ComboBox1->Text.c_str(),"5 us")==0)

iScope1->TimeBase->SecPerDiv=0.000005;

if(strcmp(ComboBox1->Text.c_str(),"2 us")==0)

iScope1->TimeBase->SecPerDiv=0.000002;

if(strcmp(ComboBox1->Text.c_str(),"1 us")==0)

iScope1->TimeBase->SecPerDiv=0.000001;

if(strcmp(ComboBox1->Text.c_str(),"0.5 us")==0)

iScope1->TimeBase->SecPerDiv=0.0000005;

if(strcmp(ComboBox1->Text.c_str(),"0.2 us")==0)

iScope1->TimeBase->SecPerDiv=0.0000002;

if(strcmp(ComboBox1->Text.c_str(),"0.1 us")==0)

iScope1->TimeBase->SecPerDiv=0.0000001;

if(strcmp(ComboBox1->Text.c_str(),"50 ns")==0)

iScope1->TimeBase->SecPerDiv=0.00000005;

if(strcmp(ComboBox1->Text.c_str(),"20 ns")==0)

iScope1->TimeBase->SecPerDiv=0.00000002;

if(strcmp(ComboBox1->Text.c_str(),"10 ns")==0)

iScope1->TimeBase->SecPerDiv=0.00000001;

//-------------------------------------------------------------------------

E4-Voltimetro.cpp

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Multimetro2.h"

#include "Principal.h"

Page 128: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

//-------------------------------------------------------------------------

#pragma package(smart_init)

#pragma link "VrButtons"

#pragma link "VrControls"

#pragma link "VrDigit"

#pragma link "VrLeds"

#pragma resource "*.dfm"

TForm6 *Form6;

//-------------------------------------------------------------------------

__fastcall TForm6::TForm6(TComponent* Owner)

: TForm(Owner)

//-------------------------------------------------------------------------

void __fastcall TForm6::VrDemoButton2Click(TObject *Sender)

VrDemoButton2->Color=clRed;

VrDemoButton1->Color=clBtnFace;

//-------------------------------------------------------------------------

void __fastcall TForm6::VrDemoButton1Click(TObject *Sender)

VrDemoButton1->Color=clRed;

VrDemoButton2->Color=clBtnFace;

//-------------------------------------------------------------------------

void __fastcall TForm6::FormCreate(TObject *Sender)

VrDemoButton1->Color=clRed;

Page 129: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

ANEXO F

(CD-ROM)

Page 130: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível
Page 131: Trabalho Final Curso - UBIwebx.ubi.pt/~a13852/projecto/Trabalho_Final_Curso.pdf · O Osciloscópio é um instrumento de medida electrónico que cria um gráfico bidimensional 1 visível

Este CD-ROM contém o relatório final deste projecto, o programa de instalação do

KIV, os drivers do DLP e o código fonte para o AVR AT90S2313.