12.07.2015 Views

Modelo para trabalhos ABNT - Feevale

Modelo para trabalhos ABNT - Feevale

Modelo para trabalhos ABNT - Feevale

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

UNIVERSIDADE FEEVALEFÁBIO ALANO HEDLERDESENVOLVIMENTO DE UM SISTEMA PARA TESTES EIMPLEMENTAÇÕES DE EXPERIMENTOS PRÁTICOS A DISTÂNCIANOVO HAMBURGO, dezembro de 2010.


FÁBIO ALANO HEDLERDESENVOLVIMENTO DE UM SISTEMA PARA TESTES EIMPLEMENTAÇÕES DE EXPERIMENTOS PRÁTICOS A DISTÂNCIAUNIVERSIDADE FEEVALEINSTITUTO DE CIÊNCIAS EXATAS E TECNOLÓGICASBACHARELADO EM ENGENHARIA ELETRÔNICATRABALHO DE CONCLUSÃO DE CURSOProfessor Orientador: VANDERSÍLVIO DA SILVANOVO HAMBURGO, dezembro de 2010.


Dedico este trabalho aos meus pais,pelos seus sacrifícios, por acreditaremem mim e por tornar possível este sonho.


AGRADECIMENTOInicio agradecendo a minha família, em especial aos meus pais, Paulo e Helena, porproporcionarem tudo <strong>para</strong> a minha educação, sem poupar esforço, incentivando em todos osmomentos. Às minhas irmãs, Cláudia e Júlia, pela alegria da companhia e por me aturaremnos momentos difíceis. À minha namorada, Larissa, pelo companheirismo, compreensão epelas demonstrações de carinho durante todo este tempo. Aos demais familiares, pelaspalavras de apoio e otimismo.Um agradecimento aos professores do curso de Engenharia Eletrônica daUniversidade <strong>Feevale</strong>, destacando os professores Delfim, Piber, Ewerton, Ronaldo e Cíntia,por proporcionarem uma educação de qualidade. Um agradecimento especial ao meuorientador, Vandersílvio, por acreditar em mim e me apoiar neste trabalho.Agradeço ainda aos meus amigos do peito, Ricardo, Luis, Juliano, Carlos, Roberto,Rieper, Estevão, eternos companheiros e irmãos, pelos momentos de descontração, deixandoesta jornada um pouco mais tranqüila. Aos meus colegas de trabalho, Thiago, Guilherme,Fábio, Ederson, Rossano, Streit, Fabrício, Alessandra, pelo incentivo, por aturarem meu mauhumor e eventuais ausências. Aos meus colegas futuros engenheiros, Jean, Fernando, Jonatan,Sandro, Eduardo... A todos, meus mais sinceros agradecimentos.


RESUMOA educação a distância é uma forma de ensino amplamente difundida na atualidade,e evolui continuamente através da adesão de mais cursos e disciplinas à esse método. Oscursos de engenharia também buscam esta forma de ensino, porém muitas vezes há umaimpossibilidade devido à necessidade de atividades práticas. Na Engenharia Eletrônica éimprescindível o uso de determinados tipos de instrumentos, que garantem a implementaçãode experimentos práticos como complemento de ensino. Este trabalho propõe um dospossíveis métodos de acesso à experimentos de maneira remota, através de um servidor deInternet, conectado à instrumentos programáveis. Neste servidor estão gravados aplicativos<strong>para</strong> acesso aos instrumentos via barramento GPIB - desenvolvidos com base nos padrõesIEEE-488.1, IEEE-488.2 e SCPI, os quais definem os métodos e linguagens adotadas <strong>para</strong>controle de instrumentos programáveis - e também páginas de Internet, pelas quais é possívelo acesso ao laboratório remoto, garantindo o fluxo de dados entre o usuário e os instrumentos.Através do uso de sistemas semelhantes ao proposto neste trabalho, torna-se viável arealização de experimentos práticos a distância, agregando mais uma ferramenta <strong>para</strong>aprimoramento na qualidade de ensino.Palavras chave: GPIB, ensino a distância, IEEE-488, laboratório remoto,instrumentos programáveis.


ABSTRACTThe distance learning is a kind of teaching widespread nowadays, and it evolvescontinuously through the adhesion of more courses and subjects to this method. The engineercourses also look for this kind of teaching, but many times there is a impossibility due thenecessity of practical activities. In the Electronic Engineering it is indispensable the use ofsome kinds of instruments, that ensure the implementation of practical experiments as acomplement of teaching. This work propose one of the possible methods of accessingexperiments remotely, through a Internet server, connected to programmable instruments. Inthis server there are saved software applications to access the instruments by GPIB bus -developed based on the IEEE-488.1, IEEE-488.2 and SCPI, standards that define the methodand languages adopted to control programmable instruments - and also web sites, throughwhich is possible to access the remote laboratory, ensuring the data flow between user andinstruments. Through the use of similar systems like proposed in this work, becomes feasiblethe realization of distance practical experiments, adding one more tool to the learning qualityimprovement.Key words: GPIB, distance learning, IEEE-488, remote laboratory, programmableinstruments.


LISTA DE FIGURASFigura 1.1 – Conexão linear e conexão em estrela ................................................................... 20Figura 1.2 – Cabo de comunicação GPIB ................................................................................ 23Figura 1.3 – Conector GPIB ..................................................................................................... 23Figura 1.4 – Estrutura de relatório de status ............................................................................. 28Figura 1.5 – Sintaxe dos comandos SCPI ................................................................................ 31Figura 2.1 – <strong>Modelo</strong> padrão de instrumentos programáveis .................................................... 38Figura 2.2 – Multímetro modelo 34401A ................................................................................. 40Figura 2.3 – <strong>Modelo</strong> padrão de um medidor digital ................................................................. 41Figura 2.4 – Fonte modelo E3631A ......................................................................................... 42Figura 2.5 – <strong>Modelo</strong> padrão de uma fonte de potência ............................................................ 42Figura 2.6 – Switch Unit modelo 34970A ................................................................................ 43Figura 2.7 – Módulo 34904A ................................................................................................... 44Figura 2.8 – <strong>Modelo</strong> padrão de um chaveador de sinais .......................................................... 45Figura 2.9 – Gerador de Sinais modelo 33220A ...................................................................... 45Figura 3.1 – Interface E2078A/82350A PCI/GPIB .................................................................. 49Figura 3.2 – Interface 82357B USB/GPIB ............................................................................... 50Figura 3.3 – Definição do diretório da biblioteca visa.h .......................................................... 53Figura 4.1 – Diagrama físico do laboratório remoto ................................................................ 60Figura 4.2 – Diagrama lógico do laboratório remoto ............................................................... 62Figura 4.3 – Diagrama de blocos do circuito contador de pulsos............................................. 80Figura 4.4 – Circuito contador .................................................................................................. 81Figura 4.5 – Diagrama de blocos do circuito seletor de canal .................................................. 82Figura 4.6 – Circuito seletor de canal ....................................................................................... 84Figura 4.7 – Entrada de dados .................................................................................................. 87Figura 4.8 – Botões de seleção de canal de medição................................................................ 90Figura 4.9 – Página de testes iniciais ........................................................................................ 92Figura 4.10 – Experimento do conversor D-A ......................................................................... 94Figura 4.11 – Experimento sobre amplificadores operacionais ............................................... 96Figura 5.1 – Circuito conversor DA ......................................................................................... 99Figura 5.2 – Circuito com amplificadores operacionais ......................................................... 102


LISTA DE TABELASTabela 1 – Plataformas e ambientes que suportam VISA ........................................................ 34Tabela 2 – Experimento 1 - Medidas obtidas remotamente ..................................................... 99Tabela 3 – Experimento 1 - Medidas obtidas localmente ...................................................... 100Tabela 4 – Experimento 2 - Medidas obtidas remotamente ................................................... 102Tabela 5 – Experimento 2 - Medidas obtidas localmente ...................................................... 102


LISTA DE ABREVIATURAS E SIGLASAPI - Application Programming InterfaceASCII - American Standard Code for Information InterchangeCI - Circuito IntegradoCMOS - Complementary Metal-Oxide-SemiconductorGPIB - General Purpose Instrument BusHP-IB - Hewlett Packard Instrument BusHTML - Hipertext Markup LanguageHTTP - Hipertext Transfer ProtocolI/O - Intut/OutputIEEE - Institute of Electrical and Electronic EngineersPC - Personal ComputerPCI - Peripheral Component InterconnectPHP - Hipertext PreprocessorRS232 - Recommended Standard 232SCPI - Standard Commands for Programmable InstrumentsUSB - Universal Serial BusVISA - Virtual Instrumentation Software Arquiteture


SUMÁRIO1 BARRAMENTO GPIB .................................................................................................. 181.1 IEEE 488.1 – Características físicas do barramento................................................. 201.1.1 Linhas de Handshake .......................................................................................... 211.1.2 Sinais de controle de operação ........................................................................... 211.1.3 Cabo de comunicação ......................................................................................... 221.1.4 Endereçamento ................................................................................................... 231.2 IEEE 488.2 – Controle e programação ..................................................................... 241.2.1 Mensagem padrão ............................................................................................... 251.2.2 Principais comandos ........................................................................................... 251.2.3 Relatório de status .............................................................................................. 271.2.4 Requisição de serviço ......................................................................................... 291.3 Standard Commands for Programmable Instruments ............................................... 301.3.1 Sintaxe da SCPI .................................................................................................. 311.3.2 Parâmetros dos comandos SCPI ......................................................................... 321.4 Virtual Instrumentation Software Arquiteture .......................................................... 332 INSTRUMENTOS PROGRAMÁVEIS ....................................................................... 362.1 Compatibilidade de instrumentos programáveis ...................................................... 372.2 <strong>Modelo</strong> padrão de instrumentos programáveis ......................................................... 382.3 Multímetro ................................................................................................................ 402.4 Fonte de alimentação ................................................................................................ 412.5 Switch Unit ............................................................................................................... 432.6 Gerador de sinais ...................................................................................................... 453 INTERFACES PARA ACESSO AOS INSTRUMENTOS ......................................... 473.1 Controlador da rede GPIB ........................................................................................ 473.1.1 Hardware do controlador .................................................................................... 483.1.1.1 Placa de interface PCI .................................................................................... 483.1.1.2 Placa de interface USB .................................................................................. 493.1.2 Softwares do controlador .................................................................................... 503.1.2.1 IO Libraries .................................................................................................... 513.1.2.2 Dev C++ ......................................................................................................... 52


123.2 Ambiente Web .......................................................................................................... 533.2.1 Servidor de Internet ............................................................................................ 543.2.2 Linguagem HTML .............................................................................................. 563.2.3 Linguagem PHP .................................................................................................. 563.2.4 Visão do usuário ................................................................................................. 584 DESENVOLVIMENTO DO LABORATÓRIO REMOTO ....................................... 594.1 Visão geral do modelo .............................................................................................. 604.1.1 Diagrama físico modelo...................................................................................... 604.1.2 Diagrama lógico do modelo ............................................................................... 614.2 Desenvolvimento dos aplicativos ............................................................................. 634.2.1 Comandos VISA genéricos ................................................................................ 644.2.2 Comandos SCPI específicos ............................................................................... 674.2.2.1 Comandos <strong>para</strong> controle do multímetro Agilent 34401A .............................. 694.2.2.2 Comandos <strong>para</strong> controle da fonte Agilent E3631A ....................................... 704.2.2.3 Comandos <strong>para</strong> controle da switch unit ......................................................... 704.2.2.4 Comandos <strong>para</strong> controle do gerador de sinais Agilent 33220A .................... 714.2.3 Aplicativos dedicados ......................................................................................... 744.2.3.1 Aplicativo <strong>para</strong> medida de tensão no multímetro .......................................... 744.2.3.2 Aplicativo <strong>para</strong> ajuste da fonte ...................................................................... 744.2.3.3 Aplicativo <strong>para</strong> output ON/OFF .................................................................... 754.2.3.4 Aplicativo <strong>para</strong> pulso de reset ........................................................................ 764.2.3.5 Aplicativo <strong>para</strong> seletor de canal ..................................................................... 764.2.3.6 Aplicativo <strong>para</strong> gerador de pulsos ................................................................. 774.2.3.7 Aplicativo <strong>para</strong> test point ............................................................................... 784.3 Desenvolvimento dos circuitos auxiliares ................................................................ 794.3.1 Circuito contador de pulsos ................................................................................ 804.3.1.1 Funcionamento do circuito ............................................................................ 804.3.1.2 Esquema do circuito ....................................................................................... 814.3.2 Circuito seletor de canal ..................................................................................... 824.3.2.1 Funcionamento do circuito seletor de canal .................................................. 824.3.2.2 Esquema do circuito ....................................................................................... 834.4 Desenvolvimento das páginas de Internet ................................................................ 854.4.1 Interface gráfica das páginas .............................................................................. 854.4.2 Método de chamada dos aplicativos ................................................................... 884.4.3 Páginas de experimentos .................................................................................... 914.4.3.1 Experimento <strong>para</strong> testes iniciais .................................................................... 924.4.3.2 Experimento Conversor DA .......................................................................... 934.4.3.3 Experimento Amplificadores Operacionais ................................................... 955 ANÁLISE DOS RESULTADOS ................................................................................... 985.1 Experimento 1 - Conversor DA ................................................................................ 995.2 Experimento 2 - Amplificadores operacionais ....................................................... 101CONSIDERAÇÕES FINAIS ............................................................................................... 104REFERÊNCIAS BIBLIOGRÁFICAS ............................................................................... 109


13APÊNDICES ......................................................................................................................... 112APÊNDICE A ....................................................................................................................... 113APÊNDICE B ........................................................................................................................ 114APÊNDICE C ....................................................................................................................... 116APÊNDICE D ....................................................................................................................... 117APÊNDICE E ........................................................................................................................ 119APÊNDICE F ........................................................................................................................ 121APÊNDICE G ....................................................................................................................... 123APÊNDICE H ....................................................................................................................... 126APÊNDICE I ......................................................................................................................... 129APÊNDICE J ........................................................................................................................ 133APÊNDICE K ....................................................................................................................... 136APÊNDICE L ........................................................................................................................ 138


INTRODUÇÃOUm sistema de medição baseado em um computador realiza a coleta de uma variávelfísica, como pressão, temperatura, tensão, corrente, etc., e converte este valor em um sinaldigital, de maneira que possa ser utilizado como base <strong>para</strong> o controle de variáveis. O elementobásico de um sistema de medição é um sensor, que fornece um sinal elétrico proporcional aovalor da grandeza que se está medindo, e este é posteriormente digitalizado. De maneirasimilar, em uma aplicação de controle, na qual são enviados sinais <strong>para</strong> uma vasta gama deatuadores, um sinal digital é convertido em um sinal analógico (MATHIVANAN, 2007).Estes tipos de sistemas são importantes em todas as aplicações onde se torna necessárioconhecer e controlar variáveis físicas de maneira automatizada.O protocolo General Purpose Interface Bus (GPIB) foi criado com o objetivo degarantir acesso a uma grande quantidade de instrumentos de maneira padronizada, através deum único barramento de dados. É uma interface muito utilizada <strong>para</strong> automatização delaboratórios (MATHIVANAN, 2007). Inicialmente era descrito pelo padrão IEEE-488,focado mais nos aspectos físicos do protocolo. O padrão IEEE-488.2, de 1987, surgiu <strong>para</strong>determinar a configuração mínima que um instrumento deve ter <strong>para</strong> atender ao padrão e umconjunto de comandos básicos <strong>para</strong> controle dos instrumentos. Mais tarde, em 1990, foiintroduzido o padrão Standard Commands for Programmable Instruments (SCPI), que trouxe


15um conjunto padronizado de comandos <strong>para</strong> controle de uma vasta linha de instrumentos, deacordo com a função de cada um.Nos cursos da área de eletrônica é muito comum a utilização de uma grandequantidade de instrumentos, como multímetros, fontes, geradores de sinais, etc., os quais sãocontrolados manualmente de maneira local. Porém com o crescimento da informática, tornousepossível desenvolver sistemas que possibilitem o controle desses instrumentos de maneiraremota.Com o desenvolvimento e popularização da Internet, diversos serviços passaram aser oferecidos por esse meio, entre eles, o ensino a distância. Entre os fatores que motivam odesenvolvimento deste tipo de ensino estão: facilidade de acesso ao conteúdo das aulas dequalquer lugar do mundo, flexibilidade de horário, economia de tempo e em transporte, entreoutros. Em faculdades como as de engenharia, o ensino a distância é mais restrito, pois namaioria das disciplinas são necessários equipamentos especiais, que não estão disponíveis nasresidências dos estudantes, fazendo com que estas disciplinas sejam cursadas necessariamentede maneira presencial.O objetivo principal deste trabalho é o desenvolvimento de um ambiente web, quepossibilite a realização de experimentos práticos a distância, via internet. Este ambiente sedifere dos simuladores computacionais pois não é realizado num ambiente controlado e asmedidas são reais. Estas medidas devem ser as mesmas que seriam obtidas caso oexperimento fosse realizado de maneira local. Este trabalho segue em linha com um projetode pesquisa que vem sendo desenvolvido no curso de Engenharia Eletrônica da Universidade<strong>Feevale</strong>.


16Para chegar ao resultado esperado no objetivo geral, foi necessário dividir o escopodo trabalho e fixar objetivos específicos, que facilitam o direcionamento e fundamentam otrabalho. Os objetivos em questão são os seguintes:Realização de um estudo sobre o protocolo GPIB, objetivando oentendimento das principais características especificadas pelos padrões IEEE-488.1 e IEEE-488.2.Estudar o funcionamento e os principais recursos dos instrumentosprogramáveis da Agilent Technologies®.Desenvolvimento de softwares <strong>para</strong> acesso aos instrumentos de maneiralocal, afim de testar os principais comandos e funções dos instrumentos.Implementação de uma metodologia <strong>para</strong> a realização de experimentos adistância, via Internet, garantindo o correto envio de informações, respostasas solicitações, de maneira amigável aos usuários.Este trabalho está dividido em cinco capítulos, além das conclusões.No primeiro capítulo é realizado um estudo do barramento GPIB, descrevendo demaneira resumida o seu histórico e os padrões IEEE-488.1 e IEEE-488.2. São abordadastambém as linguagens SCPI e VISA.


