Você está na página 1de 91

UNIVERSIDADE FEDERAL DO ESPRITO SANTO CENTRO TECNOLGICO DEPARTAMENTO DE ENGENHARIA ELTRICA PROJETO DE GRADUAO

DESENVOLVIMENTO DE UM OSCILOSCPIO VIRTUAL DE BAIXO CUSTO COM INTERFACE USB

IGOR VESCOVI DEVENS

VITRIA ES FEVEREIRO/2008 IGOR VESCOVI DEVENS

DESENVOLVIMENTO DE UM OSCILOSCPIO VIRTUAL DE BAIXO CUSTO COM INTERFACE USB

Parte escrita do Projeto de Graduao do aluno Igor Vescovi Devens, feito sob a orientao do Professor Dr. Evandro Ottoni Teatini Salles, apresentado ao Departamento de Engenharia Eltrica do Centro Tecnolgico da Universidade Federal do Esprito Santo, para obteno do grau de Engenheiro Eletricista.

VITRIA ES FEVEREIRO/2008 IGOR VESCOVI DEVENS

DESENVOLVIMENTO DE UM OSCILOSCPIO VIRTUAL DE BAIXO CUSTO COM INTERFACE USB

COMISSO EXAMINADORA:

___________________________________ Prof. Dr. Evandro Ottoni Teatini Salles Orientador

___________________________________ Eng. Marcelo Souza Fassarella Co-orientador

___________________________________ Prof. Dr. Teodiano Freire Bastos Filho Examinador

___________________________________ Prof. Dr. Hans-Jorg Andreas Schneebeli Examinador

Vitria - ES, 11, Fevereiro, 2008

DEDICATRIA

Aos meus amigos da Engelite.

AGRADECIMENTOS Agradeo a Deus, meus pais, Torricelli e Angela e meu irmo, Arthur, pelo apoio. Sem esquecer dos amigos e da namorada, que tiveram muita pacincia durantes os meses e meses em que me ocupei deste projeto e me ausentei de tantas cervejas. Obrigado tambm a Marcelo Fassarella pela sugesto do tema e profissionalismo, ao meu Orientador Evandro, pela sua pacincia e apoio, e a equipe da Geocontrol pela confiana e experincia que l adquiri.

ii

LISTA DE FIGURAS Figura 1 - Sinal Analgico. ..........................................................................................17 Figura 2 - Sinal Discretizado no Tempo. .....................................................................17 Figura 3 - Sinal Discretizado no tempo e na Amplitude. ............................................18 Figura 4 - Diagrama de blocos de um ADC por Aproximao Sucessiva. .................20 Figura 5 - Stellaris LM3S811 Evaluation Board. ........................................................25 Figura 6 -Diagrama de blocos do Hardware do Osciloscpio Virtual via USB. .........26 Figura 7 - Osciloscpio Virtual via USB conectado ao computador. .........................27 Figura 8 - Circuito Divisor de tenso. .........................................................................29 Figura 9 - Filtro RC. ....................................................................................................30 Figura 10 - Filtro RC utilizado. ...................................................................................31 Figura 11 - Circuito semi-completo de tratamento do sinal de entrada.......................32 Figura 12 - Circuito completo de tratamento do sinal de entrada. ..............................33 Figura 13 - Anlise no tempo do circuito. ...................................................................33 Figura 14 - Anlise na freqncia do circuito. ............................................................34 Figura 15 - Circuito de tratamento do sinal na placa. ..................................................34 Figura 16 - Circuito do oscilador independente. .........................................................35 Figura 17 - Circuito do oscilador independente na placa. ...........................................35 Figura 18 - Fluxograma do programa principal...........................................................38 Figura 19 - Fluxograma da interrupo do conversor AD...........................................39 Figura 20 - Interface grfica do Software. ...................................................................40 Figura 21 - Manipulao da biblioteca grfica. ...........................................................41 Figura 22 - Manipulao do Software do Osciloscpio Virtual via USB. ..................42 Figura 23 - Senoidal de 10 Hz, osciloscpio USB. .....................................................45 Figura 24 - Senoidal de 10 Hz, osciloscpio analgico. .............................................45 Figura 25 - Senoidal de 220Hz, osciloscpio USB. ....................................................46 Figura 26 - Senoidal de 220 Hz, osciloscpio analgico. ...........................................47 Figura 27 - Senoidal de 10 Khz, osciloscpio USB. ...................................................47 Figura 28 - Senoidal de 10 KHz, osciloscpio analgico............................................48 Figura 29 - Quadrada de 51 Hz, osciloscpio USB. ....................................................49 iii

Figura 30 - Quadrada de 51 Hz, osciloscpio analgico. ............................................49 Figura 31 - Quadrada de 6 KHz, osciloscpio USB. ...................................................50 Figura 32 - Quadrada de 6 KHz, osciloscpio analgico. ...........................................51 Figura 33 - Quadrada de 10 KHz, osciloscpio USB. .................................................51 Figura 34 - Quadrada de 10 KHz, osciloscpio analgico. .........................................52 Figura 35 - Triangular de 52 Hz, osciloscpio USB. ..................................................53 Figura 36 - Triangular de 52 Hz, osciloscpio analgico............................................53 Figura 37 - Triangular de 5,06 KHz, osciloscpio USB. ............................................54 Figura 38 - Triangular de 5,06 KHz, osciloscpio analgico. .....................................55 Figura 39 - Anlise de amplitude Mxima. .................................................................55 Figura 40 - Anlise de amplitude Mnima. ..................................................................56 Figura 41 - Senoidal de 30 KHz no Osciloscpio USB. .............................................57 Figura 42 - Quadrada de 30 KHz no Osciloscpio USB. ............................................57 Figura 43 - Triangular de 30 KHz no Osciloscpio USB............................................58 Figura 44 - Diagrama de blocos do projeto futuro. .....................................................63 Figura 45 - Memria SRAM auto-incrementvel........................................................64 Figura 46 - Futura verso do Osciloscpio Virtual via USB em fase de desenvolvimento. .........................................................................................................65 Figura 47 - Esquemtico do LM3S811 da Kit da Luminary Micro. ...........................87 Figura 48 - Esquemtico do CI FTDI2232c do Kit (Serial x USB). ...........................88

iv

LISTA DE TABELA Tabela 1 - Codificao Binria da Tenso. ..................................................................19 Tabela 2 - Classes USB. ..............................................................................................22 Tabela 3 - Custo Aproximado do Hardware do Osciloscpio Virtual via USB. .........62

GLOSSRIO 1. AD: Analog to Digital. 2. ADC: Analog to Digital Converter. 3. ARM: Advanced RISC Machine. 4. Bluetooth especificao industrial para reas de redes pessoais sem fio (Wireless Personal Area Networks PANs). 5. bps: Bits per Second. 6. CDC: Connected Device Configuration. 7. COM port: Porta de comunicao. 8. FFT: Fast Fourier Transform 9. Filtro RC: Filtro Resistivo e Capacitivo. 10. Half Duplex: Sistema que oferece comunicao em duas direes, mas apenas uma por vez. Ex: Walkie Talkie. 11. HID: Human Interface Device. 12. Hub USB: Perifrico que permite que vrios outros perifricos USB se conectem a uma mesma porta USB. 13. IrDA: Infrared Data Association. 14. JTAG: Joint Test Action Group. 15. MP3: MPEG-1 Audio Layer 3. 16. PenDrive: Memria Flash para armazenamento de dados com conexo USB. 17. Plotar: Desenhar. 18. Plug and Play: Caracterstica de um perifrico que pode ser adicionado a um computador sem a necessidade de configurao ou instalao. 19. RISC: Reduced Instruction Set Computer. 20. Smart Card: Carto com circuito embarcado capaz de processar dados. 21. RS232: Recommended Standard 232. 22. Trigger: Gatilho. 23. UART: Universal Asynchronous Receiver and Transmitter. 24. Wifi: Tecnologia de redes sem fios embarcadas. vi

vii

SUMRIO DEDICATRIA........................................................................................................... I AGRADECIMENTOS .............................................................................................. II LISTA DE FIGURAS ............................................................................................... III LISTA DE TABELA .................................................................................................. V GLOSSRIO ............................................................................................................. VI RESUMO ..................................................................................................................... X 1 INTRODUO ..............................................................................................11 1.1 Motivao..........................................................................................................11 1.2 Objetivo.............................................................................................................13 1.3 Metodologia ......................................................................................................13 1.4 Diviso da Monografia .....................................................................................14 2 CONVERSO ANALGICA DIGITAL ....................................................16 2.1 Tipos de conversores AD ..................................................................................18 2.2 Aproximao Sucessiva ....................................................................................18 3 UNIVERSAL SERIAL BUS (USB) ..............................................................21 3.1 Verses da USB ................................................................................................21 3.2 Classes dos Perifricos USB .............................................................................21 3.3 Caractersticas eltricas da USB .......................................................................23 3.4 Conversor USB para Serial (UART) ................................................................24 4 O PROJETO DESENVOLVIDO .................................................................25 4.1 Hardware ...........................................................................................................25 4.2 Microcontrolador ..............................................................................................27 4.3 Circuito de Tratamento do Sinal de Entrada .....................................................28 4.3.1 Circuito Divisor de Tenso......................................................................28 4.3.2 Dimensionamento do Filtro .....................................................................29 4.3.2.1 Filtro passa baixas RC ................................................................30 4.3.3 Circuito de Offset de Tenso ...................................................................31 4.3.4 Oscilador Independente Ponta de prova ...............................................35 4.4 Firmware ...........................................................................................................36 viii

4.4.1 Explicao da lgica e Fluxograma ........................................................36 4.4.2 Continuidade da Anlise .........................................................................39 4.5 Software ............................................................................................................40 4.5.1 Caractersticas do Grfico .......................................................................40 4.5.2 Configuraes do Osciloscpio ...............................................................41 5 RESULTADO .................................................................................................44 5.1 Ondas Senoidais ................................................................................................44 5.1.1 Onda Senoidal a 10 Hz ............................................................................44 5.1.2 Ondas Senoidais 220 Hz..........................................................................45 5.1.3 Onda Senoidal a 10 KHz .........................................................................47 5.2 Ondas Quadradas ..............................................................................................48 5.2.1 Ondas Quadradas 51 Hz ..........................................................................48 5.2.2 Ondas Quadradas 6 KHz .........................................................................50 5.2.3 Ondas Quadradas 10 KHz .......................................................................51 5.3 Ondas Triangulares ...........................................................................................52 5.3.1 Ondas Triangulares 52 Hz .......................................................................52 5.3.2 Ondas Triangulares 5,06 KHz .................................................................54 5.4 Anlise das Amplitudes Mxima e Mnima .....................................................55 5.5 Anlise com freqncia acima da Projetada .....................................................56 6 CONCLUSO E MELHORIAS FUTURAS ...............................................59 6.1 Melhorias Futuras de Hardware ........................................................................62 6.2 Melhorias Futuras de Firmware e Software ......................................................65 REFERNCIAS BIBLIOGRFICAS.....................................................................67 APNDICE A .............................................................................................................69 APNDICE B .............................................................................................................73 APNDICE C .............................................................................................................86

ix

RESUMO Este Projeto de Graduao teve como pressuposto a proposta de integrar o conhecimento adquirido durante o curso de Engenharia Eltrica com nfase em eletrnica e telecomunicaes, com um projeto interessante e de grande utilidade. Foi desenvolvido um Osciloscpio Virtual via USB envolvendo o projeto de circuitos eletrnicos, filtros eletrnicos, firmwares, softwares, comunicao Serial USB. O projeto permite que se capture sinais previamente digitalizados por uma placa conectada a uma porta USB de um computador pessoal. A placa utilizada para captura (kit Stellaris) est baseada em um microcontrolador LM3S811 que possui ncleo ARM Cortex M3, utilizando a tecnologia Thumb 2. Foram desenvolvidos tanto o firmware do microcontrolador quanto o software que executado no computador pessoal, para permitir a visualizao da onda capturada. Realizaram-se testes com diversos tipos de ondas peridicas padronizadas para avaliar o desempenho do sistema. A largura de banda mxima do sinal de entrada foi de 10KHz, limitada pela taxa de converso do mdulo A/D do microcontrolador. Os resultados foram satisfatrios, demonstrando a viabilidade da proposta. A base terica adquirida durante a graduao e o estmulo de se projetar e construir um equipamento primordial ao Engenheiro Eletricista, foi o alicerce central deste projeto.

11

INTRODUO

