Você está na página 1de 62

i

UNIVERSIDADE FEDERAL DO PARAN


WALTER LUCIANO ESPNDOLA LEANDRO SILVA PIECARZ

USBSCOPE

Curitiba PR 2007

ii

UNIVERSIDADE FEDERAL DO PARAN


WALTER LUCIANO ESPNDOLA LEANDRO SILVA PIECARZ

USBSCOPE

Projeto de Graduao na rea de Engenharia Eltrica apresentado Universidade Federal do Paran, como requisito parcial para a obteno do ttulo de Engenheiro Eltrico . Orientador: Mrlio Jos do Couto Bonfim

Curitiba PR 2007

iii

LEANDRO PIECARZ WALTER LUCIANO ESPNDOLA

USBSCOPE OSCILOSCPIO USB

Este Trabalho de Diplomao foi julgado e aprovado como requisito parcial para a obteno do Ttulo de Engenheiro Eletricista, do Curso Superior de Engenharia Eltrica da Universidade Federal do Paran. Curitiba, 29 de Junho de 2007

Prof. MSc. Raimundo Ribeiro P. Jnior Coordenador de Curso Departamento de Engenharia Eltrica BANCA EXAMINADORA

Prof. Dr. Eduardo Parente Ribeiro Universidade Federal do Paran Prof. M.Sc. Ademar Luiz Pastro Universidade Federal do Paran

Prof. Dr. Marlio J. do C. Bonfim Universidade Federal do Paran Orientador

Prof. Dr. Marlio J. do C. Bonfim Universidade Federal do Paran

AGRADECIMENTO
Este trabalho se deve ao empenho, esforo e confiana dos membros da equipe, os quais sempre perseveraram para a realizao desta pesquisa. Agradecemos aos nossos mestres que nos ensinaram o valor e a importncia do conhecimento para o crescimento pessoal e profissional. Devemos agradecer aos fabricantes, pelo fornecimento dos componentes, a titulo de amostra, sem custos para este trabalho. Agradecemos em especial ao profo. Dr. Marlio J. do C. Bonfim do Departamento de Engenharia Eltrica da Universidade Federal do Paran pela constante disposio em ensinar, orientando as pesquisas desenvolvidas neste projeto . Agradecemos ao profo. M.Sc. Ademar Luiz Pastro do Departamento de Engenharia Eltrica da Universidade Federal do Paran pelas crticas construtivas, na primeira fase do projeto. Agradecemos ao profo. Dr Eduardo Parente Ribeiro do Departamento de Eletrica da Universidade Federal do Paran pelos comentrios referentes ao direcionamento de nossas pesquisas. Agradecemos principalmente nossos familiares e amigos, que souberam compreender nossos momentos de ausncia na execuo deste trabalho, nos apoiando e incentivando a todo instante.

ii

RESUMO
O projeto USBSCOPE consiste no desenvolvimento de prottipo para a digitalizao e transferncia de sinais analgicos para o microcomputador via porta de comunicao USB, de modo semelhante a um osciloscpio digital. O osciloscpio possui dois canais de 8 bits, com taxa de amostragem varivel, sete escalas de tempo e oito escalas de amplitude variando de 0,2V a 50V controlados por software. O hardware consiste em um estgio de amplificao com ganho varivel de dois canais, dois multiplexadores para a seleo das escalas e um microcontrolador PIC 18F2550 responsvel pelo controle da converso do sinal analgico em digital, pelo controle do multiplexador e tambm pela transferncia das amostras para o microcomputador via interface USB. O firmware para o microcontrolador foi elaborado em linguagem C e Assembler. O software da interface visual no microcomputador foi elaborado em Visual Basic com caractersticas similares s de um osciloscpio convencional de bancada. .

Palavras-chave Osciloscpio USB Microcontrolador PIC Aquisio de dados via USB

iii

ABSTRACT

The USBSCOPE project aims the development of a prototype to digitalize and transfer analog signals to the microcomputer via USB interface, in a way similar to a digital oscilloscope. The oscilloscope has two 8 bits channels with variable sampling rate, seven time scales and eight amplitude scales varying from 0,2V to 50V controlled by software. The hardware consists of two variable gain amplifier stages, two multiplexer switches for the scale selection and a microcontroller PIC 18F2550 to control the analog to digital conversion, multiplexer and also for the transference of the samples to the microcomputer via USB. The firmware for the microcontroller was developed in language C and Assembler The software of the visual interface in the microcomputer was developed in Visual Basic code with characteristics similar to a conventional workbench oscilloscope.

Key words Oscilloscope USB Microcontroller PIC Acquisition of data saw USB

iv

LISTA DE FIGURAS
FIGURA 1 CONEXO MESTRE - ESCRAVO SPI................................................XIII FIGURA 2 SINAIS NA COMUNICAO SPI.........................................................XIII FIGURA 3 TOPOLOGIA USB...............................................................................XVI FIGURA 4 CORTE TRANSVERSAL DO CABO USB...........................................XVI FIGURA 5 CONVERSOR ANALGICO DIGITAL.................................................XXI FIGURA 6 - CIRCUITO BSICO DO AMPLIFICADOR OPERACIONAL .............XXIII FIGURA 7 - DIAGRAMA DO CAD E MICROCONTROLADOR USB SEPARADOS - - -XXVIII FIGURA 8 - DIAGRAMA DO MICROCONTROLADOR COM USB E CAD INTERNO - - -XXVIII FIGURA 9 - DIAGRAMA DE TEMPOS DO CONVERSOR A/D ...........................XXIX FIGURA 10 - FACES DA PLACA DE CIRCUITO IMPRESSO ............................XXXII FIGURA 11 - FACE SUPERIOR ..........................................................................XXXII FIGURA 12 - LAYOUT DA FACE INFERIOR .....................................................XXXIII FIGURA 13 - ASPECTO FINAL DO PROTTIPO ............................................XXXIV FIGURA 14 - TELA INICIAL DO CCS - PCWH ..................................................XXXVI FIGURA 15 - ESQUEMA ELETRNICO DO PROGRAMADOR JDM .............XXXVII FIGURA 16 - PROGRAMADOR ICSP .............................................................XXXVIII FIGURA 17 - MICROCONTROLADOR 18F2550 ..............................................XXXIX FIGURA 18 - OPES DE CRIAO DO VISUAL BASIC ...................................XLII FIGURA 19 - TELA DO USBSCOPE ....................................................................XLVI

LISTA DE QUADROS
QUADRO 1 CRONOGRAMA DO PROJETO............................................................X QUADRO 2 OPES DE CONFIGURAO DAS PORTAS DO 18F2550....XXXIV QUADRO 3 RELAO DE RESISTORES.......................................................XXXV QUADRO 4 RELAO DE CAPACITORES......................................................XXXV QUADRO 5 RELAO DE CIRCUITOS INTEGRADOS...................................XXXV QUADRO 6 RELAO DE COMPONENTES...................................................XXXV QUADRO 7 PINOS UTILIZADOS NO PIC..............................................................XL

vi

SUMRIO
AGRADECIMENTO.......................................................................................................I RESUMO......................................................................................................................II ABSTRACT.................................................................................................................III LISTA DE FIGURAS...................................................................................................IV LISTA DE QUADROS..................................................................................................V SUMRIO...................................................................................................................VI 1 CAPTULO..............................................................................................................VIII 1.1 INTRODUAO.................................................................................................viii 1.2 OBJETIVO.......................................................................................................viii 1.2.1 Objetivo Geral............................................................................................ix 1.2.2 Objetivo Especfico....................................................................................ix 1.3 JUSTIFICATIVA................................................................................................ix 1.4 PROCEDIMENTOS METODOLGICOS..........................................................x 1.5 CRONOGRAMA DO PROJETO........................................................................x 2 CAPTULO................................................................................................................XI 2.1 EMBASAMENTO TERICO............................................................................xi 2.2 PRINCIPAIS CONCEITOS..............................................................................xi 2.2.1 Osciloscpio..............................................................................................xi 2.2.2 Comunicao SPI.....................................................................................xii 2.2.3 Comunicao USB...................................................................................xiv 2.2.4 Digitalizao do Sinal...............................................................................xx 2.2.5 Amplificao do Sinal..............................................................................xxii 3 CAPTULO...........................................................................................................XXIV 3.1 ARQUITETURA DO PROTOTIPO................................................................xxiv 3.1.1 Anlise dos Componentes.....................................................................xxiv 3.1.2 Escolha dos Componentes...................................................................xxvii 3.1.3 Conversor A/D e Microcontrolador USB Separados.............................xxvii 3.1.4 Microcontrolador USB com CAD interno..............................................xxviii 3.1.5 Definio da Arquitetura.......................................................................xxviii 4 CAPITULO...........................................................................................................XXXI 4.1 HARDWARE..................................................................................................xxxi

vii

4.1.1 Desenvolvimento....................................................................................xxxi 4.1.2 Layout da Placa.....................................................................................xxxi 4.1.3 Correes do Circuito...........................................................................xxxiii 4.1.4 Aspecto Final do Prottipo...................................................................xxxiv 4.1.5 Relao dos Componentes..................................................................xxxiv 5 CAPITULO.........................................................................................................XXXVI 5.1 FIRMWARE.................................................................................................xxxvi 5.1.1 Software Utilizado................................................................................xxxvi 5.1.2 Programador Utilizado.........................................................................xxxvi 5.1.3 Programaco do Microcontrolador.....................................................xxxviii 5.1.4 Descrio do Firmware..............................................................................xl 6 SOFTWARE...........................................................................................................XLII 6.1.1 Software Utilizado....................................................................................xlii 6.1.2 Estruturao do Cdigo..........................................................................xliii 6.1.3 Interface Grfica......................................................................................xlv 6.1.4 Driver do Dispositivo USB......................................................................xlvii 7 CONCLUSES E PERSPECTIVAS..................................................................XLVIII REFERNCIAS BIBLIOGRFICAS.............................................................................L ANEXO A....................................................................................................................LII ANEXO B...................................................................................................................LIII ANEXO C...................................................................................................................LV