17No segundo capítulo são descritos os instrumentos programáveis sob a óptica dalinguagem SCPI, e são apresentados os instrumentos utilizados neste trabalho.No terceiro capítulo são listados e descritos os recursos de interface, necessários <strong>para</strong>garantir o acesso aos instrumentos, da maneira como desejado.No quarto capítulo é descrita a metodologia utilizada, descrevendo asimplementações, tanto em software quanto em hardware, de forma a garantir o cumprimentodas propostas deste trabalho, baseado no que foi exposto nos capítulos anteriores.No quinto capítulo são implementados dois roteiros de laboratório, baseados nosexperimentos desenvolvidos, e são submetidos à realização por dois alunos do curso deEngenharia Eletrônica, afim de avaliar a eficácia do sistema.A última parte do trabalho é destinada às conclusões acerca dos assuntos abordados eanálise de resultados obtidos ao fim do desenvolvimento e realização de experimentos. Sãoidealizadas também algumas propostas de <strong>trabalhos</strong> futuros na área.Ao final são citadas, ainda, as referências bibliográficas utilizadas como base nodesenvolvimento do trabalho.


1 BARRAMENTO GPIBO barramento GPIB foi criado pela Hewlett-Packard no ano de 1974, com o objetivode simplificar a interconexão entre os instrumentos de testes. Antes deste protocolo existir, eranecessário o desenvolvimento e construção de uma interface especial <strong>para</strong> cada instrumentoque fosse acrescentado num sistema de medição. (MATHIVANAN, 2007)Inicialmente denominado Hewlett-Packard Instrument Bus (HP-IB), o sistemapropunha um cabo padrão <strong>para</strong> a interconexão de vários instrumentos a um único computador.Este cabo era conectado de um instrumento a outro, de maneira a formar uma ramificação,sendo limitado a um máximo de 14 instrumentos, utilizando um cabo de até 20 metros decomprimento.Este sistema foi apresentado <strong>para</strong> a comunidade mundial no ano de 1974, sendoadotado pelo IEC, na Europa, no ano de 1975. Nos Estados Unidos, devido a objeção ao nomeHP-IB, pois levava as iniciais da Hewlett-Packard, foi adotado uma nova nomenclatura:General Purpose Instrument Bus (GPIB). Em 1978 o GPIB foi adotado como o padrão IEEE-488.


19O padrão IEEE-488 simplificou a interconexão física entre instrumentos, porém ospadrões de programação e estrutura de comunicação eram muito distintos entre diferentesfabricantes. Cada qual utilizava diferentes comandos e controles. Com objetivo de padronizartambém a estrutura de software, a Tektronix propôs um conjunto de formatos padrão, o qualfoi utilizado como base <strong>para</strong> criação do IEEE-488.2, de 1985, fazendo com que o padrãoanterior fosse renomeado <strong>para</strong> IEEE-488.1. O novo padrão apresentava um formato demensagem padrão, um conjunto de comandos comuns, um padrão <strong>para</strong> estrutura de relatóriode status e um protocolo de controle, a fim de unificar o controle de instrumentos de centenasde diferentes fabricantes.Sendo assim, o padrão IEEE-488.2 determinou como enviar comandos a uminstrumento e como enviar respostas <strong>para</strong> os controladores. Especificamente, isso se resume adefinir como seriam implementados alguns tipos de funções, caso estas fizessem parte dasfunções de determinado instrumento. Com isso, era possível que dois instrumentossemelhantes, compatíveis com o padrão IEEE-488.2, utilizassem diferentes conjuntos deinstruções, de acordo com as suas funcionalidades.Isso levou ao desenvolvimento de outro padrão, conhecido como StandardCommands for Programmable Instruments (SCPI), que consiste em um conjunto de comandospadrão <strong>para</strong> a comunicação entre dispositivos da mesma classe e capacidade funcional. Issoagilizou muito o desenvolvimento de sistemas de instrumentação, pois uma medida de tensão,por exemplo, pode ser feita de maneira idêntica por dois instrumentos com a mesmafuncionalidade, mesmo que um seja um multímetro e outro um osciloscópio.


20Neste Capítulo será feita uma breve abordagem sobre as principais características dobarramento GPIB, segundo padrão IEEE-488.1 e IEEE-488.2. Será mostrada, também, asintaxe e estrutura básica dos comandos SCPI. Por último, serão passadas algumasinformações a respeito da biblioteca VISA.1.1 IEEE 488.1 – Características físicas do barramentoBasicamente, uma rede GPIB é formada por um controlador e dispositivos(instrumentos). O controlador do sistema pode enviar instruções pelo barramento, conversarcom o dispositivo e ouvir as respostas dos mesmos. Os dispositivos têm a capacidade de ouviras instruções e/ou responder aos comandos do controlador. As formas de conexão podemvariar entre linear e estrela ou ambas, conforme é mostrado na Figura 1.1.Figura 1.1 – Conexão linear e conexão em estrelaFonte – NI-488.2, 1999, p.1.1O barramento de dados é formado por 16 vias de comunicação, sendo oito vias dedados e oito de controle, além de oito vias de GND <strong>para</strong> os sinais de controle. Dos sinais de


21controle, três são sinais de handshake (NRFD, NDAC e DAV) e cinco são sinais de controlede operação (ATN, EOI, IFC, REN e SRQ).1.1.1 Linhas de HandshakeAs linhas de handshake garantem que a comunicação entre os dispositivos e ocontrolador seja feita sem erros de transmissão. A descrição da função de cada sinal segueabaixo:NRFD (Not Ready For Data) – indica se o dispositivo está ou não pronto<strong>para</strong> receber um byte de mensagem;NDAC (Not Data Accepted) – indica se o dispositivo aceitou ou não um bytede mensagem;DAV (Data Valid) – o dispositivo indica que os sinais nas linhas de dadossão válidos.1.1.2 Sinais de controle de operaçãoOs sinais de controle de operação são os sinais responsáveis por garantir o fluxo deinformações através do barramento. A sua descrição é a que segue:ATN (Attention) – indica o sentido de transmissão. Caso o valor sejaverdadeiro (nível lógico 1), todos os dispositivos entram em modo de


22comando e a transmissão é realizada do controlador <strong>para</strong> os dispositivos.Quando falso (nível lógico 0), os dispositivos estão em modo de dados e atransmissão se dá do dispositivo <strong>para</strong> o controlador.EOI (End Of Identity) – possui duas funções: marca o último caractere deuma mensagem e é utilizado pelo controlador <strong>para</strong> iniciar uma verificação<strong>para</strong>lela.IFC (Interface Clear) – é utilizado pelo controlador <strong>para</strong> interromper toda aatividade na rede. Caso o sinal esteja em 1, todos os dispositivos retornam<strong>para</strong> os seus estados iniciais. O tempo de resposta dos dispositivos é de100us.REN (Remote Enable) – comuta os dispositivos em modo de controle localou remoto, através de mensagens da interface ou endereços.SRQ (Service Request) – ativando este sinal, o dispositivo requisita a atençãodo controlador, através de uma rotina de interrupção.1.1.3 Cabo de comunicaçãoOs cabos utilizados <strong>para</strong> a comunicação GPIB possuem 24 vias. Dependendo da suaconstrução, podem ter uma ou mais de uma malha de proteção, afim de evitar interferênciaseletromagnéticas ou de rádiofrequência. É recomendável que o comprimento máximo do cabonão exceda 20 metros, sendo que <strong>para</strong> a máxima taxa de transferência, recomenda-se distância


23máxima de dois metros entre dispositivos. Na Figura 1.2 é mostrado um cabo padrão deGPIB:Figura 1.2 – Cabo de comunicação GPIBFonte – Agilent, 2010Os cabos GPIB possuem um conector macho e outro fêmea. A Figura 1.3 mostra aimagem de um conector GPIB, indicando a correta nomenclatura e posição de ligação.Também é mostrada a configuração e nomenclatura correta da pinagem.Figura 1.3 – Conector GPIBFonte – L-COM, 20101.1.4 EndereçamentoO endereçamento dos dispositivos do protocolo GPIB é realizado através de cincobits. Sendo assim, são possíveis 32 endereços diferentes (0 a 31), porém o número de


24dispositivos simultâneos em uma rede se limita em 14. Não deve ser utilizado o endereço denúmero 31, pois se trata de um endereço que não permite comunicação. Também éconveniente evitar a utilização dos endereços 0 e 21 <strong>para</strong> os dispositivos, pois comumente osfabricantes utilizam um desses endereços como padrão <strong>para</strong> o controlador.Cada dispositivo deve ter um endereço exclusivo na rede, de maneira que este sejaacessado individualmente. A maneira mais comum de realizar o endereçamento é pela seleçãodo mesmo através de um conjunto de dip switches, com cinco switches, localizado na partetraseira dos instrumentos. Alguns dispositivos oferecem a possibilidade de alteração doendereço através do uso do painel frontal, sendo o mesmo armazenado em uma memória nãovolátil. Há ainda os modelos mais novos de instrumentos, que utilizam os comandos SCPI<strong>para</strong> alterar e selecionar o valor do endereço.O controlador, geralmente um microcomputador, necessita de uma interface GPIB<strong>para</strong> acessar os dispositivos da rede. Esta interface possui um endereço específico (endereçodo controlador), como qualquer outro dispositivo. Os modelos de interface mais comumenteutilizados são: cartão de interface instalado no PC (ISA, PCI, ...); conversor de porta <strong>para</strong>lela<strong>para</strong> GPIB (fora de uso); conversor de porta serial <strong>para</strong> GPIB; e o mais recente, conversor deUSB <strong>para</strong> GPIB.1.2 IEEE 488.2 – Controle e programaçãoConforme citado no histórico, o padrão IEEE 488.2 surgiu com o objetivo depadronizar os aspectos de programação da comunicação GPIB. Com isso estabeleceram-se


25algumas regras que passaram a ser seguidas por todos os fabricantes, facilitando odesenvolvimento de sistemas que utilizam diversos diferentes instrumentos.1.2.1 Mensagem padrãoTodo instrumento compatível com o padrão IEEE-488.2 deve ser capaz de enviar ereceber dados e solicitar serviços. O padrão define exatamente o formato dos comandos eperguntas enviadas <strong>para</strong> o instrumento, assim como define os tipos de respostas enviadaspelos instrumentos. Os comandos são ações solicitadas aos instrumentos e perguntas são asleituras ou solicitações às quais os dispositivos devem responder quando forem solicitados.Conforme mencionado anteriormente, os dispositivos de uma rede se comunicamatravés de um barramento de dados de oito bits. A sintaxe do protocolo reconhece comandosem ASCII, hexadecimal e octal. Sendo assim, os comandos são nada mais do que strings,tanto maiúsculas quanto minúsculas, com no máximo 12 caracteres. Quando a string possuimais do que quatro caracteres é conveniente que a mesma seja abreviada, afim de diminuir onúmero de bytes enviados (Ex. VOLTAGE pode ser enviado como VOLTage, ousimplesmente VOLT).As mensagens de comando podem ainda receber um ou mais parâmetros, os quaisestão se<strong>para</strong>dos por um caractere de espaço.1.2.2 Principais comandos


26O conjunto de instruções define uma série de comandos que qualquer instrumentocompatível com o padrão IEEE 488.2 é capaz de responder. Além desses, existem diversosoutros comandos específicos, de acordo com cada instrumento ou função, porém oreconhecimento não é obrigatório. Quando o comando é sucedido de um ponto deinterrogação o mesmo trata-se de uma leitura, ou seja, haverá um retorno de informação porparte do instrumento.O conjunto de instruções padrão é descrito a seguir:*CLS (Clear Status Command) - limpa todos os registradores e estruturas destatus de um dispositivo.*ESE (Standard Event Status Enable Command) - habilitação do registradorde status e erros.*ESR? (Standard Event Status Register Query) - reporta de maneirapadronizada o status do dispositivo e os erros de comando.*IDN? (Identification Query) - solicita identificação do dispositivo(fabricante, modelo, versão, entre outros).*OPC (Operation Complete Command) - indica que foram completadas todasas operações pendentes.


27*RST (Reset Command) - faz com que todos os instrumentos retornem a umaconfiguração inicial conhecida, que pode ser definida pelo usuário.*SRE (Service Request Enable Command) - determina uma solicitação deserviço por parte do controlador.*STB? (Read Status Byte Query) - solicita a leitura do byte de status.*TST? (Self-Test Query) - executa um teste próprio. Se o resultado for 0, nãohá erro. Caso seja outro valor, este indicará a causa do erro.*WAI (Wait-to-Continue Command) - evita de que o controlador executequalquer comando ou pergunta até que as operações pendentes tenham sidocompletadas.1.2.3 Relatório de statusOs comandos comuns, com exceção do IDN?, são utilizados juntamente com orelatório de status. A estrutura do relatório de status é mostrada na Figura 1.4:


28Figura 1.4 – Estrutura de relatório de statusFonte – SUMATHI, 2007, p.263O registrador Event Status Register (ESR) informa, de maneira padronizada, o statusdos dispositivos e erros de comando. Cada bit do ESR representa um tipo diferente de evento,sendo o bit 6 reservado <strong>para</strong> configuração do usuário. Quando ocorre algum evento dentre osdetectáveis pelo ESR, é setado o bit 5 (ESB) no registrador Status Byte Register (SBR). Osbits de evento do registrador ESR permanecem setados até que seja solicitada uma leituradeste byte ou seja enviado o comando CLS.As respostas das solicitações de leitura do IEEE-488.2 ficam armazenadas no bufferOutput Queue, e o seu status é informado através do bit 4 do SBR (MAV). Quando o buffer


29está vazio, o nível lógico é 0. Normalmente este bit não é utilizado porque é possível (e maisusual) o acompanhamento das respostas através da leitura direta das solicitações.O Status Byte Register possui outros seis bits, dos quais cinco podem ser definidospelo usuário. O bit 6 é o RQS, que é setado quando o bit ESB estiver ativo, gerando umarequisição de serviço (SRQ). Quando o bit ESB é zerado, e nenhum outro bit do Status Byteestiver ativo, o bit RQS e a SRQ são zerados.1.2.4 Requisição de serviçoUma requisição de serviço (service request) é um método no qual um dispositivopode sinalizar ao controlador que um evento ocorreu. Um exemplo é um multímetro quefinalizou uma operação de medição. Esta requisição é semelhante a uma interrupção em umsistema microcontrolado.Para verificar qual dispositivo requisitou o serviço, o controlador faz umaverificação, que pode ser serial ou <strong>para</strong>lela:Verificação serial – é um processo no qual o controlador verifica o status de cada umdos dispositivos em uma rede. Cada dispositivo responde com um byte de status. Este byteindica se o dispositivo solicitou um serviço e qual o serviço solicitado.Verificação <strong>para</strong>lela – <strong>para</strong> algumas aplicações, a requisição serial se mostrou lenta,por esse motivo foi desenvolvida a verificação <strong>para</strong>lela, na qual os dispositivos informam os


30seus status simultaneamente. Este tipo de verificação é mais complicada e exige mais docontrolador, portanto raramente é utilizada.1.3 Standard Commands for Programmable InstrumentsA linguagem denominada Standard Commands for Programmable Instruments(SCPI) é uma linguagem que utiliza o padrão IEEE-488.2 <strong>para</strong> endereçar uma variedademuito grande de instrumentos de uma maneira padronizada, de acordo com o tipo de função ea classe dos instrumentos. Ela foi desenvolvida a partir de uma necessidade decompatibilidade entre sistemas de medição de diferentes instrumentos e fabricantes.O objetivo do SCPI é diminuir o tempo gasto no desenvolvimento de programas <strong>para</strong>sistemas automáticos de instrumentação. Este ambiente de programação permite o uso decomandos idênticos <strong>para</strong> as mesmas funções em diferentes instrumentos. Por exemplo, umcomando de trigger pode ser utilizado da mesma maneira <strong>para</strong> osciloscópios, geradores defunção, contadores, etc.O SCPI foi desenvolvido de maneira a receber atualizações no futuro, decorrentes dodesenvolvimento de novos instrumentos, sem causar problemas aos sistemas existentes.Além disso, o padrão SCPI determina um modelo padrão <strong>para</strong> todas as classes deinstrumentos programáveis, estabelecendo uma relação direta entre todos os tipos deinstrumentos.


31No decorrer deste trabalho serão apresentados diversos comandos do padrão SCPI,na medida em que forem necessários e utilizados no desenvolvimento dos experimentos. Poresse motivo, não serão descritos comandos específicos neste momento. A seguir serãomostrados a sintaxe de construção do comando e os parâmetros dos mesmos.1.3.1 Sintaxe da SCPITodos os instrumentos que adotam o padrão SCPI devem ser compatíveis com oscomandos comuns do padrão IEEE-488.2, descritos em 1.2.2.Assim como no padrão IEEE-488.2, existem alguns comandos principais no SCPIque todos os instrumentos devem reconhecer. Estes comandos são genéricos e relacionados aidentificação de erros, identificação de versão, condições de operação, habilitação e preset.Além desses comandos, existem inúmeros outros, cujo reconhecimento dependerá dacapacidade do instrumento.A sintaxe básica dos comandos SCPI é representada na Figura 1.5:Figura 1.5 – Sintaxe dos comandos SCPIFonte – SCPI-99, 1999, p.1-6-1


32O comando padrão é formado por diversos níveis, divididos pelo sinal de doispontos, formando uma árvore, cuja quantidade de níveis vai definir o quão específico ocomando será.O mnemônico utilizado em cada nível pode ser curto ou longo, sucedido ou não porum sufixo numérico, de acordo com a instrução. Um mnemônico curto nada mais é que aabreviação do mnemônico longo, executando a mesma função. Por exemplo, o comando“VOLTage:OFFSet 0.0”, cuja função é ajustar o offset de uma determinada tensão dereferência <strong>para</strong> o valor 0.0, pode ser representada também por “VOLT:OFFS 0.0”.Conforme descrito no exemplo acima, observa-se que sempre o comando de menornível (mais à direita) refere-se ao de maior nível (mais à esquerda).A grande maioria dos comandos possui uma pergunta associada. Esta pergunta érepresentada pelo sinal de interrogação. Quando um comando de pergunta é recebido, o ajusteatual associado ao comando é apresentado como resposta ao comando. Ou seja, o sinal deinterrogação é utilizado quando se deseja realizar uma leitura de um determinado sinal noinstrumento.1.3.2 Parâmetros dos comandos SCPINa descrição de grande parte dos comandos utilizados em SCPI, são definidos algunsparâmetros que complementam os comandos, qualificando ou quantificando os mesmos.Seguem a seguir os diferentes tipos de parâmetros:


33Caracteres – conjunto de símbolos utilizados em alguns tipos de definições,como por exemplo, “VDC”, que define uma tensão de corrente contínua.Números decimais – servem <strong>para</strong> quantificar um determinado comando,como por exemplo, “VOLT 4.0”, que define uma tensão de 4,0 volts.Booleanos - utilizados quando a resposta esperada é digital (0 ou 1), semunidade de medida. Exemplo: ON e OFF.Coupling – comandos que provocam uma alteração em algum outrocomando, direta ou indiretamente.Unidades de medida e sufixos – são utilizados <strong>para</strong> determinar a ordem degrandeza dos valores numéricos (V, W, Ohm) ou qualificar os tipos demedidas (PK, RMS).1.4 Virtual Instrumentation Software ArquitetureA linguagem conhecida como Virtual Instrumentation Software Arquiteture (VISA)é uma linguagem padrão de I/O <strong>para</strong> programação em instrumentação. Esta linguagem nãotem capacidade de acessar diretamente os instrumentos. VISA é uma API de alto nível que fazchamadas em drivers de baixo nível, sendo capaz de controlar instrumentos via diversosprotocolos, entre eles o GPIB, fazendo as chamadas apropriadas de acordo com o tipo deinstrumento que está sendo utilizado.


34Existem diversas plataformas e ambientes de programação que suportam alinguagem VISA, conforme mostra a Tabela 1:Tabela 1 – Plataformas e ambientes que suportam VISAFonte – SUMATHI, 2007, p.265A linguagem VISA possui uma hierarquia interna que determina a maneira de acessoaos instrumentos. No topo da hierarquia existe um gerenciador de recursos, que permitelocalizar dispositivos (instrumentos) e abrir sessões (conexões) nos mesmos. No segundonível há as operações, cujas principais são read (verificar informações do dispositivo) e write(solicitar ações ao dispositivo). Na parte mais baixa da hierarquia encontram-se os atributos,que são as propriedades associadas com os instrumentos.Para realizar a comunicação via GPIB, utilizam-se as funções VISA como via deacesso aos instrumentos, ou seja, é criado um canal pelo qual são enviados os comandosreconhecidos pelos instrumentos, podendo estes ser tanto os comandos do protocolo IEEE488.2 como as mensagens do padrão SCPI.A linguagem VISA foi desenvolvida pela Interchangeable Virtual InstrumentFoundation (IVI Foundation), um consórcio aberto, fundado <strong>para</strong> desenvolver especificações<strong>para</strong> instrumentos programáveis, visando facilitar a padronização, melhorar o desempenho ereduzir os custos de desenvolvimento e manutenção dos programas de sistemas de


35instrumentação. A IVI Foundation também é responsável pelo desenvolvimento da linguagemSCPI.


2 INSTRUMENTOS PROGRAMÁVEISChamamos de instrumentos programáveis os instrumentos que podem sercontrolados através de comandos recebidos a partir de um determinado software. Esse tipo deinstrumento é comumente utilizado em sistemas complexos de aquisição de dados, pelafacilidade em controlar medições periódicas ou pré selecionadas, sem a necessidade deintervenção humana constante. Para isso, os instrumentos possuem uma interface decomunicação e respondem a algum tipo de linguagem. Como mencionado anteriormente,utilizam-se o IEEE 488.1 e IEEE 488.2 como protocolos padrão, bem como o SCPI comolinguagem padrão.Existem diversos fabricantes e tipos de instrumentos programáveis diferentes. Todosos instrumentos do laboratório de eletrônica digital da Universidade <strong>Feevale</strong> são da AgilentTechnologies, um dos maiores fabricantes de equipamentos de medição do mundo. Essesinstrumentos possuem interfaces GPIB e RS232, sendo que ambas reconhecem comandosSCPI. Alguns possuem interfaces construídas no próprio instrumento e outros necessitam demódulos se<strong>para</strong>dos que podem ser acoplados.Neste capítulo serão descritos, primeiramente, os instrumentos programáveis demaneira genérica, demonstrando a compatibilidade entre eles, conforme modelo padrão. Em


37seguida serão apresentados somente os instrumentos utilizados no desenvolvimento destetrabalho, apesar de existirem muitos outros tipos de instrumentos diferentes, com<strong>para</strong>ndo osmesmos também com o modelo padrão.2.1 Compatibilidade de instrumentos programáveisSob a óptica da programação SCPI, existem três diferentes tipos de compatibilidadecom relação a instrumentos programáveis. Dois instrumentos podem ser compatíveis demaneira vertical, horizontal ou funcional.Compatibilidade vertical é quando dois instrumentos do mesmo tipo possuem osmesmos controles. Por exemplo, dois osciloscópios que possuem os mesmos ajustes deescalas de tempo, tensão, trigger, etc..Compatibilidade horizontal é quando dois instrumentos utilizam a mesma técnica<strong>para</strong> realizar uma determinada medida, mesmo que eles forem de tipos diferentes. Umexemplo disso é a medida de frequência realizada por um osciloscópio e um contador. Estesdois instrumentos são considerados horizontalmente compatíveis se eles realizarem a medidada frequência através do mesmo comando.A compatibilidade funcional ocorre quando dois instrumentos diferentes queexecutam a mesma função fazem isso de maneira idêntica utilizando os mesmos comandos.Exemplo disso é um analisador de espectro e um gerador de RF realizando uma varredura emfrequência.


38Todos os comandos SCPI estão divididos de acordo com a classe e funcionalidadedos instrumentos. Portanto, muitos comandos são utilizados de maneira idêntica <strong>para</strong> diversosinstrumentos diferentes, o que torna o seu uso interessante ao programador.2.2 <strong>Modelo</strong> padrão de instrumentos programáveisA Figura 2.1 apresenta um modelo genérico de um instrumento programável. Estemodelo representa a maneira como um instrumento programável é visto e classificadosegundo o padrão SCPI. Cada bloco determina um tipo de funcionalidade ou classe deoperação que um instrumento pode ter.Figura 2.1 – <strong>Modelo</strong> padrão de instrumentos programáveisFonte – SCPI-99, 1999, p.2-2-1O objetivo desse modelo é facilitar a organização dos diversos comandos disponíveisno SCPI pela sua classe, <strong>para</strong> que possam ser utilizados por diferentes instrumentos, quepossuam blocos do modelo em comum, facilitando a sua programação e diminuindo aquantidade de diferentes comandos.A seguir serão descritos cada um dos blocos do modelo, afim de permitir oentendimento das diferentes funcionalidades dos instrumentos:


39Signal Routing (Roteamento de Sinais) - a função deste bloco é controlar oroteamento de sinais entre um sinal na porta de um determinado instrumento e a sua funçãocorrespondente no interior do instrumento.Measurement Function (Função de Medição) - converte um sinal físico em um sinaldigital, transformando o mesmo em informação, que fica disponível no barramento de dados.Pode realizar as funções adicionais de tratamento do sinal e cálculos de conversão.Signal Generation (Geração de Sinais) - faz a função inversa ao “measurementfunction”, ou seja, transforma um dado em um sinal físico. Também pode realizar operaçõesadicionais de tratamento de sinal e cálculos de pré-conversão.Trigger (Gatilho) - garante ao instrumento a capacidade de sincronização comeventos externos, ou com sinal periódico gerado internamente.Memory (Memória) - armazena dados internamente no instrumento. A memória podeser inacessível, como com os dados de calibração dos instrumentos, ou pode ficar disponível<strong>para</strong> ser endereçada pelo usuário, como em uma medida recém realizada.Format (Formatação) - possibilita a transformação entre dois diferentes tipos dedados, como, por exemplo, em uma conversão de dados internos <strong>para</strong> ASCII.Nem todos os instrumentos apresentam todos os blocos descritos acima, porém todossão formados por um conjunto de alguns dos blocos do modelo, conforme a funcionalidade decada instrumento. Os próximos tópicos deste texto descrevem alguns destes instrumentos.


402.3 MultímetroO modelo do multímetro utilizado neste trabalho é o 34401A, da Agilent (Figura2.2).Figura 2.2 – Multímetro modelo 34401AFonte – Product Overview, 2000, p.1O multímetro 34401A é um medidor digital de bancada de alta precisão. Realizamedidas das principais grandezas elétricas, podendo ser utilizado tanto <strong>para</strong> medidas simplesquanto <strong>para</strong> complexos sistemas de aquisição de dados, graças a sua capacidade decomunicação remota.De acordo com a sua classificação, o multímetro se enquadra no grupo dosmedidores digitais, cujo padrão é representado pelo modelo seguinte:


41Figura 2.3 – <strong>Modelo</strong> padrão de um medidor digitalFonte – SCPI-99, 1999, p.4-3-1Conforme mencionado anteriormente, observa-se que a sua representação partiu domodelo padrão apresentado, porém o medidor utiliza somente alguns blocos específicos.Quando é solicitada ao instrumento alguma operação de medição pelo barramentoGPIB, o sinal a ser medido é direcionado da entrada <strong>para</strong> o ponto de conversão interno doinstrumento pelo signal routing, de acordo com o tipo de medida que será realizada (ex.:tensão, corrente, resistência...). Em seguida o measurement function faz a amostragem eleitura do sinal, que em seguida é formatado pelo bloco format. No caso do multímetro, obloco trigger não é utilizado. O valor medido, então, é disponibilizado na forma de umainformação digital, através do data bus.2.4 Fonte de alimentaçãoO modelo da fonte utilizada neste trabalho é a E3631A, da Agilent (Figura 2.4).


42Figura 2.4 – Fonte modelo E3631AFonte – Agilent, 2010A fonte E3631A é composta de uma saída 0 a 6V (5A) e uma saída 0 a ±25V (1A). Acorrente e tensão de cada uma das saídas pode ser independentemente ajustada via painelfrontal, bem como via interface GPIB ou RS232. Através da interface remota, a fonte podeoperar tanto como listener quanto como talker. Listener (ouvinte) é o dispositivo que estárecebendo dados e Talker (Locutor) é o dispositivo que está enviando dados. A fonte recebeinstruções de valores a serem setados na saída e fornece informações quanto aos valores detensão setados e mensagens de erro.Conforme classificação, a fonte se enquadra no grupo das fontes de potência, cujopadrão é ilustrado na Figura 2.5.Figura 2.5 – <strong>Modelo</strong> padrão de uma fonte de potênciaFonte – SCPI-99, 1999, p.4-7-1


43Ao ser ajustada uma tensão via barramento de dados, o sinal é convertido no blocoformat (caso seja necessário, dependendo do formato da informação digital), <strong>para</strong> em seguidapassar <strong>para</strong> o bloco signal generation, onde será gerado o sinal fisicamente. Internamente,este bloco possui outras três subdivisões, uma sendo responsável pelas operações de cálculodo sinal antes de ser convertido, uma <strong>para</strong> o próprio bloco de fonte e outra <strong>para</strong> o bloco desaída, onde é feito o ajuste final do sinal. Em seguida, o sinal é direcionado pelo signalrouting e disponibilizado na saída do instrumento. Novamente há o bloco de trigger, que fazparte do modelo padrão de fontes, porém não é utilizado pela fonte de tensão, visto que não hánecessidade de sincronismo.2.5 Switch UnitA Switch Unit (Unidade de Chaveamento) é um instrumento utilizado <strong>para</strong> realizar ochaveamento ou aquisição de sinais. Ele pode ser utilizado tanto local quanto remotamente. Asua construção possibilita a utilização em diversas aplicações diferentes, pois nela podem serconectados diferentes módulos, conforme necessidade do usuário. O modelo da switch unitutilizada é 34970A, da Agilent (Figura 2.6)Figura 2.6 – Switch Unit modelo 34970AFonte – User Guide, 2006, p.1


44A switch unit é formada por uma unidade central (mostrada na Figura 2.6), na qual érealizada toda a parte de comunicação, processamento e comando das unidades adicionais.Internamente possui um rack (suporte em formato padrão onde podem ser encaixadas placas)que pode ser acessado pela parte traseira, onde podem ser acoplados diferentes módulos.Como exemplo cita-se os multiplexadores comuns e de RF, matrizes de contatos, módulosmultifuncionais, entre outros. Neste trabalho foram utilizados somente módulos de matrizesde contatos, pois eram os únicos disponíveis. O modelo do módulo utilizado é o 34904A(Figura 2.7).Figura 2.7 – Módulo 34904AFonte – Product Overview, 2005, p.20Este módulo possui uma matriz de relés de tamanho 4X8, sendo possível chavear 32diferentes pontos em um circuito. A versatilidade do seu uso está no fato de possibilitar ocontrole dinâmico de maneira remota, ou seja, é ele que vai possibilitar tanto modificações nocircuito que se está realizando medidas, quanto a medição em diferentes pontos deste circuito.Basta conectá-lo e operá-lo adequadamente.Seguindo na linha de com<strong>para</strong>ção dos instrumentos programáveis, a switch unit seclassifica como uma “comutadora de sinais”. A Figura 2.8 mostra o modelo padrão <strong>para</strong> estaclasse de instrumentos.


45Figura 2.8 – <strong>Modelo</strong> padrão de um chaveador de sinaisFonte – SCPI-99, 1999, p.4-9-1Como podemos notar, a unidade de chaveamento atua basicamente na parte físicados sinais, ou seja, são utilizados os blocos de signal routing de entrada e saída, <strong>para</strong>direcionar os sinais de um ponto a outro. Para alguns tipos de módulos é possível programarsequências de canais <strong>para</strong> serem fechados conforme eventos externos, utilizando-se <strong>para</strong> isto otrigger.2.6 Gerador de sinaisO modelo do gerador de sinais utilizado é o 33220A, da Agilent (Figura 2.9).Figura 2.9 – Gerador de Sinais modelo 33220AFonte – Data Sheet Agilent, 2005, p.1


46O gerador de sinais 33220A é um instrumento complexo que oferece de maneiraversátil uma grande quantidade de diferentes sinais <strong>para</strong> o desenvolvimento de sistemaseletrônicos. Dentre as principais formas de onda e sinais capazes de ser gerados estão:senoidal, quadrada, rampa, triangular, pulso, ruído e DC. Além disso, podem ser simuladossinais de modulação como AM, FM, PM, FSK, PWM.Grande parte dos sinais podem também ser gerados e controlados de maneira remota.Para isto existem comandos específicos <strong>para</strong> cada tipo de sinal, nos quais são especificadas asprincipais características como amplitude, frequência, offset, tipo de onda, saída utilizada, etc.O modelo padrão do gerador de sinais é idêntico ao modelo da fonte, mostrado naFigura 2.5, com a diferença de utilização do bloco de trigger, visto que os sinais gerados sãosincronizados.


3 INTERFACES PARA ACESSO AOS INSTRUMENTOSO acesso aos instrumentos programáveis via interface GPIB pode ser realizado dediversas maneiras diferentes. Porém sempre é necessário um controlador, que faça ogerenciamento dos dados transferidos pelo barramento. Este controlador fica conectado atodos os instrumentos e define quando um determinado instrumento recebe ou pode enviaralguma informação.Neste capítulo serão descritos os recursos que serão utilizados <strong>para</strong> realizar o acessoaos instrumentos do laboratório, tanto de hardware quanto de software, bem como asferramentas que garantam o acesso via Internet aos experimentos.3.1 Controlador da rede GPIBConforme mencionado, um dispositivo de uma rede GPIB pode se comportar de duasmaneiras diferentes: como listener ou talker. Na maior parte do tempo, os instrumentosfuncionam como listeners, pois geralmente recebem mais instruções do que enviaminformações. Apesar dos instrumentos também assumirem o papel de talker, esta função fica,majoritariamente, a cargo do controlador, que pode ser uma placa de controle ou, na maioriados sistemas, um microcomputador.


48O computador possui grande capacidade de processamento, memória e espaço dearmazenamento, além da interface amigável ao usuário, sendo assim um equipamento muitoversátil <strong>para</strong> desenvolvimento de sistemas de medição. Mas <strong>para</strong> tal, precisa de algunsrequisitos básicos de hardware e software.Neste tópico será descrita uma das maneiras de configurar um microcomputador (amaneira utilizada no desenvolvimento deste trabalho), afim de possibilitar a sua atuação comocontrolador em uma rede GPIB. A maneira descrita neste tópico garante a conexão de maneiralocal, sendo os recursos <strong>para</strong> conexão remota (Internet ou rede local) descritos no tópico 3.2.3.1.1 Hardware do controladorOs computadores convencionais não vêm equipados com interfaces GPIB, devido aofato deste padrão ser exclusivo de instrumentação. Mas eles possuem diversas outrasinterfaces de comunicação, como RS232, USB, PCI, etc. Por esse motivo, é necessário utilizarcircuitos de acoplamento que possibilitem a comunicação do computador com a rede.Foram utilizados duas diferentes placas de comunicação. No computador dolaboratório foi instalada uma placa de interface PCI e <strong>para</strong> alguns testes utilizou-se uma placaUSB, por versatilidade e facilidade de troca de um computador <strong>para</strong> outro. Segue a descriçãode ambos os modelos.3.1.1.1 Placa de interface PCIO modelo da placa PCI utilizada é a E2078A/82350A, da Agilent (Figura 3.1).


49Figura 3.1 – Interface E2078A/82350A PCI/GPIBFonte – Agilent, 2010Esta placa está montada dentro do computador do laboratório de eletrônica. Como opróprio nome indica, é montada no barramento PCI. Ela possibilita o controle dosinstrumentos e troca de informações entre o computador e dispositivo GPIB. Através dautilização de um buffer interno, possibilita velocidades superiores a 750KB/s. (Datasheet82350A)Todos os drivers da placa são instalados juntamente com o IO Libraries, conjunto debibliotecas fornecido pela Agilent, que será descrito mais adiante.3.1.1.2 Placa de interface USBO modelo de conversor USB-GPIB utilizado nos testes é o 82357B USB/GPIB, daAgilent. Na Figura 3.2 uma imagem do mesmo está disponível.


50Figura 3.2 – Interface 82357B USB/GPIBFonte – Agilent, 2010A interface USB/GPIB é a maneira mais fácil e prática de interconectar um laptop ouPC em uma rede GPIB, pois não é necessária nenhuma configuração de endereço, instalaçãode cartão adicional ou alimentação externa, além da facilidade da USB em reconhecimentorápido após conexão (plug and play). Além disso, alcança altas velocidades de transferência:superior a 1,15MB/s (maior que a interface PCI).Quando a interface é conectada ao computador, a placa é alimentada pela própriaporta USB. A interface é reconhecida como mestre da rede onde está conectada e a ela éautomaticamente atribuído o endereço 21 (padrão <strong>para</strong> controlador). Em seguida ela já estápronta <strong>para</strong> ser utilizada.Os drivers da placa USB, assim como da placa PCI, também são instaladosjuntamente com as bibliotecas IO Libraries.3.1.2 Softwares do controladorConforme descrito, é necessário a instalação de drivers que garantam a comunicaçãodireta com os dispositivos de interface GPIB conectados ao computador. Para o