1.1 Motivao Em projetos eletrnicos, o Osciloscpio um equipamento muito importante, pois permite ao desenvolvedor e ao tcnico observar o formato do sinal em estudo. Contudo, seja ele Analgico ou Digital, uma ferramenta de alto custo, por isso nem sempre se tem acesso a este aparelho. Quando se trata de um Osciloscpio Analgico tem-se um preo um pouco mais acessvel do que os Osciloscpios Digitais. Entretanto, so ferramentas de tecnologia antiga, grandes, pesados e possuem pouca aplicao para um desenvolvedor que deseje alm de visualizar a onda, salvar a imagem do sinal, imprimir, ou mesmo armazenar os pontos coletados para utilizar em algum software para psprocessamento. Em contrapartida, temos os Osciloscpios Digitais, com um desempenho melhor, e com a possibilidade de contar com analisador de espectro embutido, tela colorida, vrios canais, interface com o computador e um valor de custo maior, proporcional a todas suas vantagens. Atualmente, possvel encontrar osciloscpios analgicos, de baixa qualidade, com preo girando em torno de R$1.200,00 (2 canais de entrada e largura de banda de 20MHz) e osciloscpios digitais de tima qualidade com preos em torno de R$3.500,00 (2 canais, largura de banda de 60MHz, tela colorida, 500M amostras por segundo de captura em cada canal e recursos matemticos como transformada rpida de Fourier). Caso se deseje osciloscpios analgicos de boa qualidade, o preo sobe consideravelmente (em alguns casos mais que duplica), o que acaba por reforar ainda mais a migrao de um osciloscpio analgico para o digital. Na verdade, observa-se que os fabricantes tradicionais de osciloscpios, que produziam instrumentos analgicos de excelente qualidade, migraram quase todos para produzir exclusivamente equipamentos digitais. De todas as formas, pese ao preo dos equipamentos tanto analgicos como digitais, o custo ainda elevado para boa parte dos usurios.

12 Por outro lado, no estgio atual da tecnologia, onde o computador porttil deixou de ser um luxo para se tornar um instrumento de trabalho para o tcnico e o desenvolvedor, interessante aproveitar seu potencial de clculo e armazenamento nas atividades que envolvam desenvolvimento e manuteno de equipamentos eletroeletrnicos. Assim, hoje em dia comum integrar ao computador instrumentos de medies, conhecidos agora como instrumentos virtuais que, no nosso caso torna-se um osciloscpio virtual. Portanto, o usurio interessado em um osciloscpio digital mais simples, capaz de ir a campo integrado por exemplo a um notebook (ou mesmo para uso laboratorial), mas com funes consideradas essenciais ao desenvolvedor ou projetista moderno, pode empregar este tipo de equipamento. Um dispositivo deste tipo permite que inclusive algoritmos tpicos de processamento digital de sinais sejam realizados in loco no computador, o que pode contribuir para uma rpida avaliao de um sinal, recurso este impensvel para Osciloscpios Analgicos. A fim de se preencher essa necessidade de um Osciloscpio de baixo custo, com desempenho mediano (largura de banda pequena) e interface com um computador surgem como opo os Osciloscpios Virtuais, onde a visualizao dos sinais analisados exibida em um software executado em um computador comum. O BitScope (www.bitscope.com) o exemplo mais difundido deste tipo de equipamento. No sitio do fabricante, alm de ser vendido, so tambm fornecidos os esquemas eltricos para quem quiser construir o seu prprio equipamento (o esquema fornecido utiliza comunicao via porta paralela para com o PC). Os preos atualmente giram em torno de US$425,001, o que daria algo em torno de R$765,00 reais (na data da confeco desta monografia, US$1,00 R$1,80), valor este sem as taxas de importao e frete que podem chegar a at 100%. Neste sentido, o projeto aqui apresentado mostra o desenvolvimento de um Osciloscpio Virtual, projeto este que apresenta avanos quando comparado a um Projeto de Graduao anterior intitulado, Uso Do Computador Pessoal No
1

Sinal de entrada de, no mximo 100 MHz de largura de banda, 2 canais A/D de 40 Mega-Amostras por

segundo, 32 kB de buffer de memria.

13 Desenvolvimento De Um Analisador De Espectro De Baixa Freqncia, desenvolvido por Walter Anjos em [15]. Este utilizava comunicao via porta paralela com o computador, para assim transferir os dados coletados por um hardware de aquisio de dados com conversor A/D dedicado. A anlise de espectro nesse projeto anterior era feita atravs de uma Transformada Rpida de Fourier (FFT). E como era necessrio capturar uma seqncia de amostras do sinal, esse equipamento tambm funcionava como um Osciloscpio. Contudo, sua interface grfica era complicada e tanto o Osciloscpio quanto o Analisador de Espectro no permitiam anlises ininterruptas. Neste novo projeto a comunicao utilizada a USB, mantendo-se, portanto, compatvel com o padro de comunicao atual dos computadores. O software possui uma interface grfica (GUI) amigvel e compatvel com o Windows 98, 2000 e XP, permite anlises ininterruptas do sinal amostrado e funes de Trigger. Alm disso, o microcontrolador utilizado possui uma tecnologia mais avanada e o circuito de aquisio de dados mantm uma comunicao bidirecional com o computador. Contudo, no h a funo de Analisador de Espectro nesta verso. Entretanto, melhorias diversas devem ser feitas como proposta futura, levando o Osciloscpio Virtual aqui apresentado a ter desempenho capaz de satisfazer at mesmo usurios mais exigentes.

1.2 Objetivo O objetivo deste projeto construir um Osciloscpio Virtual via USB, que uma porta de comunicao rpida e padro, alm de um software de visualizao. Todo o projeto foi baseado sobre a plataforma de desenvolvimento Stellaris LM3S811 Evaluation Board da Luminary Micro, que possui um microcontrolador ARM7 Thumb2 e um circuito integrado de comunicao Serial x USB.

1.3 Metodologia Foi feita inicialmente uma pesquisa na internet para analisar projetos semelhantes, analisando idias e possibilidades de arquiteturas do projeto. Arquiteturas simples e complexas foram pesquisadas, assim como a disponibilidade de material

14 para desenvolvimento do projeto, componentes e exemplos de cdigos. Estes foram os pontos iniciais para o incio do desenvolvimento do trabalho. Duas arquiteturas de hardware mostraram-se interessantes a princpio, contudo a mais otimizada foi descartada durante a fase de desenvolvimento de hardware, devido a sua alta complexidade. A utilizao de um kit de desenvolvimento mostrouse mais atrativa e facilitou a finalizao da primeira fase do projeto. A segunda etapa do desenvolvimento voltou-se para uma implementao em conjunto do firmware e do software. Antes, entretanto, foi necessrio decidir qual seria a plataforma de desenvolvimento utilizada, assim como a linguagem de programao. Optou-se pela linguagem C e a plataforma de desenvolvimento da Keil, Vision 3, devido aos cdigos de exemplos pr-existentes para esta plataforma. Quanto ao software optou-se pelo Borland C++ Builder, devido s facilidades grficas da plataforma e devido biblioteca grfica utilizada, que fora desenvolvida para a plataforma da Borland. Com o hardware, firmware e software operando, iniciou-se a etapa mais simples do hardware, que foi o desenvolvimento do circuito de tratamento de sinal de entrada e o oscilador independente. Nesta fase, fez-se o uso intenso do Pspice para simulao. Apenas quando verificado em simulao todo o funcionamento desses dois circuitos, os prottipos foram criados e testados. A etapa final do projeto foi focada em uma bateria de testes e comparao entre as capacidades do Osciloscpio USB e de um osciloscpio analgico comum de 20 MHz. Realizados todos os testes a monografia foi preparada.

1.4 Diviso da Monografia Esta monografia est divida em captulos tericos, desenvolvimento, testes, concluso e apndices. Nos Captulos 2 e 3, temos a teoria de conversores AD e comunicao USB. Todo o desenvolvimento do hardware, firmware e software do projeto est descrito no Captulo 4. No Captulo 5 temos os teste e resultados obtidos com o Osciloscpio Virtual projetado.

15 Concluso e Melhorias Futuras esto descritas no Captulo 6. Os Apndices A e B contm o cdigo fonte do firmware e do software, respectivamente, enquanto no Apndice C temos alguns esquemticos do kit da Luminary Micro utilizado.

16

CONVERSO ANALGICA DIGITAL


A necessidade de se coletar dados do mundo real que esto em formato

analgico e arquiv-los em formas digitais nos fora a utilizar conversores analgicodigital, tambm conhecidos como ADC (Analog to Digital Converter A/D). Um sinal analgico contnuo na amplitude e no tempo, possuindo qualquer valor de amplitude dentro da sua faixa de variao para qualquer instante de tempo. Coletar dados com tal preciso e constncia infinitesimal impossvel. O que os ADCs fazem amostrar repetidas vezes o sinal, sendo que o valor da amplitude de cada amostragem discretizada, ou seja, s pode medir valores especficos. Portanto, como no temos uma cpia digital fiel do sinal real, podemos perder qualidade do sinal amostrado. Um mtodo de se precaver contra isso obedecer ao Teorema de Nyquist2. De acordo com o Teorema de Nyquist a quantidade de amostras por unidade de tempo de um sinal, chamada taxa de amostragem, deve ser maior que o dobro da largura de banda contida no sinal a ser amostrado, para que possa ser reproduzido fielmente. A metade da taxa de amostragem chamada taxa de Nyquist e corresponde ao limite mximo de freqncia do sinal que pode ser reproduzido. Como no possvel garantir que o sinal no contenha sinais acima deste limite (distores, interferncias, rudos, etc...), necessrio filtrar o sinal com um filtro passa baixo com freqncia de corte igual (ou menor) taxa de Nyquist, ou filtro anti-aliasing. Ressalta-se que teoricamente, um sinal contnuo, limitado em banda, se amostrado conforme o teorema, possui erro de reconstruo (retornando do domnio discreto para o contnuo) igual a zero, ou seja, a reconstruo perfeita. Entretanto, para se considerar um sinal digital, necessrio discretizar tambm a amplitude de cada amostra. Esta segunda discretizao, entretanto, introduz erros que impedem a
2

Este teorema foi enunciado por Claude Shannon, que homenageou Nyquist, dando seu nome a ele pelos desenvolvimentos