viii

1 CAPTULO

1.1

INTRODUAO As medies realizadas em qualquer circuito eletrnico so de fundamental

importncia para o tcnico reparador ou simplesmente para um estudante de eletrnica, no desenvolvimento de seus experimentos. Essas medies podem ser feitas de vrias maneiras, com simples instrumentos de bancada como os multmetros, ou com equipamentos mais sofisticados, com funes especiais que tornam os resultados mais precisos e confiveis, como os osciloscpios, podendo acrescentar funes como memorizao e impresso dos sinais visualizados. Analisando os custos dos equipamentos de medio, que so proporcionais complexidade, confiabilidade e preciso requerida, buscamos com este prottipo uma alternativa de baixo custo, com recursos limitados, mas de grande praticidade, associado aos recursos disponveis em qualquer microcomputador com uma porta de comunicao USB. O prottipo, designado USBSCOPE, envolve um circuito eletrnico destinado a digitalizao e transferncia dos sinais medidos para o microcomputador e tambm um software para a interpretao e visualizao dos sinais em uma interface grfica, similar a tela de um osciloscpio.

1.2

OBJETIVO O objetivo deste projeto construir um prottipo que permita a aquisio de

sinais e a transferncia destes, via porta de comunicao USB, para um microcomputador que ser responsvel pela interpretao dos sinais atravs de um software.

ix

1.2.1

Objetivo Geral Temos como objetivo deste projeto desenvolver um hardware e um software,

aplicado a medio de sinais eletrnicos, buscando praticidade e custos reduzidos.

1.2.2

Objetivo Especfico

Projetar um circuito eletrnico para a aquisio de sinais com dois canais de oito bits, com taxa de amostragem varivel de 0,5s a 0,02s, oito escalas de amplitude variando de 0,2V a 50V, com seletor de sinal CC-CA via hardware. Desenvolver uma interface grfica para visualizao dos sinais na tela do microcomputador. Desenvolver um Firmware para a comunicao via USB. Implementar o circuito eletrnico em uma placa de circuito impresso, com dimenses reduzidas, fazendo uso da tecnologia SMD.

1.3

JUSTIFICATIVA Dentre os principais motivos que nos levaram a realizao deste projeto,

podemos citar: O fato do tema do projeto estar correlacionado com o uso de comunicao USB, sendo um grande desafio e extremamente interessante para os membros do grupo. Possibilitar a aplicao de conhecimentos de eletrnica analgica e digital, associados a recursos de programao de Firmware e Sofware. Os modelos de equipamentos com funes similares ao do projeto, geralmente so para comunicao via porta paralela ou serial, de custos elevados e em alguns casos, importados. A possibilidade do prottipo desenvolvido, poder evoluir para uma verso mais elaborada, que permita comercializao futura.

1.4

PROCEDIMENTOS METODOLGICOS O projeto ser realizado por meio de pesquisa bibliogrfica em de livros,

manuais, Internet, normas tcnicas, apresentadas apropriadamente no decorrer dos captulos. A pesquisa cientfica, aplicada, explicativa e de laboratrio, em que na execuo do trabalho usamos recursos como Internet, livros, manuais, datasheets de componentes e equipamentos de medio em laboratrio.

1.5

CRONOGRAMA DO PROJETO As etapas do projeto foram desenvolvidadas conforme planejado no

cronograma, com a apresentao prevista para a primeira semana de Julho.


Quadro 1 Cronograma do Projeto

Atividades / Ms Maro Estudo dos Microcontroladores Definio do hardware Confeco da placa e montagem Testes e calibrao Estudo do Software Desenvolvimento do Software Testes de Software Apresentao

Abril

Maio

Junho

Julho

xi

2 CAPTULO

2.1

EMBASAMENTO TERICO No presente trabalho pretende-se uma soluo de como transferir sinais de

medies eletrnicas para um microcomputador atravs da porta USB, de maneira satisfatria. Sero abordados aspectos conceituais do hardware envolvido, bem como do firmware necessrio, apresentando-se os softwares usados na implementao do presente projeto. Abordaremos conceitos bsicos das funes existentes em um osciloscpio comercial, que sero implementados na interface grfica do nosso prottipo. Mostraremos as caractersticas principais do protocolo de comunicao USB. Neste trabalho, portanto, sero abordados conceitos de medio de sinais eletrnicos, processos de converso dos sinais analgicos em digitais, possveis alternativas dos componentes utilizados com suas vantagens e desvantagens, normatizao aplicada ao padro de comunicao escolhido e estudo dos problemas localizados durante a implementao do projeto.

2.2

PRINCIPAIS CONCEITOS

2.2.1

Osciloscpio O osciloscpio basicamente um dispositivo de visualizao grfica que

mostra sinais eltricos no tempo, que alm de uma medida quantitativa, apresenta tambm uma medida qualitativa da grandeza que est sendo objeto de anlise. O monitor de um osciloscpio , geralmente, um retngulo de 10cmx8cm, subdividido em quadrculos que permitem a leitura dos sinais visualizados. Os eixos vertical e horizontal possuem escalas que so ajustadas pelos seletores de base de tempo e amplitude, Para se medir um sinal eltrico com um osciloscpio, necessrio se dispor das ponteiras de prova, que devero ser conectadas aos canais do osciloscpio e fonte do sinal eltrico que se deseja medir.

xii

Os osciloscpios geralmente so de dois canais, o que significa que dois sinais podem ser observados (simultaneamente ou no) com o instrumento. Existem tambm osciloscpios com mais canais. Cada um dos canais possui uma entrada para uma ponteira de prova e alguns comandos independentes. Tanto os osciloscpios analgicos quanto os digitais permitem a visualizao de qualquer um dos seus dois canais, ou dos dois canais de forma simultnea. Citamos as funes mais comuns encontradas em um osciloscpio: CH1: mostra o sinal do canal 1; CH2: mostra o sinal do canal 2; ALT e CHOP: mostram os dois canais de forma simultnea. ADD: mostra um sinal correspondente soma do canal 1 com o canal 2. Amplitude mxima do sinal. Os botes para selecionar as escalas horizontal e vertical do osciloscpio permitem um ajuste da imagem de acordo com a freqncia e a amplitude de um sinal. O ajuste da escala de tempo comum aos dois canais do osciloscpio. A escala de amplitude independente para cada um dos canais do osciloscpio. O ajuste dos seletores das escalas de tempo e de amplitude varia de acordo com o sinal a ser analisado. A amplitude dos sinais mostrados por um osciloscpio pode ser determinada diretamente. Para isso, basta observar a escala do eixo vertical do osciloscpio, quando um determinado sinal est sendo mostrado em funo do tempo. Deve-se contar o nmero de divises e multiplicar pela escala que est sendo utilizada.

2.2.2

Comunicao SPI O SPI um protocolo de comunicao sncrono e opera no modo full-duplex.

O protocolo SPI composto por 4 sinais, so eles: Sinais de dados: MOSI (Master data Output, Slave data Input) e MISO (Master data Input, Slave data Output) so responsveis pela transferncia de dados entre o master e o slave. Sinais de controle: SCLK (Serial Clock) e /SS (Slave Select).

xiii

A figura 1 ilustra a conexo entre dois dispositivos spi. O dispositivo da direita denominado dispositivo mestre e o da esquerda dispositivo escravo. O dispositivo mestre possui o controle do sinal de clock (SPICLK) e quem controla o processo de trocas de mensagens e dados. Os pinos de dados so denominados SPISIMO e SPISOMI. No primeiro pino os dados entram quando o dispositivo escravo (Slave In) e saem quando o dispositivo mestre (Mestre Out). No segundo pino a operao inversa. Na figura abaixo as setas indicam a direo dos dados.

Figura 1 Conexo Mestre - Escravo SPI

Onde: SPITXBUF - o buffer que contm o dado a ser transmitido. SPIRXBUF - o buffer que contm o dado recebido. SPIDATA - o registro de dados. Os dados a serem transmitidos so transferidos para este registro. Na realidade ao mesmo tempo em que o mestre transmite dados ele recebe dados do dispositivo escravo. Neste caso o mestre deve, por software, aceitar ou no o dado. Registros de controle - So os registros utilizados para configurar a interface SPI, como estabelecer a freqncia do clock, definir se o dispositivo ser mestre ou escravo e outras funes.
Figura 2 Sinais na Comunicao SPI

xiv

O mestre inicia uma transmisso enviando o sinal de relgio SPICLK. Dados seriais so enviados pelo pino SPISIMO, do lado do mestre, e pelo pino SPISOMI, do lado do escravo. Por exemplo, na subida do clock os dados so disponibilizados nos pinos anteriores e na descida subseqente do relgio os dados so armazenados no registro SPIDATA. Assim na descida de cada pulso de clock o escravo captura um bit vindo do mestre e o mestre captura um bit vindo do escravo. Deste modo ambos dispositivos transmitem e recebem dados simultaneamente. Cabe ao software de aplicao determinar se o dado significativo ou no. O mestre pode iniciar uma transmisso a qualquer momento, uma vez que ele controla o sinal de clock, porm cabe ao projetista determinar como o mestre ir saber quando o escravo est pronto para transmitir dados. Isto pode ser feito, por exemplo, atravs de sinais de interrupo ou varredura por software.

