MARCELO GONALVES FRANCO DISPOSITIVO PARA AQUISIO DE SINAIS E CONTROLE DIGITAL VIA USB Curitib ! PR "##$ UNIVERSIDADE FEDERAL DO PARAN KLEITON CHOCHI ZEMBOVICI MARCELO GONALVES FRANCO DISPOSITIVO PARA AQUISIO DE SINAIS E CONTROLE DIGITAL VIA USB Projeto de Graduao na rea de Engenharia Eltrica apresentado Universidade Federal do Paran, como requisito parcial para a obteno do ttulo de Engenheiro Eletricista. Orientador: E%ur%& Pr'(t' Rib'ir&) Curitib ! PR "##$ 1 AGRADECIMENTOS Agradecemos a todos que nos incentivaram a fazer este trabalho, trazendo-nos fora e confiana para que no desanimssemos em nenhum instante durante a execuo deste trabalho. Agradecemos ao prof o . Dr. Eduardo Parente Ribeiro do Departamento de Engenharia Eltrica da Universidade Federal do Paran pela sugesto do tema e pelo apoio dado sempre que precisamos, orientando o projeto e indicando fontes de pesquisas para o desenvolvimento deste. Agradecemos tambm ao prof o . M.Sc. Ademar Luiz Pastro e ao prof o . Dr. Gideon Villar Leandro do Departamento de Engenharia Eltrica da Universidade Federal do Paran pelas crticas e sugestes dadas na apresentao parcial do projeto. Agradecemos ao nosso grande amigo Luis pela fora e ajuda durante o desenvolvimento do software, e ao Eng. Jefferson da Henry pelo emprstimo dos microcontroladores. Tambm agradecemos aos fabricantes de componentes MAXM e MCROCHP por terem nos disponibilizado amostras dos componentes, sem os quais no conseguiramos realizar este projeto. No poderamos esquecer de agradecer s nossas famlias e amigos, que estiveram sempre ao nosso lado e que compreenderam nossa ausncia em alguns momentos, com a certeza de que tudo isso era preciso para o sucesso deste trabalho. Acima de tudo, agradecemos um ao outro pelo empenho e dedicao dados a este trabalho, na certeza de que estaramos fazendo o possvel para o sucesso deste projeto. 2 RESUMO O dispositivo para aquisio de sinais e controle digital apresentado neste trabalho um prottipo que se assemelha a um osciloscpio digital, utilizado para captar sinais, digitaliz-los e envi-los para o computador atravs da comunicao USB. O dispositivo possui dois canais de 8 bits independentes, taxa de amostragem varivel, oito escalas de amplitude e controle digital para dois dispositivos externos. O hardware consiste de um estgio amplificador de dois canais e com ganho varivel, dois multiplexadores para seleo deste ganho e um microcontrolador, responsvel pelo tratamento do sinal, pela seleo do ganho do AmpOp atravs do controle do MUX, e pela comunicao com o computador. O firmware do microcontrolador foi elaborado em linguagem C. O software da interface grfica foi elaborado em Delphi, apresentando uma tela que lembra a de um osciloscpio convencional. P*+r,-C.+' Osciloscpio USB PC18F2550 Comunicao USB 3 ABSTRACT The device for signal acquisition and digital control presented in this work is a prototype that resembles a digital oscilloscope,used to capture signals, scan them and send them to your computer through the USB communication. The device has two independent channels of 8 bits, variable sample rate, eight amplitude scales and digital control for two external devices. The hardware consists of a stage and two-channel amplifier with variable gain, two multiplexers to select the gain and a microcontroller, which is the responsible for the signal treatment, for the selection of the AmpOp gain through MUX control, and also for the communication with the computer. The microcontrollers firmware was developed in language C. The software's graphical interface was developed in Delphi, displaying a screen that resembles that of a conventional oscilloscope. K'/ 0&r%, USB oscilloscope PC18F2550 USB communication 4 LISTA DE ABREVIATURAS E SIGLAS AMPOP - Amplificador Operacional BNC - Conector Naval Britnico (British Naval Connector) CAD - Conversor Analgico Digital C's - Circuitos ntegrados CMOS - semicondutor metal-xido complementar (complementary metal oxide semiconductor) EEPROM - Memria Programvel e Apagvel Eletricamente (Electrically Erasable Programmable Read nly !emory) GPR - Registrador de Propsito Geral ("eneral Purpose Register) HD - Dispositivo de nterface Humana (#uman $nterface Device) CSP - Programao Serial no Circuito ($n%Circuit &erial Programming') kbps - Kilo-bits por Segundo ((ilo%bits per second) kSPS - Kilo-amostras por Segundo ((ilo%&les per &econd) LSB - Bit menos significativo ()east significant Bit) LVP - Programao em Baixa Tenso ()ow *oltage Programming) MAC - Controle de Acesso ao Meio (!edia +ccess Control) Mbps - Megabits por Segundo (!ega bits per &econd) MMC - Comando de Gerenciamento Microescalonado (!icro% scheduled !anagement Command) MSB - Bit mais significativo (!ost &ignificant Bit) SCLK - Relgio da Serial (&erial Cloc,) MSPS - Mega-amostras por Segundo (Mega-Samples per Second ) PC - Controlador de nterface Programvel (Programmable $nterface Controller) ROM - Memria Somente de Leitura (Read nly !emory) SFR - Registrador de Funo Especial (&pecial -unction Register) SMD - Componente de Montagem em Superfcie (&uperficial !onting Device) 5 SRAM - Memria Esttica de Acesso Randnico (&tatic Random +ccess !emory) TDM - Multiplexao por Diviso de Tempo (.ime division !ultiplexing) TTL - Lgica Transstor-Transstor (Tr(,i,t&r-Tr(,i,t&r L&1i2) USB - Barramento Serial Universal (/niversal &erial Bus) WUSB - 0ireless USB 6 LISTA DE FIGURAS FGURA 1 TOPOLOGA USB..........................................................................19 FGURA 2 TOPOLOGA DO WRELESS USB...............................................20 FGURA 3 TPOS DE CONECTORES USB...................................................20 FGURA 4 TPOS DE CONECTORES USB...................................................21 FGURA 5 TPOS DE CONECTORES USB...................................................21 FGURA 6 TPOS DE ADAPTADORES USB..................................................22 FGURA 7 TPOS DE ADAPTADORES USB..................................................22 FGURA 8 TPOS DE ADAPTADORES USB..................................................23 FGURA 9 CORTE TRANSVERSAL DO CABO USB.....................................23 FGURA 10 MODELO DE HUB USB..............................................................31 FGURA 11 CONVERSOR ANALGCO DGTAL........................................33 FGURA 12 CRCUTO BSCO DE UM AMPOP..........................................33 FGURA 13: DAGRAMA DO DSPOSTVO COM COMUNCAO USB E CONVERSOR ANALGCO/DGTAL...............................................................34 FGURA 14: DAGRAMA DE BLOCOS DO CONVERSOR ANALGCO/DGTAL........................................................................................35 FGURA 15 LAYOUT DAS TRLHAS..............................................................40 FGURA 16 LAYOUT DOS COMPONENTES.................................................41 FGURA 17 LAYOUT DAS TRLHAS DAS PLACAS DE CORREO..........42 FGURA 18 LAYOUT DOS COMPONENTES DAS PLACAS DE CORREO - - -43 FGURA 19 PROTTPO NO MONTADO NO NTEROR DA CAXA...........43 FGURA 20 VSTA SUPEROR DA CAXA.....................................................44 FGURA 21 VSTA SUPEROR ESQUERDA DA CAXA................................44 FGURA 22 VSTA SUPEROR DRETA DA CAXA......................................45 FGURA 23 TELA DE NTERFACE DO PCWHD...........................................48 FGURA 241 - ESQUEMA ELETRNCO DO PROGRAMADOR ...................49 FGURA 25 GRAVADOR DO PC...................................................................49 FGURA 26 TELA DE NTERFACE DO PCPGM DEVELOP. PROGRAMMER V1.0.1.5...............................................................................................................50 FGURA 27 - MCROCONTROLADOR 18F2550 .............................................51 7 FGURA 28 FLUXOGRAMA DO FRMWARE.................................................52 FGURA 29 TELA DE NTERFACE GRFCA DO BORLAND DELPH SECOND EDTON VERSO 7.2.......................................................................55 FGURA 30 FLUXOGRAMA DO PROGRAMA EM DELPH...........................60 FGURA 31 TELA DE NTERFACE GRFCA DO PROGRAMA FNAL........61 8 LISTA DE QUADROS QUADRO 1: RELAO DE RESSTORES UTLZADOS.................................45 QUADRO 2: RELAO DE CAPACTORES UTLZADOS..............................46 QUADRO 3: RELAO DE CRCUTOS NTEGRADOS UTLZADOS...........46 QUADRO 4: RELAO DOS DEMAS COMPONENTES UTLZADOS..........46 QUADRO 5 PNOS UTLZADOS NO PC......................................................52 9 SUMRIO AGRADECMENTOS...........................................................................................1 RESUMO.............................................................................................................2 ABSTRACT..........................................................................................................3 LSTA DE ABREVATURAS E SGLAS..............................................................4 LSTA DE FGURAS............................................................................................6 LSTA DE QUADROS..........................................................................................8 SUMRO............................................................................................................9 1. NTRODUO .............................................................................................. 11 1.1. OBJETVO.................................................................................................11 1.1.1. OBJETVO GERAL.................................................................................12 1.1.2. OBJETVO ESPECFCO.......................................................................12 1.2. JUSTFCATVA.........................................................................................12 2. CONCETOS ................................................................................................. 14 2.1. PRNCPAS CONCETOS........................................................................14 2.1.1. OSCLOSCPO....................................................................................14 2.1.2. USB.........................................................................................................15 2.1.2.1. HSTRCO.........................................................................................16 2.1.3. WRELESS USB WUSB......................................................................17 2.1.4. PRNCPAS CARACTERSTCAS DO USB.........................................17 2.1.5. TOPOLOGA USB..................................................................................18 2.1.6. TPOS DE CONECTORES E ADAPTADORES USB ...........................20 2.1.7. CABO USB.............................................................................................23 2.1.8. HOST USB..............................................................................................24 2.1.9. PROTOCOLO USB................................................................................25 2.1.10. ENUMERAO....................................................................................26 2.1.11. MODELO DE FLUXO DE DADOS.......................................................27 2.1.12. DSPOSTVOS USB............................................................................29 2.1.13. DGTALZAO DE SNAS...............................................................32 2.1.14. AMPLFCAO DE SNAS................................................................33 3. ARQUTETURA DO PROTTPO ............................................................... 34 3.1. ANLSE DOS PRNCPAS COMPONENTES DO CRCUTO...............35 10 3.1.1. ESCOLHA DO MCROCONTROLADOR...............................................36 3.1.2. ESCOLHA DO MULTPLEXADOR.........................................................37 3.1.3. ESCOLHA DO AMPLFCADOR OPERACONAL.................................38 4. CONCLUSES ............................................................................................. 63 4.1. PERSPECTVAS.......................................................................................64 REFERNCAS BBLOGRFCAS..................................................................65 REFERNCAS PARA PESQUSA...................................................................66 ANEXO A - CRONOGRAMA DO PROJETO....................................................69 ANEXO B DAGRAMA ESQUEMTCO DO CRCUTO...............................70 ANEXO C DAGRAMA ESQUEMTCO DO CRCUTO DE TRATAMENTO DE SNAS..........................................................................................................72 ANEXO D DAGRAMA ESQUEMTCO DA FONTE EXTERNA..................73 ANEXO E CDGO FONTE DO FRMWARE................................................74 ANEXO F CDGO FONTE DO SOFTWARE...............................................78 11 3) INTRODUO A medio e a anlise de sinais so de fundamental importncia para muitos profissionais, principalmente na rea de eletro-eletrnica. Esta medio pode ser feita de diversas maneiras. Muitos so os dispositivos existentes para realizar medies em circuitos eltricos ou eletrnicos, seja um simples multmetro de bolso com seus recursos limitados ou um sofisticado osciloscpio de bancada com suas vrias funes especiais, ou ainda os analisadores de espectro. Cada um dos equipamentos tem sua aplicao, dependendo das necessidades de preciso, confiabilidade e custo, o usurio pode optar pelo equipamento que satisfaa sua necessidade. Quanto maior a complexidade do equipamento, confiabilidade, preciso, quantidade de recursos e ainda a tecnologia utilizada, maior ser o custo do equipamento. Juntando a eletrnica e os recursos do computador, resolveu-se desenvolver um dispositivo para anlise de sinais, semelhante a um osciloscpio, porm, de mais baixo custo. O dispositivo para aquisio de sinais e controle digital via USB um dispositivo que captura os sinais a serem analisados atravs de pontas de prova conectadas a entradas do tipo BNC, trata o sinal e envia atravs de uma conexo USB para um microcomputador, onde, por meio de uma interface grfica, o sinal ento mostrado em uma tela, similar a de um osciloscpio comum. Este projeto foi baseado no trabalho de concluso de curso dos graduandos Leandro Silva Piecarz e Walter Luciano Espndola, apresentado em 2007 [1]. Partindo da idia base buscou-se aprimorar e evoluir o dispositivo apresentado por estes formandos de 2007. 3)3) Ob4'ti+& O objetivo deste projeto desenvolver um dispositivo para aquisio e tratamento de sinais, e envio destes atravs de conexo USB para um 12 computador que, previamente carregado com um software, mostrar os sinais a serem analisados na tela. Tambm incorporado ao projeto tem-se um controlador de dispositivos atravs do computador, com sadas digitais para os equipamentos a serem controlados. 3)3)3) Ob4'ti+& 1'r* O objetivo geral deste projeto desenvolver um hardware e um software na rea de instrumentao e controle, voltado para a medio de sinais e o controle de dispositivos externos, visando custo baixo e facilidade de uso. 3)3)") Ob4'ti+& ',5'267i2& Projetar um circuito eletrnico para a aquisio de sinais com dois canais de oito bits, com taxa de amostragem pr-definido no firmware em 32kSPS e oito escalas de amplitude variando de 0,02V a 25V. Desenvolver um firmware para a comunicao via USB e digitalizao do sinal. Desenvolver uma interface grfica para que os sinais sejam mostrados na tela do computador. Confeccionar o prottipo do dispositivo. 3)") 8u,ti7i2ti+ Vrias so as motivaes para o desenvolvimento deste projeto, dentre as principais pode-se citar os seguintes: A utilizao dos conhecimentos em eletrnica analgica e digital para desenvolver o circuito. 13 A possibilidade de confeccionarmos a placa, visto que esta parte prtica extremamente apreciada pelos membros da equipe. O desafio de desenvolver uma interface grfica no computador, sendo que nenhum dos membros da equipe tinha conhecimentos aprofundados no assunto, tendo ento que estudar e aprender mais sobre isto. A possibilidade futura de comercializao, adequando o produto s normas e evoluindo o prottipo com as possveis correes e sugestes. 14 ") CONCEITOS Nesta parte do trabalho ser apresentado um breve resumo de conceitos necessrios para o entendimento da seqncia do projeto. Sero abordados conceitos bsicos sobre osciloscpios e suas principais funes, comunicao via porta USB com suas principais caractersticas e protocolos, bem como dispositivos que usam este tipo de comunicao. Tambm sero abordados os temas de digitalizao e amplificao de sinais. ")3) Pri(2i5i, C&(2'it&, ")3)3) O,2i*&,295i& Osciloscpio basicamente um dispositivo de visualizao grfica que mostra sinais, contnuos ou alternados, eltricos no tempo. Um osciloscpio pode ser usado para determinar diretamente o perodo ou a tenso de um sinal, determinar indiretamente a freqncia de um sinal ou ainda para medir a diferena de fase entre dois sinais peridicos. Os sinais captados pelo osciloscpio so geralmente mostrados em uma tela retangular de tamanho 10cmx8cm com divises de 1cm e, nos eixos X e Y cada quadrado ainda possui subdivises de 0,2cm o que facilita a leitura dos sinais analisados. Para realizar a captura dos sinais se faz necessrio o uso de ponteiras de prova adequadas para o modelo de osciloscpio usado. Geralmente essas ponteiras so atenuadoras com escalas de atenuao de 1:1, 1:10 ou 1:100, resposta em freqncia com escalas de 20MHz a 300MHz e conexo do tipo BNC. As escalas de atenuao e resposta em freqncia dependem do modelo da ponteira. Os osciloscpios podem ser analgicos ou digitais, normalmente com uma ou duas entradas de sinal e que permitem a visualizao dos canais separadamente ou simultaneamente. As funes mais comuns encontradas nos osciloscpios so: 15 CH1 mostra apenas o sinal do canal 1. CH2 mostra apenas o sinal do canal 2 . ALT mostra alternadamente varreduras completas de cada um dos canais. Para que a atlernncia no seja perceptvel a varredura deve apresentar um perodo inferior a 1/n da persistncia da retina do olho humano, onde n o nmero de canais amostrados. Para dois canais, por exemplo, um perodo equivalente a 50Hz suficiente. CHOP a apresentao dos dois canais efetuada em uma nica varredura completa do feixe de eltrons por partilha de tempo. A comutao efetua-se a elevada freqncia, 100kHz, de forma a garantir que a distncia entre traos consecutivos seja inferior ao dimetro da mancha luminosa. Deste modo a sequncia de pequenos traos percebida como uma linha contnua. No entanto, se a freqncia de varredura for numa freqncia mais baixa, pode-se observar um trao descontnuo. ADD mostra a soma dos sinais presentes nos canais 1 e 2. Tambm encontramos em um osciloscpio botes para seleo de escalas de tempo e de amplitude do sinal. O ajuste da escala de amplitude independente para cada um dos canais e o ajuste da escala de tempo comum aos dois canais, em alguns modelos de osciloscpios ainda podemos ter essa seleo da escala de tempo em separado para cada um dos canais. [6], [7] e [8]. ")3)") USB Diversas caractersticas, como sua velocidade de transmisso, sua versatilidade, sua facilidade de uso e sua confiabilidade, fazem do USB uma interface perfeita para efetuar comunicao com os mais diversos perifricos, desde um mouse at uma cmera digital, inclusive permitindo a leigos instalar o seu prprio perifrico no seu computador pessoal. 16 2. 1. 2. 1. Hi,t9ri2& A verso 1.0 do padro USB foi lanada em janeiro de 1996. No entanto, ele s se tornou disponvel para computadores pessoais com o lanamento da verso "E! &ervice Release 1 do 0indows 95, no segundo semestre de 1996. O seu uso ainda era muito limitado, visto que no havia muitos perifricos que utilizavam este barramento, e o suporte tcnico desta verso ainda possua muitos erros. Por volta de 1998, a quantidade de perifricos desenvolvidos com o padro USB havia aumentado muito, e o lanamento do 0indows 98 e de sua verso subseqente, o "0indows 23 &econd Edition, que corrigiu alguns erros da anterior, permitiram que o USB se tornasse uma interface bastante popular. Em setembro de 1998 foi lanada a verso 1.1 do padro USB. Ambas as verses (citadas em conjunto como USB 1.x) permitiam duas velocidades, chamadas )ow%&peed (1,5 Mbps) e -ull%&peed (12 Mbps). Com o aumento na popularidade do USB 1.x, tornou-se aparente a necessidade de se aumentar a velocidade do barramento. Visto isso, foi lanado em abril de 2000 a verso 2.0 do padro USB, que introduziu uma nova velocidade de transferncia: #i%&peed (480 Mbps). Este valor no foi escolhido por acaso: pesquisas mostraram que para uma velocidade de transmisso possibilitar compatibilidade reversa com as velocidades anteriores, ela deveria ser 40 vezes maior do que a -ull &peed. Esta nova velocidade tornou o USB mais atrativo para perifricos como dispositivos de armazenamento e impressoras. Em dezembro de 2001, foi lanado um suplemento para o USB 2.0, chamado USB n%.he%"o, que permitiu a conexo direta entre perifricos, ao contrrio da implementao padro, que exige a conexo do perifrico a um computador. E em maio de 2005, completou-se a especificao tcnica de outra extenso do USB, denominada Certified 0ireless USB (ou, simplesmente, 0ireless USB), que permite que a transmisso USB seja realizada sem fios. [2]. 17 ")3):) Wireless USB ! ;USB O WUSB utiliza formatos de pacotes definidos na subcamada MAC (!edia +ccess Control Controle de Acesso ao Meio) da camada enlace. Existem quatro tipos bsicos de pacote utilizados neste protocolo: Pacotes MMC (!icro%scheduled !anagement Command Comando de Gerenciamento Microescalonado): so pacotes de controle da transmisso de rdio. Estes pacotes endeream todos os dispositivos da rede WUSB e so transmitidos utilizando encapsulamento seguro de pacotes. Devem ser transmitidos sempre pelo host da rede e taxa de bits mais confivel do protocolo, que a taxa bsica de sinalizao da camada fsica. Pacotes de dados: estes pacotes podem ser transmitidos tanto por um host como por um dispositivo e carregam dados especficos da aplicao. Podem ser transmitidos a qualquer taxa de bits que seja permitida pela implementao. Pacotes de "handsha,e: so pacotes pequenos que indicam sucesso das transaes. Transmitidos sempre pelos dispositivos da rede WUSB, so parte importante do protocolo, e por isso devem ser transmitidos, assim como os pacotes MMC, taxa de bits mais confivel do mesmo. Pacotes de notificao: podem ser transmitidos apenas por dispositivos e so utilizados para carregar informaes de notificao especficas para o host. [2]. ")3)<) Pri(2i5i, 2r2t'r6,ti2, %& USB O USB tem como principais caractersticas as seguintes: O computador atua como um host. Podem ser conectados ao host at 127 dispositivos, diretamente ou atravs de hubs USB. 18 Cabos individuais USB podem ter at 5 metros; com hubs, os dispositivos podem ficar at 30 metros de distncia do host (o equivalente a seis cabos). Com o USB 2.0, o barramento possui uma taxa mxima de transferncia de dados de 480 Mbps. Um cabo USB possui dois fios para energia (+5 volts e o fio terra) e um par tranado para a conduo dos dados. Nos cabos de energia, o computador poder fornecer at 500 mA de energia a 5 volts. Os dispositivos de baixa-potncia (como o mouse) podero puxar a energia diretamente do barramento. Os dispositivos de alta- potncia (como impressoras) possuem fonte prpria de alimentao e exigem mnima energia do barramento. Os hubs podem ter suas prprias fontes de energia para fornecer energia aos dispositivos conectados a ele. Os dispositivos USB so hot%swappable (conectveis "a quente"), ou seja, podem ser conectados e desconectados a qualquer momento. Os diversos dispositivos USB podem ser colocados no modo sleep (hibernar) pelo computador host, quando o computador entrar no modo de economia de energia. [2], [3], [4] e [5]. ")3)=) T&5&*&1i USB O barramento USB possui uma topologia da forma de estrela em camadas (tiered star). Neste tipo de topologia, um nico PC (root) pode se conectar a vrios perifricos (partes que provem funes ao sistema) e ainda, a hubs (pontos de conexo, definidos como uma classe especial de dispositivos no USB), que por sua vez conectam outros perifricos. No centro de cada estrela, h um hub e cada ponto um dispositivo que se conecta a uma porta de um hub. Um hub tpico pode possuir 2, 4 ou 7 portas. Um dispositivo (perifrico) pode ainda ser um dispositivo composto, 19 contendo um perifrico e um hub (por exemplo, uma impressora conectada a um host PC pode possuir portas USB, para que possamos "plugar um cabo para imprimir fotos diretamente de uma cmera digital ou ainda conectar outros dispositivos). A cada dispositivo composto na rede designado um endereo nico. Fi1ur 3 ! T&5&*&1i USB F&(t'> .tt5>??000)5%,)u7r4)br?@r5&5&rt?u,b?u,b<).tA* No USB, o host inicia uma transmisso de dados atravs dos dispositivos conectados a ele atravs da alocao de slots de tempo a cada dispositivo (.ime division !ultiplexing % .D!). As conexes entre um host e um dispositivo lgico so ponto-a-ponto e dirigidas do host para o dispositivo. Alm disso, um host no USB pode fazer conexes lgicas com at 127 dispositivos. O 0ireless USB possui topologia semelhante ao do USB cabeado, onde a diferena principal entre as duas a ausncia de hubs na no-cabeada. [2] e [3]. 20 Fi1ur " ! T&5&*&1i %& Wireless USB F&(t'> site http://www.gta.ufrj.br/grad/07_1/wusb/TopologiadoUSB.html ")3)B) Ti5&, %' 2&('2t&r', ' %5t%&r', USB ")3)B)3) C&('2t&r', Fi1ur : ! Ti5&, %' C&('2t&r', USB F&(t'> site http://www.gdhpress.com.br/hardware/leia/index.php?p=cap3-18 21 Fi1ur < ! Ti5&, %' C&('2t&r', USB F&(t'> site http://www.intel.com/support/pt/motherboards/desktop/sb/CS-023466.htm Fi1ur = ! Ti5&, %' C&('2t&r', USB F&(t'> site http://eletronline.blogspot.com/2009/02/universal-serial-bus-usb.html 22 ")3)B)") A%5t%&r', Fi1ur B ! Ti5&, %' A%5t%&r', USB F&(t'> site https://loja.tray.com.br/adm/editor/up/108972/1499_g.jpg Fi1ur C ! Ti5&, %' A%5t%&r', USB F&(t'> site www.atera.com.br/figuras/kitusb1399.GF 23 Fi1ur D ! Ti5&, %' A%5t%&r', USB F&(t'> site http://www.gdhpress.com.br/hardware/leia/cap3-18_html_67a5b903.jpg ")3)C) Cb& USB O cabo USB um cabo blindado que possui que possui internamente outros quatro cabos, como na figura a seguir: Fi1ur $ ! C&rt' Tr(,+'r,* %& Cb& USB F&(t'> site http://www.laercio.com.br/artigos/hardware/hard-051/hard-051c.htm 24 Os cabos USB possuem no seu interior, 2 pares de fios. Um par tranado e formado por fios branco e verde ou, em alguns modelos, amarelo e azul. Atravs desses dois fios trafegam os dados, no formato serial. Esses dois sinais formam o que chamamos de par diferencial. Ao invs de ter um fio de terra e outro de sinal, os dois levam o mesmo sinal, mas com polaridades invertidas, portanto so chamados de D+ e D. A vantagem do par diferencial a alta imunidade a rudos eltricos e interferncias em geral. O cabo possui ainda os fios V+ (vermelho) e GND (preto ou marrom) em cada segmento para distribuir energia aos dispositivos. V+ nominalmente +5 V na fonte. Envolvendo esses dois pares de fios temos uma camada formada por uma folha de alumnio e uma blindagem externa, formada por uma malha de cobre. Envolvendo tudo temos uma camada protetora de plstico. O USB permite a utilizao de segmentos de cabo variveis de 0,5 metros at 5 metros, escolhendo-se um padro adequado de condutores. Para fornecer nveis de tenso de entradas garantidos e impedncias apropriadas nas terminaes, so utilizadas terminaes parciais no fim da cada cabo. Estas terminaes permitem a deteco da conexo e remoo em cada porta e a diferenciao entre dispositivos de alta e baixa velocidade. [3], [4] e [5]. ")3)D) Host USB Existe apenas um host num sistema USB. A interface USB para o sistema do computador hospedeiro refere-se ao controlador do mesmo. O controlador do host pode ser implementado em combinao de hardware e software. O host USB interage com os dispositivos atravs do controlador do mesmo. O host responsvel por: Detectar a conexo e remoo de dispositivos USB. Gerenciar o fluxo de controle e de dados entre ele e os perifricos. Coletar estatsticas de atividades e estado. 25 Fornecer alimentao aos dispositivos conectados. O software do sistema USB no host gerencia interaes entre dispositivos USB e o software do dispositivo instalado no prprio hospedeiro. Existem cinco reas de interao entre o software do sistema USB e o software do dispositivo: Enumerao e configurao do dispositivo. Transferncias isossncronas de dados. Transferncias assncronas de dados. Gerenciamento de energia. Gerenciamento de informaes de barramentos e dispositivos. Sempre que possvel, o software do sistema usa interfaces existentes no host para gerenciar as interaes acima. [3]. ")3)$) Pr&t&2&*& USB O USB um barramento receptor (ou de contagem). O controlador do host inicia todas as transferncias de dados. Todas as transaes do barramento envolvem a transmisso de at trs pacotes. Cada transao se inicia quando o controlador do host envia um pacote USB descrevendo o tipo e a direo da transao, o endereo do dispositivo USB e o nmero do ponto final (endpoint). O ponto final de um dispositivo a nica poro enderevel deste que a fonte de informao em um fluxo de comunicaes entre o host e o prprio. O nmero de endpoint um valor de 4 bits entre 0(hex) e F(hex), inclusive, associado a um ponto final de um perifrico USB. Este primeiro pacote conhecido como "pacote de sinal" (to,en pac,et). O dispositivo USB, que endereado, seleciona a si mesmo pela decodificao do endereo apropriado. Em uma dada transao, dados so transferidos do host para o dispositivo ou vice-versa. A direo da transferncia especificada no to,en pac,et. A fonte da transao envia ento um pacote de dados ou indica que no h mais dados para serem transferidos. O 26 destinatrio, em geral, responde com um "pacote aperto de mo" (handsha,e pac,et), indicando o sucesso da transferncia. O modelo para transferncias de dados entre a fonte ou um destino no host e um ponto final de um dispositivo conhecido como pipe (tubo ou canal). Existem dois tipos de pipe: correntes (stream) e mensagens (message). Uma corrente de dados no possui uma estrutura USB definida, enquanto as mensagens possuem. Alm disto, os tubos possuem associaes com as bandas de transmisso de dados, tipos de servios de transferncia e caractersticas de endpoint, como direo e tamanho de buffer. A maioria dos tubos passa a existir quando um dispositivo configurado. Uma mensagem de pipe, "default control pipe4, sempre existe enquanto o dispositivo est sendo alimentado, para que possa fornecer acesso s configuraes, informaes de controle e status deste. A listagem das transaes permite o controle do fluxo para vrias correntes de tubos (stream pipes). O mecanismo de controle de fluxo permite a construo de listas flexveis, que acomodam servios concorrentes de misturas heterogneas de stream pipes. Mltiplas correntes de pipes podem ser servidas em diferentes intervalos e com pacotes de diferentes tamanhos. [3]. ")3)3#) E(uA'rEF& A enumerao a atividade que identifica e atribui endereos nicos para os dispositivos ligados ao barramento. Por permitir a conexo e remoo de dispositivos em qualquer instante de tempo, a enumerao uma atividade ininterrupta para o software do sistema. Alm disso, a enumerao tambm inclui a deteco e o processo de remoo de perifricos. [3]. 27 ")3)33) M&%'*& %' 7*uG& %' %%&, O barramento suporta dados funcionais e substituio de controles entre o host e perifricos, assim tambm como um conjunto de pipes unidirecionais ou bidirecionais. As transferncias de dados realizam-se entre o software do host e um endpoint particular em um dispositivo USB. Algumas destas associaes que so chamadas de pipes (tubos ou canais). Geralmente, o movimento de dados atravs de um tubo independente do fluxo de dados em outro tubo. Um dado dispositivo USB deve possuir vrios endpoints. Por exemplo, o dispositivo deve ter um ponto final que suporte um tubo transportando dados para o dispositivo e outro que suporte o transporte de dados no sentido contrrio. Na arquitetura USB so quatro tipos bsicos de transferncias de dados: Transferncia de Controle: Usada para configurar um dispositivo no instante de sua conexo e pode ser usada para outros propsitos especficos, incluindo controle de outros pipes no dispositivo. Transferncia de Volume de Dados: Gerada e consumida em grandes quantidades e simultaneamente, sem restrio de tempo. Possui uma ampla e dinmica latitude em transmisses de reserva. Este tipo de dado seqencial. A largura das bandas de transmisso para este tipo de transferncia de dados pode variar dependendo de outras atividades concorrentes do barramento. um tipo de transmisso que assegura a integridade dos dados, mas no a velocidade de transmisso. Transferncias de Dados por nterrupo: Usada para caracteres ou coordenadas com percepes humanas ou caractersticas de respostas regenerativas. Alguns dados podem ser apresentados para transferncias por um dispositivo em qualquer instante e distribuda pelo USB a uma taxa nunca mais lenta quanto a especificada pelo dispositivo. Transferncia sossncronas de Dados: Fluxo de dados constantes em intervalos equivalentes. Ocupa uma quantidade pr-negocivel da banda de transmisso do barramento, com a distribuio de pulsos. Chamada 28 tambm de transferncia de correntes em tempo real (streaming real% time transfers). [3]. ")3)33)3) Tr(,7'rH(2i %' 2&(tr&*' Dados de controle so usados pelo software de sistema do USB para configurar os dispositivos durante a primeira conexo destes. Outros drivers podem ser escolhidos para utilizar transferncias de controle em implementaes especficas. A distribuio de dados perdida. [3]. ")3)33)") Tr(,7'rH(2i %& ti5& bulk Volume de dados, tipicamente, consiste em grandes quantidades destes, assim como os usados em impressoras e scanners. Este tipo de dado seqencial. Trocas de dados confiveis so asseguradas por hardware utilizando a deteco de erros do prprio. Vale lembrar tambm que a largura das bandas de transmisso para este tipo de transferncia de dados pode variar dependendo de outras atividades concorrentes do barramento. um tipo de transmisso que assegura a integridade dos dados, mas no a velocidade de transmisso. Esta apenas garantida pelo melhor esforo, isto , caso haja possibilidade de transmisso mais rpida, esta ser feita. [3]. ")3)33):) Tr(,7'rH(2i %' i(t'rru5EF& Uma transferncia pequena e limitada de, ou para, um dispositivo chamada de interrupo. Alguns dados podem ser apresentados para transferncias por um dispositivo em qualquer instante, e distribuda pelo USB a uma taxa nunca mais lenta quanto a especificada pelo dispositivo. Dados de interrupo consistem tipicamente de notificaes de eventos, caracteres ou coordenadas que so organizadas com um ou mais bytes. [3]. 29 ")3)33)<) Tr(,7'rH(2i i,&,,6(2r&( Dados isossncronos so contnuos e em tempo real na sua criao e distribuio. nformaes relacionadas ao sincronismo so sugeridas pela taxa fixa em que cada dado isossncrono recebido e transferido. Este tipo de dado deve ser distribudo de acordo com a taxa de recepo para que o seu sincronismo seja mantido. Alm disso, a taxa de distribuio deve ser sensvel a atrasos nesta atividade. Para pipes isossncronos a banda de transmisso se baseia em amostras caractersticas das funes associadas. Um exemplo tpico de dado isossncrono a voz. Caso a taxa de distribuio destes dados no seja mantida, iro ocorrer "saltos" na corrente de dados. Ainda se o dado distribudo na taxa apropriada pelo hardware USB, atrasos de distribuio introduzidos por software podem degradar aplicaes que necessitam de transmisses em tempo real, como telefonia e udio conferncias. Correntes isossncronas de dados so alocados em uma determinada poro da banda de transmisso para assegurar que os dados sero distribudos na taxa desejada. [3]. ")3)3") Di,5&,iti+&, USB Dispositivos USB so divididos em diversas classes. Estes componentes so necessrios para carregar informaes, auto-identificao e configuraes genricas. ")3)3")3) Cr2t'riIEF& %' %i,5&,iti+&, Todos os dispositivos USB so acessados por um endereo atribudo durante sua conexo e enumerao. Cada componente adicionado suporta um ou mais pipes, atravs dos quais o host pode se comunicar com os componentes. Todo componente USB suporta um canal especialmente 30 designado no ponto final zero para que seja includo o canal de controle (control pipe). Atravs deste pipe de controle, dispositivos USB suportam um mecanismo de acesso comum para obter informaes. O canal de controle no endpoint zero a informao necessria para descrever completamente o dispositivo USB. A informao dividida em trs categorias: &tandard: A definio comum para todos os perifricos USB e inclui itens como a identificao do vendedor, classe do dispositivo e o gerenciamento de alimentao. Configuraes, interface e descries de endpoint dos dispositivos carregam informaes relacionadas sobre o mesmo. Class: A definio desta informao varia, dependendo das classes de dispositivos. Vendedores USB: O vendedor de dispositivos USB livre para adicionar qualquer informao desejada. [3]. ")3)3")") D',2riEF& %&, %i,5&,iti+&, Existem duas classes majoritrias de dispositivos: hubs e funes. Somente os hubs possuem a caracterstica de fornecer pontos adicionais de conexo ao barramento. Funes propiciam um aumento de capacidade ao host. ")3)3")")3) Hubs #ubs so elementos chave na arquitetura plug and play do USB e servem para simplificar a conectividade de acordo com as perspectivas dos usurios, alm de oferecer segurana a baixo custo e complexidade. Fios concentrados constituem os hubs. Estes por sua vez ativam as caractersticas de conexo do USB. Pontos de conexo so chamados de portas. Cada hub converte um simples ponto de conexo em vrios outros. A arquitetura suporta a concatenao de hubs. 31 A porta principal (upstream port) de um hub o conecta como o host. Cada porta secundria (downstream port) permite a conexo de outro hub ou funo. Os hubs podem detectar a conexo e a remoo de um dispositivo, tanto de baixa quanto de alta velocidade, nas portas secundrias, alm de distribuir energia para estes. Duas partes constituem um hub: o controlador e o repetidor. Este ltimo um protocolo de mudana controlado entre as portas secundrias e a primria. Tambm possui suporte de hardware para reiniciar e suspender a transmisso de sinais. O controlador do host propicia aos registradores da interface permitir a comunicao de, ou, para o host. Comandos de controle e estados especficos permitem ao host configurar um hub, alm de monitorar e controlar as suas portas. [3]. Fi1ur 3# ! M&%'*& %' Hub USB F&(t'> site http://www.pads.ufrj.br/~rapoport/usb/usb4.html ")3)3")")") Fu(EJ', Uma funo um dispositivo que capaz de transmitir ou receber dados ou informaes de controle do barramento, estando conectado, por um cabo, a uma porta ou hub. Alm disso, um pacote fsico pode conter funes mltiplas e possuir hosts embutidos. Estes so conhecidos como dispositivos compostos e aparecem para o host como um hub com um ou mais dispositivos no- removveis. Cada funo contm informaes de configuraes que descrevem suas capacitaes e recursos exigidos. Antes de poder utilizar uma funo, o host 32 deve configur-la Esta configurao inclui a alocao da banda de transmisso e a seleo das opes especficas para a configurao da funo. Abaixo seguem alguns exemplos de funes: Um dispositivo localizador, como um mouse. Um dispositivo de entrada, como um teclado. Um dispositivo de sada, como uma impressora. Um adaptador de telefonia, como um SDN. [3]. ")3)3:) Di1it*iIEF& %' ,i(i, Para digitalizar um sinal, precisamos de uma base de tempo e um Conversor Analgico Digital (CAD), que fornea uma aproximao digital do sinal original, como mostrado na figura 11. A aproximao digital registrada em "n bits e a variao de amplitude do sinal digitalizado pode ser reduzida para uma resoluo de, no mximo, uma parte de 2 n . Exemplo: para um conversor de 8 bits que pode converter sinais analgicos entre 0V e 5V, a resoluo do conversor A/D dada pelo valor mximo do sinal analgico dividido pelo valor mximo de combinaes de bits. Neste caso a resoluo seria 5 dividido por 2 8 , o que resultaria numa resoluo de 0,01953125V ou 19,53125mV. A base de tempo determina a velocidade com que podemos amostrar a forma de onda e varia com o tipo de CAD. Em geral, quanto maior for o nmero de bits, mais lento o dispositivo. O bit mais significativo (MSB) o que registra a maior variao de tenso, e o bit menos significativo (LSB) registra a menor variao de tenso. [1], [9] e [10]. 33 Fi1ur 33 ! C&(+'r,&r A(*91i2& Di1it* F&(t'> site http://www.universiabrasil.net/mit/6/6071/PDF/f02-lec20a_val.pdf ")3)3<) AA5*i7i2EF& %' ,i(i, Como os sinais analisados podem assumir amplitudes muito baixas, da ordem de mili ou micro-volts, neste projeto usado um amplificador de sinais, o TL072, responsvel por amplificar o sinal amostrado para valores adequados anlise. A amplificao do sinal depende do ganho do amplificador operacional, e este ganho regulado atravs do valor do resistor R2. Fi1ur 3" ! Cir2uit& BK,i2& %' uA AA5O5 F&(t'> Datasheet do componente TL072 34 :) ARQUITETURA DO PROTLTIPO A arquitetura definida para este prottipo foi a de um microcontrolador com comunicao via USB e conversor analgico/digital internos. Para a placa foi definido o layout de apenas uma face de trilhas. Na arquitetura do microcontrolador com conversor analgico/digital interno, o microcontrolador o responsvel em converter o sinal analgico capturado por qualquer uma das entradas do dispositivo em digital. Como a amplitude do sinal capturado pode ser varivel, usado um amplificador para cada entrada do dispositivo, com ganho varivel ajustado pelo microcontrolador. O ganho definido atravs de seleo feita pelo usurio no software, esta seleo gera um sinal que vai do PC para o multiplexador, selecionando o resistor correspondente ao ajuste de escala desejado, e este resistor por sua vez, quem define o ganho do amplificador. A comunicao e o envio de sinais entre o dispositivo e o computador so feitos atravs da comunicao USB do microcontrolador com o computador. Fi1ur 3:> Di1rA %& %i,5&,iti+& 2&A 2&Au(i2EF& USB ' 2&(+'r,&r (*91i2&?%i1it* F&(t'> ttcsope 35 Fi1ur 3<> Di1rA %' b*&2&, %& 2&(+'r,&r (*91i2&?%i1it* F&(t'> Datasheet do microcontrolador PC18F2550 :)3) A(K*i,' %&, Pri(2i5i, C&A5&('(t', %& Cir2uit& Os principais componentes deste circuito, e que sero analisados a seguir, so: Microcontrolador Multiplexador Amplificador Operacional 36 :)3)3) E,2&*. %& Ai2r&2&(tr&*%&r Foram analisados microcontroladores dos fabricantes ATMEL, MCROCHP e TEXAS NSTRUMENTS. As pesquisas foram feitas atravs das ferramentas de auxlio para verificao de modelos disponveis no site de cada fabricante, nestas ferramentas coloca-se os dados que interessam para o projeto e a ferramenta mostra o que o respectivo fabricante tem que possua as caractersticas desejadas. No site da ATMEL encontra-se o microcontrolador AT91CAP7E Caractersticas principais: 256 kbytes de memria ROM interna 160 kbytes de memria SRAM interna USB 2.0 Conversor analgico/digital de 10-bits Cloc, varivel de 8 a 16 MHz Programao "in circuit Encapsulamento LFBGA com 225 pinos No site da TEXAS NTRUMENTS no foi obtido nenhum microcontrolador que apresentasse as caractersticas desejadas (USB e CAD). J no site da MCROCHP foram encontradas 2 opes de microcontroladores, PC18F2550 e PC18F4550, ambos continham as principais caractersticas desejadas, comunicao via USB e conversor analgico/digital. Caractersticas principais: - PC18F2550: USB 2.0 Cloc, varivel de 8 a 48 MHz Conversor analgico/digital de 10-bits Programao "in circuit 37 32 kbytes de memria -)+&# 2048 bytes de memria SRAM 256 bytes de memria EEPROM 24 portas de entrada/sada Encapsulamentos PDP e SOC de 28 pinos - PC18F4550: USB 2.0 Cloc, varivel de 8 a 48 MHz Conversor analgico/digital de 10-bits Programao "in circuit 32 kbytes de memria -)+&# 2048 bytes de memria SRAM 256 bytes de memria EEPROM 35 portas de entrada/sada Encapsulamentos PDP de 40 pinos e TQFP e QFN de 44 pinos Dentre estes citados foi escolhido o PC18F2550, pois alm de ter as caractersticas desejadas, dois exemplares foram emprestados equipe pelo engenheiro Jefferson Chochi Zembovici da empresa HENRY. Posteriormente foi conseguido o contato de um distribuidor MCROCHP em So Paulo, Bevian comercial e importadora LTDA, com quem, entrando em contato, foram conseguidas amostras do componente, sendo pago apenas as despesas de envio. Duas amostras do componente com encapsulamento DP e duas em SMD foram enviadas pelo distribuidor, com isso, um total de seis microcontroladores ficaram disposio da equipe para que esta pudesse fazer testes com diferentes programaes e para possvel reposio, bac,up, em caso de queima de algum dos microcontroladores. :)3)") E,2&*. %& Au*ti5*'G%&r Os multiplexadores analisados para o projeto so todos da empresa MAXM. Os modelos analisados foram o MAX308, MAX4638 e MAX4051, todos com oito portas multiplexveis. 38 O motivo da escolha destes componentes do referido fabricante foi o fato de que este enviaria amostras dos componentes sem custo algum. Caractersticas principais: - MAX308: 8 canais multiplexados Compatvel com lgica TTL e CMOS Resistncia de canal menor que 5omhs Proteo contra descarga eletrosttica maior que 2000 V Tempo de chaveamento o .on = 100ns o .off = 75ns - MAX4638: 8 canais multiplexados Compatvel com lgica TTL e CMOS Resistncia de canal de 0,4 ohms Tempo de chaveamento o .on = 18ns o .off = 7ns - MAX4051: 8 canais multiplexados Compatvel com lgica TTL e CMOS Resistncia mxima de canal de 12 omhs Tempo de chaveamento o .on = 50ns o .off = 40ns Para usar no projeto restaram duas opes, o MAX4638 e o MAX4051, pois foram estes os modelos enviados pelo fabricante, ambos em SMD. A escolha do componente usado no dispositivo, MAX4638, foi devido a este possuir menor tempo de chaveamento e menor resistncia de canal. :)3):) E,2&*. %& A5*i7i2%&r &5'r2i&(* 39 O amplificador operacional utilizado no dispositivo o TL072 da TEXAS NSTRUMENTS, este componente foi escolhido pelo fato de que a equipe j possua o componente, reduzindo assim despesas com componente e otimizando os custos do projeto. Caractersticas principais: Dual AmpOp Baixo rudo Proteo contra curto-circuito na sada Baixa distoro harmnica total (0,003% tpico) Alta impedncia de entrada (JFET) &lew rate tpico = 13 V/us :)") HARD;ARE Para o hardware decidiu-se usar placa com apenas uma face, componentes discretos e circuitos integrados com encapsulamento DP, isto pelo motivo de que era de interesse da equipe confeccionar a placa. :)")3) D','(+&*+iA'(t& %& Di,5&,iti+& O circuito foi desenhado, esquemtico e layout das trilhas, no software E+")E *565657 que disponibilizado gratuitamente atravs do site do fabricante (www.cadsoft.de). O diagrama eltrico do circuito foi feito com base nos datasheets dos componentes, no trabalho de final de curso usado de base para este e em conversas entre os membros da equipe. A placa foi planejada de tal forma que se pudesse testar os principais componentes separadamente, por meio de 8umpers, com os quais consegue-se "bypassar alguns C's e com isso testar cada parte do circuito. Tambm foram usados soquetes para todos os C's, o que facilita caso algum deles venha a dar problema. 40 A placa foi feita de modo artesanal, usando o sistema de transfer, impresso a laser em papel polister e transferido para a placa por processo trmico, com o auxlio de um ferro de passar roupas comum. :)")") F&t&, % P*2 Para confeco do circuito forma usadas placas de fibra de face nica, na figura 15 pode-se ver o aspecto das trilhas do circuito, e na sequncia, na figura 16, pode-se ver como ficou a distribuio dos componentes sobre a placa. Fi1ur 3= ! L/&ut %, Tri*., F&(t'> Autoria Prpria 41 Fi1ur 3B ! L/&ut %&, C&A5&('(t', F&(t'> Autoria Prpria :)"):) C&rr'EJ', %& Cir2uit& Algumas correes foram necessrias no hardware do dispositivo para que este pudesse captar sinais positivos e negativos. Fazendo testes e analisando o circuito foi visto que este apenas funcionaria para sinais positivos, ento foi acrescentado uma nova placa para tratamento de sinal ao dispositivo e uma fonte externa para que se obtivesse alimentao negativa, desta forma conseguiu-se fazer com que o dispositivo funcionasse tanto para sinais positivos como para sinais negativos. :)")<) F&t&, %, P*2, 5r C&rr'EF& %& Cir2uit& 42 A fonte foi montada em uma caixa plstica, externa do dispositivo de captura de sinais, enquanto a placa para tratamento de sinal foi colocada juntamente com as outras partes, na caixa do dispositivo. Fi1ur 3C ! L/&ut %, Tri*., %, P*2, %' C&rr'EF& F&(t'> Autoria Prpria 43 Fi1ur 3D ! L/&ut %&, C&A5&('(t', %, P*2, %' C&rr'EF& F&(t'> Autoria Prpria :)")=) A,5'2t& Fi(* %& Di,5&,iti+& O dispositivo foi montado em uma caixa de alumnio com dimenses de 18cm x 12cm x 9cm, aps tratamento da superfcie metlica a caixa foi pintada com tinta spray. Para dar o acabamento final ao prottipo foram usados adesivos impressos aplicados por sobre a caixa, e a seguir vemos as imagens da montagem e do aspecto final do dispositivo. Fi1ur 3$ ! Pr&t9ti5& (& M&(t%& (& I(t'ri&r % CiG F&(t'> Autoria Prpria 44 Fi1ur "# ! Vi,t Su5'ri&r % CiG F&(t'> Autoria Prpria Fi1ur "3 ! Vi,t Su5'ri&r E,Mu'r% % CiG F&(t'> Autoria Prpria 45 Fi1ur "" ! Vi,t Su5'ri&r Dir'it % CiG F&(t'> Autoria Prpria :)")B) R'*EF& %' C&A5&('(t', :)")B)3) R',i,t&r', RESSTOR VALOR R1 1kD R2, R21, R22 10kD R10, R18 47kD R9, R17 100kD R8, R16 200kD R7, R15 470kD R6, R14, R19, R20, R23, R24 1MD R5, R13 2,2MD R4, R12 4,7MD R3, R11 10MD Qu%r& 3> R'*EF& %' R',i,t&r', Uti*iI%&, F&(t'> Autoria Prpria :)")B)") C52it&r', CAPACTOR VALOR C3, C4 15pF 46 C2 470nF C1, C6, C7, C8, C9 100nF C10, C11 22nF C5, C12 10F Qu%r& "> R'*EF& %' C52it&r', Uti*iI%&, F&(t'> Autoria Prpria :)")B):) Cir2uit&, i(t'1r%&, CRCUTO NTEGRADO CDGO UC1 PC18F2551 C1, C2 MAX4638 C3 TL072 Qu%r& :> R'*EF& %' Cir2uit&, I(t'1r%&, Uti*iI%&, F&(t'> Autoria Prpria :)")B)<) Outr&, 2&A5&('(t', XTAL1 20MHz CON1, CON2 Conector KK 5 vias 5045-5 CON3 Conector USB CON4, CON5 Conector BNC JP1, JP2, JP3 Barra com 3 pinos JP4, JP5 Barra com 2 pinos Qu%r& <> R'*EF& %&, D'Ai, C&A5&('(t', Uti*iI%&, F&(t'> Autoria Prpria 47 :)")C) FIRM;ARE -irmware o conjunto de instrues operacionais programadas diretamente no hardware de um equipamento eletrnico. Nesse projeto foi necessrio desenvolver e compilar o programa com as instrues especficas ao microcontrolador PC 18F2550. :)")C)3) C&A5i*%&r U,%& O microcontrolador escolhido foi o microchip PC 18F2550. Para esse modelo existem diversos compiladores como o prprio MPLAB em conjunto com o Microchip C18, porm decidimos utilizar o software PCWHD 4.084, da empresa CCS (Custom Computer &ervice), que faz a compilao em linguagem C. O principal motivo foi grande quantidade de funes e rotinas pr-programadas dedicadas a microcontroladores da famlia PC, bem como a facilidade na interface de programao. 48 Fi1ur ": ! T'* %' i(t'r72' %& PC;HD F&(t'> Autoria Prpria :)")C)") Pr&1rA%&r U,%& Existem muito gravadores de PC dedicados. Para facilitar os testes em nosso prottipo, nos baseamos no circuito utilizado no gravador "PCPlus que realiza a gravao pelo mtodo CSP ($n%Circuit &erial Programming'). Este programador no necessita de fonte de alimentao externa, aproveitando o recurso existente no microcontrolador de programao em baixa tenso (LVP). A questo da programao do microcontrolador foi previamente estudada, sendo implementada no prottipo de tal forma que com a mudana de um 8umper, possvel conectar o circuito do "PCPlus modificado e realizar a programao do PC. 49 Fi1ur "<3 - E,Mu'A E*'trN(i2& %& Pr&1rA%&r F&(t'> site http://www.jdm.homepage.dk/newpic.htm :)")C):) F&t& %& Pr&1rA%&r Fi1ur "= ! Gr+%&r %& PIC F&(t'> Autoria Prpria Utilizamos o software livre PCPgm verso 1.0.1.5 para realizar a gravao do firmware no PC. Esse programa reconhece automaticamente o programador PCPlus e at mesmo o modelo de microcontrolador utilizado. 50 Fi1ur "B ! T'* %' i(t'r72' %& PICP1A D'+'*&5) Pr&1rAA'r V3)#)3)= F&(t'> Autoria Prpria :)")C)<) Pr&1rAEF& %& Mi2r&2&(tr&*%&r Antes de iniciar a programao do firmware, precisa-se ter conhecimento pleno nos seguintes aspectos: Funes desempenhadas pelo microcontrolador; Quais portas de entradas e sadas sero utilizadas, bem como as funes de cada uma; Freqncia do cristal utilizado; Registradores necessrios para o modelo de PC escolhido; Fluxograma com a lgica de programao 51 Fi1ur "C - Mi2r&2&(tr&*%&r 3DF"==# F&(t'> Datasheet Microchip 18F2550 O quadro 5 mostra as funes dos pinos utilizados no PC18F2550. Pi(& Fu(EF& D',2riEF& 3 MCRL Entrada de reset, em nvel baixo reseta o sistema Vpp Entrada de tenso da programao " AN0 Entrada analgica 0 : AN1 Entrada analgica 1 < RA2 Sada Digital A0 para controle do MUX1 = RA3 Sada Digital A2 para controle do MUX2 B RA4 Sada Digital A1 para controle do MUX2 C RA5 Sada Digital A0 para controle do MUX2 D Vss Referncia terra para a lgica e os pinos de i/o $ OSC1 Entrada do oscilador de cristal 20MHz 3# OSC2 Conecta o cristal 20MHz ou ressonador 33 RC0 Sada Digital A2 para controle do MUX1 3" RC1 Sada Digital A1 para controle do MUX1 3< Vusb Regulador de tenso interno do USB 3.3V 3= D - Linha diferencial negativa do USB 9input:output) 3B D+ Linha diferencial positiva do USB (input:output) 3$ Vss Referncia terra para a lgica e os pinos de i/o "# Vdd Fonte positiva para a lgica e os pinos de i/o "3 RB0 Sada Digital "" RB1 Sada Digital ": RB2 Sada Digital "< RB3 Sada Digital "= RB4 Sada Digital "B PGM Pino que permite a programao em baixa tenso CSP "C PGC Cloc, de programao CSP 52 "D PGD Pino de dados da programao CSP Qu%r& = ! Pi(&, Uti*iI%&, (& PIC F&(t'> Autoria Prpria Abaixo vemos o fluxograma completo do firmware5 :)")C)=) F*uG&1rA Fi1ur "D ! F*uG&1rA %& Firmware F&(t'> Autoria Prpria De acordo com as necessidades de utilizao no projeto, os principais registradores configurados foram os relacionados s definies de cloc, (CONFG1L, CONFG1H, OSCCON), USB (UCON, UCFG, USTAT, UADDR, UFRMH:UFRML), Serial (SSPSTAT, SSPCON1) e na configurao de portas como entrada e sada (TRSA, TRSB, TRSC). 53 :)")C)B) D',2riEF& %& Firmware Com o software PCWHD, baseado em linguagem "C, foi compilado o firmware. Os principais comando sero mostrados abaixo: #include <18F2550.h> Realiza a chamada do arquivo de definio de todos os registradores endereados para o 18F2550, existente no banco de dados do compilador CCS. #uses H!"##$%&W'($%&")&(*+($%&#,"$%&'*-./$.!-'0,$"##5$+".'0,1$ ,)*/*% Configura vrios registradores do microcontrolador, principalmente aos que diz respeito ao oscilador. HSPLL - oscilador de cristal de alta freqncia com PLL habilitado. NOWDT - watchdog desabilitado. NOPROTECT - proteo de cdigo desabilitada. LVP programao em baixa tenso habilitada. DEBUG - RB6 e RB7 dedicados para $n Circuit Debug USBDV - cloc, USB do 96MHz PLL/2 PLL5 - cristal de 20MHz PLL prescaler /5 CPUDV1 - cloc, do ncleo 96MHz PLL/2 VREGEN - regulador interno de tenso USB habilitado #deine .!-1*"11(21*%3-#* .!-1*%3-#*1-.#4 #deine .!-1*"11)21*%3-#* .!-1*%3-#*1-.#4 Ativa o Endpoint1 para as transferncias N e OUT Bulk/nterrupt #deine .!-1*"11(21!05* 67 #deine .!-1*"11)21!05* 8 54 Determina o tamanho de 64 e 3 bytes reservado para o Buffer Tx e RX, respectivamente, do Endpoint;5 Oi(2*u%' P5i23DQu,b).R #include <Pi2USB).> Oi(2*u%' Pu,b)2R nclui as bibliotecas de configurao da USB e descritores, existentes no banco de dados do compilador CCS para o hardware da famlia PC18. set1tris1a90b00000011): set1tris1b90b00000000): set1tris1a90b00000000): setu;1adc1;orts93%01(&13%1) Configura apenas as portas A0 e A1 como entrada analgica, as demais como sada digital. usb1init9) usb1task9) usb1wait1or1enumeration9) nicia, habilita os perifricos e interrupes e aguarda o PC ser enumerado pelo sistema operacional. or 9i<1:i<(2!05*:i=<2) > set1adc1channel91): dela?1us910): t@dataAiB<read1adc9):
set1adc1channel90): dela?1us910): t@dataAi=1B<read1adc9): C usb1;uts91$t@data$(2!05*$.!-1'(!1(&//#*): Rotina de leitura das entradas analgicas e envio para o computador atravs da porta de comunicao USB. 55 :)")D) SOFT;ARE Foi desenvolvido um software de interface grfica para funcionar na plataforma 0indows cuja funo a visualizao das diversas formas de ondas capturadas pelo dispositivo, bem como ajustes de escalas e controle das sadas digitais. :)")D)3) !otware U,%& A programao de interface grfica foi desenvolvida no Borland Delphi &econd Edition verso 7.2, onde utiliza linguagem Pascal orientada a objeto. Optou-se por utilizar esse software devido a ampla variedade de recursos que desejava-se utilizar, como desenhos de grficos incluindo ferramentas de auxilio como o Direct<, barras de sliders, chec, box= processamento paralelo, entre outros recursos disponveis. Fi1ur "$ ! T'* %' i(t'r72' 1rK7i2 %& -orland 'el;hi !econd *dition +'r,F& C)" F&(t'> Autoria Prpria 56 :)")D)") E,trutur %& C9%i1& Cada objeto colocado na janela "Form dotado de propriedades que permite configurar o mesmo. Com exceo do grfico, todos os demais componentes possuem algum tipo de evento, como clicar, marcar, arrastar e segurar. Baseados nestes eventos criou-se o programa na janela de codificao. Como o Delphi permite processamento paralelo, dois principais rotinas ficavam continuamente em loop infinito. A primeira o processamento de eventos da janela principal e a segunda era a captura de pacotes dos sinais analgicos que o PC enviava. Para facilitar o entendimento lgico da programao, o cdigo foi dividido em !ain (principal), USB (comunicao) e Draw (desenho do grfico). A seguir so apresentadas as principais partes da rotina com comentrios dos pontos mais importantes. Os comandos sero mostrados em formatao itDlico e neErito . A rotina completa encontra-se no Anexo F. FF#oo; 0ninito ;ara ca;tura de ;acotes de dados while true do beEin i /et.!-'ata then beEin .;date'raw-uer: +lear!creen: 'raw'ata: end: !lee;925): end: O cdigo !ain basicamente cria os procedimentos para cada evento da janela principal e fica em um loop infinito onde espera o PC enviar dados ao programa. 57 ;rocedure (Form1.ono1button+lick9!enderG (&bHect): beEin i not usb1connected then beEin !howIessaEe9J'is;ositiKo nLo conectado ou nLo inicialiMado.J): e@it: end: i ono1button.+a;tion < J&%J then beEin ono1button.+a;tion G< J&FFJ: hold1button.*nabledG<true: '2(imer1.*nabledG<true: +lean'raw-uer1: +lean'raw-uer2: th.)esume: end Essa rotina executada quando o evento de clicar sobre o boto ON realizado. Ela verifica se o dispositivo USB est conectado e depois habilitam outros botes de controle, tambm limpa os buffers do grfico. No cdigo USB, est centralizado todos os comandos relacionados a essa comunicao. unction 1I".!-/et'##,ersion9)G'W&)': stdcall:e@ternal Jm;usba;i.dllJ: unction 1I".!-/et'eKice+ount9;,0'1"0'G"+H3)8)G'W&)': stdcall:e@ternal Jm;usba;i.dllJ: unction 1I".!-&;en9instanceG'W&)':;,0'1"0'G"+H3)8:;*"G"+H3)8:dw'irG 'W&)':dw)eserKedG'W&)')G(H3%'#*: stdcall:e@ternal Jm;usba;i.dllJ: unction1I".!-)ead9handleG(H3%'#*:Kar;'ataG"-N(*:dw#enG' W&)':Kar;#enEthG'W&)':dwIillisecondsG'W&)')G'W&)': stdcall:e@ternal Jm;usba;i.dllJ: unction 1I".!-)ead0nt9handleG(H3%'#*:Kar;'ataG 58 "-N(*:dw#enG'W&)':Kar ;#enEthG"'W&)':dwIillisecondsG'W&)')G'W&)': stdcall:e@ternal Jm;usba;i.dllJ: unction 1I".!-Write9handleG(H3%'#*:;'ataG"-N(*:dw#enG'W&)':Kar ;#enEthG'W&)':dwIillisecondsG'W&)')G'W&)': stdcall:e@ternal Jm;usba;i.dllJ: unction 1I".!-+lose9handleG(H3%'#*)G'W&)': stdcall:e@ternal Jm;usba;i.dllJ: Esses so alguns comandos contidos na biblioteca mpusbapi.dll fornecida pelo fabricante do microcontrolador. As funes precisam ser reconhecidas pelo Delphi para futura utilizao. Kid1;idG"+H3)8<JKid107d8O;id12525J: FF ,0' e "0' ndica ao software qual dispositivo USB reconhecer. *endor D 04d8 o padro para produtos !icrochip j o Product D 2525 foi definido pela equipe para identificao desse projeto. unction !tart.!-G boolean: i 91I".!-/et'eKice+ount9Kid1;id)<0) then e@it: m?&ut"i;eG< 1I".!-&;en90$Kid1;id$out1;i;e$I"1W)0(*$0): m?0n"i;eG< 1I".!-&;en90$Kid1;id$out1;i;e$I"1)*3'$0): i 99m?&ut"i;e < 0%,3#0'1H3%'#*1,3#.*) or 9m?0n"i;e < 0%,3#0'1H3%'#*1,3#.*)) then e@it: FF testa a cone@Lo P enKia ;inE send1buerA0B G< "0%/: 1I".!-Write9m?&ut"i;e$send1buer$1$!ent#enEth$1000): tm;G<0nt(o!tr9!ent#enEth): 1I".!-)ead9m?0n"i;e$recK1buer$I32!05*$)eceiKe#enEth$1000): Funo para incio do dispositivo USB se conectado. Para verificar a comunicao, o programa envia um "ping4 e em seguido recebe uma resposta pr-definida. 59 send1buerA0B G< #*'1+&%()&#: send1buerA1B G< led1: send1buerA2B G< led2: i 1I".!-Write9m?&ut"i;e$send1buer$8$!ent#enEth$1000)<>1 then !howIessaEe9Jerror led controlJ): Exemplo de envio de bytes de controle dos dispositivos externos (representado por LEDs) para o microcontrolador PC. i91I".!-)ead9m?0n"i;e$ recK1buer$ I32!05*$ )eceiKe#enEth$ 1000)<>1)then beEin !howIessaEe9Jerror Eet usb data 8J): e@it: end: or iG<1 to )eceiKe#enEth do beEin i 99i mod 2)<0) then FFQnde@ ;ar beEin usb1buer2Abu2B G< recK1buerAiP1B: inc9bu2): end else beEin FF Qnde@ im;ar usb1buer1Abu1B G< recK1buerAiP1B: inc9bu1): end: end: Captura dos pacotes enviados pelo PC. Onde realiza a diferenciao dos canais analgicos 1 e 2. O microcontrolador envia os sinais do canal 1 atravs dos bytes de indexao par, enquanto os sinais do canal 2 pelos bytes de indexao impar, assim mantendo a mesma velocidade de captura em ambos os canais. 60 Por ltimo tem-se o cdigo de desenho do grfico precisa realizar a normalizao dos nveis de sinais para as amplitudes mximas apresentadas na tela. @ G< 9iP1)R9Form1.'2'raw1.Width diK 9lenEth9draw1buer1) diK h1actor)): ? G< draw1buer1AiP1B: ? G< round99?F255)RForm1.'2'raw1.HeiEht): FF condicionamento do sinal Form1.'2'raw1.!urace.+anKas.IoKe(o9@$?): @ G< 9i)R9Form1.'2'raw1.Width diK 9lenEth9draw1buer1) diK h1actor)): ? G< draw1buer1AiB: ? G< round99?F255)RForm1.'2'raw1.HeiEht): FF condicionamento do sinal Form1.'2'raw1.!urace.+anKas.#ine(o9@$?): A cada ponto desenhado, realizada a ligao entre ele e o ponto anterior atravs de uma reta, assim fazendo com que o grfico fique contnuo e no pontilhado. Fi1ur :# ! F*uG&1rA %& 5r&1rA 'A D'*5.i F&(t'> Autoria Prpria :)")D):) I(t'r72' GrK7i2 61 Fi1ur :3 ! T'* %' i(t'r72' 1rK7i2 %& 5r&1rA 7i(* F&(t'> Autoria Prpria Na figura 31 mostrada a tela do Dispositivo de Aquisio de Sinais e Controle Digital via USB com as seguintes funes: Boto ON/OFF inicia a visualizao grfica ou encerra o aplicativo grfico. Seletor de escala de tenso independente para os canais 1 e 2, com uma faixa de 0,02 V a 0,5 V por diviso. Seleo de escala de tempo independente em segundos por diviso. Check Box para habilitar os canais 1 e/ou 2. #old Permite o congelamento instantneo do grfico para melhor analise do sinal amostrado Tela de visualizao grfica dos canais 1 e 2, com dez divises no eixo "X e no eixo "Y. :)")D)<) 'riKer %& Di,5&,iti+& 62 Antes de iniciar o desenvolvimento do firmware foi estudado qual o mtodo de comunicao USB seria adotado. Existem trs mtodos: /&B Communication Device Class (USB CDC) Basicamente o driver emula uma porta COM, fazendo com que a comunicao entre o software e o firmware seja realizada como se fosse uma porta serial padro. o mtodo mais simples para compilao do programa, porm a velocidade de comunicao muito baixa 115 kbps (~14,4 kB/s). #uman $nterface Device (Easy#$D) - O dispositivo USB seria reconhecido automaticamente pelo 0indows como um Dispositivo de nterface Humana (HD), no sendo necessrio desenvolver driver especiais para a aplicao, mas teria uma limitao de velocidade de 64 kB/s. /&B Bul, % Driver customizado que permite a comunicao USB apenas com a limitao de velocidade do prprio USB 2.0 (480 Mbps). Esta foi a escolha para o desenvolvimento do projeto. O driver disponibilizado pela prpria Microchip e utilizado em dois momentos. O primeiro na instalao do dispositivo no sistema operacional, onde faz o reconhecimento, enumerao e configurao USB do microcontrolador. O segundo a utilizao da biblioteca "mpusbapi.dll para o desenvolvimento do software de interface grfica, o qual serve para comunicao entre o computador e o prprio PC18F2550. 63 <) CONCLUSSES Neste trabalho foi desenvolvido um dispositivo de aquisio de sinais analgicos e controle digital via USB. Esse tema envolveu conhecimentos de diversas disciplinas do curso de engenharia eltrica, como circuitos eltricos, instrumentao, microcontroladores, circuitos lineares e no lineares, entre outros. Por esse motivo somado ao uso da comunicao USB, tornou o projeto muito interessante, pois atualmente a interface mais utilizada para troca de dados digitais entre os diversos equipamentos eletrnicos. O aprofundamento nesse e em outros assuntos relacionados ao projeto, acabou ampliando a viso de possibilidades para aplicaes desses conhecimentos em dispositivos futuros. Vrias linguagens de programao e diversos softwares foram utilizados, o que proporcionou um aprendizado muito grande nessa rea. Tambm foi um enorme desafio a confeco completa dispositivo, desde a placa de circuito impresso at a caixa protetora, todo desenvolvimento foi realizado pela equipe, o que trouxe muita satisfao para a mesma. O prottipo e software sofreram vrias alteraes e ajustes para alcanar o objetivo definido inicialmente. Com os testes finais, conseguimos obter as seguintes caractersticas: Um taxa de amostragem de aproximadamente 32kSPS; 64 Tenso de entrada AC de 50Vpp; Escala de tempo ponto a ponto real de 2ms; Escala mnima de tenso de 0,1V/div. Controle de ganho em tempo real; Controle dos dispositivos externos simultaneamente com aquisio de dados; Programao do firmware CSP Com um maior tempo de desenvolvimento seria possvel melhorar as caractersticas citadas acima, principalmente implementando um conversor analgico digital externo acoplado a uma memria intermediria, aumentando assim a taxa de amostragem. Algumas funes no tratamento de sinal atravs do software de interface grfica tambm foram discutidas, entre elas, um trigger, clculos de valores RMS, filtros, FFT, entre outros. <)3) PERSPECTIVAS Para avanar com o dispositivo e uma possvel evoluo para um produto comercial pode-se citar algumas melhorias a serem implementadas: Maior velocidade de aquisio com um CAD melhor Limite mximo de tenso de entrada aumentado FFT Boto de Trigger Clculos matemticos entre os sinais das 2 entradas Reduo do tamanho do dispositivo Protees contra surtos ncorporao de filtros Eliminao da necessidade de fonte externa 65 REFERTNCIAS BIBLIOGRFICAS [1] ESPNDOLA, Walter Luciano; PECARZ, Leandro Silva. USBSCOPE. Trabalho de concluso de curso (Graduao em Engenharia Eltrica) UFPR, Curitiba. 2007. [2] Topologia do USB. Disponvel em: http://www.gta.ufrj.br/grad/07_1/wusb/TopologiadoUSB.html. Acesso em: 1 de junho de 2009. [3] Arquitetura USB. Disponvel em: http://www.pads.ufrj.br/~rapoport/usb/usb4.html. Acesso em: 1 de junho de 2009. [4] nterfaces e Perifricos USB. Disponvel em: http://www.laercio.com.br/artigos/hardware/hard-051/hard-051c.htm. Acesso em: 2 de junho de 2009. [5] Como Funcionam as Portas USB. Disponvel em: http://informatica.hsw.uol.com.br/portas-usb1.htm. Acesso em: 3 de junho de 2009. 66 [6] CARVALHO, Felipe Monteiro et al. Osciloscpio Digital em Placa SA. USP. So Paulo. Disponvel em: http://incubadora.fapesp.br/frs/download.php/707/OsciloscopioSA.pdf. Acesso em: 1 de junho de 2009. [7] nstrumento de Medidas Eltricas em CA Parte Osciloscpio. Disponvel em: http://www.ucg.br/acad_web/professor/sitedocente/admin/arquivosUpload/7502/ material/Lab2%20circuitos%20elet%20ii.pdf. Acesso em: 1 de junho de 2009. [8] Eletricidade Bsica Osciloscpio. Disponvel em: http://www.inep.ufsc.br/eletbas/aula05.pdf. Acesso em: 1 de junho de 2009. [9] Converso Analgica Digital. Disponvel em: http://www.universiabrasil.net/mit/6/6071/PDF/f02-lec20a_val.pdf. Acesso em: 3 de junho de 2009. [10] Conversor Analgico Digital A/D. Disponvel em: http://www.colegiouberaba.com.br/apostilas/subsidios_eletronica/conversor %20a_d.pdf. Acesso em: 3 de junho de 2009. REFERTNCIAS PARA PESQUISA Adaptadores USB. Disponvel em: http://www.atera.com.br/figuras/kitusb1399.GF. Acesso em: 2 de junho de 2009. Adaptadores USB. Disponvel em: http://www.gdhpress.com.br/hardware/leia/cap3-18_html_67a5b903.jpg. Acesso em: 2 de junho de 2009. Adaptadores USB. Disponvel em: https://loja.tray.com.br/adm/editor/up/108972/1499_g.jpg. Acesso em: 2 de junho de 2009. ASSOCAO BRASLERA DE NORMAS TCNCAS. NBR 3<C"<: informao e documentao: trabalhos acadmicos: apresentao. Rio de Janeiro, 2002. ATMEL. Atmel Product Selector Guide. Disponvel em: http://www.atmel.com/. Acesso em: 11 de maro de 2009. 67 COSTA, Alexandre. Gravadores de PC. Disponvel em: http://br.geocities.com/alexrobotica/eletronic_robotica_grava_pics.html. Acesso em: 23 de abril de 2009. Create USB nterface. Disponvel em: http://www.create.ucsb.edu/~dano/CU/. Acesso em 24 de abril de 2009. Entendendo USB Firewire. Disponvel em: http://www.gdhpress.com.br/blog/entendendo-usb-firewire.html. Acesso em: 2 de junho de 2009. HOFFMAN, Pablo. Osciloscpio USB Documentacin. Disponvel em: http://pablohoffman.com/cgi-bin/twiki/bin/view/Oscusb/OscusbDocumentacion. Acesso em: 28 de abril de 2009. N-Circuit Serial Programming (CSP). Disponvel em: http://www.embedinc.com/picprg/icsp.htm. Acesso em: 23 de abril de 2009. niciando PC USB. Disponvel em: http://www.edaboard.com/ftopic313796.html. Acesso em: 23 de abril de 2009. ntel. Desktop Boards Portas USB. Disponvel em: http://www.intel.com/support/pt/motherboards/desktop/sb/CS-023466.htm. Acesso em: 2 de junho de 2009. Jonis Project PC+USB. Disponvel em: http://www.jonis.com.br/novo/index.php? option=com_content&view=article&id=53:pic-usb-bootloader- facil&catid=38:eletronica. Acesso em: 24 de abril de 2009. MCROCHP. Microchip Advanced Parts Selection. Disponvel em: http://www.microchip.com/stellent/idcplg? dcService=SS_GET_PAGE&noded=1924. Acesso em: 11 de maro de 2009. OBJECTVE DEVELOPMENT. Power Switch. Disponvel em: http://www.obdev.at/products/vusb/powerswitch.html. Acesso em: 11 de maro de 2009. PC 18 USB Support. Disponvel em: http://www.oshonsoft.com/pic18usb.html. Acesso em: 21 de abril de 2009. PCPgm. Disponvel em: http://members.aon.at/electronics/pic/picpgm/. Acesso em: 23 de abril de 2009. Programas de PC com USB. Disponvel em: http://www.electronicfr.com/index.php/Microcontrollers-and-USB/-Part-3-How- to-build-a-USB-thermometer-and-barometer-with-PC-18F4550-or- 18F2550.html. Acesso em: 23 de abril de 2009. 68 SOUZA, Emmanuel C. O. Criando Textos Segundo a ABNT. Disponvel em: http://www.scribd.com/doc/1816529/Normas-ABNT-no-Word?page=7. Acesso em: 28 de maio de 2009. TEXAS NSTRUMENTS. MCU Selection Tool. Disponvel em: http://focus.ti.com/en/multimedia/flash/selection_tools/mcu/mcu.html. Acesso em: 10 de maro de 2009. UNSO. Manual de Normalizao de Apresentao de Teses, Dissertaes e Trabalhos de Concluso de Curso (TCC) da Universidade de Sorocaba. Disponvel em: http://www.scribd.com/doc/4076862/ABNT-Manual-. Acesso em: 22 de junho de 2009. Universal Serial Bus USB Eletronline. Disponvel em: http://eletronline.blogspot.com/2009/02/universal-serial-bus-usb.html. Acesso em: 2 de junho de 2009. USB. Disponvel em: http://www.gdhpress.com.br/hardware/leia/index.php? p=cap3-18. Acesso em: 2 de junho de 2009. USB Boot-Loader on a PC 18F2550. Disponvel em: http://techsanctuary.com/node/64. Acesso em 23 de abril de 2009. USB Especifications. Disponvel em: http://www.usb.org/developers/usb20/developers/whitepapers/usb_20g.pdf. Acesso em: 21 de abril de 2009. USB Explicao. Disponvel em: http://www.rogercom.com/PortaUSB/MotorPasso.htm. Acesso em: 24 de abril de 2009. 69 ANEUOS ANEUO A - Cr&(&1rA %& Pr&4't& MrE&?"##$ Estudo dos microcontroladores e definio dos demais componentes eletrnicos do dispositivo a ser desenvolvido.
Abri*?"##$ Definio do projeto eletrnico, layout da placa, confeco do dispositivo e incio do estudo para o desenvolvimento do software.
70 Mi&?"##$ Possveis correes, testes, calibrao do dispositivo, testes preliminares do software e possveis melhorias a serem implementadas. 8u(.&?"##$ Correes finais, layout externo do produto, ltimos testes e modificaes, elaborao do relatrio e verificao final do produto.
8u*.&?"##$ Apresentao. ANEUO B ! Di1rA E,Mu'AKti2& %& Cir2uit& 71 72 ANEUO C ! Di1rA E,Mu'AKti2& %& Cir2uit& %' TrtA'(t& %' Si(i, 73 ANEUO D ! Di1rA E,Mu'AKti2& % F&(t' EGt'r( 74 ANEUO E ! C9%i1& F&(t' %& Firmware //==Cdigo Fonte do Firmware compilado em C pelo programa PCWHD============== #include <18F2550.h> #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDV,PLL4,CPUDV1,VREGEN #use delay(clock=48000000) // Cristal de 16MHz // ncludes das bibliotecas USB do compilador CCS. //Microchip PC18Fxx5x Hardware p/ CCS PC USB Driver #define USB_HD_DEVCE FALSE // Desabilitamos o uso das diretivas HD #define USB_EP1_TX_ENABLE USB_ENABLE_BULK // Ativa EP1(EndPoint1) para as transferencias N Bulk/nterrupt #define USB_EP1_RX_ENABLE USB_ENABLE_BULK // Ativa EP1(EndPoint1) para as transferencias OUT Bulk/nterrupt #define USB_EP1_TX_SZE 64 // Tamanho para o Buffer Tx EndPoint1 #define USB_EP1_RX_SZE 3 // Tamanho para o Buffer Rx EndPoint1 #include <pic18_usb.h> #include <PicUSBMK.h> //Configurao do USB e descritores para o dispositivo #include <usb.c> //Handles usb ,tokens e descritores #ENDF //==Definies======================================================== #define LED1ON PN_B0 #define LED2ENUM PN_B1 #define LED3USB PN_B2 #define LED4OUT1 PN_B3 #define LED5OUT2 PN_B4 #define LED_ON output_low #define LED_OFF output_high #define MUX1A0 PN_A2 #define MUX1A1 PN_C1 #define MUX1A2 PN_C0 #define MUX2A0 PN_A5 #define MUX2A1 PN_A4 #define MUX2A2 PN_A3 #define MUX_ON output_high #define MUX_OFF output_low #define SAMPLE 0x00 #define LED_CONTROL 0x01 #define MUX_CONTROL1 0x02 #define MUX_CONTROL2 0x03 #define PNG 0x05 #define NO1 0x00 #define NO2 0x01 #define NO3 0x02 #define NO4 0x03 #define NO5 0x04 #define NO6 0x05 #define NO7 0x06 #define NO8 0x07 #defineTXSZE 64 75 int8 rxdata[5]; int8 txdata[TXSZE]; int8 txdata2[TXSZE]; int8 txdata3[TXSZE]; int8 txdata4[TXSZE]; int8 txdata5[TXSZE]; int8 txdata6[TXSZE]; int8 txdata7[TXSZE]; int8 txdata8[TXSZE]; int8 txdata9[TXSZE]; int8 txdata10[TXSZE]; int8 send_buf[5]; void TesteUSB(void) { //Verifica se o USB est conectado e enumerado int8 enumerou; usb_task(); // Hab. o perif. usb e as interrupes usb_wait_for_enumeration(); // Aguarda o Pic ser configurado pelo PC enumerou=usb_enumerated(); if (enumerou) LED_ON(LED2ENUM); else LED_OFF(LED2ENUM); } void TXAnalog(void) { //Realiza a captura e transmisso das portas analgicas int8 i; LED_ON(LED3USB); set_adc_channel(0); // Canal A0 delay_us(10); // Retardo txdata[0]=read_adc(); for (i=1;i<TXSZE;i+=2) { set_adc_channel(1); // Canal A1 delay_us(10); // Retardo txdata[i]=read_adc();
while (TRUE) // Loop nfinito { TesteUSB(); // Testa a USB
if(usb_enumerated()) { // Se o PicUSB est configurado
if (usb_kbhit(1)) { // Verifica se h algo no USB usb_get_packet(1,rxdata,5); //Captura os dados da USB e coloca //na varivel rxdata // sample if(rxdata[0]==SAMPLE) { TXAnalog(); } // led control if(rxdata[0]==LED_CONTROL) { if(rxdata[1]) LED_ON(LED4OUT1); else LED_OFF(LED4OUT1); if(rxdata[2]) LED_ON(LED5OUT2); else LED_OFF(LED5OUT2); }
// Mux Control CH 1 78 if(rxdata[0]==MUX_CONTROL1) { MuxCH1(); } // Mux Control CH 2 if(rxdata[0]==MUX_CONTROL2) { MuxCH2(); }
} } } } ANEUO F ! C9%i1& F&(t' %& !otware 79 //==Cdigo Fonte do Software de nterface Grfica compilado no Delphi============ //===================ncio da Rotina MAN============================== unit main; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DXDraws, DXClass, ComCtrls, {draw,} ExtCtrls, Menus, Buttons, usb, draw; type TForm1 = class(TForm) DXDraw1: TDXDraw; GroupBox1: TGroupBox; led1_checkbox: TCheckBox; led2_checkbox: TCheckBox; DXTimer1: TDXTimer; GroupBox2: TGroupBox; en_canal1: TCheckBox; en_canal2: TCheckBox; onoff_button: TButton; Label1: TLabel; usb_led: TPanel; hold_button: TButton; GroupBox3: TGroupBox; hscale_bar1: TTrackBar; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label2: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Label11: TLabel; Label20: TLabel; Label21: TLabel; GroupBox4: TGroupBox; vscale_bar1: TTrackBar; Label12: TLabel; Label13: TLabel; Label14: TLabel; Label15: TLabel; Label16: TLabel; Label17: TLabel; Label18: TLabel; Label19: TLabel; hscale_bar2: TTrackBar; vscale_bar2: TTrackBar; procedure led_c(Sender: TObject); procedure DXTimer1Timer(Sender: TObject; LagCount: nteger); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure onoff_buttonClick(Sender: TObject); procedure FormResize(Sender: TObject); procedure FormCreate(Sender: TObject); 80 procedure hold_buttonClick(Sender: TObject); procedure hscale_bar2Change(Sender: TObject); procedure hscale2Change(Sender: TObject); procedure vscale_bar1Change(Sender: TObject); procedure vscale_bar2Change(Sender: TObject); private { Private declarations } public { Public declarations } end; main_thread = class(TThread) private { Private declarations } protected procedure Execute; override; end; var Form1: TForm1; th: main_thread; // escalas hscale1: double = 0.005; hscale2: double = 0.005; vscale1: double = 0.02; vscale2: double = 0.02; hscale_default: double = 0.005; vscale_default: double = 0.02; implementation {$R *.dfm} procedure TForm1.led_c(Sender: TObject); var led1, led2: integer; begin if led1_checkbox.Checked then led1:=1 else led1:=0; if led2_checkbox.Checked then led2:=1 else led2:=0; led(led1,led2); end; procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: nteger); begin if DXDraw1.CanDraw then DXDraw1.Flip; end; procedure main_thread.Execute; begin if hold and usb_connected then exit; while true do 81 begin if GetUSBData then begin UpdateDrawBuffer; ClearScreen; DrawData; end; Sleep(25); end; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin DXTimer1.Enabled:=false; // th.Suspend; end; procedure TForm1.onoff_buttonClick(Sender: TObject); begin if not usb_connected then begin ShowMessage('Dispositivo no conectado ou no inicializado.'); exit; end; if onoff_button.Caption = 'ON' then begin onoff_button.Caption := 'OFF'; hold_button.Enabled:=true; DXTimer1.Enabled:=true; CleanDrawBuffer1; CleanDrawBuffer2; th.Resume; end else begin onoff_button.Caption := 'ON'; hold_button.Enabled:=false; DXTimer1.Enabled:=false; ClearScreen; DXDraw1.Flip; //th.Suspend; end; end; procedure TForm1.FormResize(Sender: TObject); begin DXDraw1.Flip; end; procedure TForm1.FormCreate(Sender: TObject); begin if StartUSB then begin th:=main_thread.Create(true); end else begin usb_connected := false; end; 82 ClearScreen; end; procedure TForm1.hold_buttonClick(Sender: TObject); begin if hold then begin DXTimer1.Enabled := true; hold := false; end else begin hold := true; DXTimer1.Enabled := false; end; end; procedure TForm1.hscale_bar2Change(Sender: TObject); begin CleanDrawBuffer1; case hscale_bar1.Position of 6: hscale1:=0.500; 5: hscale1:=0.200; 4: hscale1:=0.100; 3: hscale1:=0.050; 2: hscale1:=0.020; 1: hscale1:=0.010; 0: hscale1:=0.005; end; end; procedure TForm1.hscale2Change(Sender: TObject); begin CleanDrawBuffer2; case hscale_bar2.Position of 6: hscale2:=0.500; 5: hscale2:=0.200; 4: hscale2:=0.100; 3: hscale2:=0.050; 2: hscale2:=0.020; 1: hscale2:=0.010; 0: hscale2:=0.005; end; end; procedure TForm1.vscale_bar1Change(Sender: TObject); begin change_mux1(vscale_bar1.Position); end; procedure TForm1.vscale_bar2Change(Sender: TObject); begin change_mux2(vscale_bar2.Position); end; end. //===================Fim Rotina MAN==================================== //===================ncio da Rotina USB================================= unit usb; 83 interface uses Classes, Windows, SysUtils, Dialogs, Graphics; Const MAXSZE=64; MPUSB_FAL=0; MPUSB_SUCCESS=1; MP_WRTE:DWORD=0; MP_READ:DWORD=1; MAX_NUM_MPUSB_DEV=127; SAMPLE = $00; LED_CONTROL = $01; MUX_CONTROL1 = $02; MUX_CONTROL2 = $03 N01 = $00 N02 = $01 N03 = $02 N04 = $03 N05 = $04 N06 = $05 N07 = $06 N07 = $07 PNG = $05; type DWORD = Longnt; PCHAR8 = array[0..MAXSZE] of char; PBYTE = array[0..MAXSZE] of BYTE; PDWORD = array[0..MAXSZE] of DWORD; PVOD = Pointer; UNT = Cardinal; usb_thread = class(TThread) private { Private declarations } protected procedure Execute; override; end; function _MPUSBGetDLLVersion():DWORD; stdcall;external 'mpusbapi.dll'; function _MPUSBGetDeviceCount(pVD_PD:PCHAR8):DWORD; stdcall;external 'mpusbapi.dll'; function _MPUSBOpen(instance:DWORD;pVD_PD:PCHAR8;pEP:PCHAR8;dwDir:DWORD;dwReserv ed:DWORD):THANDLE; stdcall;external 'mpusbapi.dll'; function _MPUSBRead(handle:THANDLE;var pData:PBYTE;dwLen:DWORD;var pLength:DWORD;dwMilliseconds:DWORD):DWORD; stdcall;external 'mpusbapi.dll'; function _MPUSBReadnt(handle:THANDLE;var pData:PBYTE;dwLen:DWORD;var pLength:PDWORD;dwMilliseconds:DWORD):DWORD; stdcall;external 'mpusbapi.dll'; function _MPUSBWrite(handle:THANDLE;pData:PBYTE;dwLen:DWORD;var pLength:DWORD;dwMilliseconds:DWORD):DWORD; stdcall;external 'mpusbapi.dll'; function _MPUSBClose(handle:THANDLE):DWORD; stdcall;external 'mpusbapi.dll'; var vid_pid:PCHAR8='vid_04d8&pid_2525'; // VD e PD out_pipe:PCHAR8='\MCHP_EP1'; in_pipe:PCHAR8='\MCHP_EP1'; 84 usb_buffer1: array[1..320] of byte; usb_buffer2: array[1..320] of byte; usb_connected: boolean = false; function StartUSB: boolean; function GetUSBData: boolean; procedure led(led1, led2: byte); procedure change_mux1(value: byte); procedure change_mux2(value: byte); implementation uses main, draw; var send_buffer, recv_buffer: PBYTE; myOutPipe:THANDLE; mynPipe:THANDLE; tmp: string; //=============nicia a USB============================================== function StartUSB: boolean; var ReceiveLength, SentLength:DWORD; begin Form1.usb_led.Color := clRed; usb_connected := false; result := false; if (_MPUSBGetDeviceCount(vid_pid)=0) then exit; myOutPipe:= _MPUSBOpen(0,vid_pid,out_pipe,MP_WRTE,0); mynPipe:= _MPUSBOpen(0,vid_pid,out_pipe,MP_READ,0); if ((myOutPipe = NVALD_HANDLE_VALUE) or (mynPipe = NVALD_HANDLE_VALUE)) then exit; // testa a conexo - envia ping send_buffer[0] := PNG; _MPUSBWrite(myOutPipe,send_buffer,1,SentLength,1000); tmp:=ntToStr(SentLength); _MPUSBRead(mynPipe,recv_buffer,MAXSZE,ReceiveLength,1000); if (ReceiveLength<>1) or (recv_buffer[0]<>PNG) then exit; _MPUSBClose(myOutPipe); _MPUSBClose(mynPipe); mynPipe:= NVALD_HANDLE_VALUE; myOutPipe:=NVALD_HANDLE_VALUE; Form1.usb_led.Color:=clGreen; usb_connected := true; Form1.led1_checkbox.Enabled:=true; Form1.led2_checkbox.Enabled:=true; result := true; end; 85 //=============Controla a sada Digital (LEDs)=============================== procedure led(led1, led2: byte); var SentLength: DWORD; begin myOutPipe:= _MPUSBOpen(0,vid_pid,out_pipe,MP_WRTE,0); mynPipe:= _MPUSBOpen(0,vid_pid,out_pipe,MP_READ,0); if ((myOutPipe = NVALD_HANDLE_VALUE) or (mynPipe = NVALD_HANDLE_VALUE)) then begin ShowMessage('error led control'); exit; end; send_buffer[0] := LED_CONTROL; send_buffer[1] := led1; send_buffer[2] := led2; if _MPUSBWrite(myOutPipe,send_buffer,3,SentLength,1000)<>1 then ShowMessage('error led control'); tmp:=ntToStr(SentLength); _MPUSBClose(myOutPipe); _MPUSBClose(mynPipe); mynPipe:= NVALD_HANDLE_VALUE; myOutPipe:=NVALD_HANDLE_VALUE; end; //============= Captura os dados da USB =============================== function GetUSBData: boolean; var i, c, buf1, buf2: integer; ReceiveLength, SentLength:DWORD; begin result:=false; myOutPipe:= _MPUSBOpen(0,vid_pid,out_pipe,MP_WRTE,0); mynPipe:= _MPUSBOpen(0,vid_pid,out_pipe,MP_READ,0); if ((myOutPipe = NVALD_HANDLE_VALUE) or (mynPipe = NVALD_HANDLE_VALUE)) then begin ShowMessage('error get usb data 1'); exit; end; // solicita os dados send_buffer[0] := SAMPLE; if _MPUSBWrite(myOutPipe,send_buffer,1,SentLength,1000)<>1 then begin ShowMessage('error get usb data 2'); exit; end; tmp:=ntToStr(SentLength); // le os dados buf1 := 1; buf2 := 1; 86 for c:=1 to (2*length(usb_buffer1)div length(recv_buffer)) do begin if(_MPUSBRead(mynPipe, recv_buffer, MAXSZE, ReceiveLength, 1000)<>1)then begin ShowMessage('error get usb data 3'); exit; end; tmp:=ntToStr(ReceiveLength); if ReceiveLength<>0 then result:=true; for i:=1 to ReceiveLength do begin if ((i mod 2)=0) then //par begin usb_buffer2[buf2] := recv_buffer[i-1]; inc(buf2); end else begin // impar usb_buffer1[buf1] := recv_buffer[i-1]; inc(buf1); end; end; end; _MPUSBClose(myOutPipe); _MPUSBClose(mynPipe); mynPipe:= NVALD_HANDLE_VALUE; myOutPipe:=NVALD_HANDLE_VALUE; end; procedure change_mux1(value: byte); var SentLength: DWORD; begin myOutPipe:= _MPUSBOpen(0,vid_pid,out_pipe,MP_WRTE,0); mynPipe:= _MPUSBOpen(0,vid_pid,out_pipe,MP_READ,0); if ((myOutPipe = NVALD_HANDLE_VALUE) or (mynPipe = NVALD_HANDLE_VALUE)) then begin ShowMessage('error mux control'); exit; end; {send_buffer[0] := MUX_CONTROL1; case value of 0: send_buffer[1] := N01; // 0.002V/div 1: send_buffer[1] := N02; // 0.005V/div 2: send_buffer[1] := N03; // 0.1V/div 3: send_buffer[1] := N04; // 0.2V/div 4: send_buffer[1] := N05; // 0.5V/div 5: send_buffer[1] := N06; // 1V/div 6: send_buffer[1] := N07; // 2V/div 7: send_buffer[1] := N08; // 5V/div end; } if _MPUSBWrite(myOutPipe,send_buffer,3,SentLength,1000)<>1 then 87 ShowMessage('error mux control'); tmp:=ntToStr(SentLength); _MPUSBClose(myOutPipe); _MPUSBClose(mynPipe); mynPipe:= NVALD_HANDLE_VALUE; myOutPipe:=NVALD_HANDLE_VALUE; end; procedure change_mux2(value: byte); var SentLength: DWORD; begin myOutPipe:= _MPUSBOpen(0,vid_pid,out_pipe,MP_WRTE,0); mynPipe:= _MPUSBOpen(0,vid_pid,out_pipe,MP_READ,0); if ((myOutPipe = NVALD_HANDLE_VALUE) or (mynPipe = NVALD_HANDLE_VALUE)) then begin ShowMessage('error mux control'); exit; end; {send_buffer[0] := MUX_CONTROL2; case value of 0: send_buffer[1] := N01; // 0.002V/div 1: send_buffer[1] := N02; // 0.005V/div 2: send_buffer[1] := N03; // 0.1V/div 3: send_buffer[1] := N04; // 0.2V/div 4: send_buffer[1] := N05; // 0.5V/div 5: send_buffer[1] := N06; // 1V/div 6: send_buffer[1] := N07; // 2V/div 7: send_buffer[1] := N08; // 5V/div end; } if _MPUSBWrite(myOutPipe,send_buffer,3,SentLength,1000)<>1 then ShowMessage('error mux control'); tmp:=ntToStr(SentLength); _MPUSBClose(myOutPipe); _MPUSBClose(mynPipe); mynPipe:= NVALD_HANDLE_VALUE; myOutPipe:=NVALD_HANDLE_VALUE; end; //=============Loop nfinito para leitura do USB=============================== procedure usb_thread.Execute; begin {while true do begin GetUSBData; Sleep(10); end;} end; end. //===================Fim da Rotina USB=================================== //===================ncio da Rotina DRAW================================ 88 unit draw; interface uses Graphics, Windows, Classes, SysUtils, Dialogs; type draw_thread = class(TThread) private // Private declarations protected procedure Execute; override; end; procedure UpdateDrawBuffer; procedure DrawData; procedure ClearScreen; procedure CleanDrawBuffer1; procedure CleanDrawBuffer2; var hold: boolean = false; next_start_h_scale: integer = 0; implementation uses main, usb; var draw_buffer1: array[1..320] of smallint; // guarda os pontos j lidos draw_buffer2: array[1..320] of smallint; draw_buffer1_index: integer = 1; draw_buffer2_index: integer = 1; procedure draw_thread.Execute; begin {while true do begin UpdateDrawBuffer; ClearScreen; DrawData; Form1.DXDraw1.Flip; end;} end; //=================Esvazio buffer do desenho 1=============================== procedure CleanDrawBuffer1; var i: integer; begin for i:=1 to length(draw_buffer1) do begin draw_buffer1[i] := -1; draw_buffer2[i] := -1; end; end; //=================Esvazio buffer do desenho 2=============================== 89 procedure CleanDrawBuffer2; var i: integer; begin for i:=1 to length(draw_buffer2) do begin draw_buffer1[i] := -1; draw_buffer2[i] := -1; end; end; //=================Atualiza o buffer do desenho============================== procedure UpdateDrawBuffer; var usb_buf, draw_buf, i: integer; begin ///////////// // canal 1 // ///////////// draw_buf:=-1; // acha o inicio do buffer 1 for i:=1 to length(draw_buffer1) do if draw_buffer1[i]=-1 then begin draw_buf:=i; break; end; // buffer cheio, apaga if draw_buf=-1 then begin CleanDrawBuffer1; draw_buf:=1; end; // skip := hscale/hscale_default; // copia todo o USB buffer usb_buf := 1; while true do//draw_buf <= length(draw_buffer1) do begin if usb_buf > length(usb_buffer1) then break; if draw_buf > length(draw_buffer1) then begin CleanDrawBuffer1; draw_buf:=1; end; draw_buffer1[draw_buf] := usb_buffer1[usb_buf]; draw_buffer2[draw_buf] := usb_buffer2[usb_buf]; inc(draw_buf); inc(usb_buf); end; end; //=================Limpa a tela e desenha os eixos=========================== procedure ClearScreen; 90 var hdivs, vdivs: integer; // numero de divisoes horizontais e verticais i: integer; begin vdivs := 10; hdivs := 10; if not Form1.DXDraw1.CanDraw then exit; // pinta a tela de branco Form1.DXDraw1.Surface.Fill( Form1.DXDraw1.Surface.ColorMatch(rgb(255,255,255)) ); Form1.DXDraw1.Surface.Canvas.Pen.Color:=clGray; Form1.DXDraw1.Surface.Canvas.Pen.Style := psdot; // desenha as escalas verticais do canal 1 for i := 1 to vdivs-1 do with Form1.DXDraw1.Surface.Canvas do begin MoveTo(i*(Form1.DXDraw1.Width)div(vdivs), 0); LineTo(i*(Form1.DXDraw1.Width)div(vdivs), Form1.DXDraw1.Height); end; // desenha as escalas horizontais do canal 1 for i := 1 to hdivs-1 do with Form1.DXDraw1.Surface.Canvas do begin MoveTo(0, i*(Form1.DXDraw1.Height)div(hdivs)); LineTo(Form1.DXDraw1.Width, i*(Form1.DXDraw1.Height)div(hdivs)); end; Form1.DXDraw1.Surface.Canvas.Pen.Color := clBlack; Form1.DXDraw1.Surface.Canvas.Pen.Style := pssolid; // eixo vertical Form1.DXDraw1.Surface.Canvas.Pen.Width:=1; Form1.DXDraw1.Surface.Canvas.MoveTo(Form1.DXDraw1.Width div 2, 0); Form1.DXDraw1.Surface.Canvas.LineTo(Form1.DXDraw1.Width div 2, Form1.DXDraw1.Height); // eixo horizontal Form1.DXDraw1.Surface.Canvas.MoveTo(0, Form1.DXDraw1.Height div 2); Form1.DXDraw1.Surface.Canvas.LineTo(Form1.DXDraw1.Width, Form1.DXDraw1.Height div 2); // mini divises - horizontal for i:=0 to hdivs*5 do begin Form1.DXDraw1.Surface.Canvas.MoveTo(i*Form1.DXDraw1.Width div hdivs div 5, (Form1.DXDraw1.Height div 2) - 3); Form1.DXDraw1.Surface.Canvas.LineTo(i*Form1.DXDraw1.Width div hdivs div 5, (Form1.DXDraw1.Height div 2) + 3); end; // mini divises - vertical for i:=0 to vdivs*5 do begin 91 Form1.DXDraw1.Surface.Canvas.MoveTo((Form1.DXDraw1.Width div 2) - 3, i*Form1.DXDraw1.Height div vdivs div 5); Form1.DXDraw1.Surface.Canvas.LineTo((Form1.DXDraw1.Width div 2) + 3, i*Form1.DXDraw1.Height div vdivs div 5); end; end; //=================Desenha o Canal1================================== procedure DrawData; var i, x, y, h_factor: integer; begin // muda a cor do traado para verde Form1.DXDraw1.Surface.Canvas.Pen.Color := clGreen; Form1.DXDraw1.Surface.Canvas.Pen.Width := 2; if not Form1.DXDraw1.CanDraw then exit; ///////////// // canal 1 // ///////////// h_factor := round(hscale1/hscale_default); i:=1; if Form1.en_canal1.Checked then while i <= (length(draw_buffer1) div h_factor) do begin // se chegou no fim do buffer, sai do loop if draw_buffer1[i] = -1 then break; x := (i-1)*(Form1.DXDraw1.Width div (length(draw_buffer1) div h_factor)); y := draw_buffer1[i-1]; y := round((y/255)*Form1.DXDraw1.Height); // condicionamento do sinal Form1.DXDraw1.Surface.Canvas.MoveTo(x,y); x := (i)*(Form1.DXDraw1.Width div (length(draw_buffer1) div h_factor)); y := draw_buffer1[i]; y := round((y/255)*Form1.DXDraw1.Height); // condicionamento do sinal Form1.DXDraw1.Surface.Canvas.LineTo(x,y); inc(i); end; Form1.DXDraw1.Surface.Canvas.Pen.Color := clBlue; //=================Desenha o Canal2=================================== h_factor := round(hscale2/hscale_default); i:=1; if Form1.en_canal2.Checked then while i <= (length(draw_buffer2)/h_factor) do begin // se chegou no fim do buffer, sai do loop if draw_buffer2[i] = -1 then break; 92 x := (i-1)*(Form1.DXDraw1.Width div (length(draw_buffer2) div h_factor)); y := draw_buffer2[i-1]; y := round((y/255)*Form1.DXDraw1.Height); // condicionamento do sinal Form1.DXDraw1.Surface.Canvas.MoveTo(x,y); x := (i)*(Form1.DXDraw1.Width div (length(draw_buffer1) div h_factor)); y := draw_buffer2[i]; y := round((y/255)*Form1.DXDraw1.Height); // condicionamento do sinal Form1.DXDraw1.Surface.Canvas.LineTo(x,y); inc(i); end; end; end. //==================Fim da Rotina DRAW================================