realizados anteriormente, dos quais Shannon se valeu. O procedimento de amostragem, mas com carter mais matemtico, sob o ponto de vista de aproximao de funes contnuas, tambm foi enunciado, independentemente, por Whittaker e Kotelnikov, [12[

17 reconstruo do sinal com erro zero (retornando do domnio digital para o contnuo), uma vez que somos obrigados a associar uma palavra binria de dimenso finita para cada amostra. O erro introduzido por este passo irrecupervel e d origem a uma das maiores fontes de rudo em sinais digitais que conhecido como rudo de quantizao. Modelos demonstram que, em quantizao uniforme, que bastante empregada em instrumentos de medio, para cada bit extra na palavra binria, a relao sinal/rudo eleva-se em 6dB [2]. Nas Figuras 1, 2 e 3 [1] pode-se observar graficamente o efeito da digitalizao em um sinal analgico.

Figura 1 - Sinal analgico.

Figura 2 - Sinal discretizado no tempo.

18

Figura 3 - Sinal discretizado no tempo e na amplitude.

Os valores permissveis (discretos) esto (geralmente) igualmente espaados ao longo de toda a faixa dinmica de converso, e o nmero de valores discretos dependente do nmero de bits (largura da palavra) do conversor usado.

2.1 Tipos de conversores AD Os tipos mais importantes de conversores AD so: Rampa ou Integrao (simples e dupla); Aproximao Sucessiva; Paralelo (ou Flash). Assim, como na maioria dos microcontroladores, o conversor AD utilizado pelo LM3S811 da Luminary Micro utiliza o mtodo de Aproximao Sucessiva. Este o mtodo mais utilizado em microcontroladores por oferecer uma taxa de amostragem satisfatria para a maioria das aplicaes e tambm por ser de baixo custo e baixo consumo quando comparado com os ADC flash. Algumas caractersticas do ADC do LM3S811 so os seus quatro canais de entrada, capacidade de amostragem de at 500.000 amostras por segundo e uma faixa de 0 a 3 Volts com preciso de 10 bits, sendo que 0 V convertido para o valor binrio de 0000000000b e 3 V 1111111111b.

2.2 Aproximao Sucessiva O mtodo da aproximao sucessiva precisa de um nmero fixo de ciclos de clock para chegar a um resultado. Como o prprio nome sugere, opera atravs de

19 comparaes que iniciam por um valor pr-determinado e, atravs de comparaes sucessivas, encontra o dado equivalente ao valor analgico de entrada. Um diagrama de blocos do funcionamento interno do ADC por Aproximao Sucessiva pode ser visualizado na Figura 4 [1].

Figura 4 - Diagrama de blocos de um ADC por Aproximao Sucessiva.

Para analisar o funcionamento do conversor A/D por aproximao sucessiva, tomemos um projeto que consiste em um conversor com intervalo de 0V a 15V e um degrau de tenso de 1V. Deste modo, obtm-se 16 nveis e so necessrios 4 bits, que geram a relao da Tabela 1.
Tabela 1 - Codificao Binria da Tenso.

Tenso (V) 0 1 2 3 4 5 6 7

bit3 0 0 0 0 0 0 0 0

bit2 0 0 0 0 1 1 1 1

bit1 0 0 1 1 0 0 1 1

bit0 0 1 0 1 0 1 0 1 3 4 2

20 8 9 10 11 12 13 14 15 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 1

De acordo com a Tabela 1, o valor de tenso central de 8V, sendo o ponto de partida para a comparao com o sinal analgico de entrada. Os prximos nveis de comparao, que so definidos pelo valor de entrada (Vin), tm os bits remanejados de forma a resultar em um dado de sada correspondente ao valor analgico de entrada. Se a entrada Vin for menor que a tenso com a qual est sendo comparada (Vin<Vcomp), ento torna-se o bit respectivo igual a 0 e o prximo igual a 1. Se Vin>Vcomp, mantm-se o bit em questo e coloca-se o prximo bit em 1. Por exemplo, se tivermos um valor de entrada igual a 3,7 volts, (1 passo) o conversor compara com 8 volts (na Tabela 1 representado pelo valor binrio 1000b), verifica que menor, torna o bit3=0 e o bit2=1. (2 passo), ficando desta maneira com 4V (na Tabela 1 representado pelo valor binrio 0100b). Uma nova comparao realizada e, como 4V ainda maior que 3,7V, deve-se tornar o bit2=0 e o bit1 =1 (3 passo). Em seguida tem-se 2V (na Tabela 1 representado pelo valor binrio 0010b), que menor que 3,7V, e o sistema mantm bit1=1 e coloca bit0=1 (4 passo). Desta forma, tem-se 3V (na Tabela 1 representado pelo valor binrio 0011b). Como o conversor possui um degrau de 1V, o valor de sada correspondente aos 3,7V de entrada, ser 3V. Observe que, neste caso, o sistema ainda considera Vin = 3,7V maior que 3V. Como anteriormente j foi verificado que este valor menor do que 4V e maior do que 2V, logicamente, para o sistema, a tenso de sada s poder ser 3V.

21

UNIVERSAL SERIAL BUS (USB)


A tecnologia USB fornece a facilidade da conexo plug and play alm da

enorme taxa de comunicao de dados. A sua compatibilidade tambm algo fundamental, visto que atualmente a IEEE no exige mais que um computador pessoal tenha portas serial e paralela. Portanto, nos computadores mais modernos comum encontrarmos apenas portas USB para conectar perifricos ao computador.

3.1 Verses da USB A comunicao USB classificada em quatro tipos: USB 1.0 Foi a primeira gerao da comunicao USB e capaz de atingir taxas de 1.5 Mbps (USB LOW SPEED) e 12 Mbps (FULL SPEED). USB 1.1 Verso com correes da USB 1.0. USB 2.0 USB HIGH SPEED. Possui capacidade de comunicao de 480 Mbps (60 MBps). a tecnologia mais aplicada nos perifricos de alta velocidade, tais como HDs externos, WebCams, Cmeras Digitais e Pen Drives. USB 3.0 USB SUPER-SPEED que ainda est em carter experimental. Sua taxa de comunicao chegar a mais de 4.8 Gbps (600MBps) e utilizar fibra ptica, ultrapassando at as altas taxas atingidas na comunicao SATA2 e FireWire.

3.2 Classes dos Perifricos USB Os perifricos USB podem ter uma classe totalmente dedicada pelo desenvolvedor ou pertencer a uma classe padro, usando assim um driver genrico passando a ser reconhecido sem a necessidade de pr-instalao de drivers. Na Tabela 2 temos a lista de classes de configurao do perifrico USB.

22
Tabela 2 - Classes USB.

Classe

Uso

Descrio

Exemplo Microfone, placas de som Ethernet e modem

00h Perifrico Informao da classe utilizada 01h 02h Interface Duplo udio Comunicao e controle CDC Interface Homem - Mquina 03h Interface Human Interface Device (HID) 05h 06h 07h 08h Interface Interface Interface Interface Fsico Imagem Impressora Armazenamento de dados Mass Storage Hub USB

Teclado e mouse

Pen Drive USB, Leitor de carto de memria, Tocador de MP3

09h Perifrico

Essa classe utilizada em conjunto 0Ah Interface CDC-Data com a 02h - Comunicao e controle CDC 0Bh 0Dh 0Eh DCh E0h EFh FEh Interface Interface Interface Duplo Interface Duplo Interface Smart Card Segurana Vdeo Perifrico de Diagnstico Controlador Sem Fio (Wireless) Diversos Aplicao Especfica Webcam Adaptador Wi-Fi, Bluetooth ActiveSync IrDA

23 FFh Duplo Especfico do Vendedor

3.3 Caractersticas eltricas da USB O cabo USB pode chegar a at 5 metros de comprimento sem comprometimento da comunicao High Speed. Esse limite de comprimento se deve ao tempo de resposta mximo de 1500ns para que um dado enviado seja considerado recebido ou perdido. Contudo, com a utilizao de Hubs podem-se atingir maiores distncias. O cabo constitudo de quatro fios, sendo dois para sinais de dados e os outros dois para alimentao. A alimentao constituda de um fio GND (comum) e outro de +5Volts, capaz de fornecer inicialmente apenas 100mA, mas com requisio de mais corrente pode chegar a at 500mA drenados do computador. Isso traz uma enorme vantagem comparada com as comunicaes serial RS232 e paralela, pois agora o perifrico no s capaz de se comunicar em uma taxa de comunicao mais alta e ser plug and play, como tambm pode ser alimentado pelo mesmo cabo que o conecta ao computador. A comunicao USB acontece de maneira serial por um par tranado com impedncia de 90 Ohms +/- 15%. Os fios de dados so chamados de D+ e D-. A sinalizao utilizada Half Duplex diferencial, onde o sinal propagado no fio D+ possui seu sinal complementar (invertido) no fio D-. Ao chegar ao circuito os fios D+ e D- entram, respectivamente, nas entradas no-inversora e inversora de um circuito subtrator. Como o rudo igual em ambos os fios do par tranado, ao chegar no subtrator o seu sinal cancelado enquanto o mdulo das Amplitudes dos sinais D+ e D- so somados. Deste modo, evitam-se os efeitos do rudo eletromagntico em cabos longos. Os nveis de tenso variam de acordo com padro USB utilizado. Para as comunicaes Low Speed e Full Speed o nvel lgico baixo dado de 0 a 0,3 volts e o nvel lgico alto dado de 2,8 a 3,6 volts. J na comunicao High Speed os sinais variam de 400mV, com uma impedncia de 45 ohms para o comum ou uma impedncia diferencial de 90 Ohms.

24 A USB utiliza um protocolo especial para negociar o modo High Speed, chamado de Chirping. Um perifrico que utiliza USB HS (High Speed), a princpio sempre inicia a comunicao em modo FS (Full Speed). Aps receber um sinal de reset feita uma negociao com o Hub ou outro controlador da USB onde o perifrico saber se poder ou no comunicar-se em HS. Outra caracterstica importante da USB que ela permite que at 127 perifricos se comuniquem no mesmo barramento USB do hospedeiro. Para conseguir isto basta utilizar hubs USB para, alm de prolongar o cabo, possibilitar novas conexes. Mesmo com todos os prs a comunicao USB possui um problema. Devido s enormes facilidades que oferece ao usurio final ela requer uma maior complexidade de hardware e software ao desenvolvedor. Mesmo que j tenhamos um hardware USB pronto, ainda assim necessrio desenvolver um driver (caso o hardware no utilize uma classe padro) e um software de maior complexidade quando comparado com as tradicionais comunicaes serial e paralela.

3.4 Conversor USB para Serial (UART) A fim de aproveitar a conectividade do padro USB e ainda manter a facilidade de desenvolvimento dos dispositivos seriais RS232, dispositivos que no necessitam das taxas de transmisso de dados to altas como as da USB 1.1 e 2.0, podem utilizar conversores USB para UART. Visto que os protocolos so diferentes, necessrio utilizar um circuito integrado que faz essa converso. Com isso, podemos utilizar a tradicional UART em uma extremidade e a USB na outra extremidade, bastando apenas a instalao de um driver no computador para que assim o computador passe a reconhecer o perifrico como uma ComPort virtual, mantendo desta forma a compatibilidade com diversos perifricos. O hardware do kit fornecido pela Luminary Micro utiliza esse tipo de soluo para o desenvolvedor. O CI (circuito integrado) utilizado o FT2232C que contm duas UARTs e uma USB 2.0 (Full Speed).

25

O PROJETO DESENVOLVIDO

4.1 Hardware O projeto foi desenvolvido com base em um kit de desenvolvimento da Luminary Micro, Stellaris LM3S811 Evaluation Board (Figura 5), que contm um circuito com um microcontrolador ARM LM3S811 da Luminary Micro, um CI de comunicao Serial USB, FT2232C, fabricado pela FTDI e capaz de se conectar a um computador via porta USB, mas manter o protocolo de comunicao serial (UART) com o Microcontrolador e com os softwares do computador atravs de drivers fornecidos pela prpria FTDI.

Figura 5 - Stellaris LM3S811 Evaluation Board.

Toda a programao JTAG da placa de desenvolvimento pode ser feita utilizando a conexo USB existente na placa, servindo tanto para programao quanto para comunicao. A fonte de alimentao do circuito vem dos 5 V fornecidos pela porta USB. O Kit conta ainda com um display de OLED (Organic Led) monocromtico de 96 colunas x 16 linhas. O display pode ser programado serialmente via UART ou por I2C. Contudo, este display no chegou a ser utilizado no projeto do osciloscpio USB. Alguns esquemticos do Stellaris LM3S811 Evaluation Board encontram-se no Apndice C. O projeto do Osciloscpio ainda conta com um circuito de tratamento do sinal de entrada que composto por um circuito divisor de tenso para reduzir o sinal de

26 entrada de 20 para 1,5 V e de -20 para -1,5 V; e um circuito para introduzir um offset de 1,5 V no sinal de entrada, para que o valor do sinal de entrada fique na faixa de leitura do ADC do LM3S811, que vai de 0 a 3 volts. Em srie com esses 2 circuitos foi adicionado um filtro RC passa baixas, para atenuar as freqncias acima da capacidade do Osciloscpio. H ainda um circuito que utiliza para gerar uma onda quadrada peridica independente do microcontrolador, a fim de servir como pino de teste para o Osciloscpio. Desta forma, a gerao da onda de teste independente do circuito do microcontrolador, de modo a permitir averiguar se o microcontrolador est funcionando corretamente. Na Figura 6 apresentado um diagrama de blocos do hardware do projeto seguido de uma foto sua implementao na Figura 7.

Figura 6 -Diagrama de blocos do hardware do Osciloscpio Virtual via USB.

27

Figura 7 - Osciloscpio Virtual via USB conectado ao computador.

4.2 Microcontrolador O microcontrolador LM3S811 possui ncleo ARM Cortex M3 que utiliza a tecnologia Thumb 2. A linha Cortex M3 baseada no ncleo ARMv7-M e foi desenvolvida para ter alto desempenho e baixo custo. Parte disso devido tecnologia Thumb 2 que, em troca de uma pequena perda de desempenho, reduz o consumo de energia e tambm o uso de memria, diminuindo o custo do CI. Outra caracterstica da tecnologia Thumb a de permitir que o ncleo ARM de 32 bits trabalhe com memrias de 16 e de 8 bits. A seguir listam algumas caractersticas do microcontrolador utilizado. Para mais informaes ver o data sheet do LM3S811 [13]. Memria Flash de 64 Kbytes; Memria SRam de 8 Kbytes; Freqncia mxima de operao de 50 MHz; Possui 3 Timers de 32 bits; Possui 2 UART por hardware; Possui 1 I2C por hardware; Possui 1 SPI por hardware;

28 Quatro canais de entrada no ADC de 10 bits; Taxa de amostragem do ADC pode chegar a 500.000 amostras por segundo; Possui 1 sensor e temperatura; Possui 1 comparador analgico; Pode ter de 1 a 32 pinos destinados a GPIO; Seu encapsulamento de 48 pinos LQFP; Interface JTAG. Caractersticas Eltricas bsicas: Alimentao nominal de 3,3 V, podendo chegar ao mnimo de 3,0 V e mximo de 3,6 V; Consumo para caractersticas nominais executando while (1); mA. 70

4.3 Circuito de Tratamento do Sinal de Entrada A entrada analgica do Osciloscpio USB est definida para analisar uma faixa de +20 V a -20 V. Contudo, o conversor AD do LM3S811 possui uma faixa de leitura de tenso de 0 a 3 V apenas. Portanto, necessrio um circuito para reduzir os + 20 V para 1,5 V, -20 V para -1,5 V, e um circuito para deslocar o nvel de tenso de -1,5 a +1,5 para 0 a 3 V. Em srie a esses circuitos h tambm um filtro RC passa baixas com a finalidade de filtrar sinais de alta freqncia, devido ao fato de a largura de banda analisada ser de apenas 10 kHz.

4.3.1 Circuito Divisor de Tenso O Circuito divisor de tenso composto por apenas 2 resistores para gerar uma queda de tenso de no mximo 1,5 Volts para uma tenso de entrada de 20 Volts conforme se v na Figura 8.

29

Figura 8 - Circuito Divisor de tenso.

4.3.2 Dimensionamento do Filtro Um filtro eltrico um circuito seletivo de freqncia que permite a passagem de ondas eltricas que tenham freqncia dentro de uma determinada faixa, e que atenua ondas eltricas que possuam outras freqncias.
A resposta em freqncia de um filtro caracterizada por uma faixa de passagem e uma faixa de rejeio havendo normalmente uma regio de transio entre elas. As freqncias dentro da faixa de passagem so transmitidas com baixa atenuao e distoro reduzida, enquanto que as freqncias compreendidas na faixa de rejeio sofrem atenuao elevada (CARVALHO, Rogrio Muniz. Princpios de Comunicaes, Vitria, 2003, p.77)

Os filtros podem ser: Filtro passa baixas: quando atenua apenas as freqncias acima da freqncia de corte. Filtro passa altas: quando atenuas apenas as freqncias abaixo da freqncia de corte. Filtro passa faixa: Quando permite passagem de um sinal apenas em uma certa faixa de freqncia, atenuando os sinais com freqncia menor que a freqncia de corte inferior e os sinais com freqncia acima da freqncia de corte superior. Filtro rejeita faixa: o filtro que atenua apenas os sinais com freqncia dentro de uma certa faixa de valores.

30 4.3.2.1 Filtro Passa Baixas RC O filtro RC um filtro de 1 Ordem que atenua 6dB por dcada aps a freqncia de corte. O clculo de sua freqncia de corte dado por:

. Na Figura 9 tem-se um circuito de um Filtro RC.

(1)

Figura 9 - Filtro RC.

Nas baixas freqncias existe muito tempo para que o capacitor se carregue fazendo com que ele se comporte como um circuito aberto. Logo Vout valer o mesmo que Vin. Nas altas frequncias, o capacitor no tem tempo de se carregar totalmente. Por isso, o circuito em questo funciona como um divisor de tenso, e quando a freqncia se torna muito mais alta do que a freqncia de corte, ele passa a se comportar como um curto, fazendo com que Vout valha zero. Embora testes demonstraram que o osciloscpio desenvolvido, por limitaes da taxa de amostragem do ADC, no tratou sinais com largura de banda maior que 10 KHz, a freqncia de corte do filtro utilizado no foi de 10 kHz, isso devido ao fato de

31 que no ponto da freqncia de corte o filtro apresenta uma queda de 3dB de magnitude. Portanto, a fim de manter o sinal de 10 kHz com perdas mnimas, foi utilizada uma freqncia de corte mais alta. No caso, a freqncia de 80 kHz atendeu os requisitos desejados. Na figura 10 so apresentados os valores do filtro RC calculado para o projeto.

Figura 10 - Filtro RC utilizado.

Clculo da freqncia de corte utilizando a Equao 1: Para Fc = 80 KHz, e C = 1 nF, temos R = 2 K Ohms. Embora todos os clculos e Figuras apresentadas sugerem que a resistncia utilizada no filtro RC de 2 K ohms, no momento da construo do circuito foi utilizado o valor comercial de 2,2 K ohms. Isto faz com que a freqncia de corte do circuito seja aproximadamente 73 kHz.

4.3.3 Circuito de Offset de Tenso A soma de um offset de 1,5 Volts feita colocando-se uma fonte CC de 1,5 Volts em srie com o sinal de analgico de entrada. O sinal de entrada passa a ter um

32 terra virtual que na verdade est 1,5 V acima do terra do circuito geral do Osciloscpio.

Figura 11 - Circuito semi-completo de tratamento do sinal de entrada.

Na Figura 11 a fonte V1 adiciona um offset de +1,5 V ao sinal analgico V2, como pode ser visto em toda anlise CC do circuito. Como necessria uma fonte de 1,5 V para gerar o offset no sinal analgico de entrada e temos disposio apenas um pino de 3,3 V para uso geral, utilizou-se um divisor de tenso neste pino de 3,3 V para termos nossa fonte de 1,5 V. Optou-se por um simples divisor resistivo uma vez que necessrio apenas deslocar a onda de entrada, posto que a impedncia de entrada do circuito de converso do C bastante elevada. Sendo assim, o circuito de tratamento do sinal de entrada fica como o da Figura 12, onde a impedncia R4 simboliza a carga, no caso, o conversor analgico digital.

33

Figura 12 - Circuito completo de tratamento do sinal de entrada.

O resultado obtido com esse circuito, em uma anlise no tempo, com V2 sendo uma senoidal de 20 V e 20 kHz apresentado na Figura 13.

Figura 13 - Anlise no tempo do circuito.

Fazendo uma anlise na freqncia, obtemos o resultado esperado, que o inicio da atenuao do sinal por volta de 10 kHz. A escala em Y do grfico da Figura 14 o ganho em dB, e em X temos a freqncia por dcada.

34

Figura 14 - Anlise na freqncia do circuito.

A fim de reduzir rudos e tambm de manter um conector padro de osciloscpio (Conector de Painel - BNC), foi includo no PCB final da placa de tratamento do sinal o Conector de Painel, conforme se v na Figura 15.

Figura 15 - Circuito de tratamento do sinal na placa.

35 4.3.4 Oscilador Independente Ponta de prova Assim como outros osciloscpios o Osciloscpio USB projetado tambm possui uma ponta de prova para verificar se o mesmo est operando corretamente, e para verificar a integridade do cabo coaxial utilizado. Para garantir sua funo de teste, este circuito quase totalmente independente do resto do Osciloscpio, utilizando apenas a alimentao de 5 V (4,6 Volts aproximadamente) fornecida pela porta USB. O circuito foi projetado utilizando um CI 555 para gerar uma onda de aproximadamente 1 kHz a partir do equacionamento de circuitos astveis encontrado em [10].

Figura 16 - Circuito do oscilador independente.

Na Figura 16 temos o esquema do circuito oscilador de 1 kHz, e na Figura 17 o prottipo em placa.

Figura 17 - Circuito do oscilador independente na placa.

36 4.4 Firmware O firmware de controle do LM3S811 foi desenvolvido utilizando as bibliotecas fornecidas pela Luminary Micro para a Stellaris LM3S811 Evaluation Board. Esta biblioteca, DriverLib.lib, permite a manipulao de todos os perifricos: UART, SPI, Timers, ADC, etc. Outra facilidade fornecida pela Luminary Micro foi uma enorme quantidade de exemplos de cdigos para facilitar a compreenso das bibliotecas e encurtar o tempo de desenvolvimento do projeto. Todo o cdigo do firmware foi desenvolvido em Linguagem C, a mesma linguagem em que foi desenvolvida a biblioteca do kit da Luminary Micro. O ambiente de desenvolvimento utilizado foi o Vision, e o compilador foi o RealView C/C++ Compiler, ambos de propriedade da Keil TM. O cdigo fonte do firmware encontra-se no apndice A.

4.4.1 Explicao da lgica e Fluxograma O programa do firmware do Osciloscpio USB divide-se em duas partes principais, uma o main, cujo fluxograma encontra-se na Figura 18, e a outra o cdigo de interrupo do conversor AD, cujo fluxograma encontra-se na Figura 19. No main so definidas as configuraes de trabalho do microcontrolador e de seus perifricos, so inicializadas as variveis globais e o programa entra em loop infinito esperando que o buffer de leitura do conversor AD seja preenchido para depois envi-lo via interface serial da UART0 para o CI FT2232C, onde o dado enviado ao PC. Vale lembrar que ao final de cada envio de dados o buffer de entrada da UART0 verificado para saber se houve ou no mudana na escala de leitura do sinal. Na interrupo do ADC feita a leitura do sinal do conversor cada vez que essa funo acionada pela interrupo gerada pelo Timer1. Durante essa rotina, verificado se o buffer com os dados recolhidos anteriormente est sendo transmitido (varivel selec); caso no esteja sendo transmitido nenhum dado, o dado lido do ADC deslocado, aproveitando-se apenas os 8 bits mais significativos dos 10 bits, e

37 esse byte armazenado no buffer (de acordo com a escala utilizada), que tem o seu ponteiro incrementado. O fato de ser utilizado apenas 8 bits dos 10 bits convertidos deve-se ao fato de que a utilizao de apenas 8 bits por amostra facilita e agiliza a transmisso via porta serial, deste modo caso fosse feita uma funo de captura e transmisso direta de dados ao PC, sem pr-armazenamento em um buffer, a utilizao de apenas 8 bits por amostra diminuiria o gargalo criado pela transmisso da porta serial. Contudo essa rotina ficou para uma prxima verso e o conversor A/D acabou subutilizado. Quando o buffer est cheio, ou seja, 800 pontos lidos, a rotina main se encarrega de transmiti-lo.

Figura 18 - Fluxograma do programa principal.

38

Figura 19 - Fluxograma da interrupo do conversor AD.

Um conceito importante que deve ser compreendido como funciona a escala de leitura do sinal. O interesse de se implementar este artifcio foi o de manter um nmero pequeno de pontos armazenados no buffer seja qual fosse a freqncia do sinal que se deseja visualizar. Para melhor compreenso, feita uma anlise do problema real; como vemos a seguir. O conversor AD do LM3S811 no projeto est trabalhando a cerca de 130.000 amostras por segundo. Caso seja analisada uma onda de 10 kHz, significa que sero feitas aproximadamente 13 amostras por perodo de onda. Para um microcontrolador ARM trabalhando a 50 MHz, uma taxa de transferncia da UART de 460.800 bps e um Microcomputador de 1GHz, armazenar, transmitir, efetuar clculos e desenhar 13 pontos na tela no ser um grande problema.

39 Contudo, caso o sinal em questo seja de baixa freqncia, como 10 Hz, necessrio armazenar, transmitir, efetuar clculos e desenhar 13000 pontos para ver um perodo completo do sinal. O que no to simples. Isso exigiria hardwares mais potentes e softwares otimizados. Este problema resolvido com o sistema de escalas. Se o usurio do software seleciona uma opo de grandeza do sinal de alta freqncia, o firmware passa a armazenar todos os pontos lidos e transmiti-los ao PC, onde sero desenhados. Caso o usurio selecione opes de mais baixa freqncia o firmware passa a armazenar no buffer de transmisso apenas 1 ponto a cada 10 (ou mais) pontos lidos, fazendo um processo de descarte de amostras conhecido como sub-amostragem. A escala mantida proporcional para que a quantidade de pontos transmitidos seja sempre a de 800 pontos, e a quantidade de pontos desenhados tela seja no mximo 400. O fato de o nmero de pontos desenhados no grfico ser no mximo a metade do nmero de pontos armazenados e enviados pelo microcontrolador est relacionado com a funo de trigger via software. Maiores detalhamentos podem ser encontrados no Apndice B. Uma dificuldade encontrada no firmware foi a manipulao do conversor A/D, pois o data sheet do LM3S811 o descreve como capaz de realizar 500 mil amostras por segundo. Entretanto, na prtica no foi possvel faz-lo trabalhar a mais que 130 mil amostras por segundo, devido a problemas de travamento da execuo do cdigo quando submetido a taxas mais altas e devido dificuldades de se manipular o perifrico do conversor A/D.

4.4.2 Continuidade da Anlise Para evitar o gargalo criado pela comunicao Serial USB, que no firmware de 460.800 bps (taxa mxima aceita pela UART do microcontrolador LM3S811) todo o firmware foi projetado para: o Primeiro Amostrar e guardar os dados amostrados.

40 o Segundo Quando o buffer estiver cheio, parar o armazenamento dos

dados e enviar os dados pela porta serial. Deste modo, o limite de amostragem no mais ser ditado pela transmisso serial, no entanto, para altas freqncias podem haver perdas de algum evento, visto que enquanto os dados armazenados so enviados, nenhum dado do ADC ser coletado.

4.5 Software Todo software foi desenvolvido em linguagem C++, na plataforma Borland C++. Para fazer a parte grfica (SCOPE) foi utilizada uma biblioteca gratuita fornecida em [8]. A comunicao serial foi desenvolvida com o material encontrado em [11]. O cdigo fonte completo e comentado do software do Osciloscpio USB est no Apndice B. A interface final do Software ficou como mostrado na Figura 20.

Figura 20 - Interface grfica do Software.

41

4.5.1 Caractersticas do Grfico Visto que a biblioteca grfica utilizada gratuita, mas no cdigo aberto (o cdigo aberto apenas para quem comprar), certas caractersticas no foram possveis mudar, tais como o ttulo sobre o grfico, Scope, a inscrio no eixo X, Samples ao invs de Amostras, e a inscrio no eixo Y, Y Axis, quando o ideal nesse caso seria Tenso. No entanto, essa biblioteca fornece inmeras vantagens como a facilidade de programao, auto-zoom, impresso, salvar imagem do grfico (cone destacado na Figura 21), alm de permitir o desenho de mais de um canal no mesmo grfico. Porm, esta ltima ferramenta no foi utilizada visto que o projeto foi de um osciloscpio de apenas um canal.

Figura 21 - Manipulao da biblioteca grfica.

4.5.2 Configuraes do Osciloscpio Todas as configuraes necessrias para se fazer uma anlise correta no Osciloscpio USB esto disponveis no menu localizado na lateral direita (Figura 22). Saber manipular o menu imprescindvel ao usurio.

42

Figura 22 - Manipulao do Software do Osciloscpio Virtual via USB.

1 Como a comunicao Serial USB, ao conectar a placa ao PC ser criada uma ComPort Virtual para a troca de dados com a placa. Portanto, para utilizar o osciloscpio, deve-se inicialmente selecionar em qual ComPort est conectada a placa. 2 O modo de captura ininterrupta desenha o contedo lido do ADC na tela sem passar por nenhum algoritmo para gatilhar a onda em momentos iguais. Portanto, disponibiliza-se um sinal atualizado na tela, porm sem nenhuma seqncia. 3 A captura com Auto Trigger mantm a tela sempre com um sinal atualizado, mas esse sinal passa por um algoritmo que sempre tenta iniciar o desenho da onda a partir do primeiro ponto onde o sinal cruza o seu valor mdio com derivada positiva.

43 4 O Trigger Manual se assemelha ao Auto Trigger com a nica diferena de que ao invs de iniciar o desenho pelo valor mdio, inicia-se pelo valor contido na caixa de texto logo abaixo. 5 A Captura nica ideal quando se deseja uma foto esttica da forma de onda, como, por exemplo, quando se deseja calcular seu perodo ou amplitude. Para atualizar o grfico, quando esta opo estiver selecionada, basta clicar em Capturar. 6 O Ajuste de Offset serve para se fazer correes no sinal de entrada. Esta funo soma o valor contido na caixa de texto, logo abaixo dela, ao valor do sinal lido pelo ADC. Com isso, pode-se deslocar toda onda no eixo da Tenso. 7 A Grandeza do Sinal Medido um campo apenas para ajuste de escala e melhor visualizao do grfico. 8 A Escala nos mostra aproximadamente quantos micro-segundos possui cada amostra do sinal. 9 Na caixa de texto Amostras deve ser inserido o nmero de amostras feitas para se completar um perodo do sinal. 10 Quando o item 9 for realizado basta pressionar o boto Converter que sero fornecidos a freqncia e o comprimento de onda do sinal baseados na Escala e no nmero de amostras.

44

RESULTADO
Os testes do Osciloscpio USB foram realizados no Laboratrio de Eletrnica

Digital da Universidade Federal do Esprito Santo. Para a realizao dos testes foi utilizado um Osciloscpio Analgico, de 20 MHz, um Gerador de Sinal de at 2 MHz, um Laptop (onde foi executado o Software do Osciloscpio USB), e o circuito do projeto em questo. Nos testes realizados foram comparados os resultados obtidos com o Osciloscpio USB e com o Osciloscpio Analgico para diversas formas de ondas peridicas. Os valores comparados foram: Amplitude do sinal mensurado; Freqncia do sinal mensurado; Qualidade do sinal mensurado.

5.1 Ondas Senoidais

5.1.1 Onda Senoidal a 10 Hz Gerador de Sinal: Senide de 10 Hz. Resultado obtido pelo Osciloscpio USB: Amplitude: Vmax = + 5,7 Volts. Vmin = - 8,6 Volts. Freqncia: 10,3 Hz aproximadamente. Qualidade: Muito rudo. Na Figura 23 tem-se a imagem do programa em execuo neste teste.

45

Figura 23 - Senoidal de 10 Hz, osciloscpio USB.

Resultados obtidos com o osciloscpio analgico (teste exibido na Figura 24): Amplitude: Vmax = + 5,4 Volts. Vmin = - 8,4 Volts. Freqncia: 10 Hz aproximadamente. Qualidade: Ruim, o sinal preciso, contudo no pode ser visualizado completamente na tela por ser de baixa freqncia. Isso ocorre devido ao mtodo de reconstruo do sinal utilizado nos osciloscpios analgicos, onde so necessrios vrios perodos de onda para a amostrar um perodo na tela.

Figura 24 - Senoidal de 10 Hz, osciloscpio analgico.

46

5.1.2 Ondas Senoidais 220 Hz Gerador de Sinal: Senoide de 220Hz. Resultado obtido pelo Osciloscpio USB: Amplitude: Vmax = + 5,7 Volts. Vmin = - 8,6 Volts. Freqncia: 218 Hz aproximadamente. Qualidade: Com rudo. Na Figura 25 tem-se a imagem do programa em execuo neste teste.

Figura 25 - Senoidal de 220Hz, osciloscpio USB.

Resultados obtidos com o osciloscpio analgico (teste exibido na Figura 26): Amplitude: Vmax = + 5,4 Volts. Vmin = - 8,4 Volts. Freqncia: 227 Hz aproximadamente. Qualidade: Boa.

47

Figura 26 - Senoidal de 220 Hz, osciloscpio analgico.

5.1.3 Onda Senoidal a 10 kHz Gerador de Sinal: Senoide de 10 kHz. Resultado obtido pelo Osciloscpio USB: Amplitude: Vmax = + 5,3 Volts. Vmin = - 8,3 Volts. Freqncia: 10,3 kHz aproximadamente. Qualidade: Baixa definio (poucas amostras por perodo). Na Figura 27 tem-se a imagem do programa em execuo neste teste.

Figura 27 - Senoidal de 10 kHz, osciloscpio USB.

48 Resultados obtidos com o osciloscpio analgico (teste exibido na Figura 28): Amplitude: Vmax = + 5,4 Volts. Vmin = - 8,4 Volts. Freqncia: 10 KHz aproximadamente. Qualidade: Boa.

Figura 28 - Senoidal de 10 KHz, osciloscpio analgico.

5.2 Ondas Quadradas

5.2.1 Ondas Quadradas 51 Hz Gerador de Sinal: Quadrada de 51 Hz. Resultado obtido pelo Osciloscpio USB: Amplitude: Vmax = + 6,1 Volts. Vmin = - 9,1 Volts. Freqncia: 51 Hz aproximadamente. Qualidade: Boa. O rudo est bem visvel, contudo, devido freqncia e amplitude do sinal amostrado, o rudo no est interferindo negativamente na anlise do sinal. Na Figura 29 tem-se a imagem do programa em execuo neste teste.

49

Figura 29 - Quadrada de 51 Hz, osciloscpio USB.

Resultados obtidos com o osciloscpio analgico (teste exibido na Figura 30): Amplitude: Vmax = + 6,0 Volts. Vmin = - 8,5 Volts. Freqncia: 52 Hz aproximadamente. Qualidade: Boa. Bontudo, por ser um sinal de baixa freqncia, a imagem do sinal fica piscando na tela.

Figura 30 - Quadrada de 51 Hz, osciloscpio analgico.

50 5.2.2 Ondas Quadradas 6 kHz Gerador de Sinal: Quadrada de 6 kHz. Resultado obtido pelo Osciloscpio USB: Amplitude: Vmax = + 6,1 Volts. Vmin = - 9,2 Volts. Freqncia: 6,1 kHz aproximadamente. Qualidade: Boa. Na Figura 31 tem-se a imagem do programa em execuo neste teste.

Figura 31 - Quadrada de 6 kHz, osciloscpio USB.

Resultados obtidos com o osciloscpio analgico (teste exibido na Figura 32): Amplitude: Vmax = + 6,0 Volts. Vmin = - 8,5 Volts. Freqncia: 5,9 kHz aproximadamente. Qualidade:Boa.

51

Figura 32 - Quadrada de 6 KHz, osciloscpio analgico.

5.2.3 Ondas Quadradas 10 kHz Gerador de Sinal: Quadrada de 10 kHz Resultado obtido pelo Osciloscpio USB: Amplitude: Vmax = + 6,1 Volts. Vmin = - 9,1 Volts. Freqncia: 10 kHz aproximadamente. Qualidade: Ruim. Devido baixa taxa de amostragem no circuito, a onda quadrada passa a perder a sua forma. Na Figura 33 tem-se a imagem do programa em execuo neste teste.

Figura 33 - Quadrada de 10 kHz, osciloscpio USB.

52

Resultados obtidos com o osciloscpio analgico (teste exibido na Figura 34): Amplitude: Vmax = + 6,0 Volts. Vmin = - 8,5 Volts. Freqncia: 10 kHz aproximadamente. Qualidade:Boa.

Figura 34 - Quadrada de 10 kHz, osciloscpio analgico.

5.3 Ondas Triangulares No sero apresentados os resultados em freqncias de 10 kHz para as ondas triangulares, visto que durante os testes esse tipo de sinal apresentou uma distoro grande no Osciloscpio USB, inviabilizando comparaes. A amostra do sinal a 10 kHz ficou semelhante a uma senide.

5.3.1 Ondas Triangulares 52 Hz Gerador de Sinal: Triangular de 52 Hz. Resultado obtido pelo Osciloscpio USB: Amplitude: Vmax = + 5,3 Volts. Vmin = - 8,7 Volts. Freqncia: 52 Hz, aproximadamente. Qualidade: Boa. O rudo est bem visvel, contudo, devido freqncia e amplitude do sinal amostrado, o rudo no est interferindo negativamente na anlise do sinal.

53

Na Figura 35 tem-se a imagem do programa em execuo neste teste.

Figura 35 - Triangular de 52 Hz, osciloscpio USB.

Resultados obtidos com o osciloscpio analgico (Figura 36): Amplitude: Vmax = + 5,0 Volts. Vmin = - 8,5 Volts. Freqncia: 53 Hz aproximadamente. Qualidade: Boa. Contudo, por ser um sinal de baixa freqncia, a imagem do sinal fica piscando na tela.

Figura 36 - Triangular de 52 Hz, osciloscpio analgico.

54 5.3.2 Ondas Triangulares 5,06 kHz Gerador de Sinal: Triangular de 5,06 kHz. Resultado obtido pelo Osciloscpio USB: Amplitude: Vmax = + 5,3 Volts. Vmin = - 7,7 Volts. Freqncia: 5,29 kHz aproximadamente. Qualidade: Razovel. A baixa taxa de amostragem do ADC j comea a deformar o sinal. Na Figura 37 tem-se a imagem do programa em execuo neste teste.

Figura 37 - Triangular de 5,06 kHz, osciloscpio USB.

Resultados obtidos com o osciloscpio analgico (Figura 38): Amplitude: Vmax = + 5,0 Volts. Vmin = - 8,0 Volts. Freqncia: 5,00 kHz, aproximadamente. Qualidade: Boa. Contudo, por ser um sinal de baixa freqncia, a imagem do sinal fica piscando na tela.

55

Figura 38 - Triangular de 5,06 kHz, osciloscpio analgico.

5.4 Anlise das Amplitudes Mxima e Mnima Na anlise de amplitude mxima o gerador de sinal no conseguiu gerar nenhuma tenso capaz de saturar o Osciloscpio Virtual via USB (ver Figura 39), visto que esse foi projetado para analisar de -20 a +20 V (o que foi comprovado em uma anlise CC).

Figura 39 - Anlise de amplitude Mxima.

Durante a anlise de baixa amplitude do sinal de entrada observa-se uma relao sinal/rudo baixa, interferindo bastante na leitura do sinal. O sinal observado na Figura 40 possui amplitude prxima a 150 mV que o limite de funcionamento do Osciloscpio USB, visto que embora o ADC trabalhe com uma amostragem com

56 preciso de 10 bits, apenas os 8 mais significativos so utilizados. Portanto, visto que o Osciloscpio USB pode ler uma faixa de -20 a +20 Volts e que no possui ajuste de escala por hardware, a preciso do sinal lido por volta de 155 mV.

Figura 40 - Anlise de amplitude mnima.

5.5 Anlise com freqncia acima da Projetada Estes testes foram realizados apenas com o intuito de verificar o comportamento do Osciloscpio em freqncias muito acima das quais foi projetado (10 kHz). Nas Figuras 41, 42 e 43 apresentado o Osciloscpio Virtual via USB analisando uma onda Senoidal de 30 kHz, uma onda Quadrada de 30 kHz e uma onda Triangular e 30 kHz, respectivamente.

57

Figura 41 - Senoidal de 30 kHz no Osciloscpio USB.

Figura 42 - Quadrada de 30 kHz no Osciloscpio USB.

58

Figura 43 - Triangular de 30 kHz no Osciloscpio USB.

A amostragem digital de aproximadamente 110 K amostras por segundo permite ao Osciloscpio uma definio de menos que 4 pontos por perodo de onda para um sinal de 30 KHz, o que muito pouco para se desenhar um sinal com qualidade3. Portanto, o grfico fica totalmente distorcido e conforme se observa nas Figuras 41, 42 e 43, impossvel distinguir o formato do sinal analgico com to poucas amostras.

Mas observe que, pelo teorema de Nyquist, esta taxa garante uma reconstruo do sinal analgico sem o

fenmeno de aliasing sobreposio de cpias do sinal. Este um dos motivos que um osciloscpio digital de largura de banda de 60MHz exija 500M amostras por segundo de amostragem. Por exemplo, em sistemas de energia eltrica assume-se, para efeitos de digitalizao e manipulao matemtica, um mnimo de 6 amostras por cada perodo da onda senoidal.

59 5.6 Anlise dos Resultados Nos testes de freqncia foi verificado que a freqncia mxima de anlise do Osciloscpio por volta de 10 KHz. Isso se deve ao fato do nmero de amostras por segundo do conversor analgico digital do LM3S811 ter chegado a no mximo cerca de 110.000, o que um valor muito abaixo das 500.000 amostras por segundo que dada no data sheet do microcontrolador como o limite deste ADC. Este valor foi um compromisso entre taxa de amostragem respeitando Nyquist e a garantia de uma quantidade mnima de amostras representadando o sinal digitalizado na tela do computador. Quando se testou freqncias acima de 10 KHz, o nmero de pontos por perodo de onda desenhado na tela passou a ser muito baixo, menos de 10 por perodo, caindo assim a qualidade do sinal digitalizado. Conforme se v no sub-capitulo 5.5, a queda da qualidade foi tal que no se diferencia mais as formas de ondas senoidais, quadrada e triangular para sinais de freqncias prximas a 30 Khz. Vale lembrar que estamos no domnio digital e embora o teorema de Nyquist mostre que basta amostrar no dobro da taxa da maior freqncia do sinal para convert-lo posteriormente ao domnio analgico, fiel ao sinal de entrada (desde que se empregue um filtro de reconstruo cuja resposta impulsiva seja dada pela funo sinc, irrealizvel na prtica por ser no causal, da somente no plano terico se consegue reconstruo perfeita do sinal analgico), a representao digital fica comprometida com poucas amostras por perodo E, como no h nenhum psprocessamento no sinal amostrado, onde utilizou-se uma linha reta para interligar os pontos, o que vemos no grfico apenas uma seqncia de pontos amostrados. Ainda com relao ao aumento da distoro do sinal no grfico do Osciloscpio Virtual, com o aumento da freqncia, nota-se que medida em que se aumenta a freqncia do sinal amostrado o formato de onda que menos se distorce a senoidal. Isso facilmente explicvel pela srie trigonomtrica de Fourier:
Uma funo pedirica da varivel angular , x(), com perodo de repetio de 2 radianos, pode ser desenvolvida em uma srie de termos em seno e cosseno de mltiplos inteiros de , chamada de Srie Trigonomtrica de Fourier, desde

60
que satisfaa s Condies de Dirichlet. (CARVALHO, Rogrio Muniz. Princpios de Comunicaes, Vitria, 2003, p.27)

As Equaes 2 e 3 mostram respectivamente a Srie Trigonomtrica de Fourier para uma onda triangular de amplitude A e uma onda quadrada de amplitude A.
+

x(t ) =
k =1

8 A (1) k 1

(2k 1)2

sen[2 (2k 1) f 0 t ] ,

[2]

x(t ) =

4A sen[2 (2k 1) f 0 t ] . k =1 (2 k 1)

[3]

Ou seja, sinais sinusoidais so os nicos que so representados por uma raia espectral exatamente no valor da freqncia do sinal e valor zero para qualquer outra freqncia. Qualquer deformao no formato de um sinal sinusoidal (inclua-se neste caso as ondas triangular e retangular) gera componentes espectrais (harmnicos) com valor diferente de zero para mltiplos da freqncia fundamental, o que exige uma maior taxa de amostragem. Observe que, teoricamente, no conseguiramos amostrar (e talvez gerar!) uma triangular e uma retangular uma vez que estas so ilimitadas em banda (infinitos harmnicos). Mas, aplicando-se o bom senso, com alguns harmnicos acima da fundamental temos um sinal triangular e retangular muito prximo do aceitvel. Da a importncia do filtro de entrada, conhecido como pr-filtro, para limitar a banda, filtro este previsto no Teorema de Nyquist. Toda a teoria de Shannon foi feita para sinais limitados em banda, o que exige o pr-filtro. Quanto aos nveis de tenso verifica-se no sub-capitulo 5.4 que as tenses mais altas so menos sensveis a rudos, enquanto baixas tenses de entrada, 1 Volt por exemplo, o circuito esta sujeito a muitas interferncias. Isso ocorre principalmente devido a grande faixa de tenso (+/- 20 V) que o osciloscpio capaz de analisar. Fazendo com que sinais de entrada com pequenos valores de tenso sejam reduzidos a valores muito pequenos no circuito divisor de tenso. Isso faz com que o sinal

61 analisado chegue ao pino de entrada do ADC com um nvel de tenso muito prximo aos nveis de tenso dos rudos do circuito (relao sinal/rudo baixa). Fazendo com que a anlise seja de m qualidade. Ou seja, necessrio uma adapatao da faixa dinmica do sinal faixa de converso do conversor. Outro fator que deve ser notado de que apesar de o conversor ser de 10 bits, apenas os 8 bits mais significativos so considerados. Portando a preciso do Osciloscpio de apenas 40/256, 156 mili-volts aproximadamente. Muitos osciloscpios digitais profissionais, de baixo custo, trabalham com 8 bits por amostra (este o caso dos osciloscpios digitais do DEL). Portanto, por se tratar de um projeto de baixo custo, ver Tabela 3, quando comparado aos osciloscpios digitais e analgicos que existem no mercado, o Osciloscpio Virtual via USB desenvolvido mostra-se como uma opo simples e indicada para circuitos de baixa freqncia e nveis de tenso maiores que 1 Volt, visto que suscetvel a rudos. Quanto ao clculo da freqncia do sinal (micro-segundos por amostragem), como a taxa de amostragem do sinal no alta, quando se analisa sinais de ordem de grandeza prximos a 10.000 Hz a preciso da medida da freqncia passa a ser pequena, acumulando erros que tendem a aumentar com o aumento da freqncia do sinal amostrado. No caso de uma onda de 10 KHz, como visto no sub-capitulo 5.1.3, o erro dessa medida foi de +307 Hz. Na Tabela 3 apresentada uma planilha de custo aproximado do equipamento projetado. O custo final do Osciloscpio Virtual via USB por volta de R$ 47,00 o que est muito abaixo do valor de mercado de Osciloscpios Analgicos ( Aproximadamente R$ 1.200,00) e Osciloscpios Digitais mais simples (por volta de R$ 3.500,00) mais barato tambm do que a verso mais simples do BitScope (US$ 425,00).

Tabela 3 - Custo Aproximado do Hardware do Osciloscpio Virtual via USB.

Descrio

Componente

Custo unitrio em lotes de 100 [4]

62
Microcontrolador CI USB x Serial Cristal 6 MHz Regulador 3,3V Conector USB Cabo USB 3M Timer 2 Capacitores 10 Resistores Conector de Painel PCB Custo Total Custo Total em Reais Custo Total + Importao LM3S811 FTDI2232L HC49 LP3981 Tipo B A male to B male lm555 C Ceramicos SMD 50V R 100mW SMD Femea 2 camadas 80mmx80mm $4,20 $6,92 $0,44 $0,60 $0,93 $1,87 $0,66 $0,14 $0,70 $3,00 $6,00 $25,46 R$ 45,83 100 reais / 100 peas = R$1,00 R$ 46,83

Com um aumento no muito alto no custo total do projeto, possvel fazer inmeras melhorias no projeto, fazendo com que seja concorrente a algumas verso do BitScope mas mantendo-se a um custo muito abaixo.

CONCLUSES E MELHORIAS FUTURAS


Uma mudana em toda a estrutura do hardware poderia tornar o Osciloscpio

USB uma opo de uso at mesmo a usurios mais exigentes. Inicialmente um sistema de proteo de sobre tenso na entrada analgica utilizando diodos rpidos aumentaria a durabilidade do equipamento. A utilizao de um CI ADC tipo Flash de altssima taxa de amostragem para substituir o ADC do microcontrolador daria ao equipamento uma grande largura de banda, com dezenas de milhes de amostras por segundo. Aliado ao ADC como um CI discreto seria importante o uso de uma memria SRAM auto incrementvel com taxas de escrita compatveis com a taxa de amostragem do ADC, com isso teramos todo um circuito independente de amostragem e armazenamento de dados coletados trabalhando juntos em um clock de altssima freqncia fornecida por um oscilador externo.A incluso de um trigger por hardware (CI detector de cruzamento por nvel)

63 poderia dar segunda verso do projeto uma capacidade de anlise de freqncias da mesma taxa de amostragem do conversor A/D. Isso possivel se for utilizado um recurso muito utilizado em Osciloscpios Analgicos, onde cada amostragem do sinal capturado apenas um ponto por periodo de onda, de modo que a primeira amostra capturada em um no primeiro periodo da onda com um atraso t0, a segunda amostra capturada no segundo periodo da onda, mas agora com um atraso t1. E deste modo uma sequencia de pontos capturada e possibilita a remontagem do sinal em alta freqncia. A transmisso dos dados ao PC poderia ser simplificada no nvel de hardware utilizando-se um microcontrolador com uma porta USB como perifrico incluso. claro que, alm de mudanas no firmware, essas modificaes exigiriam uma mudana na comunicao do software do PC, pois deixaria de ser interpretada como uma comunicao serial e passaria a ser USB. No mais no haveria grandes modificaes. Na Figura 44 pode-se verificar um diagrama de blocos de um projeto com as melhorias descritas acima.

64

Figura 44 - Diagrama de blocos do projeto futuro.

Vale lembrar que neste projeto futuro no h um contador externo para atualizar a linha de endereamento da memria SRAM, por isso ela deve ser autoincrementvel capaz de sequenciar a escrita e leitura em todas as linhas de endereo, diferentemente de muitas SRAMs que auto-incrementam apenas 4 endereo seguidos. Um exemplo de CI com essas caractersticas o CY7C09159AV (Figura 45), produzido pela Cypress, trata-se de uma SRAM paralela que alem de ser autoincrementvel, dual port, ou seja, possui duas memrias auto-incrementveis totalmente independentes em um mesmo encapsulamento.

Figura 45 - Memria SRAM auto-incrementvel.

65 A utilizao de um microcontrolador com ncleo ARM em um novo projeto pode no ser necessria visto que as altas taxas de amostragem e comunicao entre o conversor AD e a memria SRAM so independentes no microcontrolador. Contudo seu uso ainda interessante caso deseje-se programar em firmware algum processamento sobre os dados amostrados, visto a alta taxa de processamento que um microcontrolador ARM pode fornecer. Este projeto de hardware com diversas melhorias j teve sua implementao iniciada, conforme ve-se na Figura 46, contudo o sistema hardware e firmware ainda no se encontra operante. O circuito possui um microcontrolador ARM7 da Atmel, AT91SAM7S64, com porta USB Full Speed inclusa, uma memria SRAM dual-port autoincrementavel capaz de operar a 50 MHz, CY7C09159AV, um ADC flash de 80 MHz, 8 bits, paralelo, da Analog Devices, AD9283_c, onde tanto a memria quanto o ADC so gatilhados por um oscilador de 50MHz para trabalharem sincronizadamente. Uma primeira verso da placa de circuito impressa ja foi feita, contudo modificaes podem ser necessrias.

Figura 46 - Futura verso do Osciloscpio Virtual via USB em fase de desenvolvimento.

6.2 Melhorias Futuras de Firmware e Software Nenhum tratamento ao sinal digitalizado foi implementado em software, para uma futura verso seria interessante incluir um cdigo para realizar interpolaes entre os pontos a fim de possibilitar um grfico de melhor qualidade para freqncias prximas a freqncia mxima. A criao de uma funo de coleta de pontos

66 sequnciais para armazenamento em um arquivo tambm uma importante evoluo para o software do Osciloscpio Virtual, visto que deste modo os sinais anlisados poderam ser ps-processados. Outra melhoria possvel seria a utilizao de algum tipo de filtro digital com o intuito de reduzir os rudos. Ambas so implementaes em nvel de cdigo, mas as que exigirem maior complexidade e grandes bibliotecas matemticas devem ser preferencialmente realizadas em software visto que computadores pessoais possuem muito mais potncia de processamento e memria do que microcontroladores. Fugindo um pouco das melhorias em qualidade do sinal, pode-se tambm gerar cdigos para dar mais funes ao projeto. O uso de uma FFT para se obter a funo de Analisador de Espectro no equipamento interessante. O software poderia tambm fornecer os dados por ele recebidos como um servidor de FTP, fazendo com quem qualquer outro PC conectado na mesma rede, pudesse, tendo IP e porta, e com o software do Osciloscpio instalado, ver os grficos em tempo real estando em qualquer lugar do mundo.

67 REFERNCIAS BIBLIOGRFICAS [1] ALMEIDA, AILSON ROSETTI DE. Conversores Digital/Analgicos (DAC) e Analgico/Digitais (ADC). [on line]. Disponvel: http://www.ele.ufes.br/~ailson/digital2/adda.pdf [capturado em 08 out. 2007]. [2] CARVALHO, ROGRIO MUNIZ. Princpios de Comunicaes. 3 Ed. Vitria, ES. 2003. [3] UNIVERSAL SERIAL BUS. Universal Serial Bus Class Definitions. [on line] Disponvel: http://www.usb.org/developers/devclass_docs/usbcdc11.pdf [capturado em 10 nov. 2007]. [4] DIGI-KEY.COM. Oramento de Componentes Eletrnicos. [on line]. Disponvel: http://www.digikey.com [ capturado em 10 fev. 2008]. [5] LUMINARY MICRO. Application Note AN01209-01: ADC OverSampling Techniques. [on line]. Disponvel: http://www.luminarymicro.com [capturado em 15 out. 2007]. [6] LUMINARY MICRO. Application Note AN01247-00: Using the Stellaris Microcontroller Analog-to-Digital Converter. [on line]. Disponvel: http://www.luminarymicro.com [capturado em 15 out. 2007]. [7] LUMINARY MICRO. Data sheet EVB_LM3S811: Eval Board Users Manual and Schematics. [on line]. Disponvel: http://www.luminarymicro.com [capturado em 4 out. 2007]. [8] MITOV 2007] [9] WIKIPEDIA. Universal Serial BUS. [on line]. Disponvel: SOFTWARE. PlotLab 3.0. [on line]. Disponvel:

http://www.mitov.com/html/download_plotlab.html [capturado em 20 set.

http://en.wikipedia.org/wiki/USB [capturado em 28 out. 2007].

68 [10] FILHO, TEODIANO FREIRE BASTOS. Apostila de Eletrnica Bsica II. Vitria, 2005. [11] SALTEADORES. Serial Communication with Borland C++ Builder. [on line]. Disponvel: http://maikel.galeon.com/serie/bcbcomm.html [capturado em 10 set. 2007]. [12] UNSER, M. Sampling-50 years after Shannon,Proceedings of the IEEE, Vol. 88, n. 4, Abril 2000, pp. 569-587. [13] LUMINARY MICRO. Data Data sheet Sheet. DS-LM3S811-1972: [on line]. LM3S811 Disponvel:

Microcontroller

http://www.luminarymicro.com [capturado em 4 out. 2007]. [14] LUMINARY MICRO. Application Note. [on line]. Disponvel:

http://www.luminarymicro.com [capturado em 15 out. 2007]. [15] Anjos, W. L. F. "USO DO COMPUTADOR PESSOAL NO DE

DESENVOLVIMENTO DE UM ANALISADOR DE ESPECTRO 2004.

BAIXA FREQNCIA", Projeto de Graduao - DEL - CT - UFES, abril de

69 APNDICE A O cdigo comentado do firmware implementado em C, no Vision , utilizando as bibliotecas fornecidas pela Luminary Micro. Todas as bibliotecas podem ser encontradas em [14].

#include "hw_ints.h" #include "hw_types.h" #include "adc.h" #include "debug.h" #include "gpio.h" #include "interrupt.h" #include "sysctl.h" #include "timer.h" #include "uart.h" #include "globals.h" #include "random.h" unsigned char selec; char adc_buffer1[2000];

// // // // Incluso das Bibliotecas // da Luminary Micro // // // // // //

#include "hw_memmap.h" //

int cont0,cont1,cont2,cont_def; unsigned long total_data, g_ulWheel; // Interrupo por Timer do ADC void ADCIntHandler(void) { unsigned long ulData; // Limpa a interrupo do ADC ADCIntClear(ADC_BASE, 0); // Leitura do Dado do Conversor AD ADCSequenceDataGet(ADC_BASE, 0, &ulData); if (selec == 0) { cont0++; // Habilita escrita no buffer de leitura do ADC // somente se o flag 'selec' valer zero. // incrementa o contador da escala de tempo // quando o contador da escala atingir o valor definido

70
if (cont0 == cont_def) { cont0 = 0; // // // zera o contador da escala

//Rotina da Luminary para diminuir o erro da leitura RandomAddEntropy(ulData); g_ulWheel = ((g_ulWheel * 58982) + (ulData * 6554)) / 65536; // Transforma o valor adquirido (float) em um char e armazena no buffer adc_buffer1[cont1] = ((ulData<<22)>>24); // Ponteiro do buffer incrementado. cont1++; } } } int main(void) { int i; // Configura o Clock do Sistema em 50Mhz // onde SYSCTL_SYSDIV_4 divide a freqncia do PLL, que de 200MHz // por 4, gerando um clock interno de 50Mhz SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_6MHZ); // Ativa Perifricos SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC); // Conversor Analgico Digital SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); // GPIO A -> Pinos da UART0 SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER1);// Timer 1 SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0); // UART0 // Configura o ADC pra amostrar o Sinal Analgico quando o Timer gatilhar // ADC_TRIGGER_TIMER // configura o ADC amostrar // por tempo dado pelo Timer1 ADCSequenceConfigure(ADC_BASE, 0, ADC_TRIGGER_TIMER, 0); ADCSequenceStepConfigure(ADC_BASE, 0, 0, ADC_CTL_CH1 | ADC_CTL_IE | ADC_CTL_END); ADCSequenceEnable(ADC_BASE, 0); ADCIntEnable(ADC_BASE, 0);

71
IntEnable(INT_ADC0); // Configura o Timer1 para ser o gatilho da amostragem do ADC TimerConfigure(TIMER1_BASE, TIMER_CFG_32_BIT_PER); TimerLoadSet(TIMER1_BASE, TIMER_A, SysCtlClockGet() / 115000); TimerControlStall(TIMER1_BASE, TIMER_A, true); TimerControlTrigger(TIMER1_BASE, TIMER_A, true); TimerEnable(TIMER1_BASE, TIMER_A); // Configura os Pinos de TX e RX da UART0 GPIODirModeSet(GPIO_PORTA_BASE, GPIO_DIR_MODE_HW); // Configura a operao da UART0 para 460800bps, 8-N-1. UARTConfigSet(UART0_BASE, 460800, (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE)); UARTEnable(UART0_BASE); cont0 = 0; cont2 = 0; // // Valores Iniciais GPIO_PIN_0 | GPIO_PIN_1,

cont_def = 1; // total_data = 0; // while(1) { if (cont1 == 800)// Se o buffer do ADC estiver cheio { selec = 1; { // Envia todo contedo do buffer via UART0 UARTCharPut(UART0_BASE, adc_buffer1[i]); } // Se houver bytes no buffer de entrada da UART0 while(UARTCharsAvail(UART0_BASE)) { // cont_def recebe esse dado (Dado referente a escala) cont_def = UARTCharNonBlockingGet(UART0_BASE); // // Trava escrita no buffer do ADC // loop infinito

for(i = 0; i < cont1; i++)

72
if (cont_def > 200) { } } // caso o byte seja > 200, no caso o nico // valer 500, mas enviado 255 pra caber em 1 byte . cont_def = 500; // maior que 200 enviado 255, que deveria

cont1 = 0; // Zera ponteiro do buffer do ADC selec = 0; // Destrava gravao de dados no buffer do ADC } } }

73 APNDICE B O cdigo comentado do software implementado em C++, no Borland C++ Builder segue abaixo.

Unit1.c
//--------------------------------------------------------------------------#include <vcl\vcl.h> #pragma hdrstop #include "Unit1.h" #include "Unit2.h" HANDLE hComm = NULL; TRead *ReadThread; COMMTIMEOUTS ctmoNew = {0}, ctmoOld; //--------------------------------------------------------------------------#pragma link "SLScope" #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------void __fastcall TForm1::ComboBox1Select(TObject *Sender) { char comport[10]; DCB dcbCommPort; stop_aquire = 0; // StrCopy(comport,Form1->ComboBox1->Text.c_str()); hComm = CreateFile(comport, GENERIC_READ | GENERIC_WRITE, 0, // Abre a ComPort // //

74
0, OPEN_EXISTING, 0, 0); // Se no for possivel abrir a ComPort selecionada ou se ela ja estiver aberta // o aplicativo finalizado. if(hComm == INVALID_HANDLE_VALUE) Application->Terminate(); GetCommTimeouts(hComm,&ctmoOld); ctmoNew.ReadTotalTimeoutConstant = 100; ctmoNew.ReadTotalTimeoutMultiplier = 0; ctmoNew.WriteTotalTimeoutMultiplier = 0; ctmoNew.WriteTotalTimeoutConstant = 0; SetCommTimeouts(hComm, &ctmoNew); dcbCommPort.DCBlength = sizeof(DCB); GetCommState(hComm, &dcbCommPort); BuildCommDCB("460800,N,8,1", &dcbCommPort); SetCommState(hComm, &dcbCommPort); // // // Define os valores de // TimeOut da comunicao // // // Define os valoresde configurao // da ComPort selecionada. // BAUD RATE = 460800 // PARIDADE = NENHUMA // TAMANHO DA PALAVRA = 8 BITS // STOP BITS = 1 ReadThread = new TRead(false); escala = 10; TransmitCommChar(hComm, escala); Form1->tamanho1 = 400; Form1->tamanho2 = 800; Form1->aux = 399; Label2->Caption = "76,92"; } //--------------------------------------------------------------------------void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { ReadThread->Terminate(); Sleep(250); // Finaliza o Thread e da um delay // para que seja terminar a finalizao // Ativa o THREAD para iniciar a // comunicao serial. // // // Define os valores Iniciais // para desenho do grfico. // //

// Descarta todos os dados do Buffer da ComPort PurgeComm(hComm, PURGE_RXABORT); // Restaura a antiga configurao de TimeOut da ComPort SetCommTimeouts(hComm, &ctmoOld);

75
CloseHandle(hComm); } //--------------------------------------------------------------------------void __fastcall TForm1::RadioButton5Click(TObject *Sender) { escala = 255; TransmitCommChar(hComm, escala); Label2->Caption = "3846,52"; } // Grandeza de 1 Hz. // Envia ao microcontrolador a informao de escala que // deve ser usada para amostragem do sinal -> no caso 1x500*. // -----> micro segundos por amostragem. // * Nesse caso enviado 255 para que caiba // em um char. Mas no firmware da placa esse // dado alterado para 500. //--------------------------------------------------------------------------void __fastcall TForm1::RadioButton6Click(TObject *Sender) { escala = 50; TransmitCommChar(hComm, escala); Label2->Caption = "384,62"; } // Grandeza de 10 Hz. // enviado ao circuito o valor 50, // referente a escala de armazenar apenas // 1 a cada 50 pontos adquiridos. // 384,62 uS por amostragem // Fecha a comPort.