2.2.3

Comunicao USB Idealizado em 1995 por um grupo de empresas de tecnologia, o padro USB

(Barramento Serial Universal), permite que sejam conectados at 127 equipamentos em cada computador atravs de hubs. Tudo isso sem a necessidade de desligar o computador para fazer as ligaes e com reconhecimento automtico doa aparelhos adicionados. o chamado plug and play. A configurao do USB automtica, sendo desnecessria a preocupao com drivers e programas ao acrescentar novos dispositivos. As controladoras USB detectam automaticamente a conexo ou remoo de um perifrico. Estas tambm gerenciam e controlam o driver e a largura da banda exigida por cada dispositivo, alm tambm de definir a alimentao eltrica correta. As primeiras interfaces USB atendiam especificao 1.0 (Low Speed). Posteriormente, foram introduzidas modificaes que deram origem especificao 1.1 (Low/ Full Speed), na qual seguem a maioria dos computadores produzidos antes de 2000. A partir de meados de 2001 os computadores passaram a ter barramento USB 2.0 (Low/ Full/ High Speed). A principal diferena das especificaes est na taxa de transferncia, suportando as seguintes velocidades: Low speed taxa de transferncia de 1,5 Mbits/s Full speed taxa de transferncia de 12 Mbits/s

xv

High speed taxa de transferncia de 480 Mbits/s

2.2.3.1.Caractersticas As principais caractersticas do padro USB esto abaixo listadas de acordo com os benefcios propiciados por estas: Auto-identificao de perifricos, configurao e mapeamento de drivers automtico. Conexo dinmica e reconfigurao de perifricos. Sensvel a dispositivos cuja largura da banda de transmisso vai de poucos Kbps at alguns Mbps. Suporta transferncias isossncronas assim como assncronas para o mesmo conjunto de fios Suporta conexes mltiplas de vrios dispositivos, com at 127 perifricos. Protocolo reduzido, resultando em uma alta utilizao do barramento. Suporta um grande nmero de pacotes de tamanhos variados A insero e remoo dinmica de perifricos identificada e percebida em tempo real pelo usurio. Consistente com a arquitetura plug and play dos PCs. Compatvel com as interfaces dos sistemas operacionais existentes.

2.2.3.2.Topologia USB O barramento USB conecta dispositivos e hosts que suportam este padro. A interconexo fsica da USB usa a topologia tiered-star (estrela disposta em camadas / nveis). Um hub, conector, o centro de cada estrela. Cada segmento de cabo uma conexo pontual entre o host e hub ou funo, ou um hub conectado a outro hub ou funo. Existe apenas um host num sistema USB. A interface USB para o sistema do computador hospedeiro refere-se ao controlador do mesmo. O controlador do host pode ser implementado em combinao de hardware e software.

xvi

Um hub pode prover mais pontos de conexo. A figura seguinte ilustra a topologia do USB:

Figura 3 Topologia USB

2.2.3.3.Conexo Eltrica As transferncias de sinal e potencial so feitas atravs de um cabo, com quatro fios, como mostrado na figura 4:

Figura 4 Corte Transversal do Cabo USB

Os cabos USB possuem no seu interior dois pares de fios. Um par tranado e formado, geralmente, por fios de cor branco e verde. atravs desses fios que trafegam os dados, no formato serial. Esses dois sinais formam o par diferencial. Ao invs de ter um fio terra e outro de sinal, os dois levam o mesmo sinal, mas com polaridades invertidas, chamados de D+ e D-. A vantagem do par diferencial a alta imunidade a rudos eltricos e interferncias em geral. O outro par usado para a alimentao dos dispositivos ligados no barramento. O fio preto o terra e o

xvii

vermelho traz uma tenso de +5 volts, e a corrente que pode ser fornecida de 500 mA. Envolvendo esses dois pares de fios temos uma camada formada por uma folha de alumnio e uma blindagem externa, formada por uma malha de cobre. Envolvendo tudo temos uma capa de plstico. 2.2.3.4.Controlador Host O host USB interage com os dispositivos atravs do controlador do mesmo. O host responsvel por: Detectar a conexo e remoo de dispositivos USB. Gerenciar o fluxo de controle e de dados entre ele e os perifricos. Coletar estatsticas de atividades e estado. Fornecer alimentao aos dispositivos conectados. O software do sistema USB no host gerencia interaes entre dispositivos USB e o software do dispositivo instalado no prprio hospedeiro. Existem cinco reas de interao entre o software do sistema USB e o software do dispositivo: Enumerao e configurao do dispositivo. Transferncias isossncronas de dados. Transferncias assncronas de dados. Gerenciamento de energia. Gerenciamento de informaes de barramentos e dispositivos. Sempre que possvel, o software do sistema usa interfaces existentes no host para gerenciar as interaes acima.

2.2.3.5.Protocolo USB O USB um barramento receptor. O controlador do host inicia todas as transferncias de dados. Todas as transaes do barramento envolvem a transmisso de at trs pacotes. Cada transao se inicia quando o controlador do host envia um pacote USB descrevendo o tipo e a direo da transao, o endereo do dispositivo USB e

xviii

o nmero do ponto final (endpoint). O ponto final de um dispositivo a nica poro enderevel deste que a fonte de informao em um fluxo de comunicaes entre o host e o prprio. O nmero de endpoint um valor de 4 bits entre 0(hex) e F(hex), inclusive, associado a um ponto final de um perifrico USB. Este primeiro pacote conhecido como "pacote de sinal" (token packet). O dispositivo USB, que endereado, seleciona a si mesmo pela decodificao do endereo apropriado. Em uma dada transao, dados so transferidos do host para o dispositivo ou vice-versa. A direo da transferncia especificada no token packet. A fonte da transao envia ento um pacote de dados ou indica que no h mais dados para serem transferidos. O destinatrio, em geral, responde com um "pacote aperto de mo" (handshake packet), indicando o sucesso da transferncia. O modelo para transferncias de dados entre a fonte ou um destino no host e um ponto final de um dispositivo conhecido como pipe (tubo ou canal). Existem dois tipos de pipe: correntes (stream) e mensagens. Uma corrente de dados no possui uma estrutura USB definida, enquanto as mensagens possuem. Alm disto, os tubos possuem associaes com as bandas de transmisso de dados, tipos de servios de transferncia e caractersticas de endpoint, como direo e tamanho de buffers. A maioria dos tubos passam a existir quando um dispositivo configurado. Uma mensagem de pipe, default control pipe, sempre existe enquanto o dispositivo est sendo alimentado, para que possa fornecer acesso s configuraes, informaes de controle e status deste. A listagem da transaes permite o controle do fluxo para vrias correntes de tubos (stream pipes). O mecanismo de controle de fluxo permite a construo de listas flexveis, que acomodam servios concorrentes de misturas heterogneas de stream pipes. Mltiplas correntes de pipes podem ser "servidas" em diferentes intervalos e com pacotes de diferentes tamanhos. 2.2.3.6.Fluxo de Dados O barramento suporta dados funcionais e substituio de controles entre o host e perifricos, assim tambm como um conjunto de pipes uni ou bidirecionais. As transferncias de dados realizam-se entre o software do host e um endpoint

xix

particular em um dispositivo USB. Algumas destas associaes que so chamadas de pipes (tubos ou canais). Geralmente, o movimento de dados atravs de um tubo independente do fluxo de dados em outro tubo. Um dado dispositivo USB deve possuir vrios endpoints. Por exemplo, o dispositivo deve ter um ponto final que suporte um tubo transportando dados para o dispositivo e outro que suporte o transporte de dados no sentido contrrio. A arquitetura USB compreende quatro tipos bsicos de transferncias de dados: Transferncia de Controle Usada para configurar um dispositivo no instante de sua conexo e pode ser usada para outros propsitos especficos, incluindo controle de outros pipes no dispositivo. Transferncia de Volume de Dados Gerada e consumida em grandes quantidades e simultaneamente. Possui uma ampla e dinmica latitude em transmisses de reserva. Este tipo de dado seqencial. A largura das bandas de transmisso para este tipo de transferncia de dados pode variar dependendo de outras atividades concorrentes do barramento. um tipo de transmisso que assegura a integridade dos dados mas no a velocidade de transmisso. Transferncias Interruptas de Dados Usada para caracteres ou coordenadas com percepes humanas ou caractersticas de respostas regenerativas. Alguns dados podem ser apresentados para transferncias por um dispositivo em qualquer instante e distribuda pelo USB a uma taxa nunca mais lenta quanto a especificada pelo dispositivo. Transferncia Isossncrona de Dados Ocupa uma quantidade pr-negocivel da banda de transmisso do barramento, com a distribuio de pulsos. Chamada tambm de transferncia de correntes em tempo real (streaming real-time transfers). 2.2.3.7.Caracterizao de Dispositivos

xx