51desenvolvimento dos programas de controle dos instrumentos é necessária alguma linguagemde programação de nível um pouco mais elevado. Para estas duas necessidades, foramutilizados o IO Libraries e o Dev C++, respectivamente.3.1.2.1 IO LibrariesO IO Libraries é uma coleção de bibliotecas, fornecida gratuitamente pela AgilentTechnologies, que permite o desenvolvimento de softwares <strong>para</strong> o controle de instrumentos.Além disso, oferece diversos utilitários que ajudam a conexão rápida e fácil dos instrumentosao computador.Um dos utilitários utilizados é o Agilent Connection Expert, com o qual é possívelgerenciar a rede GPIB, visualizando os endereços de todos os dispositivos conectados, quetipo de interface que está sendo utilizada, identificação de cada um dos instrumentos,alteração de endereços, etc.Outro utilitário é o Agilent Interactive IO, através do qual é possível enviarcomandos diretamente a qualquer instrumento e ler as suas respostas. É bastante útil na etapade desenvolvimento de um sistema, pois é possível testar comandos IEEE 488.2individualmente antes de implementá-los no software, assegurando a sua funcionalidade.Quanto às bibliotecas, existem basicamente duas diferentes: VISA e SICL. Abiblioteca SICL é uma biblioteca mais antiga, que ainda está sendo oferecida devido acompatibilidade com sistemas mais antigos. Para novos desenvolvimentos, é recomendada abiblioteca VISA, que é a utilizada neste trabalho.