//--------------------------------------------------------------------------void __fastcall TForm1::RadioButton7Click(TObject *Sender) { escala = 10; TransmitCommChar(hComm, escala); Label2->Caption = "76,92"; } //--------------------------------------------------------------------------void __fastcall TForm1::RadioButton8Click(TObject *Sender) { escala = 5; TransmitCommChar(hComm, escala); Label2->Caption = "38,31"; } //--------------------------------------------------------------------------void __fastcall TForm1::RadioButton9Click(TObject *Sender)

76
{ escala = 1; TransmitCommChar(hComm, escala); Label2->Caption = "7,69"; } //--------------------------------------------------------------------------void __fastcall TForm1::RadioButton10Click(TObject *Sender) { escala = 1; TransmitCommChar(hComm, escala); Label2->Caption = "7,69"; } //--------------------------------------------------------------------------void __fastcall TForm1::RadioButton11Click(TObject *Sender) { escala = 1; TransmitCommChar(hComm, escala); Label2->Caption = "7,35"; } //--------------------------------------------------------------------------void __fastcall TForm1::RadioButton12Click(TObject *Sender) { escala = 1; TransmitCommChar(hComm, escala); Label2->Caption = "7,35"; } //--------------------------------------------------------------------------void __fastcall TForm1::Timer1Timer(TObject *Sender) { float vl_medio; int i,j,valor_max,trigger_pont; if (stop_aquire == 1) { // verifica se flag de escrita no buffer est travada // stop_aquire = 1, significa que est travada.