Todos os dispositivos USB so acessados por um endereo atribudo durante sua conexo e enumerao. Cada componente adicionado suporta um ou mais pipes atravs dos quais o host pode se comunicar com eles. Todo componente USB tambm suporta um canal especialmente designado no ponto final zero para que seja includo o canal de controle (control pipe). Atravs deste pipe de controle, dispositivos USB suportam um mecanismo de acesso comum para obter informaes. O canal de controle no endpoint zero a informao necessria para descrever completamente o dispositivo USB. Esta informao dividida em trs categorias: Standard A definio comum para todos os perifricos USB e inclui itens como a identificao do vendedor, classe do dispositivo e o gerenciamento de alimentao. Configuraes, interface e descries de endpoint dos dispositivos carregam informaes relacionadas sobre o mesmo. USB. Vendedores USB O vendedor de dispositivos USB livre para adicionar qualquer informao desejada. Class A definio desta informao varia, dependendo das classes de dispositivos

2.2.4

Digitalizao do Sinal Para digitalizar um sinal, precisamos de uma base de tempo e um Conversor

Analgico Digital (ADC), que fornea uma aproximao digital do sinal original. A aproximao digital registrada em n bits e a variao pode ser reduzida para uma preciso de, no mximo, uma parte de 2n. A base de tempo determina a velocidade com que podemos amostrar a forma de onda e varia com o tipo de ADC. Em geral, quanto maior for o nmero de bits, mais lento o dispositivo. O bit mais significativo (msb) o que registra a maior variao de tenso, e o bit menos significativo (lsb) registra a menor variao de tenso.

xxi

2.2.4.1.Conversor Analgico Digital Um conversor A/D um circuito que converte um nvel de tenso (ou corrente) em um valor numrico (digital) correspondente. a base de qualquer instrumento de medio digital. Existem vrias topologias de circuitos conversores A/ D, cada uma delas com caractersticas especficas priorizando a velocidade de converso, a resoluo, a simplicidade ou o custo.

Figura 5 Conversor Analgico Digital

Conversor A/D Paralelo ou Flash O processo de converso A/D feito de modo paralelo (todos os bits

simultaneamente), o que possibilita uma maior velocidade de operao. O sinal de entrada comparado com 2n-1 valores intermedirios de tenso distribudos linearmente dentro da faixa dinmica do conversor (n = n de bits do conversor). Para cada valor intermedirio utilizado um comparador de tenso. A sada dos 2n-1 comparadores combinada por um conjunto de portas digitais, fornecendo o resultado de sada em cdigo binrio. Conversor A/D de Rampa Simples baseado na gerao de uma rampa de tenso linear no tempo, obtida pela integrao da tenso de entrada (circuito integrador com AMPOP). Conversor A/D de Rastreamento O rastreamento funciona pela sada de um comparador impulsionando a direo de contagem. O contador emite uma palavra digital que o D/A converte para V+. O sinal de controle configura a taxa do relgio, ento, medida que o contador vai para frente e para trs em volta do binrio da tenso de entrada, o relgio

xxii

desacelerado

para

conseguir

uma

representao

melhor. A caracterstica

interessante do A/D de rastreamento que ele segue um alvo em movimento. Conversor Carga-Equilbrio O projeto de equilbrio de carga mais comum para dispositivos lentos e de baixo custo (mas pode ser bastante preciso). A idia carregar um capacitor via tenso do sinal integrado. Isso usado para acionar um mono-estvel que envia um pulso de gatilho breve para uma fonte de corrente precisa. A freqncia da fonte de corrente ir cancelar a construo da carga no capacitor em funo do integrador e, portanto, a freqncia fornece uma medida da tenso de entrada. A freqncia medida com um contador. Conversor por Aproximaes Sucessivas Uma abordagem antiga para a converso A/D por aproximaes sucessivas, comeando com o bit mais significativo e indo at o menos significativo. O comparador simplesmente informa se a aproximao alta demais. Podemos pensar nisso como um elo de realimentao buscando seu ponto operacional, mas, na verdade, ele nunca ser encontrado, j que a aproximao no igual ao sinal de entrada.

2.2.5

Amplificao do Sinal Tendo em vista que o sinal eltrico a ser convertido pode ser da escala de

mili-volts, necessrio que eles sejam aplicados a um amplificador, que fornece um alto ganho para o sinal diferencial de entrada obtendo um sinal de sada adequado para a anlise. Este ganho pode ser regulado variando o valor da resistncia entre os terminais de controle de ganho deste componente e ajustado durante a montagem do sistema.

xxiii

Figura 6 - Circuito Bsico do Amplificador Operacional

xxiv

3 CAPTULO

3.1

ARQUITETURA DO PROTOTIPO Entre as vrias possibilidades de desenvolvimento do prottipo podemos citar: Conversor AD e microcontrolador separados. Microcontrolador com USB e CAD interno.

3.1.1

Anlise dos Componentes Fazendo a anlise dos componentes necessrios para a montagem do

prottipo, destacamos os seguintes como principais: Microcontrolador Conversor Analgico Digital Multiplexador Amplificador Operacional

3.1.1.1.Microcontrolador FTDI FT232BM USB UART Este microcontrolador se destaca principalmente por disponibilizar gratuitamente, no site do fabricante, drives de controle para os sistemas operacionais Windows 98/Me/200/XP/CE.NET, Linux e Mac OS-X/9/8, com exemplos de aplicao e cdigo fonte para as linguagens C++, LabView, Delphi, Visual Basic, Java e Python, juntamente com uma ampla documentao. Seria ideal para a nossa aplicao se no fosse a limitao do nmero de sadas. Tem as seguintes caractersticas: 32 pinos com encapsulamento LQFP 284 Bytes de buffer de recebimento 128 Bytes de buffer de envio Taxa de transferncia entre 300 a 1M Baud (RS232) Compatvel com USB1.1 e USB2.0

xxv

EPROM programvel via USB

Atnel AT90USB82 Este fabricante possui a linha AT90USB com capacidades de memria Flash de 8 a 128Kb, com conversor A/D de 10bits e vrias outras caractersticas necessrias para o prottipo, mas a documentao de referncia para programao e outros detalhes de aplicao so destinados para usurios mais avanados, dificultando seu uso no presente projeto. Tem as seguintes caractersticas: 32 pinos com encapsulamento QFN32 e TQPP32 8 kB de memria Flash para o programa 512 Bytes SRAM para dados 512 Bytes EEPROM 22 I/Os programveis

Microchip 18F2550 Este foi o mais adequado a nossa aplicao. O microcontrolador da Microchip baseado na arquitetura Harvard com modelo de instrues RISC (Reduced Instruction Set Computer). Desta forma possui apenas 35 instrues em Assembler viabilizando o aprendizado e programao. Possui uma vasta documentao a respeito da programao e aplicaes prticas, favorecendo na soluo dos problemas que pudessem ocorrer na implementao do prottipo. Citamos as principais caractersticas: 28 pinos com encapsulamento PDIP e SOIC 32 kB de memria Flash para o programa 2 kB de memria SRAM para dados 24 pinos de I/O individualmente configurados Conversor A/D com10 canais de 10 bits Proteo de Cdigo Programvel Modo SLEEP para diminuio de consumo de energia. Opes de oscilador selecionvel: RC, XT, HS, LP Programao Serial in-circuit (atravs de dois pinos)

xxvi

Bytes de identificao (ID) programveis pelo usurio

3.1.1.2.Conversor Analgico Digital Analog Device AD7912 O fator determinante na escolha foi a taxa de converso disponvel com a interface serial, sendo que tnhamos a opo de outros fabricantes mas com interface paralela ou freqncia de clock acima de 20MHz. Tem as seguintes caractersticas: Dois canais de 10 bits Taxa de converso mxima de 1MSPS com 18MHz de clock Interface serial SPI Encapsulamento 8 pinos MSOP

3.1.1.3.Multiplexador Maxim Max4638ESE O chaveador multiplexador foi escolhido dado suas dimenses e numero de canais. Tem as seguintes caractersticas: Oito canais multiplexados Encapsulamento 8 pinos SOIC

3.1.1.4.Amplificador Operacional Texas OPA2350 Este componente estava disponvel em nosso laboratrio, sendo adequado aplicao em questo, com as seguintes caractersticas: Dois canais Largura de banda de 38 MHz Encapsulamento 8 pinos SOIC

xxvii

3.1.2

Escolha dos Componentes A escolha dos componentes foi realizada tendo como base os requisitos

mnimos de desempenho do prottipo mencionados no objetivo do projeto, item 1.2.2. Tambm levamos em conta a facilidade de aquisio dos componentes, buscando fabricantes que disponibilizassem amostras sem custos para nosso projeto. O microcontrolador escolhido foi o 18F2550 da Microchip por possuir caractersticas de desempenho, ferramentas para desenvolvimento e dimenses apropriadas para a construo do prottipo. O conversor AD escolhido foi o AD 7912 da Analog Device, com dois canais de 10 bits e interface SPI (Serial Peripheral Interface). Usamos dois multiplexadores da Maxim, o MAX4051, com oito canais multiplexados atravs de trs bits de controle, para a seleo das escalas. Na entrada de sinal para o conversor AD usamos um amplificador operacional da Texas, o OPA2350U, possibilitando um range de oito escalas atravs do controle de ganho.

3.1.3

Conversor A/D e Microcontrolador USB Separados Com esta arquitetura temos um conversor A/D de dois canais comunicando

com um microcontrolador via SPI (Serial Peripheral Interface). O microcontrolador responsvel pelo controle do fluxo de dados da comunicao USB e SPI. Na entrada do conversor A/D precisamos de um amplificador operacional para cada canal. O controle de escalas pode ser feito diretamente pelo microcontrolador ou atravs de um multiplexador.