52Juntamente, são instalados uma série de arquivos .dll, ou seja, drivers que facilitam aconexão de interfaces, como a USB, e realizam toda a parte de comunicação de baixo nível,evitando a necessidade de desenvolvimento de aplicativos de níveis mais baixos.3.1.2.2 Dev C++Conforme descrito, por intermédio das bibliotecas do IO Libraries, é possível odesenvolvimento de sistemas em diversas linguagens e ambientes de programação diferentes.Por preferência, foi definida a utilização do C++, através do Dev C++ Versão 4.9.9.2, por seruma linguagem vastamente difundida e extremamente confiável.Através do C++, é possível o desenvolvimento de aplicativos que acessemdiretamente os instrumentos e apresentem os resultados das medidas da maneira desejada peloprogramador. É possível, também, o desenvolvimento de complexos sistemas demonitoramento independentes, sequenciais ou que respondam a comandos externos aosaplicativos. Tudo conforme especificação ou necessidade do desenvolvedor.Com o IO Libraries instalado no computador, foi configurado o Dev C++ <strong>para</strong> que omesmo fizesse o reconhecimento dos comandos VISA. Para isso, primeiramente, foideclarada a biblioteca no cabeçalho dos arquivos C (#include ). Porém como estabiblioteca não é padrão <strong>para</strong> o C++, foi necessário também instanciar todos os projetosutilizados com o endereço da biblioteca visa.h, <strong>para</strong> que a mesma fosse localizada. Isso foifeito em “Opções de Projeto”, nas opções “Diretório das Bibliotecas” e “Diretórios deInclude”, onde foi digitado o endereço da biblioteca e do include, conforme mostra a Figura3.3:


53Figura 3.3 – Definição do diretório da biblioteca visa.hFonte – Software Dev-C++, 2010Os comandos utilizados nos aplicativos desenvolvidos em C++ são uma mescla daslinguagens VISA e SCPI. A linguagem VISA fornece um canal direto ao protocolo <strong>para</strong> oscomandos SCPI. Portanto, as instruções enviadas aos instrumentos são na realidade SCPI.Esta ideia ficará mais clara no próximo capítulo, quando for descrito o desenvolvimento dosaplicativos.3.2 Ambiente WebComo mencionado anteriormente, o objetivo deste trabalho é o desenvolvimento deum sistema de acesso a instrumentos à distância, que permita ao usuário realizar experimentospráticos de maneira remota através da Internet.Partiu-se do princípio de que o usuário final tivesse acesso a somente um computadorcom um browser qualquer, conforme qualquer usuário de internet. Tendo isso em mente,


54definiu-se que não seria possível a utilização de nenhum software de interface no PC dousuário. Sendo assim, a estrutura necessária <strong>para</strong> satisfazer estas especificações se assemelhaa uma homepage comum, localizada dentro de um servidor, o qual estivesse conectado aosinstrumentos e à Internet.Sendo a linguagem do protocolo GPIB (utilizado pelos instrumentos) de baixo nível,era necessária a utilização de uma interface que possibilitasse a comunicação entre ahomepage e os instrumentos. Para isso, foram desenvolvidos aplicativos em C++ (conforme jámencionado), os quais executam funções específicas <strong>para</strong> cada comando selecionado pelousuário a partir da homepage.Neste tópico serão descritos, de maneira geral, os recursos necessários <strong>para</strong> aconfiguração de um servidor <strong>para</strong> as homepages desenvolvidas, localizado no computador dolaboratório de eletrônica conectado aos instrumentos.3.2.1 Servidor de InternetCom o intuito de reduzir os custos de implementação e garantir a aplicabilidadedireta na universidade, utilizou-se o software Apache HTTP Server como servidor pelo fatode ser gratuito e amplamente difundido. O servidor Apache é o líder de mercado de servidoresda Web livres que constitui aproximadamente 55 por cento da World Wide Web(CONVERSE, 2010).O Apache é um software aberto, desenvolvido por um grupo de voluntáriosespalhados ao redor do mundo, formando o Apache Group. O resultado do trabalho deste


55grupo é um servidor robusto, cuja grande escala de utilização se deve mais à sua performancedo que a questão financeira (FIELDING, 2002).A versão utilizada do Apache foi a 2.2. Em se tratando de um software gratuito, omesmo foi obtido a partir da página da própria Apache (www.apache.org). O setup possui umassistente de instalação que facilita a sua configuração.Dentre algumas características do Apache está o suporte facilitado <strong>para</strong> diversaslinguagens, como Perl, PHP, Java. Isso dá uma grande diversidade de recursos aodesenvolvedor web.Para a configuração das linguagens de programação e outras funcionalidades, oApache não possui uma interface gráfica específica, sendo essa realizada através de um únicoarquivo de configuração primário, chamado httpd.conf, que pode ser editado com o uso de umeditor de texto.O Apache mantém dentro de sua estrutura um diretório chamado htdocs. Estediretório determina o endereço da página inicial utilizada pelo servidor. Esta página recebe onome de index e é acessada quando é digitado o endereço http://localhost/ no browser. Apartir dessa página pode-se garantir o acesso às demais páginas desejadas. Para isso bastaeditar uma página inicial, substituir o arquivo index existente dentro do diretório htdocs eacrescentar links de maneira a acessar outras frames do web site.A partir daí, basta o desenvolvimento de sites de Internet convencionais com asaplicações desejadas, no caso deste trabalho, as páginas de acesso aos aplicativos. Para o


56desenvolvimento dessas páginas foram utilizadas duas linguagens simultaneamente: HTML ePHP. As mesma serão descritas nos próximos sub tópicos.3.2.2 Linguagem HTMLA linguagem Hypertext Markup Language (HTML), ou simplesmente linguagem dehipertexto, é a linguagem universal utilizada na World Wide Web. Uma página HTML évoltada ao usuário, ou seja, visa possibilitar o acesso do internauta à infinidade deinformações contidas na Internet. Dentre muitas funcionalidades que podem ser desenvolvidasem HTML, seguem algumas: publicação on-line de textos, tabelas, fotos, etc.; busca deinformações através dos links que interligam os sites; desenvolvimento de serviços detransações diversas (pesquisa, compras, bancos,...); acesso a funcionalidades como vídeos,músicas, entre outros.Sendo assim, a utilização da linguagem HTML neste trabalho visa criar um ambienteamigável <strong>para</strong> o usuário final do laboratório remoto, possibilitando o acesso a partir de umbrowser qualquer, através da Internet, oferecendo funcionalidades semelhantes a grandemaioria dos páginas Web, como links, entrada de dados via formulário e interface gráfica.3.2.3 Linguagem PHPA utilização do Hypertext Preprocessor (PHP) neste trabalho se deu pela necessidadede chamada dos aplicativos C++, os quais irão realizar a comunicação direta com osinstrumentos, através da interface GPIB. Estes aplicativos recebem informações diversas a


57partir das páginas Web, executam funções pré-determinadas, e retornam informações quedeverão ser apresentadas ao usuário pela interface da Web.A linguagem PHP é uma linguagem de criação de scripts, embutida dentro da próprialinguagem HTML, adicionando funções do servidor nas páginas Web. É um módulo oficialdo servidor HTTP Apache. É classificada como Server Side, ou seja, pode ser acessada pelousuário somente de maneira indireta através do servidor. A grande maioria das funçõesexecutadas pelo PHP são invisíveis <strong>para</strong> o usuário final, portanto muitas vezes a página PHP éreconhecida como uma página HTML comum, interagindo com o usuário apenas através dealguns comandos de saída específicos (como os comandos print ou echo, que exibem textosou resultados na tela).O PHP utilizado no servidor é a versão 5. Para a sua instalação e configuração sãonecessários alguns cuidados especiais. Sendo as páginas PHP Server Side, é necessárioconfigurar o Apache <strong>para</strong> o reconhecimento das páginas com extensão .php. Isso é feito noarquivo httpd.conf do Apache, da maneira descrita a seguir:Primeiramente configura-se o diretório do index <strong>para</strong> execução da página inicialPHP, acrescentando o texto index.php conforme mostrado abaixo:DirectoryIndex index.html index.phpEm seguida foi necessário informar o endereço <strong>para</strong> que o módulo correto do PHPfosse carregado pelo Apache, acrescentando o seguinte texto no final do arquivo httpd.conf.


58PHPIniDir "C:\php5\\"LoadModule php5_module "C:\\php5\\php5apache2_2.dll”Uma vez configurado, torna-se muito prática a programação em PHP. Basta editar oprograma entre os sinais , dentro da própria estrutura do HTML. Para avisualização da interface gráfica da página, é necessário o uso de um editor específico de PHPou pelo acesso à página através do servidor.3.2.4 Visão do usuárioO usuário final, ao acessar um site como o do laboratório remoto através de umbrowser qualquer, estará acessando primeiramente a página index do diretório htdocs doApache. Dependendo da escolha do experimento, ele irá visualizar uma página HTML comalguns recursos gráficos que possibilitem o entendimento e realização do que foi proposto.Assim que for executada qualquer ação pelo usuário, ele simplesmente verá umapágina carregando e uma resposta correspondente a instrução solicitada será apresentada natela. Aparentemente o usuário estará simplesmente navegando de uma página <strong>para</strong> outra.Apesar de o sistema realizar muito mais tarefas do que simplesmente “navegar” deuma homepage <strong>para</strong> outra, é desejável que o usuário final não perceba estas tarefas, e tenha apercepção de que se trata de um simulador de circuitos, porém com medidas reais de umexperimento real. Isso é possível graças ao PHP, que é praticamente imperceptível ao usuáriofinal.


4 DESENVOLVIMENTO DO LABORATÓRIO REMOTOO laboratório remoto foi inicialmente pensado de maneira global, ou seja, foilevantado um modelo que garantisse que as instruções enviadas aos instrumentos e medidasrecebidas pelo usuário, pudessem trafegar por diferentes meios (Internet, controlador,barramento).Uma vez definido um modelo, cada parte deste modelo foi desenvolvidase<strong>para</strong>damente, porém tendo sempre em vista o todo, <strong>para</strong> garantir a compatibilidade entre aspartes.As informações necessárias ao desenvolvimento do trabalho estão em linha com oque foi exposto nos capítulos anteriores, sendo amplamente explorada a bibliografia que seencontra listada ao final deste relatório.Neste capítulo será descrito todo o desenvolvimento realizado <strong>para</strong> proporcionar ummodelo de laboratório remoto. Inicia-se com uma visão geral do modelo, <strong>para</strong> facilitar acompreensão da função de cada parte desenvolvida. Em seguida são apresentados osprincipais comandos <strong>para</strong> acessar cada tipo de instrumento utilizado e são descritos osaplicativos desenvolvidos. São apresentados, também, dois circuitos auxiliares, elaborados


60<strong>para</strong> proporcionar mais recursos <strong>para</strong> realização dos experimentos. Por último, sãoapresentados exemplos de páginas <strong>para</strong> Internet desenvolvidas com modelos de experimentos.4.1 Visão geral do modeloNeste tópico será apresentado o modelo geral do laboratório remoto, passandorapidamente por cada uma das partes que o compõe. No decorrer do capítulo, cada partedesenvolvida será descrita se<strong>para</strong>damente com mais detalhes.4.1.1 Diagrama físico modeloPara que o usuário tenha acesso ao laboratório remoto, são necessários diversosrecursos em diferentes níveis. O diagrama da Figura 4.1 ilustra os recursos físicos necessários.Figura 4.1 – Diagrama físico do laboratório remotoFonte – Autor, 2010


61Para realizar um experimento, o usuário acessa a página do laboratório de qualquerlocal, através de um PC conectado à Internet. As informações transitam pela “nuvem” eacessam o servidor localizado no laboratório que hospeda as páginas.No servidor encontra-se instalada uma placa de interface PCI/GPIB, que garanteacesso às funções de baixo nível da rede. Esta interface é conectada aos instrumentos atravésde cabos GPIB ligados em uma configuração linear, formando uma rede. Nesta rede, opróprio servidor é o controlador e os instrumentos são os dispositivos.Através dos instrumentos é possível acessar, modificar e realizar medições nosexperimentos. Para isso são utilizados também alguns circuitos auxiliares, que serão descritosmais adiante.4.1.2 Diagrama lógico do modeloO diagrama da Figura 4.2 representa o laboratório sob ponto de vista lógico:


62Figura 4.2 – Diagrama lógico do laboratório remotoFonte – Autor, 2010A visão do usuário do laboratório remoto é uma página de Internet convencional,com funções específicas <strong>para</strong> cada tipo de experimento. Quando é feita uma solicitação pelousuário, é realizado um acesso ao servidor através da Internet, via uma interface local quecarrega as páginas PHP. Estas páginas realizam funções dentro do servidor, carregando etrocando informações com os aplicativos instalados no servidor.Estes aplicativos são programas desenvolvidos em C++, que utilizam a bibliotecaVISA <strong>para</strong> enviar os comandos SCPI aos instrumentos, via interface GPIB.


63Quando é realizada uma medida, ou solicitada alguma outra informação de alguminstrumento, esta informação segue o fluxo inverso, sendo enviada do aplicativo <strong>para</strong> umendereço que é acessado pelas páginas PHP e são apresentadas ao usuário na própria página.4.2 Desenvolvimento dos aplicativosConforme explicado no Capítulo 3, foi utilizado o software Dev-C++ <strong>para</strong> odesenvolvimento dos aplicativos, empregando a biblioteca VISA. Esta biblioteca garante oacesso direto dos comandos SCPI à rede GPIB, facilitando a programação.Os comandos VISA utilizados são genéricos <strong>para</strong> todos os aplicativos, pois sãoutilizados <strong>para</strong> envio e recebimento dos comandos SCPI ou IEEE-488.2, que são os comandosque realmente executam funções diretas nos instrumentos.Este tópico foi dividido em três subitens. No primeiro subitem estão descritos demaneira genérica, todos os diferentes tipos de comandos VISA usados em todos osinstrumentos, seus parâmetros e utilização. No segundo subitem serão descritos os principaiscomandos dos aplicativos desenvolvidos, focando nas operações realizadas, <strong>para</strong> isso, osmesmos estão se<strong>para</strong>dos de acordo com os tipos de instrumentos utilizados, pois os comandosdiferem justamente com relação às classes dos instrumentos. No terceiro subitem serãodescritos todos os diferentes tipos de aplicativos desenvolvidos, sob óptica da funçãoexecutada especificamente <strong>para</strong> cada necessidade.


644.2.1 Comandos VISA genéricosPara entendimento dos comandos VISA utilizados, os mesmos serão descritos nasequência em que normalmente podem ser empregados em um programa de um sistema demedição. As linhas de comando a seguir foram tiradas de alguns aplicativos desenvolvidos,<strong>para</strong> exemplificar a sua utilização.ViOpenDefaultRM(ViPSession session);Retorna uma sessão 1padrão <strong>para</strong> um dos recursos, denominada session. Estecomando deve ser o primeiro na sequência de um programa, antes de qualquer outro comandoVISA, pois além de retornar a sessão, inicializa o sistema VISA.ViOpen(ViSession session, ViRsrc address, ViAccessMode accessMode,ViUInt32 timeout, ViPSession vi);Abre uma sessão <strong>para</strong> um dispositivo especificado por address. Seguem abaixo adescrição dos parâmetros deste comando:ViSession session - sessão retornada pelo comando ViOpenDefaultRM.ViRsrc address - representa o endereço do dispositivo <strong>para</strong> o qual está sendo aberta asessão. Existem diversas maneiras diferentes de endereçar a sessão. Para o protocolo GPIBsegue-se o seguinte comando: “GPIB::001::INSTR”, onde o valor 001 representa o endereçode rede do dispositivo.1 Via de acesso direto aos instrumentos.


65ViAccessMode accessMode - especifica o modo pelo qual o recurso está sendoacessado. Nos aplicativos foi utilizado o parâmetro VI_NULL, pois foi determinado modo deacesso múltiplo.ViUInt32 timeout - parâmetro relacionado ao accessMode, e especifica o tempo que orecurso fica preso antes que seja emitida uma falha. Como o accesMode está sendo definidocomo VI_NULL, consequentemente o timeout também receberá VI_NULL.ViPSession vi - identificador da sessão. Pode ser utilizado por outros comandos <strong>para</strong>chamadas à sessão.viPrintf(ViSession vi, ViString writeFmt, arg1, arg2,...);Esta função converte, formata e envia parâmetros <strong>para</strong> um instrumento.ViSession - identifica <strong>para</strong> qual sessão será enviada a informação.ViString - determina qual formato da informação que será enviada <strong>para</strong> a sessão.Pode receber formatos diferente de ASCII, como por exemplo caracteres especiais, que sãoantecedidos de „\‟, e formatos especiais, antecedidos de „%‟.Arg1, arg2, ... - estes argumentos armazenam os dados que se deseja enviar <strong>para</strong> odispositivo. Por exemplo, se em writeFmt for enviado „%d‟, é necessário mencionar qualinteiro (d) será enviado, portanto em arg1 será colocado o nome do inteiro.viScanf(ViSession vi, ViString readFmt, arg1, arg2,...);


66Esta função de IO recebe dados de um dispositivo, formata de acordo com o formatodeterminado por readFmt e armazena na variável indicada. Segue descrição dos parâmetros:ViSession - identifica de qual sessão será lida a informação.ViString - determina qual o formato da informação que será enviada <strong>para</strong> a sessão,conforme o comando Viprintf.Arg1, arg2,... - estes argumentos armazenam os dados lidos do dispositivo, damesma forma que no comando Viprintf.viWrite(ViSession vi, ViBuf buf, ViUInt32 count, ViPUInt32retCount);Transfere dados de maneira sincronizada <strong>para</strong> um dispositivo.ViSession - identifica <strong>para</strong> qual sessão será enviada a informação.ViBuf - representa a localização do bloco de dados a ser enviado <strong>para</strong> um dispositivo.ViUInt32 - especifica o número de bytes a serem escritos.ViPUInt32 - representa a localização do inteiro no qual será armazenado o número debytes que estão sendo enviados.viRead(ViSession vi, ViPBuf buf, ViUInt32 count, ViPUInt32retCount);


67Transfere dados de maneira sincronizada de um dispositivo <strong>para</strong> o controlador.ViSession - identifica de qual sessão será lida a informação.ViBuf - identifica <strong>para</strong> onde serão enviados os dados lidos do dispositivo.ViUInt32 - especifica o número de bytes a serem lidos.ViPUInt32 - representa a localização do inteiro no qual será armazenado o número debytes que forem transferidos.viClose(ViSession vi);Esta função finaliza a sessão identificada por vi. Neste processo, todas as estruturasde dados que haviam sido alocadas <strong>para</strong> a sessão são finalizadas.4.2.2 Comandos SCPI específicosAntes do desenvolvimento das rotinas dos aplicativos, foram estabelecidos endereçosfixos <strong>para</strong> cada um dos instrumentos, previamente configurados. Isto é importante <strong>para</strong> evitarque dois instrumentos recebam os mesmos endereços. Segue a listagem dos endereços:09 – Switch unit;01 – Multímetro;


6804 – Fonte de alimentação 1;05 – Fonte de alimentação 2;10 – Gerador de sinais;21 – Controlador da rede (placa PCI ou USB);Sempre que um instrumento é acessado através de um aplicativo é aberta uma sessão,utilizando-se uma sequência de comandos, conforme exemplo abaixo:strcpy(bufmulti,"GPIB::001::INSTR");viOpenDefaultRM(&defaultRM);viOpen(defaultRM, bufmulti, VI_NULL, VI_NULL, &vim);Nos comandos acima é realizada a cópia dos caracteres de endereço, conformepadrão GPIB, <strong>para</strong> a string bufmulti. Em seguida é solicitada uma sessão de nome defaultRM.Por último, é aberta uma sessão de nome defaultRM, <strong>para</strong> o endereço gravado em bufmulti,sessão esta identificada pela string vim.Uma vez aberta a sessão, todos os comandos que se deseja enviar <strong>para</strong> esteinstrumento, deverão fazer referência à sessão através do identificador da mesma (no exemploacima a string vim). Quando se deseja finalizar o programa, ou finalizar a utilização dedeterminado equipamento, deve-se fechar a sessão, através do comando abaixo:viClose(vim);


69A abertura e fechamento de sessão são comuns a todos os instrumentos que foremacessados, mudando somente os identificadores e endereços, por esse motivo não cabe repetira descrição <strong>para</strong> cada um deles. Serão descritos somente os comandos específicos maisutilizados em cada instrumento.4.2.2.1 Comandos <strong>para</strong> controle do multímetro Agilent 34401AO multímetro é basicamente um instrumento de leitura, ou seja, ele não executafunção ativa no circuito, apenas obtém informação do mesmo. As classes mais usuais deleitura são tensão, corrente, resistência, potência e temperatura. Para solicitar a leitura éenviado o comando MEASurement, utilizando-se o comando viWrite, conforme mostra oexemplo abaixo:viWrite(vim, (ViBuf)"MEAS:VOLT:DC? 60, 0.001\n", 27, &actual);Neste caso foi solicita uma leitura de tensão (VOLT) do tipo DC, na escala de 60volts, com resolução de 0,001V. Quando o instrumento recebe o comando, ele disponibiliza ovalor conforme solicitado, devido ao ponto de interrogação colocado depois de “DC”. Isto éum padrão <strong>para</strong> leituras e pode ser utilizado <strong>para</strong> a maior parte dos comandos.Para obter o sinal solicitado, deve-se fazer uma leitura do instrumento através docomando viRead. Segue exemplo:viRead(vim, (ViBuf)bufmulti, 27, &actual);


70O valor lido no instrumento de sessão vim é, então, armazenado em bufmulti, epoderá ser exibido na tela, caso desejado.Para diferentes classes ou tipos de leitura, basta mudar o comando entre aspas a serenviado <strong>para</strong> o instrumento. Porém deve-se sempre obedecer a ordem de primeiro enviar asolicitação e depois realizar a leitura.4.2.2.2 Comandos <strong>para</strong> controle da fonte Agilent E3631AA fonte, sob aspecto de instrumento programável, é o oposto do multímetro, poistrata-se basicamente de um instrumento de escrita, que fornece um valor na saída conformedesejado. Para configurar o tipo de valor de saída utiliza-se, por exemplo, o comando APPL:viWrite(vif, (ViBuf) "APPL P25V,15.00, 1.0", 21, &actual);No comando acima é ajustada uma tensão se 15,00 volts, com corrente de 1,0ampere, na fonte de tensão identificada como P25V (P de positivo).Para habilitar oudesabilitar a saída da fonte envia-se o comando “OUTP ON” ou “OUTP OFF” tambématravés do comando viWrite.4.2.2.3 Comandos <strong>para</strong> controle da switch unitPara a Switch Unit utiliza-se o comando ROUTe, que define o caminho do sinal.Para alguns tipo de módulos específicos pode ser utilizado o comando SCAN abaixo de


71ROUTe, que realiza uma aquisição sequencial. Para o módulo de matriz de relés 4X8utilizado, foi usado somente os comandos OPEN e CLOSe. Segue exemplo:viWrite(vim, (ViBuf) "ROUTe:CLOSe (@123)", 18, &actual);Neste caso foi solicitado o fechamento (CLOSe) do canal 123. A identificação docanal é feita da seguinte maneira: o primeiro número representa o número do módulo; osegundo número representa a coluna; o terceiro número representa qual relé da coluna. Sendoassim, foi selecionado o relé número três, da segunda coluna do módulo número um.Para realizar a leitura do status do canal o comando é o mesmo, acrescido do sinal deinterrogação. Após a solicitação deve ser feita a leitura da resposta do instrumento, conformesegue:viWrite(vim, (ViBuf) "ROUTe:OPEN? (@112)", 18, &actual);viRead(vim, (ViBuf)bufswitch, 1, &actual);A resposta do instrumento <strong>para</strong> o comando acima é um caractere, que seráarmazenado na string bufswitch. Caso o caractere armazenado seja „0‟, quer dizer que aresposta é falsa, ou seja, o canal está fechado. Do contrário („1‟), significa que a resposta éverdadeira e o canal está aberto.4.2.2.4 Comandos <strong>para</strong> controle do gerador de sinais Agilent 33220AO gerador de sinais é um instrumento que necessita de mais parâmetros <strong>para</strong> gerarum sinal conforme desejado, pois existem diversas características que normalmente se desejaconfigurar um sinal. Um exemplo de configuração de um sinal pulsado será exemplificado. A


72sequência de configuração não precisa necessariamente ser a mesma, mas é interessante quese preveja o máximo de características possíveis, caso contrário serão atribuídos valorespadrão do instrumento.Primeiramente configura-se o tipo de sinal. No exemplo foi escolhida um pulso(PULS). Outros tipo de sinal são senoidal (SIN), triangular (RAMP), quadrada (SQU),contínuo (DC).strcpy(SCPIcmd,"FUNC PULS \n");viWrite(Instrument, (ViBuf)SCPIcmd, (ViUInt32)strlen(SCPIcmd),&actual);O gerador utilizado no exemplo possui mais de uma saída. Portanto é necessárioinformar qual das saídas será utilizada. A saída escolhida abaixo foi a de impedância infinita.Poderia ser também a de 50 ohms.strcpy(SCPIcmd, "OUTPut:LOAD INF\n");viWrite(Instrument, (ViBuf)SCPIcmd, (ViUInt32)strlen(SCPIcmd),&actual);Para configurar os valores do sinal gerado, inicia-se dizendo qual parâmetro seráconfigurado, qual nível e qual unidade de medida. No exemplo abaixo se ajustou a tensão(VOLTage) de pico a pico (VPP) em 10.strcpy(SCPIcmd, "VOLTage 10 VPP\n");viWrite(Instrument, (ViBuf)SCPIcmd, (ViUInt32)strlen(SCPIcmd),&actual);


73A frequência foi configurada, conforme mostrado a seguir, <strong>para</strong> o valor de 1000Hz.Nota-se que não foi informada a unidade, isto porque a unidade padrão <strong>para</strong> frequência éHertz.strcpy(SCPIcmd, "FREQuency 1000");viWrite(Instrument, (ViBuf)SCPIcmd, (ViUInt32)strlen(SCPIcmd),&actual);Para o sinal em questão foi configurado também a largura de pulso (WIDT) <strong>para</strong> ovalor de 1 ms (a unidade padrão é segundo e foi enviado o valor 0,001s).strcpy(SCPIcmd,"PULS:WIDT 1e-3\n");viWrite(Instrument, (ViBuf)SCPIcmd, (ViUInt32)strlen(SCPIcmd),&actual);Foi ajustada também o nível DC do sinal, através do comando de OFFSet, <strong>para</strong> 5volts, deixando o pulso somente no semi-ciclo positivo (0 a 10 volts).strcpy(SCPIcmd, "VOLTage:OFFSet 5\n");viWrite(Instrument, (ViBuf)SCPIcmd, (ViUInt32)strlen(SCPIcmd),&actual);Falta ainda habilitar o sinal de saída, que é feito de maneira idêntica à fonte detensão, através do comando “OUTP ON” ou “OUTP OFF”.strcpy(SCPIcmd, "OUTPut ON\n");viWrite(Instrument, (ViBuf)SCPIcmd, (ViUInt32)strlen(SCPIcmd),&actual);Resumindo, após esta sequência de comandos, será gerado na saída de altaimpedância um pulso 10 volts positivo, de 1KHz, com largura de 1ms.


744.2.3 Aplicativos dedicadosComo descrito anteriormente, os aplicativos receberão uma informação do usuário apartir do site, farão o acesso aos instrumentos <strong>para</strong> executar a função e, se necessário,fornecerão outra informação como resposta.À medida que os experimentos foram sendo desenvolvidos, surgiu a necessidade dedesenvolvimento de aplicativos específicos <strong>para</strong> cada função. Neste tópico serão descritostodos os diferentes tipos de aplicativos desenvolvidos.4.2.3.1 Aplicativo <strong>para</strong> medida de tensão no multímetroEste aplicativo (exibido na íntegra no APÊNDICE A) fornece a leitura do valor datensão DC que está sendo lida pelo multímetro. Não há necessidade de dados de entrada, poiso endereço do multímetro na rede e os parâmetros de leitura foram deixados fixos. Comoinformação de saída, é impresso o resultado da leitura na tela, através do comando printf.4.2.3.2 Aplicativo <strong>para</strong> ajuste da fonteForam desenvolvidos diferentes aplicativos <strong>para</strong> ajuste da fonte <strong>para</strong> as saídas de±25V e ±6V, porém a lógica é sempre a mesma. Um exemplo é mostrado no APÊNDICE B.O programa recebe o valor de tensão a ser ajustado, fornecido pelo usuário, como uma string,conforme segue:int main(int argc, char *argv[]) {


75char valor[5];strcpy(valor, argv[1]);Ou seja, o programa recebe uma string no momento em que é carregado. A stringinicialmente está no endereço apontado por *argv[], e em seguida é copiado <strong>para</strong> a stringvalor.Em seguida este valor é copiado <strong>para</strong> dentro de um comando padrão pré-ajustado, oupor substituição ou por concatenação. A substituição é realizada caractere por caractere. Já naconcatenação o comando é desmontado e reconstruído com o valor fornecido, através docomando strcat (concatenar string). O valor da corrente máxima de saída foi fixado em 1ampère.Para informar que o programa foi executado, é impresso o valor ajustado na tela,através do comando printf.Após configurada a fonte, mantinha-se a saída desabilitada, pois este aplicativo serveapenas <strong>para</strong> ajuste da fonte. Para a habilitação ou desabilitação da saída foi desenvolvidooutro aplicativo, <strong>para</strong> possibilitar ao usuário a escolha do momento de ligar ou desligar aalimentação do circuito.4.2.3.3 Aplicativo <strong>para</strong> output ON/OFFEste programa (APÊNDICE C) recebe uma string de somente dois formatospossíveis, ou “ON” ou “OFF”. A função a ser executada pelo programa é simplesmenteconcatenar esta string com o comando “OUTPut ” e enviar <strong>para</strong> a fonte previamente ajustada.


76Apenas <strong>para</strong> informação do usuário, ele fornece na saída o texto ON ou OFF, deacordo com o que foi ajustado.4.2.3.4 Aplicativo <strong>para</strong> pulso de resetDurante o desenvolvimento de alguns circuitos, surgiu a necessidade de geração deum pulso único de reset, que pudesse ser acionado pelo usuário a qualquer momento. Paraisso foi desenvolvido um aplicativo <strong>para</strong> uma fonte auxiliar (APÊNDICE D).O programa primeiramente ajusta a fonte de tensão positiva <strong>para</strong> a tensão de 12 voltse mantém a saída desligada. Após isto, a saída é acionada por um período de tempo deaproximadamente 1 segundo e em seguida é novamente desligada, gerando assim um pulsomanual de 1 segundos de largura.4.2.3.5 Aplicativo <strong>para</strong> seletor de canalEste aplicativo (APÊNDICE E) foi desenvolvido <strong>para</strong> acessar os canais do módulode matriz 4X8 da Switch Unit. A sua função é modificar o estado do canal escolhido pelousuário.O programa recebe a informação do número do canal a ser acessado, conformesolicitado pelo usuário. Primeiramente verifica o estado do canal, enviando uma pergunta aoinstrumento. Em seguida faz a leitura da resposta e testa. Caso o canal em questão estejaaberto, ele envia o comando de fechamento. Caso esteja fechado, ele manda o comando deabrir.


77Como saída, fornece ao usuário a informação do estado final do canal solicitado.4.2.3.6 Aplicativo <strong>para</strong> gerador de pulsosEste aplicativo (APÊNDICE F) foi desenvolvido a partir de uma necessidade de umcircuito auxiliar utilizado (contador de 8 bits). Este contador foi utilizado como entrada de umdos experimentos desenvolvidos e será mostrado com mais detalhes no decorrer destecapítulo. Por hora, é importante saber que o objetivo do aplicativo é gerar uma quantidade depulsos que possa ser determinada pelo usuário.Sendo assim, a informação de entrada recebida é a quantidade de pulsos que sedeseja que sejam gerados.Inicialmente é ajustado no gerador de sinais um sinal pulsado positivo, com largurade pulso de 1ms. Para gerar o sinal com a quantidade certa de pulsos foi realizado o seguinteprocedimento:1 – determinação de uma janela de tempo de exatamente 1 segundo, através dageração de uma função delay baseado no relógio do computador;2 – ajuste da frequência do sinal de acordo com a quantidade de pulsos;3 – habilitação do sinal de saída de gerador no intervalo de delay;Portanto, a quantidade de pulsos é determinada da seguinte maneira:


78(4.1)Segue um exemplo:Neste exemplo o usuário entrou com o valor 16. Então a frequência ajustada será de16Hz, que em 1 segundo gera 16 pulsos.Como saída ele informa a quantidade de pulsos gerados.4.2.3.7 Aplicativo <strong>para</strong> test pointO aplicativo test point (ponto de teste - APÊNDICE G) também foi desenvolvido<strong>para</strong> ser utilizado em conjunto com um circuito específico (que também será descrito comdetalhes mais adiante). A função conjunta do circuito com o aplicativo é possibilitar aousuário a medição de tensão em diferentes pontos de um circuito qualquer. A funçãoexclusiva do aplicativo é realizar um sequência de operações, utilizando as funções de trêsaplicativos descritos: pulso de reset, gerador de pulsos e medida de tensão no multímetro.O programa recebe do usuário a solicitação de um ponto de medida, num intervalo de0 a 7, totalizando oito diferente valores.


79Uma vez recebida esta informação, é gerado um pulso de reset através da fonte, queestá conectada ao circuito auxiliar e inicializa o mesmo. Em seguida é gerada uma sequênciade pulsos no gerador de sinais, onde a quantidade de pulsos é igual ao número do ponto demedida fornecido pelo usuário. Esta sequência de pulsos, ao ser recebida pelo circuito, faz aseleção de um relé, entre oito possíveis. Este relé conecta a ponteira do multímetro a umponto preestabelecido de um circuito qualquer. Neste momento é solicitada a medida detensão do multímetro. Este valor é lido e fornecido como saída ao usuário.Desta forma, o que difere de uma solicitação do usuário <strong>para</strong> outra, é o ponto deteste, fazendo com que o multímetro seja fisicamente conectado a outro ponto do circuito,sendo indiferente <strong>para</strong> o multímetro qual o ponto que está sendo medido, pois os parâmetrosutilizados serão os mesmos.4.3 Desenvolvimento dos circuitos auxiliaresDentre os instrumentos utilizados no laboratório remoto, a Switch Unit é a queproporciona maior versatilidade <strong>para</strong> interação do usuário com o circuito que está sendoexperimentado, pois com a sua utilização é possível modificar fisicamente o circuito,interconectando o mesmo de diferentes formas, acessando diferentes pontos de medida com omesmo instrumento, acrescentando componentes, entre outros.Porém durante o desenvolvimento deste trabalho, houve um problema com esteinstrumento, impossibilitando a sua utilização. Por esse motivo, foi necessário utilizar outrasalternativas, dentre elas o desenvolvimento de circuitos auxiliares, que pudessem realizarfunções semelhantes às realizadas pela Switch Unit.


80Neste tópico serão descritos dois circuitos utilizados. O primeiro é um contador depulsos, <strong>para</strong> simulação de entradas digitais. O segundo é um circuito de acionamento de umconjunto de relés, que possibilita interação física com os experimentos.4.3.1 Circuito contador de pulsosEste circuito foi desenvolvido <strong>para</strong> possibilitar a simulação de oito entradas digitaisdiferentes em um experimento qualquer, a partir de dois dispositivos (fonte de tensão egerador de sinais), atendendo a uma grande quantidade de experimentos na área de eletrônicadigital.4.3.1.1 Funcionamento do circuitoO diagrama de blocos do circuito contador de pulsos está ilustrado na Figura 4.3:Fonte detensão 2Geradorde sinaisResetNº PulsosContadorde 8 bitsExperimentoFigura 4.3 – Diagrama de blocos do circuito contador de pulsosFonte – Autor, 2010O ponto central do circuito é o circuito integrado contador CMOS de 12 bits, modeloCD4040, do qual foram utilizados os oito bits menos significativos. Este CI possui duasentradas de controle, o reset e o clock.


81Na entrada de reset foi acoplada uma fonte programável auxiliar. Quando ésolicitado um pulso de reset, através do aplicativo, a fonte é ajustada <strong>para</strong> a tensão de 12 volts,e sua saída fica acionada num pequeno período de tempo, suficiente <strong>para</strong> inicializar acontagem.Na entrada de clock foi ligado o gerador de sinais. Quando é solicitada umasequência de pulsos pelo aplicativo, é gerado um sinal pulsado, cuja frequência é igual aonúmero de pulsos escolhido. A saída do gerador é, então, acionada durante o tempo de 1segundo, enviando exatamente a quantidade de pulsos desejada.4.3.1.2 Esquema do circuitoNa Figura 4.4 pode ser visto o desenho do circuito:RESETPULSOS_CLK1110MR~CPCD4040O0 9O1 7O2 6O3 5O4 3O5 2O6 4O7 13O8 12O9 14O10 15O11 1V0V1V2V3V4V5V6V7Figura 4.4 – Circuito contadorFonte – Autor, 2010Para utilização deste circuito basta conectar as saídas V0 a V7 ao circuito doexperimento que estiver sendo executado, sendo V0 o bit menos significativo e V7 o maissignificativo. Para simular as entradas deve ser feita a conversão de decimal <strong>para</strong> binário.


82Por exemplo: caso se deseje selecionar V3, deve ser ajustado o valor 8 através doaplicativo. Será selecionada uma frequência de oito Hertz, gerando oito pulsos de clock nocontador. Este, após a contagem, apresentará o resultado „00010000‟ na saída. Assim sendo,teremos 256 combinações de entradas diferentes.4.3.2 Circuito seletor de canalTomando como base a Switch Unit, foi desenvolvido este circuito que realiza umafunção semelhante, ou seja, <strong>para</strong> selecionar um dentre um conjunto de relés se<strong>para</strong>damente,sendo a função de cada relé estabelecida por quem estiver desenvolvendo o experimento.4.3.2.1 Funcionamento do circuito seletor de canalA vantagem de utilização deste circuito está no fato de proporcionar interação físicado usuário com o experimento. Ele foi construído com base no circuito contador de pulsosexplicado no subitem anterior. Segue abaixo o diagrama do circuito:Fonte detensão 2Geradorde sinaisResetNº PulsosContadorde 3 bitsDemux3X8 I ReléExperimentoFigura 4.5 – Diagrama de blocos do circuito seletor de canalFonte – Autor, 2010


83Assim como no circuito anterior, no contador acima utilizam-se também uma fonte eum gerador de sinais <strong>para</strong> controle do contador, que neste caso é de apenas três bits. Esteconjunto de três bits passa por um demultiplexador, podendo ser selecionadas oito diferentessaídas independentemente (0 a 7). Em cada uma dessas saídas está conectado um buffer decorrente <strong>para</strong> acionamento dos relés. Ao circuito que está sendo experimentado sãoconectados os contatos dos relés, da maneira mais conveniente ao usuário.4.3.2.2 Esquema do circuitoA Figura 4.6 mostra o circuito representado pelo diagrama de blocos da Figura 4.5.Para melhor entendimento vamos descrever um exemplo: digamos que o usuário queiraselecionar o canal TP4. Neste momento o aplicativo envia uma sequência de 4 pulsos declock, que gerará uma contagem de 0 (000) até 4 (001) no contador. O valor final de contagem„001‟ entra no circuito integrado demultiplexador CD4051, que ligará a entrada “IN” à saída04. A entrada “IN” foi deixada em VCC, portanto chegará VCC na saída 04. Com isso seráacionado o transistor Q6, que conduzirá através do relé K6, e fechará o contato normalmenteaberto do relé. Com isso, os pontos TP4 e COM4 estarão conectados fisicamente.


84Figura 4.6 – Circuito seletor de canalFonte – Autor, 2010Com o circuito acima são possíveis diversas simulações diferentes, como porexemplo, testar diferentes componentes ou partes do circuito, ligando no ponto de conexão docircuito todos os terminais comuns (COM) e a cada parte ou componente um dos TPs.Podemos também medir diferentes pontos do circuito com um único instrumento, demaneira semelhante: conecta-se o instrumento ao contato comum de todos os relés e cada TPem um diferente ponto do circuito. Cada vez que um diferente relé for acionado, muda oponto de medida, mas o instrumento continua medindo da mesma maneira.


85Diferentemente da Switch Unit, este circuito tem a limitação de ser possível acionarsomente um relé de cada vez, sendo este desligado quando for acionado outro relé.4.4 Desenvolvimento das páginas de InternetO usuário do laboratório irá utilizar somente um browser <strong>para</strong> acesso aosexperimentos, <strong>para</strong> possibilitar este acesso de qualquer local, sem necessidade de instalaçãode softwares específicos. Para garantir este recurso, foram desenvolvidas páginas combinandoas linguagens HTML <strong>para</strong> desenvolvimento da interface gráfica, e PHP, <strong>para</strong> realizar asfunções que forem solicitadas, dentro do servidor.Neste tópico serão descritas as etapas <strong>para</strong> o desenvolvimento destas páginas,apresentando algumas funções específicas e a interface final de alguns experimentos.4.4.1 Interface gráfica das páginasPara o desenvolvimento das páginas foi utilizado o software PHP Editor 2.22 <strong>para</strong>desenvolvimento, pois é possível desenvolver as páginas e visualizar a interface gráfica sem anecessidade do servidor, porém as funções específicas não são executadas, tanto em HTMLquanto em PHP. Neste subitem serão mostradas algumas funções desenvolvidas que sãovisíveis aos usuários.Em uma página HTML, os comandos sempre são descrito entre os sinais < >, sendoo comando iniciado por < > e finalizado por . As páginas sempre iniciam com e


86finalizam com , fazendo a identificação da mesma. Segue um exemplo deinicialização de uma página HTML.Página PHPNo exemplo acima, o cabeçalho e título são “Página PHP”. EXPERIMENTO NÚMERO 5 CONVERSOR DIGITAL-ANALÓGICO Neste caso, são escritas duas linhas de texto na tela, de maneira centralizada(align=center), na cor azul forte (color=darkblue). O texto “EXPERIMENTO NÚMERO 5” éescrito na letra de tamanho 5 (size=5) e o texto “CONVERSOR DIGITAL-ANALÓGICO”no tamanho 7. Para a quebra de linha entre um texto e outro, usa a função . Circuito 1 Circuito 2 Este conjunto de comandos gera uma tabela da largura da página (width=“100%”),com borda de largura 1 (border=“1”) e cor “#000000” (bordercolor"#000000"). Esta tabelapossui duas colunas () e uma linha. Na primeira linha há o texto “Circuito 1” e nasegunda “Circuito 2”.A função acima é usada <strong>para</strong> realizar a chamada de uma imagem localizada nomesmo diretório da página, cujo nome é “circuito” e a extensão é jpeg.


87Esta função consiste em uma entrada de texto <strong>para</strong> o usuário, na qual o mesmopoderá digitar um texto que será representado pelo nome “value”. O tamanho da fonte dotexto é 6.Esta função gera um botão do tipo “submit”, que apresenta no seu corpo o título“Ajustar”. Se<strong>para</strong>damente este botão não executa função alguma. Segue abaixo um exemplode chamada de outra página utilizando o conjunto do botão mais a entrada de texto. TENSÃO VDD Digite um valor no formato 00.0 Nesta sequência é exibido ao usuário o título “TENSÃO VDD” e o texto “Digite umvalor no formato 00.0”. Abaixo disso é mostrada uma entrada de texto e um botão do tiposubmit com o texto “Ajustar”. Quando for pressionado o botão, será carregada a página denome “labrem2010pag5vdd.php”, através do método POST, no qual os dados do formuláriosão diretamente transmitidos <strong>para</strong> o endereço constante em action. Abaixo é mostrado oresultado dos comandos anteriores na tela:Figura 4.7 – Entrada de dados


88Fonte – Autor, 2010 OUTPUT ON/OFF Esta outra sequência de comandos é semelhante à anterior, porém não é utilizadaentrada de texto, somente dois botões. Cada botão tem um nome diferente (name), <strong>para</strong>diferenciar a função dos mesmos na página. Quando forem pressionados, irão chamar apágina “labrem2010pag6.php”.4.4.2 Método de chamada dos aplicativosJuntamente com as páginas HTML descritas, foram desenvolvida funções PHP querealizam funções de acordo com os dados entrados pelo usuário. Estas funções resumem-sebasicamente a três tipos diferentes. O primeiro é uma simples chamada de aplicativo, semenvio de informações. No segundo são enviadas as informações digitadas <strong>para</strong> o aplicativo. Eo terceiro são valores previamente determinados, escolhidos pelo usuário através de botões,que são enviados ao aplicativo.Segue abaixo o primeiro exemplo. TENSÃO DE SAÍDA


89Neste exemplo, quando o usuário pressiona o botão do tipo submit, é carregada apágina “labrem2010pag5mul.php”, que possui o seguinte código PHP, entre os comandosHTML:A função shell_exec executa o aplicativo de nome multim e retorna a saída doaplicativo em forma de string, armazenando em $texto_multim. O aplicativo multim estálocalizado no mesmo diretório que armazena a página “labrem2010pag5mul.php”, realiza oacesso ao instrumento e retorna a resposta, que é exibida na tela pela funçãoprint(“$texto_multim”).No segundo exemplo mostrado abaixo, no qual o usuário entra com um valor, alógica é semelhante, porém a função PHP é alterada, conforme segue:O valor entrado pelo usuário é atribuído a $gerador. Caso não seja fornecido valor,não é executada nenhuma função. Do contrário, é carregado o programa gerador e enviado ovalor $gerador. O aplicativo gerador recebe o valor, executa a sua função e retorna uma saídaque será armazenada em $texto_gerador, <strong>para</strong> em seguida ser exibida na tela.


90Para o terceiro, na qual são oferecidas opções preestabelecidas ao usuário, sãonecessárias diferentes funções PHP. Segue um exemplo: TENSÃO Selecione o ponto de teste que deseja medir: Neste exemplo são exibidos ao usuário oito botões, de valores “TP1”, “TP2”, etc.Cada um possui um nome diferente (“0”, “1”,...). Segue como a imagem será apresentada aousuário:Figura 4.8 – Botões de seleção de canal de mediçãoFonte – Autor, 2010Quando o usuário pressionar um dos botões, será carregada a página”labrem2010pag6.php”, que terá o seguinte código PHP:


91A variável $testpoint receberá o valor fornecido pela função get_post_action, a qualestá descrita da seguinte maneira na mesma página:Esta função recebe todos os possíveis valores de entrada ('0','1','2','3','4','5','6','7') ecom<strong>para</strong> com o valor recebido após a seleção do usuário, que será armazenado em $<strong>para</strong>msatravés da função func_get_args(), padrão do PHP. Esta com<strong>para</strong>ção é feita pela funçãoforeach ($<strong>para</strong>ms as $name), ou seja, <strong>para</strong> cada valor de $<strong>para</strong>ms igual a $name, testa se avariável não é nula (através de isset) e retorna o seu valor armazenado em $name.Retornando à descrição anterior, o valor é então transferido <strong>para</strong> $testpoint e segue amesma lógica dos dois casos anteriores: é chamado um programa de nome testpoint etransferido o valor escolhido; é executado o programa, que fornece um resultado, que éarmazenado em $texto_testpoint e é exibido na tela por printf.4.4.3 Páginas de experimentos


92Neste subitem serão apresentadas algumas páginas com exemplos de experimentos,demonstrando a funcionalidade do laboratório remoto.Estes experimentos apresentam alguns circuitos semelhantes àqueles estudados nasdisciplinas do curso de Engenharia letrônica.4.4.3.1 Experimento <strong>para</strong> testes iniciaisO primeiro experimento desenvolvido foi chamado de testes iniciais, porque nele érealizado acesso aleatório a diferentes instrumentos, não sendo desenvolvido <strong>para</strong> umaaplicação especial. Neste experimento foi utilizada a switch unit, a fonte de tensão e omultímetro. O código completo pode ser visto no APÊNDICE H. Na Figura 4.9 é mostradauma imagem da página.Figura 4.9 – Página de testes iniciaisFonte – Autor, 2010


93Na primeira parte (Switch Toggle) estão 32 botões que, ao serem pressionados,invertem o estado atual do canal correspondente no módulo número 1 da switch unit. Na partecentral da página podem ser ajustadas as tensões da fonte, tanto <strong>para</strong> a saída de 6V quanto nasaída de 25V. Na última parte pode ser realizada a medida de tensão atual do multímetro.Esta página foi desenvolvida exclusivamente <strong>para</strong> realização de testes de acesso aosinstrumentos, e serviu de base <strong>para</strong> o desenvolvimento dos demais experimentos.4.4.3.2 Experimento Conversor DANa Figura 4.10 é apresentada a página do experimento “CONVERSOR DIGITAL-ANALÓGICO” (APÊNDICE I), comumente estudado nas disciplinas de Eletrônica Digital.Neste experimento são apresentados dois circuitos. O circuito contador é um circuito auxiliar,e foi ilustrado <strong>para</strong> que o usuário identifique como o mesmo está conectado ao circuito,fazendo referência dos pontos interconectados. O outro circuito é o próprio experimento queestá sendo realizado.


94Figura 4.10 – Experimento do conversor D-AFonte – Autor, 2010Na primeira parte são ajustadas as tensões de alimentação do circuito, na qual ousuário entra com os valores das tensões VDD e VSS, e seleciona o momento em que a saídada fonte é acionada, através dos botões ON e OFF.Na segunda parte, o usuário determina a quantidade de pulsos que será enviada <strong>para</strong>o circuito contador e, consequentemente ajusta os níveis lógicos V0 a V7, presentes naentrada do experimento. Há também o botão de reset, que pode ser usado <strong>para</strong> zerar ocontador, <strong>para</strong> reiniciar uma nova contagem.Medir.Na última pode ser medida a tensão de saída do circuito, pressionando-se o botão


95Na parte inferior da página é descrito o procedimento de ajuste e utilização e éapresentado o desenho do circuito que está sendo experimentado.Este circuito é um dos modelos de conversor digital-analógico, conhecido como redeR-2R, no qual se utilizam resistores de um mesmo valor ligados em cascata, cuja quantidadedepende do número de bits que está sendo convertido. Para cada bit que for acionado naentrada, as tensões vão se somando, porém em proporções diferentes, na ordem de 2 <strong>para</strong> 1,conforme números binários. Utilizam-se amplificadores operacionais <strong>para</strong> ajustar a tensãodentro de uma escala desejada. O valor de tensão de saída varia em uma determinada faixa demaneira proporcional aos valores digitais de entrada, neste exemplo de 8 bits, gerando 256níveis diferentes.4.4.3.3 Experimento Amplificadores OperacionaisO próximo experimento (APÊNDICE J) apresenta um circuito composto por doisamplificadores operacionais, em configurações diferentes. Este tipo de circuito é comum serestudado nas disciplinas de Eletrônica Analógica (Figura 4.11).


96Figura 4.11 – Experimento sobre amplificadores operacionaisFonte – Autor, 2010O primeiro operacional está ligado na configuração de amplificador não-inversor,pois a tensão Vin é aplicada na entrada não-inversora e há realimentação negativa. O valor datensão de saída é igual a tensão de entrada multiplicada pelo ganho (que é determinado peloresistor da entrada inversora e o resistor de realimentação).O segundo operacional não possui realimentação, portanto está ligado comocom<strong>para</strong>dor. Quando a tensão na entrada não inversora for maior, a saída fica igual a VDD.Quando a tensão na entrada inversora for maior, a saída vai <strong>para</strong> VSS.Na saída do com<strong>para</strong>dor está ligado um amplificador de corrente com transistorNPN, acionando uma carga simbolizada pelo LED.Para realizar o experimento, o usuário primeiramente ajusta as tensões dealimentação VDD e VSS, a tensão de entrada Vin e habilita a saída da fonte, <strong>para</strong> depois


97realizar as medições. Foram distribuídos diversos pontos de teste, proporcionando ao usuárioa medição da tensão nestes pontos <strong>para</strong> cada valor de Vin que for aplicado na entrada.


5 ANÁLISE DOS RESULTADOSCom o objetivo de avaliar a eficácia dos exemplos de experimento propostos, foramcriados dois roteiros de laboratório, nos moldes normalmente adotados pelos professores docurso de Engenharia Eletrônica, e submetidos à execução por dois alunos do curso, simulandouma situação real de complemento aos assuntos abordados nas disciplinas. O acesso aosexperimentos foi através da rede interna da Universidade <strong>Feevale</strong>, a partir de um laboratórioafastado daquele onde estavam montados os circuitos. Para visualizar o efeito dos testes noscircuitos, foi instalado um computador com uma webcam filmando o experimento com osinstrumentos. Para acessar o computador com a webcam foi utilizado o softwareTeamViewer, utilizado <strong>para</strong> acesso a outro computador pela Internet.Após realização dos testes de maneira remota, os mesmos foram executados demaneira local, obtendo as medidas manualmente dos instrumentos, afim de com<strong>para</strong>tivo comos valores obtidos remotamente.Neste capítulo serão mostradas as tabelas de medidas obtidas nestes doisexperimentos, tanto remota quanto localmente, e serão discutidos os resultados, na tentativade validar o método de acesso remoto utilizado. Os roteiros completos realizados pelosalunos, com medidas e respostas às questões propostas, podem ser conferidos nos apêndices.


995.1 Experimento 1 - Conversor DAO primeiro circuito submetido ao teste é mostrado abaixo:Figura 5.1 – Circuito conversor DAFonte – Autor, 2010O roteiro proposto (APÊNDICE K) solicita as medidas de tensão de saída “Vout”,variando-se o valor digital nas entradas “V0” a “V7”. Seguem a seguir as tabelas com asmedidas realizadas remotamente (Tabela 2) e localmente (Tabela 3):Tabela 2 – Experimento 1 - Medidas obtidas remotamenteQuant. PulsosValor DigitalV7 V6 V5 V4 V3 V2 V1 V0Vout0 0 0 0 0 0 0 0 0 0 V25 0 0 0 1 1 0 0 1 1,08 V50 0 0 1 1 0 0 1 0 1,96 V75 0 1 0 0 1 0 1 1 2,95 V100 0 1 1 0 0 1 0 0 3,84 V125 0 1 1 1 1 1 0 1 4,68 V150 1 0 0 1 0 1 1 0 6,24 V175 1 0 1 0 1 1 1 1 7,23 V200 1 1 0 0 1 0 0 0 8,27 V225 1 1 1 0 0 0 0 1 9,38 V250 1 1 1 1 1 0 1 0 9,93 VFonte – Autor, 2010


100Tabela 3 – Experimento 1 - Medidas obtidas localmenteQuant. PulsosValor DigitalV7 V6 V5 V4 V3 V2 V1 V0Vout Diferença %0 0 0 0 0 0 0 0 0 0,150V -25 0 0 0 1 1 0 0 1 1,075V -0,46%50 0 0 1 1 0 0 1 0 1,928V -1,63%75 0 1 0 0 1 0 1 1 2,918V -1,08%100 0 1 1 0 0 1 0 0 3,735V -2,73%125 0 1 1 1 1 1 0 1 4,635V -0,96%150 1 0 0 1 0 1 1 0 6,282V 0,67%175 1 0 1 0 1 1 1 1 7,111V -1,65%200 1 1 0 0 1 0 0 0 8,130V -1,69%225 1 1 1 0 0 0 0 1 9,369V -0,12%250 1 1 1 1 1 0 1 0 9,779V -1,52%Fonte – Autor, 2010A diferença mostrada na tabela acima refere-se à diferença percentual do valormedido localmente, com relação ao valor medido remotamente. Com base nos resultadosobtidos, podemos notar que os valores são bastante parecidos. A maior diferença (-2,73%)ficou nos 100 pulsos.Quando se realiza as medidas remotamente, o multímetro faz a leitura instantânea emantém o valor exibido fixo, até que uma nova leitura seja feita. Isso fez com que um aspectoimportante só fosse notado localmente: a variação dos valores de tensão com o tempo. Osvalores de tensão sofriam uma pequena queda com o passar do tempo. Por esse motivo,provavelmente as duas medidas podem ter sido tomadas em momentos diferentes,ocasionando a diferença de valores.Pela webcam foi possível comprovar isto, pois quando o multímetro fazia umaleitura, o valor que ficava fixo no display do multímetro era o mesmo daquele exibido no site,demonstrando que os valores recebidos eram os mesmos valores lidos. Com isso, uma


101possível diferença entre os valores fica evidentemente relacionada à variação da própriatensão por conta do tipo de circuito ou alguma diferença física na leitura do multímetro.Com relação a funcionalidade do site, o mesmo se mostrou satisfatório, pois todos oscomandos selecionados foram executados corretamente pelos aplicativos. Houve uma únicaexceção, na qual um aplicativo parou de responder, e teve que ser compilado novamente, poiso executável correspondente havia sumido do diretório. A provável causa está relacionada aoantivírus da rede <strong>Feevale</strong>, que pode ter identificado algum tipo de ameaça por parte de umexecutável e ter colocado o mesmo em quarentena. Isso havia ocorrido anteriormente, quandoo próprio Apache foi identificado como ameaça. Para solucionar este problema, é necessárioque todos os softwares necessários sejam acrescentados como exceção na lista de ameaças doantivírus.Quanto à descrição dos procedimentos do experimento, notou-se que melhorias nomesmo podem facilitar o entendimento, caso sejam aplicados em alguma disciplina, pois ousuário teve algumas dúvidas, que poderiam levar a erros na execução.5.2 Experimento 2 - Amplificadores operacionaisO segundo circuito é mostrado na Figura 5.2:


102Figura 5.2 – Circuito com amplificadores operacionaisFonte – Autor, 2010O roteiro (APÊNDICE L) solicita as medidas de tensão nos pontos “TP0” a “TP7”,variando-se a tensão na entrada “Vin” entre 0,000V a 1,000V. Seguem a seguir as tabelas comas medidas realizadas remotamente (Tabela 4) e localmente (Tabela 5):Tabela 4 – Experimento 2 - Medidas obtidas remotamenteVin (V) TP0 TP1 TP2 TP3 TP4 TP5 TP6 TP70.000 1.40mV 69.70mV 11.95V -12.03V 0.14V 6.00V -11.99V 10.40V0.200 0.19V 0.20V 11.95V -12.03V 2.12V 5.99V -11.97V 10.36V0.400 0.39V 0.40V 11.95V -12.03V 4.12V 5.99V -11.19V 10.37V0.600 0.60V 0.60V 11.94V -12.03V 6.00V 5.99V 0.73V 3.83V0.800 0.80V 0.80V 11.93V -12.04V 7.87V 5.99V 10.34V 39mV1.000 1.00V 1.00V 11.93V -12.04V 9.87V 5.99V 10.34V 39mVFonte – Autor, 2010Tabela 5 – Experimento 2 - Medidas obtidas localmenteVin (V) TP0 TP1 TP2 TP3 TP4 TP5 TP6 TP70.000 11,4mV 12,2mV 11,96V -12,01V 6,7mV 6,00V -11,18V 10,39V0.200 0,20V 0,20V 11,96V -12,00v 2,01V 6,00V -11,17V 10,39V0.400 0,40V 0,41V 11,96V -12,00V 4,01V 6,00V -11,17V 10,39V0.600 0,61V 0,61V 11,96V -12,00V 6,01V 6,01V 0,63V 3,41V0.800 0,81V 0,81V 11,96V -12,00V 7,89V 5,99V 10,32V 51,6mV1.000 1,01V 1,01V 11,96V -12,00V 9,87V 6,01V 10,32V 51,8mVFonte – Autor, 2010


103Podemos notar que, assim como no procedimento anterior, houve diferenças muitopequenas entre os valores medidos. As conclusões a respeito destas pequenas diferençastambém são as mesmas.Quanto ao método de seleção de ponto de medida, o mesmo funcionouperfeitamente, pois em nenhum momento foi selecionado um ponto de medida errado. Tudoocorreu conforme desejo do usuário. Além disso, durante este procedimento não ocorreunenhum problema semelhante ao experimento anterior, relacionado aos aplicativos.Este tipo de experimento possui uma grande vantagem, pois a mesma página,aplicativos, circuito auxiliar, etc., podem ser utilizados <strong>para</strong> qualquer tipo de circuito, no qualse deseje realizar a medida de tensão em oito diferentes pontos. Isso faz deste experimento umrecurso muito versátil de ser implementado.


CONSIDERAÇÕES FINAISO presente trabalho visou a criação de um sistema <strong>para</strong> testes e implementações deexperimentos práticos a distância, afim de complementar o ensino de disciplinas técnicas naárea de engenharia eletrônica, proporcionando ao aluno o acesso aos recursos de umlaboratório de eletrônica através da Internet.Foi realizado um estudo dos principais aspectos que compõem o padrão IEEE-488, oqual define as características do protocolo GPIB. O padrão IEEE-488 definiu uma série deespecificações às quais qualquer instrumento compatível deve atender. Proporcionou,portanto, uma base sólida <strong>para</strong> o desenvolvimento de sistemas de instrumentação remota e denovas ferramentas <strong>para</strong> o programador, como a definição do padrão SCPI. Este padrão trazuma série de comandos padronizados, permitindo uma compatibilidade muito grande entreinstrumentos de diferentes tipos e fabricantes, e facilitando ao desenvolvedor a criação denovas aplicações.Neste trabalho foi definido um método de acesso aos instrumentos utilizando-se <strong>para</strong>isso a interface VISA, que permite o acesso de aplicações aos drives das placas decomunicação. A linguagem utilizada <strong>para</strong> o desenvolvimento destas aplicações foi o DEV-C++ versão 4.9.9.2, através da biblioteca visa.h. O uso desta biblioteca facilitou muito a


105programação dos instrumentos, pois permitiu o envio dos comandos SCPI diretamente aosinstrumentos, sem necessidade de criação de interfaces de mais baixo nível computacional.A utilização do software servidor Apache facilitou o processo de criação de acesso àInternet e o desenvolvimento das páginas, não só pelo fato de ser gratuito, mas também pelafacilidade de configuração e utilização. A opção pela linguagem PHP é consequência daescolha do Apache, por ser um módulo oficial deste servidor. A utilização desta linguagemem conjunto com o HTML, trouxe recursos tanto visuais quanto funcionais <strong>para</strong> o acesso aosaplicativos desenvolvidos em C++, disponíveis no servidor.A realização dos experimentos deste trabalho se deu de maneira local (próprioservidor) e através da rede interna da Universidade <strong>Feevale</strong>, devido às restrições de acesso viaInternet à rede da Universidade. Mesmo assim, não estão previstas alterações no modeloproposto <strong>para</strong> outro tipo de acesso, pois as aplicações de ambos os lados (usuário e servidor)independem do meio físico utilizado (local, rede interna ou Internet).Através da realização dos experimentos por dois alunos do curso de EngenhariaEletrônica, conforme descrito no Capítulo 5, foi possível avaliar a funcionalidade do modeloproposto neste trabalho.Com relação a funcionalidade das páginas de Internet e facilidade de realização dosexperimentos, conclui-se que, com um procedimento adequadamente pre<strong>para</strong>do, com todos osdetalhes pertinentes descritos, o sistema pode ser utilizado sem problemas, desde já, <strong>para</strong>realização de alguns tipos de experimentos. Esta constatação foi compartilhada pelos doisalunos que realizaram os experimentos.


106Quanto aos valores obtidos, baseado no com<strong>para</strong>tivo apresentado entre as medidasrealizadas de maneira remota e local, pode-se afirmar que, independentemente das vias deleitura, o valor é idêntico, estando pequenas diferenças relacionadas a oscilações no própriocircuito experimentado ou aquisição física de leitura do multímetro. Uma vez que o valortenha sido lido pelo multímetro, esse mesmo valor será apresentado ao usuário no site.A realização deste trabalho se mostrou muito satisfatória no âmbito pessoal, poistrouxe um amplo conhecimento sobre instrumentação programável, através do estudo dealguns padrões existentes. Proporcionou também a interação com ferramentas de programaçãode diferentes níveis, utilizadas <strong>para</strong> o desenvolvimento de diferentes tipos de aplicações.Notou-se que a instrumentação programável proporciona uma gama muito grande de recursos,não só no âmbito educacional, mas também na indústria. Através do seu uso, é possível acriação de sistemas de controle automáticos eficientes, que realizem a captura de dados eatuem na correção de defeitos, sem a necessidade de intervenção humana direta.A realização de experimentos práticos à distância, como forma de complemento deensino, pode trazer uma série de vantagens aos alunos, professores e instituições de ensino,conforme seguem alguns exemplos:Aumento do tempo de acesso dos alunos aos recursos de um laboratório deengenharia.Facilidade de acesso, sem necessidade de deslocamento até a universidade.


107Redução de custo, através da diminuição da quantidade de equipamentos eespaço físico, pois é possível o compartilhamento dos mesmos instrumentos edo mesmo espaço físico por um número maior de alunos, através de acessosvia agendamento, por exemplo.Possibilidade de aumento no número de disciplinas que possam ser oferecidasvia ensino a distância.Baseado nestas vantagens, no estudo realizado e nos resultados obtidos com arealização deste trabalho, pode-se avaliar como extremamente viável o investimento nodesenvolvimento deste tipo de ferramenta educacional, visando a melhoria da qualidade deensino através do uso de tecnologias disponíveis e consolidadas.Pensando no aprimoramento do modelo proposto, existem diversas linhas depesquisa que podem ser seguidas em <strong>trabalhos</strong> futuros, tomando como ponto de partida estetrabalho. Dentre estas, citam-se algumas abaixo:Desenvolvimento de ferramentas de aquisição de dados e monitoramento emtempo real, visto que as implementações neste trabalho realizam a captura dedados em momentos específicos.Desenvolvimento de aplicativos <strong>para</strong> captura de imagens de instrumentoscom interface gráfica, como osciloscópios e analisadores de sinais.


108Agregar às páginas dos experimentos a opção de acesso às imagens dosexperimentos que estão sendo realizados, através do uso de uma webcam nopróprio site, instalada no servidor monitorando os instrumentos.Desenvolvimento de funcionalidades que permitam armazenar as medidas edados recebidos, <strong>para</strong> utilização em outros programas.


REFERÊNCIAS BIBLIOGRÁFICASAGILENT TECHNOLOGIES. Agilent 33220A Waveform Generator: Data Sheet. USA:2005. 4p.AGILENT TECHNOLOGIES. Agilent 33220A Waveform Generator: User's Guide. 3.ed.USA: 2005. 354p.AGILENT TECHNOLOGIES. Agilent 34401A Multimeter: Product Overview. 4.ed. USA:2000. 4p.AGILENT TECHNOLOGIES. Agilent 34970A Switch Unit: User's Guide. 4.ed. Loveland,USA: 2006. 440p.AGILENT TECHNOLOGIES. Agilent E3631A Triple Output DC Power Supply: User'sGuide. 4.ed. Korea: 2000. 165p.AGILENT TECHNOLOGIES. Agilent IO Libraries Suite: Agilent VISA User's Guide.1.ed. Loveland, USA: 2004. 56p.


110AGILENT TECHNOLOGIES. Agilent Web Site. Disponível em:. Acesso em: 10 out. 2010.AGILETN TECHNOLOGIES. Agilent 34370A Switch Unit: Product Overview. USA: 2005.24p.CONVERSE, Tim; PARK, Joyce. PHP 4: a Bíblia. Rio de Janeiro: Campus, 2001. 697p.FIELDING, R. T.; KAISER, R.. The Apache HTTP Server Project. IEEE ComputerSociety, 2002. Disponível em: . Acesso em: 12 out. 2010.HEWLETT-PACKARD COMPANY. Agilent 34401A Multimeter: User's Guide. 5.ed.USA: 2005. 235p.KABIR, Mohammed J.. Apache Server 2: a Bíblia. Rio de Janeiro: Campus, 2002. 823p.L-COM - GPIB Conector. USA: 2010. Disponível em: .Acesso em: 15 out. 2010.MATHIVANAN, N.. PC-Based Instrumentation: Concepts and Practice. New Delhi, India:PHI Learning, 2007. 683p.NATIONAL INSTRUMENTS CORPORATION. NI-488.2: User Manual. Texas, USA:1999. 141p.


111OGLIO, Pablo Dall‟. Criando Aplicações Gráficas em PHP. 2.ed. São Paulo: NovatecEditora Ltda, 2007. 445p.RAGGETT, David; HORS, Arnaud Le; JACOBS, Ian. HTML 4.01 Specification. W3C,1999. 389p. Disponível em: . Acesso em: 12 out. 2010.SCPI, Consortium. Standard Commands for Programmable Instruments. USA: 1999.819p.SUMATHI, S.; SUREKHA, P.. LabVIEW Based Advanced Instrumentation System. NewYork: Springer, 2007. 728p.


APÊNDICES


APÊNDICE A/*Aplicativo <strong>para</strong> medir tensão no multímetro*//*Fábio Alano Hedler 2010*/#include #include #include #include #include using namespace std;int main(){//Declaração das variáveischar endmulti[2];char buf[256] = {0}, bufmulti [20];ViSession defaultRM, vim;unsigned long actual;int teste;//Configuração do endereço do multímetrostrcpy(bufmulti,"GPIB::001::INSTR");bufmulti[18]=0;/*Abre sessão GPIB*/viOpenDefaultRM(&defaultRM);viOpen(defaultRM, bufmulti, VI_NULL, VI_NULL, &vim);viPrintf(vim, "*RST\n");viPrintf(vim, "*IDN?\n");/*Solicita medição de tensão DC do multímetro*/viWrite(vim, (ViBuf)"MEAS:VOLT:DC? 60, 0.001\n", 28, &actual);viRead(vim, (ViBuf)bufmulti, 20, &actual);/*Fecha sessão GPIB*/viClose(vim);viClose(defaultRM);bufmulti[0]=' ';bufmulti[1]=' ';bufmulti[2]=' ';/*Saída do multímetro*/printf("%s Volts", bufmulti);return 0;}// fim do main


APÊNDICE B/*Aplicativo <strong>para</strong> ajuste da tensão VDD*/#include #include #include #include #include using namespace std;int main(int argc, char *argv[]){//Declaração de variáveischar valor[5];char buf[256] = {0}, bufonte [50], medida[6];ViSession defaultRM, vif;unsigned long actual;//Define endereço da fontestrcpy(valor, argv[1]);strcpy(bufonte,"GPIB::004::INSTR");bufonte[18]=0;/*Abre sessão GPIB*/viOpenDefaultRM(&defaultRM);viOpen(defaultRM, bufonte, VI_NULL, VI_NULL, &vif);viPrintf(vif, "*IDN?\n");//Desliga a saída da fonteviWrite(vif, (ViBuf)"OUTP OFF", 8, &actual);//Substitui o valor da tensão ajustadastrcpy(bufonte,"APPL P25V,13.42, 1.0");bufonte[10]=valor[0];bufonte[11]=valor[1];bufonte[12]=valor[2];bufonte[13]=valor[3];bufonte[14]=valor[4];bufonte[21]=0;


115//Envia o comando <strong>para</strong> a fonteviWrite(vif, (ViBuf)bufonte, 21, &actual);bufonte[actual] = 0;printf ("Tensão Ajustada: %s Volts\n", bufonte);/*Finaliza a sessão GPIB*/viClose(vif);viClose(defaultRM);return 0;}// fim do main


APÊNDICE C/*Aplicativo <strong>para</strong> ligar e desligar a saída da fonte*/#include #include #include #include #include using namespace std;int main(int argc, char *argv[]){//Declaração de variáveischar valor[3];char buf[256] = {0}, bufonte [50], medida[6];ViSession defaultRM, vif;unsigned long actual;//Copia o texto ON ou OFF <strong>para</strong> valorstrcpy(valor, argv[1]);//Definição do endereçostrcpy(bufonte,"GPIB::004::INSTR");bufonte[18]=0;/*Abre sessão GPIB*/viOpenDefaultRM(&defaultRM);viOpen(defaultRM, bufonte, VI_NULL, VI_NULL, &vif);viPrintf(vif, "*IDN?\n");//Descreve o comando, através da concatenaçãostrcpy(bufonte,"OUTP ");strcat(bufonte,valor);bufonte[9]=0;//Desliga a saída da fonteviWrite(vif, (ViBuf)bufonte, 8, &actual);/*Finaliza a sessão BPIG*/viClose(vif);viClose(defaultRM);printf("%s",bufonte);return 0;}// fim do main


APÊNDICE D/*Aplicativo reset do Contador através de outra fonte*/#include #include #include #include #include void delay();using namespace std;int main(){//Declaração de variáveischar valor[5];char buf[256] = {0}, bufonte [50], medida[6];ViSession defaultRM, vif;unsigned long actual;strcpy(bufonte,"GPIB::005::INSTR");bufonte[18]=0;/*Abre sessão GPIB*/viOpenDefaultRM(&defaultRM);viOpen(defaultRM, bufonte, VI_NULL, VI_NULL, &vif);viPrintf(vif, "*RST\n");viPrintf(vif, "*IDN?\n");//Desliga a saída da fonteviWrite(vif, (ViBuf)"OUTP OFF", 8, &actual);//Substitui o valor da tensão ajustadastrcpy(bufonte,"APPL P25V,12.00, 1.0");//Envia o comando <strong>para</strong> a fonteviWrite(vif, (ViBuf)bufonte, 21, &actual);bufonte[actual] = 0;


118/*Dá um pulso na saída da fonte*/viWrite(vif, (ViBuf)"OUTP ON", 8, &actual);delay();viWrite(vif, (ViBuf)"OUTP OFF", 8, &actual);printf ("Contador resetado");/*Finaliza a sessão BPIG*/viClose(vif);viClose(defaultRM);//getch();return 0;}// fim do main/*Função que gera delay em segundos*/void delay(){clock_t current, end;current = clock();end = current + CLOCKS_PER_SEC * 1.5;}while(current < end)current = clock();


APÊNDICE E//Aplicativo <strong>para</strong> seleção de canal na switch unit//Fábio Alano Hedler 2010#include #include #include #include #include #include #include #include int main(int argc, char *argv[]){//Declaração de variáveischar canal[3];char buf[256] = {0}, bufswitch [20], SCPIcmd[128];ViSession defaultRM, vim;unsigned long actual;strcpy(canal, argv[1]);//Definição do endereço da switch unitstrcpy(bufswitch,"GPIB::009::INSTR");bufswitch[18]=0;//Abre sessão GPIBviOpenDefaultRM(&defaultRM);viOpen(defaultRM, bufswitch, VI_NULL, VI_NULL, &vim);//Lê o estado do canalstrcpy(SCPIcmd, "ROUTe:OPEN? (@");strcat(SCPIcmd, canal);strcat(SCPIcmd, ")");SCPIcmd[20]=0;viWrite(vim, (ViBuf)SCPIcmd, (ViUInt32)strlen(SCPIcmd),&actual);viRead(vim, (ViBuf)bufswitch, 1, &actual);bufswitch[actual] = 0;


120//Verifica se o canal está aberto ou fechado e inverteif(bufswitch[0]=='0'){strcpy(SCPIcmd, "ROUTe:OPEN (@");strcat(SCPIcmd, canal);strcat(SCPIcmd, ")");SCPIcmd[20]=0;viWrite(vim, (ViBuf)SCPIcmd, (ViUInt32)strlen(SCPIcmd),&actual);}else{strcpy(SCPIcmd, "ROUTe:CLOS (@");strcat(SCPIcmd, canal);strcat(SCPIcmd, ")");SCPIcmd[20]=0;viWrite(vim, (ViBuf)SCPIcmd, (ViUInt32)strlen(SCPIcmd),&actual);}//Fecha sessão GPIBviClose(vim);viClose(defaultRM);//Saída do aplicativoprintf("%s",SCPIcmd);return 0;}


APÊNDICE F/*Aplicativo <strong>para</strong> controle do Gerador de Pulsos*///Fábio Alano Hedler 2010#include #include #include #include void delay();using namespace std;int main(int argc, char *argv[]){//Declaração de variáveischar valor[2];char buf[256] = {0}, bufonte [20], medida[6], SCPIcmd[128];;ViSession defaultRM, Instrument;ViUInt32 actual;strcpy(valor,argv[1]);//Define endereço do gerador de sinaisstrcpy(bufonte,"GPIB::010::INSTR");bufonte[18]=0;/*Abre sessão GPIB*/viOpenDefaultRM(&defaultRM);viOpen(defaultRM, bufonte, VI_NULL, VI_NULL, &Instrument);viPrintf(Instrument, "*RST\n");viPrintf(Instrument, "*IDN?\n");/*Seleciona o tipo de onda*/strcpy(SCPIcmd,"FUNC PULS \n");viWrite(Instrument, (ViBuf)SCPIcmd, (ViUInt32)strlen(SCPIcmd),&actual);/*Seleciona a impedância de saída do gerador*/strcpy(SCPIcmd, "OUTPut:LOAD INF\n");


122viWrite(Instrument, (ViBuf)SCPIcmd, (ViUInt32)strlen(SCPIcmd),&actual);/*Seleciona a amplitude do sinal de saída*/strcpy(SCPIcmd, "VOLTage 10 VPP\n");viWrite(Instrument, (ViBuf)SCPIcmd, (ViUInt32)strlen(SCPIcmd),&actual);/*Seleciona a frequencia do sinal de saída*//*Dado fornecido pelo usuário*/strcpy(SCPIcmd, "FREQuency ");strcat(SCPIcmd, valor);viWrite(Instrument, (ViBuf)SCPIcmd, (ViUInt32)strlen(SCPIcmd),&actual);/*Seleciona a largura de pulso*/strcpy(SCPIcmd,"PULS:WIDT 1e-3\n");viWrite(Instrument, (ViBuf)SCPIcmd, (ViUInt32)strlen(SCPIcmd),&actual);/* Seleciona a tensão de Off Set*/strcpy(SCPIcmd, "VOLTage:OFFSet 5\n");viWrite(Instrument, (ViBuf)SCPIcmd, (ViUInt32)strlen(SCPIcmd),&actual);/*Habilita a saída*/strcpy(SCPIcmd, "OUTPut ON\n");viWrite(Instrument, (ViBuf)SCPIcmd, (ViUInt32)strlen(SCPIcmd),&actual);/*Chama a função delay, com tempo de 1 segundo*/delay();/*Desabilita a saída*/strcpy(SCPIcmd, "OUTPut OFF\n");viWrite(Instrument, (ViBuf)SCPIcmd, (ViUInt32)strlen(SCPIcmd),&actual);/*Fornece saída*/printf ("\n Fim do teste - %s pulsos",valor);/*Fecha sessão*/viClose(Instrument);viClose(defaultRM);}//final do seta gerador/*Função que gera delay em segundos*/void delay(){clock_t current, end;current = clock();end = current + CLOCKS_PER_SEC * 1.32;while(current < end)current = clock();}


APÊNDICE G/*Aplicativo <strong>para</strong> seleção de ponto de teste*///Fábio Alano Hedler 2010#include #include #include #include #include void delay();using namespace std;int main(int argc, char *argv[]){char valor[1];char buf[256] = {0}, bufmulti [20], bufonte [20], medida[6],SCPIcmd[128];;ViSession defaultRM, Instrument,vif,vim;ViUInt32 actual;strcpy(valor, argv[1]);//------------------------------------------------------------------//Reset do contador//------------------------------------------------------------------strcpy(bufonte,"GPIB::005::INSTR");bufonte[18]=0;/*Abre sessão GPIB*/viOpenDefaultRM(&defaultRM);viOpen(defaultRM, bufonte, VI_NULL, VI_NULL, &vif);viPrintf(vif, "*IDN?\n");//Desliga a saída da fonteviWrite(vif, (ViBuf)"OUTP OFF", 8, &actual);//Ajusta tensãostrcpy(bufonte,"APPL P25V,12.00, 1.0");//Envia o comando <strong>para</strong> a fonte


124viWrite(vif, (ViBuf)bufonte, 21, &actual);bufonte[actual] = 0;/*Dá um pulso na saída da fonte*/viWrite(vif, (ViBuf)"OUTP ON", 8, &actual);delay();viWrite(vif, (ViBuf)"OUTP OFF", 8, &actual);/*Finaliza a sessão GPIB*/viClose(vif);viClose(defaultRM);//------------------------------------------------------------------//Envio dos pulsos//------------------------------------------------------------------strcpy(bufonte,"GPIB::010::INSTR");bufonte[18]=0;/*Abre sessão GPIB*/viOpenDefaultRM(&defaultRM);viOpen(defaultRM, bufonte, VI_NULL, VI_NULL, &Instrument);viPrintf(Instrument, "*IDN?\n");/*Seleciona o tipo de onda*/strcpy(SCPIcmd,"FUNC PULS \n");viWrite(Instrument, (ViBuf)SCPIcmd, (ViUInt32)strlen(SCPIcmd),&actual);/*Seleciona a impedância de saída do gerador*/strcpy(SCPIcmd, "OUTPut:LOAD INF\n");viWrite(Instrument, (ViBuf)SCPIcmd, (ViUInt32)strlen(SCPIcmd),&actual);/*Seleciona a amplitude do sinal de saída*/strcpy(SCPIcmd, "VOLTage 10 VPP\n");viWrite(Instrument, (ViBuf)SCPIcmd, (ViUInt32)strlen(SCPIcmd),&actual);/*Seleciona a frequencia do sinal de saída*//*Dado fornecido pelo usuário*/strcpy(SCPIcmd, "FREQuency ");strcat(SCPIcmd, valor);viWrite(Instrument, (ViBuf)SCPIcmd, (ViUInt32)strlen(SCPIcmd),&actual);/*Seleciona a largura de pulso*/strcpy(SCPIcmd,"PULS:WIDT 1e-3\n");viWrite(Instrument, (ViBuf)SCPIcmd, (ViUInt32)strlen(SCPIcmd),&actual);/* Seleciona a tensão de Off Set*/strcpy(SCPIcmd, "VOLTage:OFFSet 5\n");viWrite(Instrument, (ViBuf)SCPIcmd, (ViUInt32)strlen(SCPIcmd),&actual);/*Habilita a saída*/


125strcpy(SCPIcmd, "OUTPut ON\n");viWrite(Instrument, (ViBuf)SCPIcmd, (ViUInt32)strlen(SCPIcmd),&actual);/*Chama a função delay, com tempo real de 1 segundo*/delay();/*Desabilita a saída*/strcpy(SCPIcmd, "OUTPut OFF\n");viWrite(Instrument, (ViBuf)SCPIcmd, (ViUInt32)strlen(SCPIcmd),&actual);/*Fornece saída*/printf ("\nMedida em TP%s: ",valor);/*Fecha sessão*/viClose(Instrument);viClose(defaultRM);//------------------------------------------------------------------//Leitura do multímetro//------------------------------------------------------------------strcpy(bufmulti,"GPIB::001::INSTR");bufmulti[18]=0;/*Abre sessão GPIB*/viOpenDefaultRM(&defaultRM);viOpen(defaultRM, bufmulti, VI_NULL, VI_NULL, &vim);viPrintf(vim, "*RST\n");viPrintf(vim, "*IDN?\n");/*Solicita medição de tensão DC do multímetro*/viWrite(vim, (ViBuf)"MEAS:VOLT:DC? 60, 0.001\n", 28, &actual);viRead(vim, (ViBuf)bufmulti, 30, &actual);bufmulti[actual] = 0;/*Fecha sessão GPIB*/viClose(vim);viClose(defaultRM);/*Saída do multímetro*/printf("%s Volts", bufmulti);return 0;}//final do seta gerador --------------------------------------------/*Função que gera delay em segundos*/void delay(){clock_t current, end;current = clock();end = current + CLOCKS_PER_SEC * 1.14;while(current < end)current = clock();}


APÊNDICE HPágina PHP EXPERIMENTO NÚMERO 4 SWITCH TOGGLE


127 TENSÃO DA FONTE 6V Entre com a tensão no formato 0.00


128 TENSÃO DA FONTE25V Entre com a tensão no formato 00.00 MEDIDA DO MULTÍMETRO


APÊNDICE IPágina PHP EXPERIMENTO NÚMERO 5 CONVERSOR DIGITAL-ANALÓGICO TENSÃO VDD Digite um valor no formato 00.0


130if ($vdd==" "){}else{$texto_vdd=shell_exec("vdd $vdd");print("$texto_vdd");} */?> TENSÃO VSS Digite um valor no formato -00.0 /> OUTPUT ON/OFF GERADOR DE PULSOS Digite a quantidade de pulsos (0 a 255)


131/*$gerador=$_POST["value"];if ($gerador==" "){}else{$texto_gerador=shell_exec("gerador $gerador");print("$texto_gerador");}*/?> RESET CONTADOR CIRCUITO CONTADOR TENSÃO DE SAÍDA PROCEDIMENTO 1) Digite um valor de tensão <strong>para</strong> VDD (0 a 12) e clique em"Ajustar" 2) Digite um valor de tensão <strong>para</strong> VSS (0 a -12) e clique em"Ajustar" 3) Ligue a fonte (ON/OFF)4) Digite o valor da contagem de 8 bits (0 a 255) e cliqueem "Ajustar"5) Meça a tensão na saída clicando em "Medir"Obs.: Repita os procedimentos 4 e 5 <strong>para</strong> quantos valoresdesejar.Clique em reset sempre que desejar zerar a contagem.


