Você está na página 1de 94

UNIVERSIDADE FEDERAL DO PARAN

KLEITON CHOCHI ZEMBOVICI


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%&amples 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();

set_adc_channel(0); // Canal A0
delay_us(10); // Retardo
txdata[i+1]=read_adc();
}

usb_puts(1,txdata,TXSZE,USB_DTS_TOGGLE);
LED_OFF(LED3USB);
}
void MuxCH1(void) { //Seleciona o ganho do CH1
if (rxdata[1]==NO1){
MUX_OFF(MUX1A2);
MUX_OFF(MUX1A1);
MUX_OFF(MUX1A0);
}
if (rxdata[1]==NO2){
MUX_OFF(MUX1A2);
MUX_OFF(MUX1A1);
MUX_ON(MUX1A0);
}
76
if (rxdata[1]==NO3){
MUX_OFF(MUX1A2);
MUX_ON(MUX1A1);
MUX_OFF(MUX1A0);
}
if (rxdata[1]==NO4){
MUX_OFF(MUX1A2);
MUX_ON(MUX1A1);
MUX_ON(MUX1A0);
}
if (rxdata[1]==NO5){
MUX_ON(MUX1A2);
MUX_OFF(MUX1A1);
MUX_OFF(MUX1A0);
}
if (rxdata[1]==NO6){
MUX_ON(MUX1A2);
MUX_OFF(MUX1A1);
MUX_ON(MUX1A0);
}
if (rxdata[1]==NO7){
MUX_ON(MUX1A2);
MUX_ON(MUX1A1);
MUX_OFF(MUX1A0);
}
if (rxdata[1]==NO8){
MUX_ON(MUX1A2);
MUX_ON(MUX1A1);
MUX_ON(MUX1A0);
}
}
void MuxCH2 (void) { //Seleciona o ganho do CH2
if (rxdata[1]==NO1){
MUX_OFF(MUX2A2);
MUX_OFF(MUX2A1);
MUX_OFF(MUX2A0);
}
if (rxdata[1]==NO2){
MUX_OFF(MUX2A2);
MUX_OFF(MUX2A1);
MUX_ON(MUX2A0);
}
if (rxdata[1]==NO3){
MUX_OFF(MUX2A2);
MUX_ON(MUX2A1);
MUX_OFF(MUX2A0);
}
if (rxdata[1]==NO4){
MUX_OFF(MUX2A2);
MUX_ON(MUX2A1);
MUX_ON(MUX2A0);
}
if (rxdata[1]==NO5){
MUX_ON(MUX2A2);
MUX_OFF(MUX2A1);
MUX_OFF(MUX2A0);
}
if (rxdata[1]==NO6){
MUX_ON(MUX2A2);
77
MUX_OFF(MUX2A1);
MUX_ON(MUX2A0);
}
if (rxdata[1]==NO7){
MUX_ON(MUX2A2);
MUX_ON(MUX2A1);
MUX_OFF(MUX2A0);
}
if (rxdata[1]==NO8){
MUX_ON(MUX2A2);
MUX_ON(MUX2A1);
MUX_ON(MUX2A0);
}
}
void main(void) // Programa Principal
{
int8 cont=1;
set_tris_a(0b00000011); // AN0, AN1 entradas e RA2,RA3,RA4,RA5 sadas
set_tris_b(0b00000000); // RB Todas sadas
set_tris_c(0b00000000); // RC0 Todas sadas

setup_adc_ports( AN0_TO_AN1 ); // configura N analog.do conversor A/D
setup_adc(ADC_CLOCK_NTERNAL); // configura clock interno para o ADC

LED_ON(LED1ON);
LED_OFF(LED2ENUM);
LED_OFF(LED3USB);
LED_OFF(LED4OUT1);
LED_OFF(LED5OUT2);

usb_init(); // nicializamos o USB

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();
}

// PNG - PONG
if(rxdata[0]==PNG) {
send_buf[0] = PNG;
usb_put_packet(1,send_buf,1,USB_DTS_TOGGLE);
}

}
}
}
}
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================================

Você também pode gostar