xxviii

Figura 7 - Diagrama do CAD e Microcontrolador USB Separados

3.1.4

Microcontrolador USB com CAD interno Nesta arquitetura o microcontrolador e responsvel pela converso A/D dos

dois canais, assim como pelo controle do fluxo de dados da comunicao USB. Fazse necessrio, para cada um dos canais, a utilizao de um amplificador operacional juntamente com um multiplexador, com o objetivo de fazermos a seleo das escalas atravs do controle de ganho do amplificador.

Figura 8 - Diagrama do Microcontrolador com USB e CAD Interno

3.1.5

Definio da Arquitetura Inicialmente comeamos desenvolvendo o sistema com conversor A/D e

microcontrolador separados, mas no pode ser totalmente implementado devido a caractersticas do protocolo SPI do conversor A/D. Na parte do microcontrolador (mster), o sinal de clock somente enviado quando se quer realizar a transmisso ou recepo de dados, sempre so oito ciclos de clock.

xxix

Na parte do conversor A/D (slave), o conversor precisa do sinal de clock para dar incio converso do dado. Essa converso comea no primeiro ciclo e o envio do dado s comea a partir do quarto pulso de clock. O dado enviado bit por bit sendo que o ultimo bit enviado no quarto pulso de clock, o penltimo bit no quinto pulso, e assim sucessivamente at o primeiro bit do dado. Diante desse atraso ocorreria a perda de seis clocks do dado convertido que seria enviado para o microcontrolador, resultando numa perda na escala de resoluo. A figura abaixo mostra o diagrama de tempos do conversor A/D.

Figura 9 - Diagrama de Tempos do Conversor A/D

A soluo adotada para resolver este problema foi a utilizao do conversor interno do prprio microcontrolador, que apesar de proporcionar uma freqncia de amostragem mais baixa manteria a resoluo em dez bits. A freqncia de amostragem mxima ( F s ) foi estimada pelas equaes:

ad

64

osc

64 48 10 6

ad

= 1,33 10 6 s

Para 10 bits sero usados 11 T ad , ento:

T T

= 11 T ad

= c

11 64 48 10 6

= 1,47 10 5 s

acq

fornecido pelo datasheet com um valor mdio 2,45 10 6 s . 1 1 = 5 6 T c + T acq 1,47 10 + 2,45 10

= 58,3kHz

xxx

Entre duas converses consecutivas temos 3 T acq , portanto:

total

T +T
c

acq

+ 3 T ad

total

= 2,114 10 5 s

xxxi

4 CAPITULO

4.1

HARDWARE Inicialmente comeamos implementando o hardware da arquitetura

mensionada no item 3.1.3, conversor A/D e do microcontrolador USB separados, mas diante dos problemas apresentados, fizemos pequenas modificaes no mesmo hardware para adequ-lo arquitetura do item 3.1.4, microcontrolador USB com conversor A/D interno.

4.1.1

Desenvolvimento Tanto no desenvolvimento do esquema eletrnico quanto na elaborao da

placa de circuito impresso foi utilizado uma verso freeware do software Eagle. O esquema eletrnico foi fundamentado nas informaes contidas nos datasheets dos componentes, disponvel na homepage do fabricante, juntamente com o direcionamento recebido do orientador do projeto. O esquema eletrnico est no Anexo_A. O layout da placa de circuito impresso foi dimensionado tendo como referncia as medidas de caixa de um pen drive, com o objetivo de usarmos a mesma caixa para suportar o nosso circuito, usando inclusive o conector USB e o de udio. Dada as dimenses da placa de circuito e impresso optou-se por tercerizar sua confeco, ficando a nosso encargo a montagem dos componentes.

4.1.2

Layout da Placa Com os padres de encapsulamentos dos componentes definidos, fizemos

a distribuio destes nos dois lados da placa de circuito , resultando em duas faces com vrios pontos de interligao entre elas.

xxxii

A placa de circuito impresso ficou com dimenses de 25mm de largura e 70mm de comprimento, adequadas ao tamanho invlucro do pen drive, como mostrado na figura 10.

Figura 10 - Faces da Placa de Circuito Impresso

Na face superior, figura 11, temos como principais componentes o microcontrolador, o conversor A/D e o aplificador operacional . Devido a necessidade de programao do firmware do microcontrolador, foi previsto um ponto de conexo para o programador ICSP (In-Circuit Serial Programming).

Figura 11 - Face Superior

Na face inferior, figura 12, foram posicionados os dois multiplexadores e o oscilador cristral de 16MHz.

xxxiii

Figura 12 - Layout da Face Inferior

4.1.3

Correes do Circuito A primeira alterao foi devido substituio do oscilador semicondutor por

um cristal de 16MHz, para uma maior preciso do clock, conforme recomenda a especifio USB 2.0 (Universal Serial Bus Specification Revision 2.0) , para o modo Full-speed uma tolerncia de 0,25%. Na elaborao do layout foi determinado erroneamente o encapsulamento dos multiplexadores como SOIC1, ao invs do encapsulamento SOIC com dimenses menores que fora previsto, sendo necessrio prolangar alumas conexes dos pinos do multiplexador. Eliminamos o conversor A/D externo, pelas limitaes mencionadas no item 3.1.3, relocado as conexes de entrada do conversor para os pinos 2 e 3 do microcontrolador, entradas analgicas AN0 e AN1. Em funo do uso das entradas analgicas AN0 e AN1 do microcontrolador foi necessrio relocar as conexes do multiplexador que inicialmente estavam nos pinos 2 e 3 para os pinos 11 e 12, por razes de configurao das portas anlgicas sendo necessrio obdecer a seguinte ordem da tabela abaixo:

xxxiv

Quadro 2 Opes de Configurao das Portas do 18F2550

4.1.4

Aspecto Final do Prottipo Todo circuito foi elaborado com o objetivo de acomod-lo no invlucro de um

pen-drive, com o correto dimensionamento da placa de circuito impresso e disposio dos conectores adequadamente para um encaixe perfeito. A figura 13 mostra o aspecto final do prottipo.

Figura 13 - Aspecto Final do Prottipo

4.1.5

Relao dos Componentes

xxxv

Resistores R1, R9 R2, R10 R3, R11 R4, R12, R17, R18 R5, R13 R6, R14 R7, R15 R8, R16 R19, R20, R21, R22 Valor 10 M 4 M 2 M 1 M 400 k 200k 100k 40k 10k

Quadro 3 Relao de Resistores

Capacitores C1, C2, C3, C4, C5, C8, C10 C6 C7, C9 C11, C12 C13, C14 Valor 0,1F 470 nf 15pF 10F 20nF

Quadro 4 Relao de Capacitores

Circuitos Integrados IC1 IC2, IC3 IC4 U1 AD7912 MAX4051 OPA2350 18F2550

Quadro 5 Relao de Circuitos Integrados

Outros Componentes Cristal Q1 Conector SV1 Conector X1 Conector X2 HS 16Mhz PIN MA05-1 USB JACK

Quadro 6 Relao de Componentes

xxxvi

5 CAPITULO

5.1

FIRMWARE O firmware descrito neste captulo est relacionado com o

microcontrolador 18F2550, mostraremos os detalhes de programao e as ferramentas utilizadas.

5.1.1

Software Utilizado Para programar o firmware usamos o software PCWH 4.013, da empresa

CCS (Custom Computer Service), que faz a compilao em linguagem C, suportando as famlias dos microcontroladores da Microchip de 12 bits, 14 bits e 16bits. O software inclui vrias funes e rotinas pr-definidas que permitem ao programador uma maior agilidade na elaborao dos programas.

Figura 14 - Tela Inicial do CCS - PCWH

5.1.2

Programador Utilizado A transferncia do firmware para o microcontrolador foi realizada com o

auxlio do programador PICPlus. Possui as mesmas caractersticas eletrnicas do programador JDM, figura 15, no precisando de fonte de alimentao externa,

xxxvii

aproveitando o recurso existente no microcontrolador de programao em baixa tenso (LVP).

Figura 15 - Esquema Eletrnico do Programador JDM

O programador PICPlus faz as seguintes conexes com o microcontrolador via porta serial: Pino 1 (VDD) do conector ICSP alimenta o PIC no pino 20 (VDD) e habilita programao em baixa tenso no pino 26 (PGM). Pino 2 (PGD) do conector ICSP faz a programao de dados com o PIC no pino 28 (PGD). Pino 3 (VSS) do conector ICSP alimenta o PIC nos pinos 8 (VSS) e 19 (VSS). Pino 4 (VPP) do conector ICSP conecta a tenso de programao do PIC no pino 1(VPP). Pino 5 (PGC) do conector ICSP conecta o clock de programao do PIC no pino 27 (PGD)

xxxviii

Figura 16 - Programador ICSP

5.1.3

Programaco do Microcontrolador O PIC18F2550 possui uma arquitetura baseada em acumulador (o

registrador W), todas as instrues lgicas e aritmticas so referenciadas ele. Os registradores so divididos em duas categorias: especiais (SFR) e de propsitos geral (GPR). A maior parte dos SFRs so usados para configurar e usar os diversos perifricos disponveis. O registrador de STATUS sinaliza condies especiais ocorridas durante as operaes. Os principais registradores configurados para nosso projeto foram os relacionados s definies de clock (CONFIG1L, CONFIG1H, OSCCON), nas definies da USB (UCON, UCFG, USTAT, UADDR, UFRMH:UFRML), nas definies de SPI (SSPSTAT, SSPCON1) e na configurao de portas como entrada e sada (TRISA, TRISB). A programao de cada registrador feita movendo-se um valor equivalente ao valor binrio que represente as condies necessrias para cada funo ou configurao.