132 REDE R-2R - Conversor D-A


APÊNDICE JPágina PHP EXPERIMENTO NÚMERO 6 AMPLIFICADORES OPERACIONAIS TENSÃO VDD Digite um valor no formato 00.0 (em V)


134{$texto_vdd=shell_exec("vdd $vdd");print("$texto_vdd");} */?> TENSÃO VSS Digite um valor no formato -00.0 (em V) TENSÃO VIN Digite um valor no formato 0.000 (em V) OUTPUT ON/OFF


135 PROCEDIMENTO 1) Ajuste a tensão VDD 2) Ajuste a tensão VSS 3) Ligue a fonte no botão ON 4) Simule valores em VIN entre 0.000 e 1.000 5) Meça as tensões nos pontos TP0 a TP7 PONTOS DE MEDIÇÃO Selecione o valor de tensão que deseja medir:


APÊNDICE KDisciplina: Laboratório de Eletrônica DigitalCurso: Engenharia EletrônicaAluno: Sandro R. Zimmer Data: 27/11/2010 Grau:___________Experimento 01:O experimento da figura 1 está montado no laboratório de Eletrônica Digital (Sala 307) do curso deEngenharia Eletrônica. Nele estão conectados apropriadamente uma fonte de alimentação (<strong>para</strong> as tensões VDDe VSS), um multímetro e um circuito auxiliar <strong>para</strong> realizar a simulação das entradas.O objetivo do experimento abaixo é verificar o comportamento de um conversor digital analógico (redeR-2R). Siga o procedimento abaixo e responda as questões solicitadas.Procedimentos:Figura 1 – Circuito experimental.1. Acesse o site do laboratório: Endereço: http://305V-04.acad.feevale.br:80Nome: AlunoSenha: acessoExperimento 52. Certifique-se que a fonte está desligada, clicando em Output OFF.3. Dê um reset no contador.4. Siga os procedimentos descritos no site. VDD= 12.0V VSS= -12.0V5. Complete a tabela abaixo:Quant. PulsosValor DigitalV7 V6 V5 V4 V3 V2 V1 V0Vout0 0 0 0 0 0 0 0 0 0 V25 0 0 0 1 1 0 0 1 1,08 V50 0 0 1 1 0 0 1 0 1,96 V