/********************************************************************************** Abaixo especificado o tamanho do buffer a ser preenchido para exibio do grfico

77
de acordo com a seleao da escala de tempo. * Tamanho1 - o numero de pontos que sero exibidos no grfico * Tamanho2 - o tamanho do buffer que deve ser acumulado antes de se iniciar o processo de desenho do grfico - necessita ser o dobro para poder rodar o algoritmo de auto trigger e trigger manual. * aux - apenas uma variavel q vale -1 do valor de tamanho 1, sua inteno facilitar e almentar a velocidade de certos loops poupando-as de mais uma conta *********************************************************************************/ if (Form1->RadioButton12->Checked) { Form1->tamanho1 = 20; Form1->tamanho2 = 40; Form1->aux = 19; } else { if (Form1->RadioButton11->Checked) { Form1->tamanho1 = 40; Form1->tamanho2 = 80; Form1->aux = 39; } else { if (Form1->RadioButton10->Checked) { Form1->tamanho1 = 200; Form1->tamanho2 = 400; Form1->aux = 199; } else { Form1->tamanho1 = 400; Form1->tamanho2 = 800; Form1->aux = 399; } } }

78
if (Form1->RadioButton1->Checked) { SLScope1->Channels->Channels[ 0 ]->Data->SetYData(buffer1, (Form1->tamanho1) ); stop_aquire = 0; } else { if (Form1->RadioButton2->Checked) { vl_medio = 0; for (i = 0; i < aux; i++) { vl_medio = vl_medio + buffer1[i]; } vl_medio = (vl_medio/aux); for (i = 0; i < aux; i++) { { trigger_pont = i; i = aux; } } j = 0; valor_max = trigger_pont + (Form1->tamanho1); // for (i = trigger_pont; i <= valor_max; i++) { buffer2[j] = buffer1[i]; j++; } // Gerao de um novo buffer a // partir do novo ponto inicial // (trigger) - Ajustado pela // derivada positiva da onda // onde corta o Valor mdio // Desenha os pontos no grfico SLScope1->Channels->Channels[ 0 ]->Data->SetYData(buffer2, (Form1->tamanho1) ); stop_aquire = 0; } else { if (Form1->RadioButton3->Checked) { // Captura com trigger manual // Como o trigger manual, aqui o // a varivel vl_mdio recebe o valor // // Clculo do valor mdio // para ajustar o nvel do // // // // if ((buffer1[i] <= vl_medio) && (buffer1[i+1] >= vl_medio)) // Procurando o ponto // onde o sinal capturado // corta o valor mdio // com derivada positiva // // Captura com auto trigger // Captura Ininterrupta

vl_medio = Form1->Edit1->Text.ToDouble();

79
for (i = 0; i < aux; i++) { { trigger_pont = i; i = aux; } } j = 0; valor_max = trigger_pont + (Form1->tamanho1); for (i = trigger_pont; i <= valor_max; i++) { buffer2[j] = buffer1[i]; j++; } stop_aquire = 0; } } } stop_aquire = 0; } } //--------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender) { Form1->Edit1->Text = Form1->Edit1->Text.ToDouble() + 0.2 ; // Incrementa nvel de trigger manual } //--------------------------------------------------------------------------void __fastcall TForm1::Button2Click(TObject *Sender) { Form1->Edit1->Text = Form1->Edit1->Text.ToDouble() - 0.2 ; // Decrementa o nvel de trigger } //--------------------------------------------------------------------------void __fastcall TForm1::Button3Click(TObject *Sender) { while (stop_aquire == 0); // Espera o buffer estar cheio para s depois desenhar os pontos SLScope1->Channels->Channels[ 0 ]->Data->SetYData(buffer1, (Form1->tamanho1) ); // Captura nica // Flag de escrita no buffer liberado // Gerao do novo buffer com os pontos // a partir do ponto onde ocorre o // cruzamento com derivada positiva // do sinal analizado com o nvel de // trigger desejado // ajustado na Edit1 - que ser o nvel // do trigger if ((buffer1[i] <= vl_medio) && (buffer1[i+1] >= vl_medio)) // Procurando o ponto // onde o sinal capturado // corta o valor ajustado // em Edit1 com derivada positiva