xxxix

Figura 17 - Microcontrolador 18F2550

O quadro abaixo mostra as funes dos pinos utilizados no PIC18F2550.


Pino 1 2 3 4 5 6 7 8 9 10 11 12 14 15 16 19 Funo MCRL Vpp AN0 AN1 RA2 RA3 RA4 RA5 Vss OSC1 OSC2 RC0 RC1 Vusb DD+ Vss

Descrio Entrada de reset, em nvel baixo reseta o sistema Entrada de tenso da programao Entrada analgica 0 Entrada analgica 1 Digital i/o Digital i/o Digital i/o Digital i/o Referncia terra para a lgica e os pinos de i/o Entrada do oscilador de cristal ou entrada de clock externo Conecta o cristal ou ressonador Digital i/o Digital i/o Regulador de tenso interno do USB 3.3V Linha diferencial negativa do USB (input/output) Linha diferencial positiva do USB (input/output) Referncia terra para a lgica e os pinos de i/o

xl

20 26 27 28

Vdd PGM PGC PGD

Fonte positiva para a lgica e os pinos de i/o Pino que permite a programao em baixa tenso ICSP Clock de programao ICSP Pino de dados da programao ICSP Quadro 7 Pinos Utilizados no PIC

5.1.4

Descrio do Firmware Faremos uma breve descricao dos pontos principais do firmware que foi

compilado em linguagem C. A rotina completa encontra-se no Anexo B. Os comandos serao mostrados em formatao itlico e negrito. Comecamos fazendo a chamada do arquivo de definicao de todos os registradores enderecados para o 18F2550, existente no banco de dados do compilador CCS: #include <18F2550.h

Fazemos a configuracao dos fusveis: HSPLL - oscilador de cristal de alta frequencia com PLL habilitado. NOWDT - watchdog desabilitado. NOPROTECT - proteo de codigo desabilitada. LVP programacao em baixa tenso habilitada. DEBUG - RB6 e RB7 dedicados para InCircuitDebug USBDIV - clock USB do 96MHz PLL/2 PLL5 - cristal de 20MHz PLL prescaler /5 CPUDIV1-clock do ncleo 96MHz PLL/2 VREGEN - regulador interno de tenso USB habilitado #fuses

HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREG EN Ativamos o EndPoint1 para as transferencias IN Bulk/Interrupt #define USB_EP1_TX_ENABLE USB_ENABLE_BULK

Ativamos o EndPoint1 para as transferencias OUT Bulk/Interrupt #define USB_EP1_RX_ENABLE USB_ENABLE_BULK

xli

Determinamos o tamanho de 4 bytes reservado para o Buffer Tx EndPoint1 #define USB_EP1_TX_SIZE 4

Determinamos o tamanho de 3 bytes reservado para o Buffer Rx EndPoint1 #define USB_EP1_RX_SIZE 3

Fazemos a incluso das bibliotecas USB do compilador CCS para o hardware 18F2550, configurao da USB e descritores: #include #include #include <pic18_usb.h> <PicUSB.h> <usb.c>

Configuramos as entradas analgicas do conversor A/D: setup_adc_ports(AN0_TO_AN1)

Inicializamos o USB: usb_init() Habilitamos os perifricos e interrupes: usb_task() Esperamos que o Pic seja enumerado pelo windows: usb_wait_for_enumeration()

Fazemos a seleo do canal, aguardamos 10s para configurar, iniciamos a leitura do canal A0 e enviamos o pacote de dados de 4 bytes para a USB set_adc_channel(0); delay_us(10); entrada_0 = read_adc(); usb_put_packet(1,envia,4,USB_DTS_TOGGLE)

xlii

6 SOFTWARE

Apresentaremos o software desenvolvido para a interface grfica bem como detalhes do driver utilizado para a instalao do dispositivo USB no microcomputador.

6.1.1

Software Utilizado A programao da interface grfica foi desenvolvida no Visual Basic 6.0,

rodando em qualquer microcomputador com sistema operacional Windows. O Visual Basic estrutura o programa em varias sees, oferece uma sria de opes sobre o que desejamos criar, podendo ser: um executvel, uma DLL, um ActiveX, etc, como mostrado na figura 18. Usaremos somente "standard EXE" que o usual para criao de programas executveis.

Figura 18 - Opes de criao do Visual Basic

O Visual Basic fornece muitas possibilidades de desenhar grficos, geralmente os grficos so feitos atravs dos objetos Printer , Form ou Picture. Eles representam a superfcie as quais os grficos podem ser aplicados. Neste aplicativo nos usamos o objeto Form como tela base e o objeto Picture, para plotarmos o grfico dos sinais.

xliii

6.1.2

Estruturao do Cdigo Cada objeto colocado no formulrio , Form, dotado de uma janela de

propriedades que permite configurar o mesmo. Tambm possui eventos, e baseados nestes eventos criamos nosso programa na janela de codificao. O programa inicia com a declarao das variveis gerais que sero usadas em vrias sub-rotinas, e dentro destas existe a declarao das variveis locais. A seguir apresentaremos as principais partes da rotina com comentrios dos pontos mais importantes. Os comandos serao mostrados em formatao itlico e negrito . A rotina completa encontra-se no Anexo C. Rotina de incio Pressionando o boto de comando cmdCiclo iniciamos o programa que executa continuamente as sub-rotinas DoEvents, cmdEntradas atravs dos comandos de lao Do e Loop. Private Sub cmdCiclo_Click() Do DoEvents cmdEntradas_Click cmdAnalogicas_Click Loop End Sub Rotina de leitura analgica Primeiramente testa se o pipes de comunicao myOutPipe e myInPipe esto configurados, ento atribui valor 4 para o Send_Buf(0) , se houver erro no processo, mostra a mensagem de "Falha na leitura analgica", caso contrrio transfere os valores dos canais para a varivel lblAnalogica. If (myOutPipe <> INVALID_HANDLE_VALUE) And (myInPipe <> INVALID_HANDLE_VALUE) Then Send_Buf(0) = 4 If (Send_Receive(Send_Buf, 1, Rec_Buf, 4, 1000, 1000) <> 1) Then MsgBox "Falha na leitura analgica" Else For i = 0 To 1 lblAnalogica(i).Caption = Rec_Buf(i) Next i End If End If

xliv

Rotina de plotagem

Comea com a definio da escala da rea de plotagem com Picture1.Scale, em seguida identifica em qual posio encontra-se o seletor de canal, Select Case Slider1.Value. Neste ponto temos trs opes de canais, para CH1 e CH2 corresponde ao Case 0, somente CH1 corresponde ao Case 1, somente CH2 corresponde ao Case 2 . Selecionado a opo correta, inicia a plotagem com o comando Picture1.Line , interligando cada ponto amostrado com linhas, incrementando a varivel X2 ate atingir o limite estabelecido na escala com a varivel vetorhoriz . O processo se repete para os dois canais e ao final de cada plotagem a tela e limpa para a nova plotagem Picture1.Scale (0, 255)-((vetorhoriz), -1) Select Case Slider1.Value Case 0 For i = 0 To 1 If i = 0 Then Picture1.Line (x1, aux)-(x2, Rec_Buf(i)), vbRed aux = Rec_Buf(i) x1 = x2 x2 = x1 + 1 Else Picture1.Line (x12, aux2)-(x22, Rec_Buf(i)), vbGreen aux2 = Rec_Buf(i) x12 = x22 x22 = x12 + 1 End If If x2 = (vetorhoriz) Then x2 = 0 x1 = 0 x12 = 0 x22 = 0 Picture1.Cls End If qtz(i) = Rec_Buf(i) Next i

Rotina de converso para valores de tenso

Inicia com a seleo do fator de converso correspondente a cada uma das posies do seletor de escalas Select Case Slider. Com o FATOR

xlv

determinado, os valores de tenso instantnea iblVinst , tenso mxima iblVmax e tenso mnima iblVmin do quadro so caculados. For i = 0 To 1 Select Case Slider(i).Value Case 0 FATOR = 0.196 Case 1 FATOR = 0.078 Case 2 FATOR = 0.0391 Case 3 FATOR = 0.0195 Case 4 FATOR = 0.0078 Case 5 FATOR = 0.0039 Case 6 FATOR = 0.00195 Case 7 FATOR = 0.00078 End Select lblVinst(i) = ((qtz(i) - 128) * FATOR) max(i) = lblVinst(i) min(i) = lblVinst(i) If max(i) > lblVmax(i) Then lblVmax(i) = max(i) End If If min(i) < lblVmin(i) Then lblVmin(i) = min(i) End If Next i

6.1.3

Interface Grfica A visualizao grfica foi desenvolvida com base na tela de um

osciloscpio convencional, de forma simplificada, incluindo algumas funes bsicas de seleo, como o seletor de escalas vertical e horizontal, seletor do canal de sinal ativo e a visualizao dos valores medidos.

xlvi

Figura 19 - Tela do USBSCOPE