13775 0 1 0 0 1 0 1 1 2,95 V100 0 1 1 0 0 1 0 0 3,84 V125 0 1 1 1 1 1 0 1 4,68 V150 1 0 0 1 0 1 1 0 6,24 V175 1 0 1 0 1 1 1 1 7,23 V200 1 1 0 0 1 0 0 0 8,27 V225 1 1 1 0 0 0 0 1 9,38 V250 1 1 1 1 1 0 1 0 9,93 VQuestões:1. Explique o funcionamento do circuito.Coloca-se um valor digital nas entradas V0 a V7 e o circuito colocará na saída Vout um valor analógicocorrespondente ao valor digital da entrada.2. Qual o valor do incremento de tensão entre uma medida e outra? E <strong>para</strong> um bit?O incremento de tensão entre uma medida e outra é de aproximadamente 1 V. Usando o valor deincremento de tensão aproximado de 1 V a cada 25 pulsos, pode-se calcular o incremento de tensão<strong>para</strong> 1 bit dividindo-se o valor de 1 V por 25, o que resulta em 0,04 V.3. Trace o gráfico da tensão Vout de saída em relação à entrada digital.12108Tensão (V)64Tensão (V)200 25 50 75 100 125 150 175 200 225 250


APÊNDICE LDisciplina: Laboratório de Eletrônica IICurso: Engenharia EletrônicaAluno: Fernando Luis Andriola da Silva Data:27/11/2010 Grau:___________Experimento 02:O experimento da figura 1 está montado no laboratório de Eletrônica Digital (Sala 307) do curso deEngenharia Eletrônica. Nele estão conectados apropriadamente uma fonte de alimentação (<strong>para</strong> as tensões VDD,VSS e Vin), um multímetro e um circuito auxiliar <strong>para</strong> realizar a comutação entre pontos de medida.O objetivo do experimento abaixo é verificar o comportamento dos amplificadores operacionais emduas diferentes configurações e um transistor acionando uma carga. Siga o procedimento abaixo e responda asquestões solicitadas.Procedimentos:Figura 1 – Circuito experimental.6. Acesse o site do laboratório: Endereço: http://305V-04.acad.feevale.br:80Nome: AlunoSenha: acessoExperimento 67. Certifique-se que a fonte está desligada, clicando em Output OFF8. Ajuste os seguintes valores de tensão: VDD= 12.0V VSS= -12.0V Vin= 0.000V a 1.000V9. Ligue a fonte, clicando em Output ON10. Complete a tabela abaixo:


139Vin (V) TP0 TP1 TP2 TP3 TP4 TP5 TP6 TP70.000 1.40mV 69.70mV 11.95V -12.03V 0.14V 6.00V -11.99V 10.40V0.200 0.19V 0.20V 11.95V -12.03V 2.12V 5.99V -11.97V 10.36V0.400 0.39V 0.40V 11.95V -12.03V 4.12V 5.99V -11.19V 10.37V0.600 0.60V 0.60V 11.94V -12.03V 6.00V 5.99V 0.73V 3.83V0.800 0.80V 0.80V 11.93V -12.04 7.87V 5.99V 10.34V 39mV1.000 1.00V 1.00V 11.93V -12.04V 9.87V 5.99V 10.34V 39mVQuestões:4. Em qual configuração está ligado o amplificador operacional U1? O que acontece com o sinal de saídaem relação aos sinais de entrada?Com<strong>para</strong>dor.Quando TP4 é menor que TP5, TP6 é igual a menos VDD.Quando TP4 é igual a TP5, TP6 aproxima-se de zero.Quando TP4 é maior que TP5, TP6 aproxima-se de mais VDD.5. Em qual configuração está ligado o amplificador operacional U2? O que acontece com o sinal de saídaem relação aos sinais de entrada?O U2 está amplificando, em sua saída, o sinal de entrada em 10x.6. Qual a região de operação do transistor Q1? Relacione o status do LED com a entrada Vin.O transistor está configurado como Emissor Comum. Quando Vin se aproxima de 0,6V o transistor Q1entra da região de saturação e começa a conduzir acendendo o LED.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!