SLScope1->Channels->Channels[ 0 ]->Data->SetYData(buffer2, (Form1->tamanho1) ); // desenha o grfico

80
} //--------------------------------------------------------------------------void __fastcall TForm1::RadioButton4Enter(TObject *Sender) { Form1->Button3->Enabled = true; } // Habilita o boto capturar quando // o radiobutton4 (Captura nica) // ativado

//--------------------------------------------------------------------------void __fastcall TForm1::RadioButton3Click(TObject *Sender) { Form1->Button3->Enabled = false; } // Desabilita o boto capturar quando // algum radiobutton do modo de captura // diferente do radiobutton4 ativado

//-------------------------------------------------------------------------void __fastcall TForm1::RadioButton2Click(TObject *Sender) { Form1->Button3->Enabled = false; } // Desabilita o boto capturar quando // algum radiobutton do modo de captura // diferente do radiobutton4 ativado

//--------------------------------------------------------------------------void __fastcall TForm1::RadioButton1Click(TObject *Sender) { Form1->Button3->Enabled = false; } // Desabilita o boto capturar quando // algum radiobutton do modo de captura // diferente do radiobutton4 ativado

//--------------------------------------------------------------------------void __fastcall TForm1::Button4Click(TObject *Sender) { Edit3->Text = Edit2->Text.ToDouble() * Label2->Caption.ToDouble(); } //--------------------------------------------------------------------------void __fastcall TForm1::Button5Click(TObject *Sender) { Form1->Edit5->Text = Form1->Edit5->Text.ToDouble() + 0.1; } //--------------------------------------------------------------------------void __fastcall TForm1::Button6Click(TObject *Sender) { Form1->Edit5->Text = Form1->Edit5->Text.ToDouble() - 0.1; } //--------------------------------------------------------------------------// Subtrai 0,1V no ajuste de offset manual // Soma 0,1V no ajuste de offset manual // uS por diviso Edit4->Text = (1/(Edit2->Text.ToDouble() * Label2->Caption.ToDouble()))*1000000; // Frequncia do sinal