Na figura 19, e mostramos a tela do USBSCOPE com as seguintes funes: 1) Boto ON inicia a visualizao grfica e o boto OFF encerra o aplicativo grfico. 2) Seletor de escala vertical para os canais 1 e 2, com uma faixa de 0,02 V a 0,5 V por diviso. 3) Seleo de escala horizontal em segundos por diviso. 4) Seletor de canais com trs opes, CH1 CH2 para visualizao simultnea dos canais 1 e 2, CH1 para visualizar somente o canal 1 e CH2 para visualizar somente canal 2. 5) Indicador dos valores de tenso instantnea, tenso mxima e tenso mnima do quadro atual de plotagem, para os canais 1 e 2. 6) Opo de escolha da visualizao grfica, no modo dinmico a tela ser constantemente atualizada e no modo esttico o grfico fica congelado na plotagem atual da tela. 7) Tela de visualizao grfica dos canais 1 e 2, com dez divises no eixo X e no eixo Y.

xlvii

6.1.4

Driver do Dispositivo USB No inicio dos estudos da parte de comunicao USB, constatamos que o

assunto envolvia conhecimentos mais aprofundados do protocolo gerenciador da comunicao. O desenvolvimento do driver seria, com certeza, um desafio extremamente interessante, mas envolveria um tempo de pesquisa muito maior do que estava planejado em nosso cronograma. Buscamos como alternativa, um software que simplifica bastante o desenvolvimento, o EasyHID. Este gera a base do cdigo fonte tanto no lado do microcontrolador em linguagem C, quanto no lado do computador em Visual Basic. O dispositivo USB seria reconhecido automaticamente pelo Windows como um Dispositivo de Interface Humana (HID), no sendo necessrio desenvolver driver especiais para a aplicao. A Microchip tambm disponibiliza em seu site, o driver para dispositivos HID, relatando uma limitao na velocidade de transferncia de 64 kB/s. Existe tambm, outra opo de driver customizado que permite a comunicao USB sem a limitao de velocidade do anterior, o qual foi adotado em nosso projeto. O driver faz parte do pacote de instalao MCHPFSUSSB_Setup, que inclui a biblioteca mpusbapi.dll, necessria para intermediar a nossa interface grfica em Visual Basic com o driver mchpusb do firmware do microcontrolador.

xlviii

7 CONCLUSES E PERSPECTIVAS

Neste trabalho foi desenvolvido um dispositivo de aquisio de dados analgicos atravs da interface USB, visando a uma utilizao semelhante de um osciloscpio digital. O prottipo envolvendo a comunicao USB mostrou-se um grande desafio mas ao mesmo tempo, extremamente interessante, sendo de grande valia para um futuro aprofundamento nos estudos deste protocolo de comunicao, que atualmente um dos principais para transferncia de dados entre microcomputadores e perifricos. No decorrer do projeto tivemos contato com vrios softwares, proporcionando o aprendizado de linguagens de programao como assembler, C e Visual Basic, alm do conhecimento dos recursos a da grande versatilidade disponveis em um microcontrolador com interface USB. Obteve-se sucesso na maioria dos itens especificados inicialmente, a saber: desenvolvimento do prottipo funcional em dimenses reduzidas (formato pen drive) desenvolvimento do firmware do microcontrolador desenvolvimento da interface grfica no microcomputador programao do microcontrolador via interface serial aquisio de sinais analgicos em 2 canais e transferncia para o microcomputador via interface USB seleo das escalas de tenso via software de controle A taxa de amostragem de 1 MSPS prevista inicialmente no foi conseguida devido utilizao do conversor A/D interno do PIC, que limitado a taxas de amostragem da ordem de 60 kSPS. O controle da base de tempo foi efetuado unicamente no software em Visual Basic, o que limita o nmero de escalas utilizadas e reduz a taxa de amostragem mxima. Estas limitaes so relativamente simples de serem contornadas, porm exigiriam um maior tempo de desenvolvimento. O prottipo desenvolvido pode ter a sua caracterstica de velocidade de converso melhorada se forem implementadas memrias intermedirias entre o

xlix

conversor A/D externo e o PIC, com velocidades de clock compatveis com a taxa de transferncia e converso requeridas. Sugere-se que o circuito eletrnico seja montado em uma placa que permita isolar os sinais analgicos dos digital, reduzindo assim interferncias e possibilitando aumento da resoluo do conversor A/D e melhoria da relao sinal rudo. Faz-se necessrio implementar uma proteo contra picos de tenso acima do valor tolerado pelo circuito, nas entradas dos canais. A interface grfica poder ser otimizada com outras funes e anlises do sinal encontradas nos osciloscpios comerciais (FFT, clculo de parmetros dos sinais, mdias, etc), tornando-o mais verstil.

REFERNCIAS BIBLIOGRFICAS
ASSOCIAO BRASILEIRA DE NORMAS TCNICAS. NBR 6023: informao e documentao: citaes em documentos: apresentao. Rio de Janeiro, 2002. ASSOCIAO BRASILEIRA DE NORMAS TCNICAS. NBR 10520: informao e documentao: referncias: elaborao. Rio de Janeiro, 2002. ASSOCIAO BRASILEIRA DE NORMAS TCNICAS. NBR 14724: informao e documentao: trabalhos acadmicos: apresentao. Rio de Janeiro, 2002. MATIC, NEBOJSA, Basic for PIC microcontroller. 2003 LPEZ, ANDRS CNOVAS, MANUAL DE USUARIO DEL COMPILADOR PCW DE CCS. USATEGUI, M. NGELO, MARTINEZ, IGNCIO NGULO, Microcontroladores PIC: Diseo prctico de aplicaciones., 3 ed, McGRAW HILL HELLEBUYCK, CKUCK, Programming PIC Microcontrollers with PicBasic. Editora Newnes. CADSOFT COMPUTER, EAGLE: Easily Applicable Graphical Layout Editor Manual V. 4.1. 2 ed, 2004 Universal Serial Bus Revision 2.0 specification. Disponvel em 30/04/2007 no site http://www.usb.org/developers/docs/ Microcontroladores e informaes. http://www.microchip.com Microcontroladores e http://www.ftdichip.com/ Microcontroladores e http://www.atmel.com/ informaes. informaes. Disponvel Disponvel Disponvel Disponvel em em em em 2/04/2007 2/04/2007 2/04/2007 2/04/2007 no no no no site site site site

Microcontroladores e informaes. http://www.cypress.com/index.html

Componentes semicondutores e informaes. Disponvel em 6/04/2007 no site http:// www.analog.com/en/ Componentes semicondutores e informaes. Disponvel em 6/04/2007 no site http:// www.national.com Componentes semicondutores e informaes. Disponvel em 6/04/2007 no site http:// www.ti.com

li

Componentes semicondutores e informaes. Disponvel em 8/04/2007 no site http:// www.semiconductors.philips.com Programado para PIC e informaes sobre ICSP. Disponvel em 20/04/2007 no site http://www.jdm.homepage.dk/newpic.htm Software EasyHID e informaes sobre dispositivos de interface humana. Disponvel em 8/05/2007 no site http://www.mecanique.co.uk/products/usb/easyhid.html Projetos com PIC usando interface USB. Disponvel em 10/05/2007 no site http://picmania.garcia-cuervo.com/USB_0_Desencadenado.htm Projeto de Pablo Hoffman e Martin Szmulewicz de um osciloscpio USB. Disponvel em 20/05/2007 no site http://pablohoffman.com/cgibin/twiki/bin/view/Oscusb/WebHome Projetos com PIC usando interface USB. Disponvel em 11/05/2007 no site http://www.hobbypic.com/ Cdigos em Visual Basic par downloud. Disponvel em 22/05/2007 no site http://usbee.com/download.htm Informaes sobre enumerao do protocolo USB. Disponvel em 15/05/2007 no site http://www.usbdeveloper.com/UnderstandUSB/understandusb.htm Tutorial de projetos com PIC e interface USB. Disponvel em 18/05/2007 no site Disponvel em http://www.electronicfr.com/usb.html Projetos de criao de uma interface USB. Disponvel em 18/05/2007 no site http://www.create.ucsb.edu/~dano/CUI/ Informaes e links sobre PIC e USB. Disponvel em 19/05/2007 no site http://www.bensherlock.co.uk/projects/gadgets/usb-pic Informaes sobre o bootloader para o PIC18F2550. Disponvel em 22/05/2007 no site http://www.techsanctuary.com/node/64 Temas e links relacionados com osciloscpios.. Disponvel em 10/06/2007 no site http://www.mikrocontroller.net/articles/USB_Oszilloskop

lii

ANEXO A

liii

ANEXO B
// ************************************************************************* // PicUSB.c // Realizado com o compilador CCS PCWH 4.013 // ************************************************************************* #include <18F2550.h> #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN #use delay(clock=48000000) // Cristal de 20MHz // ========================================================================= // Definices para a biblioteca dinamica CCS. Esto explicados em usb.h // ========================================================================= #define USB_HID_DEVICE FALSE // Desabilitamos o uso das diretivas HID #define USB_EP1_TX_ENABLE USB_ENABLE_BULK // Ativa EP1(EndPoint1) para as transferencias IN Bulk/Interrupt #define USB_EP1_RX_ENABLE USB_ENABLE_BULK // Ativa EP1(EndPoint1) para as transferencias OUT Bulk/Interrupt #define USB_EP1_TX_SIZE 4 // Tamanho reservado para o Buffer Tx EndPoint1 #define USB_EP1_RX_SIZE 3 // Tamanho reservado para o Buffer Rx EndPoint1 // ========================================================================= // Includes das bibliotecas USB do compilador CCS. // ========================================================================= #include #include #include <pic18_usb.h> //Microchip PIC18Fxx5x Hardware para o CCS PIC USB Driver <PicUSB.h> //Configurao do USB e dos descritores para dispositivo <usb.c> //Handles usb ,tokens e descritores

// ========================================================================= #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define LED0 LED1 LED2 LED3 LED5 LED6 LED_ON LED_OFF modo param1 param2 entrada_0 entrada_1 entrada_2 entrada_3 PIN_C1 PIN_C0 PIN_A2 PIN_A5 PIN_A4 PIN_A3 output_high output_low recibe[0] recibe[1] recibe[2] envia[0] envia[1] envia[2] envia[3] 1 // PORTC.1 Led0 // PORTC.0 Led1 // PORTA.2 Led2 // PORTA.5 Led3 // PORTA.4 Led0 // PORTA.3 Led0 // Saida em 1 // Saida em 0 // Byte que indica o modo de operacao // Primeiro parametro recebibdo // Segundo parametro recebibdo // Byte a envar en las entradas // Byte a envar en las entradas // Byte a envar en las entradas // Byte a envar en las entradas // Modo de eacender leds // Modo de apagar leds // Modo de ler as entradas // Modo de ler as entradas analogicas

ACENDE_LED APAGA_LED 2 ENTRADAS 3 ANALOGICAS 4

liv

void main(void) { int8 recebe[3]; int8 envia[4]; set_tris_b(0x0F);

// Programa Principal // Declaramos a variavel recibe com 3 bytes // Declaramos a variavel envia com 4 bytes // Nibble alto como saidas // configura entradas analogicas do conversor A/D // configura clock interno para o ADC

setup_adc_ports(AN0_TO_AN1); setup_adc(ADC_CLOCK_INTERNAL); usb_init(); usb_task(); usb_wait_for_enumeration(); while (TRUE) { if(usb_enumerated()) {

// Inicializamos o USB // Habilita o periferico usb e as interrupes // Esperamos que o PicUSB seja configurado pelo PC // executa sempre (ciclo infinito) // Se o PicUSB est configurado

if (usb_kbhit(1)) // Se o EndPoint de saida contem datos do PC { usb_get_packet(1, recebe, 3); // esperamos o pacote de tamanho 3 bytes do EP1 // e o armazenamos na variavel recebe if (modo==ACENDE_LED) { if (param1==1) {LED_ON(LED0);} if (param1==2) {LED_ON(LED1);} if (param1==3) {LED_ON(LED2);} if (param1==4) {LED_ON(LED4);} if (param1==5) {LED_ON(LED5);} if (param1==6) {LED_ON(LED6);} } if (modo==APAGA_LED) { if (param1==1) {LED_OFF(LED0);} if (param1==2) {LED_OFF(LED1);} if (param1==3) {LED_OFF(LED2);} if (param1==4) {LED_OFF(LED3);} if (param1==5) {LED_OFF(LED4);} if (param1==6) {LED_OFF(LED5);} } if (modo==ANALOGICAS) { set_adc_channel(0); delay_us(10); entrada_0 = read_adc(); set_adc_channel(1); delay_us(10); entrada_1 = read_adc(); // Modo acender Leds // acendemos led 0 // acendemos led 1 // acendemos led 2 // acendemos led 4 // acendemos led 5 // acendemos led 6 // Modo Apagar Leds // Apagamos led 0 // Apagamos led 1 // Apagamos led 2 // Apagamos led 3 // Apagamos led 4 // Apagamos led 5 // Modo ler as entradas analgicas // Canal A0 // Retardo // Le o valor // Canal A1 // Retardo // Le o valor // Enviamos o pacote de tamanho // 4 bytes do EP1 para o PC

usb_put_packet(1,envia,4,USB_DTS_TOGGLE); } }

lv

ANEXO C
Option Explicit Dim vetor1(0 To 1000) As Integer Dim vetor2(0 To 1000) As Integer Dim vetorhoriz As Integer Dim qtz(0 To 1) As Integer Dim FATOR As Single Dim x1 As Integer Dim x2 As Integer Dim x12 As Integer Dim x22 As Integer Dim aux2 As Byte Dim aux As Byte Private Sub ANA() Dim Send_Buf(0 To 64) As Byte Dim Rec_Buf(0 To 64) As Byte Dim i As Byte Dim j As Integer If (myOutPipe <> INVALID_HANDLE_VALUE) And INVALID_HANDLE_VALUE) Then Send_Buf(0) = 4 If (Send_Receive(Send_Buf, 1, Rec_Buf, 4, 1000, 1000) <> 1) Then MsgBox "Falha na leitura" Else Select Case Slider1.Value Case 0 For i = 0 To 1 If i = 0 Then Picture1.Line (x1, aux)-(x2, Rec_Buf(i)), vbRed aux = Rec_Buf(i) x1 = x2 x2 = x1 + 1 Else Picture1.Line (x12, aux2)-(x22, Rec_Buf(i)), vbGreen aux2 = Rec_Buf(i) x12 = x22 x22 = x12 + 1 End If If x2 = 400 Then x2 = 0 x1 = 0 x12 = 0 x22 = 0 Picture1.Cls End If qtz(i) = Rec_Buf(i) Next i Case 1 Picture1.Line (x1, aux)-(x2, Rec_Buf(0)), vbRed aux = Rec_Buf(0) x1 = x2 x2 = x1 + 1 If x2 = 400 Then x2 = 0 x1 = 0 (myInPipe <>

lvi

Picture1.Cls End If qtz(i) = Rec_Buf(i) Case 2 Picture1.Line (x12, aux2)-(x22, Rec_Buf(1)), vbGreen aux2 = Rec_Buf(1) x12 = x22 x22 = x12 + 1 If x22 = 400 Then x12 = 0 x22 = 0 Picture1.Cls End If qtz(i) = Rec_Buf(i) End Select End If End If End Sub

Private Sub HORIZ() Select Case sldHor.Value Case 0 vetorhoriz = 1000 Case 1 vetorhoriz = 400 Case 2 vetorhoriz = 200 Case 3 vetorhoriz = 100 Case 4 vetorhoriz = 40 Case 5 vetorhoriz = 20 Case 6 vetorhoriz = 10 End Select End Sub Private Sub cmdCiclo_Click() Dim i As Byte For i = 1 To 6 Control_Leds 1, i Next i lblVmax(0) = -25 lblVmax(1) = -25 lblVmin(0) = 25 lblVmin(1) = 25 Do DoEvents ESCALA HORIZ ANA 'grafico Loop End Sub

lvii

Private Sub cmdTerminar_Click() Unload Me End End Sub Private Sub Control_Leds(Comando As Byte, Dato As Byte) Dim Send_Buf(0 To 64) As Byte If (myOutPipe <> INVALID_HANDLE_VALUE) INVALID_HANDLE_VALUE) Then Send_Buf(0) = Comando Send_Buf(1) = Dato If (Send(Send_Buf, 2, 1000) <> 1) Then MsgBox "Falha de Seleao" End If End If End Sub Private Sub Form_Load() myInPipe = INVALID_HANDLE_VALUE myOutPipe = INVALID_HANDLE_VALUE OpenMPUSBDevice End Sub Private Sub ESCALA() Dim i As Byte Dim min(0 To 1) As Single Dim max(0 To 1) As Single For i = 0 To 1 Select Case Slider(i).Value Case 0 FATOR = 0.196 Case 1 FATOR = 0.078 Case 2 FATOR = 0.0391 Case 3 FATOR = 0.0195 Case 4 FATOR = 0.0078 Case 5 FATOR = 0.0039 Case 6 FATOR = 0.00195 Case 7 FATOR = 0.00078 End Select lblVinst(i) = ((qtz(i) - 128) * FATOR) max(i) = lblVinst(i) min(i) = lblVinst(i) If max(i) > lblVmax(i) Then lblVmax(i) = max(i) End If If min(i) < lblVmin(i) Then lblVmin(i) = min(i) End If Next i End Sub And (myInPipe <>

lviii

Sub Slider_scroll(Index As Integer) Dim i As Byte For i = 0 To 1 Select Case Slider(i).Value Case 0 Control_Leds 1, (1 + (i * 3)) Control_Leds 1, (2 + (i * 3)) Control_Leds 1, (3 + (i * 3)) Case 1 Control_Leds 2, (1 + (i * 3)) Control_Leds 1, (2 + (i * 3)) Control_Leds 1, (3 + (i * 3)) Case 2 Control_Leds 1, (1 + (i * 3)) Control_Leds 2, (2 + (i * 3)) Control_Leds 1, (3 + (i * 3)) Case 3 Control_Leds 2, (1 + (i * 3)) Control_Leds 2, (2 + (i * 3)) Control_Leds 1, (3 + (i * 3)) Case 4 Control_Leds 1, (1 + (i * 3)) Control_Leds 1, (2 + (i * 3)) Control_Leds 2, (3 + (i * 3)) Case 5 Control_Leds 2, (1 + (i * 3)) Control_Leds 1, (2 + (i * 3)) Control_Leds 2, (3 + (i * 3)) Case 6 Control_Leds 1, (1 + (i * 3)) Control_Leds 2, (2 + (i * 3)) Control_Leds 2, (3 + (i * 3)) Case 7 Control_Leds 2, (1 + (i * 3)) Control_Leds 2, (2 + (i * 3)) Control_Leds 2, (3 + (i * 3)) End Select Next i End Sub