81 Unit1.h
//--------------------------------------------------------------------------#ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------#include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include "SLScope.h" #include <ExtCtrls.hpp> //--------------------------------------------------------------------------class TForm1 : public TForm { __published: // IDE-managed Components TSLScope *SLScope1; TGroupBox *GroupBox1; TComboBox *ComboBox1; TGroupBox *GroupBox2; TRadioButton *RadioButton1; TRadioButton *RadioButton2; TRadioButton *RadioButton3; TStaticText *StaticText1; TRadioButton *RadioButton4; TEdit *Edit1; TStaticText *StaticText2; TButton *Button1; TButton *Button2; TButton *Button3; TGroupBox *GroupBox3; TRadioButton *RadioButton5; TRadioButton *RadioButton6; TRadioButton *RadioButton7; TRadioButton *RadioButton8; TRadioButton *RadioButton9; TRadioButton *RadioButton10; TRadioButton *RadioButton11; TRadioButton *RadioButton12; TTimer *Timer1;

82
TLabel *Label1; TLabel *Label2; TLabel *Label3; TEdit *Edit2; TButton *Button4; TEdit *Edit3; TEdit *Edit4; TLabel *Label4; TLabel *Label5; TLabel *Label6; TLabel *Label7; TEdit *Edit5; TLabel *Label8; TButton *Button5; TButton *Button6; void __fastcall FormClose(TObject *Sender, TCloseAction &Action); void __fastcall ComboBox1Select(TObject *Sender); void __fastcall RadioButton5Click(TObject *Sender); void __fastcall RadioButton6Click(TObject *Sender); void __fastcall RadioButton7Click(TObject *Sender); void __fastcall RadioButton8Click(TObject *Sender); void __fastcall RadioButton9Click(TObject *Sender); void __fastcall RadioButton10Click(TObject *Sender); void __fastcall RadioButton11Click(TObject *Sender); void __fastcall RadioButton12Click(TObject *Sender); void __fastcall Timer1Timer(TObject *Sender); void __fastcall Button2Click(TObject *Sender); void __fastcall Button1Click(TObject *Sender); void __fastcall Button3Click(TObject *Sender); void __fastcall RadioButton4Enter(TObject *Sender); void __fastcall RadioButton3Click(TObject *Sender); void __fastcall RadioButton2Click(TObject *Sender); void __fastcall RadioButton1Click(TObject *Sender); void __fastcall Button4Click(TObject *Sender); void __fastcall Button5Click(TObject *Sender); void __fastcall Button6Click(TObject *Sender); private: public: // User declarations // User declarations

float buffer1[2000], buffer2[2000];

83
int stop_aquire,tamanho1,tamanho2,aux; unsigned char escala; __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------#endif

Unit2.c
//--------------------------------------------------------------------------#include <vcl\vcl.h> #pragma hdrstop // YOU MUST INCLUDE THE HEADER FOR UNIT1 #include "Unit1.h" #include "Unit2.h" extern HANDLE hComm; char InBuff[100]; //--------------------------------------------------------------------------__fastcall TRead::TRead(bool CreateSuspended) : TThread(CreateSuspended) { } //--------------------------------------------------------------------------void __fastcall TRead::Execute() { float data_in; char i,j; DWORD dwBytesRead; FreeOnTerminate = true; // Destroi o Thread Object quando o thread terminar while(1) { ReadFile(hComm, InBuff, 50, &dwBytesRead, NULL); // L o Buffer da Serial

84
if(dwBytesRead) { for (i = 0; i < dwBytesRead; i++) { data_in = InBuff[i]; /********************************************************************* Para que o cdigo abaixo seja compreendido vale lembrar que: *O ADC do MicroControlador da Luminary Micro l apenas de 0 a 3 Volts com preciso de 10 Bits, contudo s utilizamos 8 Bits, para agilizar a transferncia de dados. *Como na converso o valor 0 Volt vale 00000000, o valor logo acima vale 00000001 e assim segue at 3 Volts que representado por 11111111, representaes em valores onde: **0 Volt no ADC dever valer -20 Volts no grfico; **1,5 Volts no ADC dever valer 0 Volts no grfico; **3 Volts no ADC dever valer 20 Volts no grfico. Abaixo Segue o cdigo ********************************************************************/ if (!(InBuff[i] & 0x80)) { data_in = InBuff[i]; data_in = (data_in/6.4)-20; } else { data_in = (InBuff[i] & 0x7f); data_in = (data_in/6.4); } // Soma o Offset manual ao sinal de entrada data_in = data_in + Form1->Edit5->Text.ToDouble(); if (Form1->stop_aquire == 0) { Form1->buffer1[cont1] = data_in; cont1++; if (cont1 == Form1->tamanho2) { cont1 = 0; Form1->stop_aquire = 1; } // Quando o numero de pontos coletados for suficiente pra desenhar // o grfico (tamanho2) o contador zera, e o armazenamento de dados // no buffer do grfico interrompido // para que o grfico seja desenhado sem risco // Quandoo flag de aquisio de dados // stop_aquire valer 0, os dados coletados na serial // passaram a preencher o buffer do grfico necessrio um algoritmo para transformar estas // L 1 a 1 todos os Bytes que houver // no Buffer da ComPort. // Se houver Bytes no buffer

85
} } } } } // de alteraes inesperadas no contedo do buffer.

Unit2.h
//--------------------------------------------------------------------------#ifndef Unit2H #define Unit2H //--------------------------------------------------------------------------#include <Classes.hpp> //--------------------------------------------------------------------------class TRead : public TThread { private: protected: void __fastcall Execute(); public: int cont1; __fastcall TRead(bool CreateSuspended); }; //--------------------------------------------------------------------------#endif

86 APNDICE C Os esquemticos do circuito do microcontrolador e do CI Serial USB do kit de desenvolvimento da Luminary Micro, Stellaris LM3S811 Evaluation Board, segue nas Figuras 47 e 48 respectivamente. Observa-se na Figura 47 o esquema eltrico do CI LM3S811 utilizando um cristal de 6 MHz, pode-se visualizar tambm o pinos da interface JTAG. Os pinos 18 e 17, Tx e Rx respectivamente, referentes a UART0 so os que esto conectados ao CI FTDI2232c responsvel pela comunicao Serial x USB. Na Figura 48 vale notar que alm de 2 portas seriais o Chip Serial USB da FTDI possui tambm sadas de interface JTAG a fim de permitir programao e debug do microcontrolador.

87

Figura 47 - Esquemtico do LM3S811 da Kit da Luminary Micro.

88

Figura 48 - Esquemtico do CI FTDI2232c do Kit (Serial x USB).

Você também pode gostar