Centro Universitário Positivo Pró-Reitoria de Pós-Graduação e Pesquisa Programa de Iniciação Científica Sistema de Sensoriamento Térmico Monografia do Projeto do Programa de Iniciação Científica, desenvolvido no ano de 2000, na área de Engenharia da Computação. Alunos: Cleverson Rebelo Sabatowski Josmar Pedro Klemba Mauricio Perretto Orientador. Prof. Edson Pedro Ferlin 2000 Sumário I – Lista de Figuras pág. i II – Lista de Abreviaturas pág. iii III – Lista de Tabelas pág. iv IV – Unidades do Sistema Internacional de Medidas (S.I.) pág. v 1 – Introdução pág. 04 2 – Descrição do Projeto pág. 06 3 – Sensores pág. 07 pág. 07 3.1.1 – Elétrons e Lacunas pág. 08 3.2- Dispositivos Semicondutores pág. 10 3.2.1 – Diodos pág. 10 3.2.2 – Transistores pág. 12 3.2.3 – Termistores pág. 14 3.2.4 – Termopares pág. 16 pág. 18 4.1 – Método da Voltagem em rampa pág. 18 4.2 - Método da Aproximação Sucessiva pág. 20 pág. 23 5.1 – Porta Serial pág. 23 5.2 – Porta Paralela pág. 24 6 – Software pág. 27 7 – Implementação pág. 29 7.1 - Principais Componentes pág. 29 7.1.1 - Diodo 1N4148 pág. 29 7.1.2 - Amplificador Operacional LM358 pág. 31 7.1.3 - Conversor A/D ADC0804 pág. 34 7.2 – Hardware pág. 35 7.3 – Software pág. 39 8 – Resultados pág. 47 9 – Conclusão pág. 50 Referências Bibliográficas pág. 53 Anexos pág. 55 Glossário pág. 59 3.1 – Semicondutores 4 – Conversores 5 – Interfaceamento com o Computador 2 I – Lista de Figuras • Figura 2.1 – Diagrama em Blocos do Sistema pág. 05 • Figura 3.1 – Estrutura de um Diodo pág. 10 • Figura 3.2 – Relação de Tensão X Temperatura pág. 10 • Figura 3.3 – Transistor PNP e NPN, nota-se que a base controla pág. 11 a junção • Figura 3.4 – Desenho de um Transistor funcionando c/ porta lógica pág. 12 • Figura 3.5 – Porta NAND de 3 entradas operada à diodo pág. 13 • Figura 3.6 – Dois metais com uma temperatura aplicada a eles pág. 15 • Figura 3.7 – Desenho esquemático de um termopar pág. 15 • Figura 4.1 – Configuração Lógica para a Voltagem em Rampa pág. 18 • Figura 4.2 – Esquema lógico para a Aproximação Sucessiva pág. 21 • Figura 5.1 – Pinagem da porta paralela pág. 24 • Figura 5.2 – Funcionamento dos pinos da porta paralela pág. 24 • Figura 6.1 – Fluxograma do software implementado pág. 27 • Figura 7.1 – Relação Corrente X Temperatura em um diodo 1N4148 pág. 30 • Figura 7.2 – Diagrama Esquemático do CI LM358 pág. 31 • Figura 7.3 – Montagem para amplificação inversora pág. 32 • Figura 7.4 – Montagem para amplificação não inversora pág. 33 • Figura 7.5 – Esquemático da Amplificação da Diferença pág. 33 • Figura 7.6 – Vista superior do ADC0804 pág. 34 • Figura 7.7 – Circuito para conversão contínua com o ADC0804 pág. 35 • Figura 7.8 – Esquemático do Hardware implementado pág. 37 • Figura 7.9 – Interface Gráfica com o Usuário pág. 39 • Figura 7.10 – Aviso de temperatura pág. 40 i • Figura 8.1 – Relação Temperatura X Tensão no transistor 2N2222 pág. 47 • Figura 8.2 – Relação Temperatura X Tensão no diodo 1N4148 pág. 48 • Figura I.1 – Interface do Software pág. 56 • Figura I.2 - Aviso indicando que a temperatura excedeu o limite pág. 58 ii II – Lista de Abreviaturas A/D – Analógico para Digital ASP – Ajustador de Sinal de Prova D/A – Digital para Analógico DAC – Conversor Digital para Analógico (Digital/Analog Converter) DTL – Lógica Diodo-Transistor E/S – Entrada e Saída IEEE – Instituto de Engenheiros Elétricos e Eletrônicos LSB – Less Significative Bit – Bit Menos Significativo MSB - More Significative Bit – Bit Mais Significativo NTC – Negative Temperature Coefficient – Coeficiente de Temperatura Negativo PTC – Positive Temperature Coefficient – Coeficiente de Temperatura Positivo RS – Registrador Sequencial SD – Sequenciador Digital USB – Universal Serial Bus – Barramento Serial Universal Vcc – Tensão de Corrente Contínua Vh – Tensão de entrada alta Vl – Tensão de entrada baixa iii III – Lista de Tabelas Tabela 7.1 – Características Elétricas do Diodo 1N4148 pág. 30 Tabela 7.2 – Características principais do LM358 pág. 32 Tabela 7.3 – Características Principais do ADC0804 pág. 34 Tabela 7.4 – Listagem dos Componentes pág. 36 iv IV – Unidades do Sistema Internacional de Medidas (S.I.) Símbolo Unidade Descrição C Celsius Escala de temperatura, nesta escala as temperaturas de fusão e ebulição da água ficam próximas de 0º e 100º, escala criada por Andres Celsius. A Ampère Unidade de Medida da Intensidade da Corrente, tem esse nome em homenagem ao físico e matemático André Marie Ampère. F Fahrenheit Escala de temperatura ainda utilizada em países anglo-saxões, escala criada por Daniel Gabriel Fahrenheit para o termômetro de mercúrio. K Kelvin Escala de temperatura onde o 0º corresponde ao zero absoluto, momento onde as moléculas param de vibrar. M mili Dimensão de unidade que corresponde a 10-3 da unidade original N Newton Unidade de força, homenagem a Sir Isaac Newton O Ohm Unidade de resistência elétrica, homenagem a George Simon Ohm, físico alemão. V Volts Unidade de diferença de potencial. v 1 - Introdução A engenharia sempre deu um enfoque especial sobre os efeitos da temperatura em determinadas situações, nos componentes e nas máquinas. Em especial na parte eletrônica a temperatura pode causar a queima dos componentes, devido a eles terem uma faixa de atuação ante a temperatura. Na mecânica a temperatura tem vital importância na quebra ou desgaste de peças, pois quanto maior for a temperatura mais propensa a quebras a peça estará. Para esses problemas e outros é necessário um sistema que possa monitorar a temperatura e gerar um alerta em determinados valores de temperatura que sejam críticos, definidos caso a caso. O projeto tem como função principal o monitoramento da temperatura através de uma interface, acoplada ao computador, que terá o objetivo de supervisionar todo o monitoramento. Esse sistema tem uma aplicação nas indústrias para que haja um sensoriamento constante nos equipamentos, em estabelecimentos comerciais e residências para prevenção de incêndios, pois ele pode disparar os alarmes de incêndio; em indústrias químicas e siderúrgicas, no controle do processo através da temperatura; e nas demais aplicações em que é necessário um acompanhamento constante da temperatura. No projeto, a grandeza física inicial é a temperatura que será medida e apresentada na tela do computador. Para que isto aconteça é necessário a transformação 3 da temperatura em algo que o computador manipule. Como não existe dispositivo eletrônico que faça toda essa transformação, é necessário separar as partes: detenção da grandeza, conversão A/D (Analógico para Digital), interfaceamento com o computador e apresentação dos resultados no monitor do computador. 4 2 – Descrição do Projeto No projeto, a grandeza física inicial será a temperatura que será medida e apresentada em um monitor, para que essa apresentação aconteça é necessário a transformação da temperatura em algo que o computador entenda, não existe dispositivo eletrônico que faça toda essa transformação, então é necessário separar as partes: sendo uma delas a parte de captura da temperatura e a outra a transformação para uma linguagem que o computador entenda. O computador trabalha com dados digitais, as grandeza físicas são analógicas, para que ocorra a transformação é necessário um conversor A/D, os conversores A/D recebem tensão, e transformam em um conjunto de bits. Então para que exista a absorção dos dados pelo computador há a necessidade de um conversor e como o conversor recebe como dado de entrada uma tensão é necessário um dispositivo que transforme a temperatura em tensão. Por essas razões nosso projeto foi dividido em 4 partes principais, como mostrado na figura 2.1: sensor, conversor, interface e software. Figura 2.1 – Diagrama em Blocos do Sistema 5 3 – Sensores Segundo [ENC – 1987] os sensores são, basicamente, dispositivos que tem como função transformar medidas de uma grandeza física qualquer para outra grandeza física, normalmente elétrica. Partindo deste princípio é necessário o uso de dispositivos que sofram alguma alteração, de suas propriedades elétricas, ante a uma variação de temperatura, que é o escopo do trabalho. Como exemplo de dispositivos que podem ser usados para essa finalidade estão os: diodos, transistores, termistores e termopares, mas para um melhor entendimento desses elementos, citar-se-á os princípios básicos dos semicondutores, que são os componentes básicos destes dispositivos. 3.1 – Semicondutores Os semicondutores, como o próprio nome indica, constituem uma categoria intermediária entre os bons condutores e os bons isolantes de eletricidade. O material semicondutor não é usado em seu estado puro, pois são acrescentadas quantidades controladas de certas impurezas, as quais, conferem certas propriedades condutoras ao material, produzindo o que se denomina de um semicondutor estimulado. 6 O termo elétron é um termo proveniente da química e está associado com a eletrônica e o fluxo de corrente. Aceita-se, geralmente, que o fluxo de corrente nos componentes eletrônicos seja constituído de elétrons. O termo lacuna por sua vez, indica uma carga positiva ou a ausência de elétron. O material estimulante pode ser de um dos seguintes tipos: Impureza doadora – doa elétrons ao semicondutor. Semicondutores tipo N. Impureza aceitadora – aceita elétrons do semicondutor. Semicondutores tipo P. A principal diferença entre o material do tipo P o tipo N reside na espécie de carga que se movimenta em seu interior. No material tipo N a corrente é produzida pela circulação de elétrons. Obviamente, no material do tipo P a corrente é produzida pelo movimento das lacunas ou cargas positivas. 3.1.1 – Elétrons e Lacunas Para uma melhor compreensão, é necessária uma pequena descrição da estrutura de um átomo. Os átomos são constituídos por um núcleo, circulado por anéis de elétrons. Cada anel contém um número certo de elétrons. Os elétrons do anel externo situam-se numa órbita, ou banda, chamada de banda de valência. Um nível característico de energia dessa banda fornece a força que liga todos os elétrons da banda de valência de um átomo aos elétrons da banda de valência de outro átomo, formando, desta forma, a estrutura do cristal, conforme explicado em [MAN – 1970]. Se fosse adicionado átomos com cinco elétrons de valência à estrutura, o material ficaria então com elétrons livres que não seriam ligados por uma banda de valência. Essa adição pode ser feita nos semicondutores pela introdução de uma impureza doadora, que produz um semicondutor do tipo N. Os elétrons (cargas 7 negativas), não ligados na estrutura do cristal, poderão ser usados como portadores de corrente. No material do tipo N os elétrons são denominados portadores majoritários porque o maior fluxo de corrente é constituída de elétrons. Essa afirmativa faz supor que a corrente pode fluir por lacunas, o que é verdade, desta forma, as lacunas são portadores minoritários nos semicondutores do tipo N. Da mesma forma que fosse introduzida uma impureza doadora, que doa elétrons ao material semicondutor, pode-se introduzir uma impureza aceitadora que aceita elétrons, produzindo assim um semicondutor do tipo P. Para compreender esta teoria, deve-se lembrar que: (1) um elétron é uma partícula com carga negativa que será atraída e se movimentará na direção de uma carga positiva; (2) que a lacuna é uma carga positiva que será atraída por uma carga negativa e se movimentará na direção dela. Um elétron que abandona a banda de valência deixa uma lacuna nessa banda, formando um par elétron-lacuna. O elétron e a lacuna tem a mesma carga, mas com polaridades opostas. Se um elétron ocupar uma lacuna na banda de valência, as cargas se neutralizam. Os pontos principais a salientar são que os elétrons são partículas carregadas negativamente e que as lacunas são cargas positivas. Ambos podem movimentar-se e, por causa disso, podem ser portadores de corrente. Nos semicondutores do tipo P as lacunas são os portadores majoritários. Logo, a corrente nos semicondutores é formada pelo movimento de cargas positivas, negativas ou ambas. Após essa breve explanação, descrever-se-á os dispositivos semicondutores que podem ser usados como sensores, ou seja, converterão a grandeza física temperatura em uma grandeza elétrica. 8 3.2 – Dispositivos Semicondutores Descrever-se-á abaixo as características, de alguns dispositivos semicondutores e sua relação temperatura/tensão, fundamental ao funcionamento dos sensores de temperatura. 3.2.1 Diodos Os diodos são dispositivos constituídos da junção de elementos do tipo P e do tipo N mantendo a continuidade da estrutura cristalina. Desta definição que surge o seu nome diodo: dois elementos de tipos diferentes unidos em uma mesma estrutura física. O diodo opera da seguinte forma: quando se forma uma junção PN como na figura 3.1, o material N tem excesso de elétrons e o P excesso de lacunas, havendo difusão de lacunas de P para N e de elétrons de N para P. Durante a difusão as áreas próximas da junção tendem a ficar livres de portadores de cargas (lacunas e elétrons), devido a recombinação e conseqüente anulação delas, assim um elétron vindo do lado N encontrará uma barreira negativa do lado P que o repelirá, dando-se o mesmo com as lacunas, formando, desta forma, um campo elétrico. Para que essa barreira ocorra é necessário uma diferença de potencial de ordem 0,3 a 0,6 Volts dependendo do material, e a temperatura. Isso tudo tem como conseqüência o alargamento da Camada de Carga Espacial (C.C.E.), que é o espaço em que a corrente circulará no dispositivo. 9 Figura 3.1 – Estrutura de um Diodo Como comentado anteriormente um diodo varia suas características elétricas devido a temperatura. Para cada aumento de 1ºC na temperatura ter-se-á uma queda de tensão de aproximadamente 2,5 miliVolts, ou seja, quanto mais a temperatura aumentar menor será a tensão em um diodo. Na figura 3.2, observa-se as características elétricas do diodo para diferentes temperaturas, e que as curvas de relação entre corrente e tensão mudam conforme a variação da temperatura, ou seja, quanto maior a temperatura, menor a tensão. Figura 3.2 – Relação de Tensão X Temperatura em um Diodo 10 3.2.2 Transistores Os transistores são dispositivos que possuem duas uniões de semicondutores PN (a mesma dos diodos), capazes de controlar a passagem de uma corrente. Podem ser de dois tipos, de acordo com as uniões de semicondutores: PNP ou NPN, e apresentam terminais denominados de base, emissor e coletor. A base é a parte que controla a passagem de corrente; quando a base esta energizada, há passagem de corrente do emissor para o coletor, quando não há sinal na base, não existe essa condução. A base esquematicamente, como mostrado na figura 3.3 é o centro do transistor. O coletor é uma das extremidades do transistor: é nele que “entra” a corrente a ser controlada. A relação existente entre o coletor e a base é um parâmetro ou propriedade do transistor conhecido como beta e é diferente para cada transistor. O emissor é outra extremidade, por onde sai a corrente que foi controlada. Algumas características que deve-se observar nos transistores são: a tensão máxima entre base e coletor, a potência máxima dissipável e a freqüência máxima de operação. Figura 3.3 – Transistor PNP e NPN, nota-se que a base controla a junção Existem muitos usos para os transistores na eletrônica, como amplificadores, osciladores, etc, mas especialmente na microinformática os transistores são usados como portas lógicas na família de circuitos integrados TTL (Transistor-TransistorLogic), na figura 3.4 está o desenho esquemático de um transistor como porta inversora 11 e o funcionamento dele em seguida, porta inversora é a aplicação do operador lógico NOT da álgebra booleana em um circuito elétrico. Figura 3.4 – (a) desenho de um transistor como porta lógica (b) desenho esquemático da porta Uma tensão denominada Vcc é aplicada ao extremo do coletor com um resistor (através de uma fonte de alimentação), o emissor é ligado ao terra (que é o terminal negativo da fonte de alimentação), enquanto o base é que vai receber a tensão de entrada (Vh ou Vl) se a base receber um nível lógico 0 (tensão entre 0 à 0,8 Volts), o transistor não conduz corrente entre o coletor e o emissor, assim a tensão de saída no final do coletor será um nível lógico 1 (tensão entre 2 à 5 volts); ao contrário se a base receber um valor de nível lógico 1, então o transistor conduz a corrente entre os seus terminais (coletor e emissor) e a tensão de saída, Vo , será igual a um nível lógico 0. Na microinformática os transistores podem ser usados como portas lógicas junto com os diodos, como por exemplo, uma porta NAND pode ser implementada através de um circuito NOT operado por um transistor após de um circuito AND operado por um diodo como mostrado na figura 3.5, esses circuitos são chamados de portas lógicas a diodo e a transistor (DTL). 12 (a) (b) Figura 3.5 – (a) Porta NAND de 3 entradas a diodo; (b) um diodo sendo usado para melhorar as características de saída de um transistor 3.2.3 Termistores O termo termistor é de origem inglesa, thermal resistors. Um termistor é um resistor sensível à temperatura, composto por elementos semicondutores que se comportam como uma resistência com um alto coeficiente de resistência à temperatura e, geralmente, negativo. Uma definição simples é que a resistência apresentada entre os terminais do termistor, está diretamente relacionada com a temperatura de sua estrutura. Na composição dos termistores são utilizados elementos químicos como o germânio, o silício, ou misturas de cerâmicas de óxidos condutores, como o manganês, o níquel, o cobalto, o cobre, o ferro, o urânio, o estrôncio, o titânio, etc., no caso das resistências com coeficiente de temperatura negativo (Negative Temperature Coefficient – NTC), e mistura de cerâmica com titanato de bário, no caso do coeficiente de temperatura positivo (Positive Temperature Coefficient - PTC). A composição do termistor determinará se o coeficiente de temperatura do dispositivo será positivo ou negativo. 13 O termistor do tipo PTC, de relativa linearidade, também é chamado de silístor e, para indicar o termistor que mostra um grande aumento no valor nominal da resistência a partir de uma temperatura preestabelecida, costuma-se denomina-lo de termistor comutado (switched-type). A resistência de um termistor à temperatura, pode diminuir até 6% a cada 1ºC de aumento da temperatura. Sua margem de resistência vai de 0,5O a 75 O e existem uma ampla gama de formas, como gota, tubo, disco, anilha ou circuito integrado, e tamanhos, variando entre 0.1 mm à até vários centímetros. Os menores tem um diâmetro de 0.1 mm a 1.25mm. O uso de termistores está muito difundido, em especial na faixa de temperatura entre – 100ºC à 300ºC. Existem, basicamente, duas formas de variar a temperatura do dispositivo: - internamente: por meio de uma simples variação da corrente que atravessa o dispositivo produz uma alteração no valor da temperatura interna; - externamente: através de uma variação da temperatura do meio que o envolve, mergulhando, por exemplo, o dispositivo em uma solução quente ou fria. No caso do NTC, qualquer aumento de temperatura no meio que o envolve provoca uma redução da resistência do termistor. Devido a alta sensibilidade à temperatura, o termistor é muito usado para medições e controle, com muita precisão. Exemplos destas aplicações estão as sondas de temperatura em aplicações industriais, em aparelhagem médica, em eletrodomésticos, em instrumentação para investigação científica, no setor automotivo, em telecomunicações, em aplicações militares, etc. 14 A aquisição de temperatura por termistores pode ser mais ou menos complexa, porque pode envolver condicionadores de sinais e placas de aquisição de dados para a digitalização da informação e o seu processamento no computador, dependendo da aplicação. 3.2.4 Termopares Considerar-se-á dois metais denominados genericamente “A” e “B” submetidos à mesma diferença de temperatura entre suas extremidades. Em cada um deles surgirá uma força eletromotriz, conforme mostrado na figura 3.6: Figura 3.6 – Dois metais com a mesma temperatura aplicada em suas extremidades Verificou-se que quando os metais são unidos em uma das extremidades, conforme a figura 3.7, mede-se uma força eletromotriz entre as extremidades separadas cujo valor corresponde à diferença entre os valores da força eletromotriz que surge em cada um dos metais. Figura 3.7 – Desenho Esquemático de um termopar 15 Este fenômeno, segundo [ROD – 1998], é conhecido como Efeito Seebeck e a configuração acima corresponde ao sensor de temperatura conhecido como termopar ou par termoelétrico. Os elementos “A” e “B” que constituem o termopar são denominados termoelementos e, em função da polaridade da força eletromotriz, “A” é o termoelemento positivo e “B” é o termoelemento negativo do termopar “AB”. Na configuração de um termopar a extremidade em que se faz a união dos termoelementos é denominada junção de medição, enquanto a outra extremidade é denominada junção de referência. Se a temperatura da junção de referência for fixada em 0ºC, então o valor da força eletromotriz dependerá somente da temperatura da junção de medição. O conhecimento desta relação permite utilizar o termopar como um sensor de temperatura. Os termopares são normalmente utilizados como sensores de temperatura em aplicações industriais pois dependem apenas do coeficiente térmico dos materiais utilizados. 16 4 – Conversores Os conversores como o nome indica são dispositivos eletrônicos que fazem a conversão entre uma grandeza analógica, normalmente tensão, em uma grandeza digital, um número binário, e vice-versa. Em nosso projeto será necessário o uso de um conversor A/D (Analógico/Digital) para converter o valor enviado pelo sensor (grandeza elétrica) em um número binário que é um formato aceito pelas portas de E/S (Entrada/Saída). Abaixo, descrever-se-á alguns métodos de conversão A/D que são normalmente utilizados pelos conversores modernos. 4.1 Método da Voltagem em Rampa Esse método é o mais simples e, também, o menos usado, e é normalmente utilizado em instrumentos de medidas, como em voltímetros digitais. Segundo [KHA- 1984], o método de conversão da voltagem em rampa funciona pelo seguinte esquema, para melhor compreensão compare com a figura 4.1: 1. é aplicado um sinal de entrada analógica, para ser digitalizado, na entrada do comparador; 2. um nível lógico alto “1” é aplicado no terminal de início, liga o processo de conversão executando as três funções seguintes: 17 3. apaga o contador, removendo, desta maneira, qualquer informação nele contida, da operação anterior. 4. Coloca o circuito biestável R-S no estado Q, ativando, assim a porta AND A1. 5. Inicia o gerador de voltagem em rampa, através da porta AND A2. 6. A voltagem de referência do gerador de rampa é alimentada na segunda entrada do comparador e esta voltagem aumenta linearmente. 7. Neste meio tempo, os pulsos do marcador de tempo fixo são retidos no contador através de uma porta AND A1 e começam a incrementá-lo. 8. Quando a voltagem em rampa atinge e excede ligeiramente a voltagem da entrada analógica, a saída do comparador muda de “0” para “1”. 9. Isto restaura o circuito biestável para o lado ~Q, desativando, desta maneira, a porta AND A1 e evitando que os pulsos do marcador de tempo incrementem, posteriormente, o contador. 10. A saída em “1” do comparador também desativa a porta AND A2, que, por sua vez, DESLIGA o gerador de voltagem em rampa, retornando, assim, a saída do comparador para um “0”, em preparação para a próxima operação de conversão. 11. O contador contém o valor equivalente em digital do sinal de entrada analógica. Figura 4.1 – Configuração lógica para a técnica da Voltagem em rampa 18 Mas, para uma melhor compreensão do circuito acima descrito, abaixo mostrar-se-á um algoritmo de conversão: 1. O conversor recebe o valor analógico, um pulso zera o contador, e segue-se o seguinte laço: 2. Soma-se um 1 bit; 3. Converte o valor em conversor D/A; 4. Compara o valor de entrada com o valor do conversor D/A; Se o valor do conversor é maior ou igual termina-se a conversão; Senão continua-se até ser satisfeito esse critério. Este método tem a desvantagem de o contador ter que alcançar a contagem máxima em um período de tempo extremamente curto, em decorrência de uma entrada analógica máxima. 4.2 – Método da Aproximação Sucessiva Esse método é o mais amplamente usado na conversão A/D, é utilizado na maioria dos conversores A/D atuais. Segundo [MAL – 1985], o método da aproximação sucessiva obedece a seguinte sequência, para compreensão compare com a figura 4.2: 1. SD (Sequenciador Digital) envia um “1” na linha MSB (Bit Mais Significativo). Isto, também, ativa a porta A8. A entrada para o DAC (Digital/Analogic Converter – Conversor Digital/Analógico) é 10000000 em binário. 2. A saída do DAC é introduzida no ajustador do sinal de prova (ASP). O ASP emite um sinal de prova que é a metade da escala. 19 3. Se o sinal de entrada analógica for menor que o sinal de prova, então o comparador emite um “0”; isto é alimentado na segunda entrada de A8. A saída de A8 é “0”, portanto o bit 8 (o MSB) de RS (Registrador Sequencial) continua um “0”. 4. Se o sinal de entrada analógica for maior que este sinal de prova, o comparador emite um “1” que ativa A8 completamente. Neste caso, um “1” vai ser carregado na posição de bit 8 do RS. 5. A saída “1” de A8 é, também, alimentada no ASP. Isto diz ao ASP para somar uma metade do valor. 6. Agora, o SD emite um “1” na próxima linha de saída inferior. A entrada para o DAC é 01000000 e a saída é a metade do valor da saída anterior. 7. ASP vai ajustar a saída maior ou menor, dependendo se a saída da operação anterior estava em “1” ou em “0”. 8. Este processo é repetido com SD emitindo um “1” digital em cada linha de saída subsequente em cada etapa sucessiva. Portanto, em cada etapa sucessiva, o processo resulta em uma aproximação que fica mais perto do sinal de entrada analógica. 9. Após 8 fases do processo, o RS conterá a aproximação em binário do sinal de entrada analógica. 20 Figura 4.2 – Esquema lógico para o método da aproximação sucessiva Também, para melhor compreensão do método visto acima, na seqüência descreve-se um algoritmo: 1. conversor recebe o valor analógico, e segue-se o seguinte laço: 2. Um sequenciador digital joga um nível lógico “1” no MSB, um conversor D/A converte esse valor e compara com o sinal analógico; Se for maior ele armazena “0” em um registrador seqüencial; Senão armazena-se “1”. 3. Passa-se para o próximo MSB até se chegar ao LSB (bit menos significativo), o valor digital aproximado estará no registrador seqüencial 21 5- Interfaceamento com o Computador É necessário que haja a comunicação entre o dispositivo conversor e o computador para que os dados possam ser recebidos e processados, tanto para o programa tomar decisões pelos seus parâmetros, como para ter uma forma visível da temperatura, para isso usar-se-á as portas de comunicação do computador. Existem vários tipos da portas de comunicação entre equipamentos e o computador, desde as clássicas portas paralela e serial, desde os novos padrões de infravermelho, USB (Universal Serial Bus) e IEEE1394 (Instituto de Engenheiros Elétricos e Eletrônicos). No projeto abordar-se-á as portas paralela e serial, devido a terem um bom funcionamento e serem de mais fácil implementação. 5.1- Porta Serial A porta serial é composta por uma linha de envio de dados (TX), outra para o recebimento (RX) e mais algumas para regularizar como os dados estão sendo enviados por estas duas linhas. 22 Devido a sua simplicidade, a porta serial tem sido utilizada para que o computador comunique-se com quase todos os dispositivos – desde modems e impressoras até sistemas específicos como os de alarme. A utilização mais freqüente para a porta serial é para mouse ou modem. O motivo é que a porta serial não é um meio muito eficiente para a transferência de dados. Ela consegue somente enviar dados em série (um atrás do outro), o que gera uma baixa taxa de transferência. A porta serial é normalmente conhecida como porta RS-232, e é uma especificação da Associação das Indústrias Eletrônicas, a qual definiu como um padrão para este tipo de interface de comunicação. 5.2 – Porta Paralela A comunicação paralela implica transferência simultânea de todos os bits que compõem o byte. Esse método de transmissão e recepção é utilizado nas ligações internas dos computadores e ligações entre computador e periféricos bastante próximos [DAS – 1991]. Na comunicação em paralelo, os dados são transferidos em grupos de bits simultaneamente a cada ciclo, em geral byte a byte, através de diversas linhas condutoras de sinais e, neste caso, a taxa de transferência de dados é alta. No computador, as portas paralelas são identificadas pelas siglas: LPT e geralmente, a porta padrão é a LPT1. A comunicação da porta física é feita através de endereços que variam de uma porta para outra. Por exemplo, na porta LPT1 o endereço 378h e serve para enviar um byte de dados pela porta, já o endereço 379h recebe um valor da porta. Às vezes, a porta 23 LPT2 pode estar disponível, usando as mesmas funções da LPT1, mas com diferentes endereços. Figura 5.1 – Pinagem da porta paralela O DB25 é o conector usado pela porta paralela, e normalmente fica na parte da trás do gabinete do computador, e é através deste, que conecta-se o cabo paralelo ao computador para poder enviar e receber dados. Como o próprio nome indica, ele tem 25 pinos, cada um com uma função e um nome que os identifica. Nas figuras 5.1 e 5.2 descrevem o significado de cada pino e o esboço de funcionamento. Figura 5.2 – Funcionamento dos pinos de uma porta paralela 24 Existem três tipos diferentes da porta paralela conhecidas pelas suas siglas: SPP (Standard Parallel Port – Porta Paralela Padrão), EPP (Extended Parallel Port – Porta Paralela Estendida) e ECP(Enhanced Capabilities Port – Porta com Capacidades Aumentadas), sendo a primeira de comunicação unidirecional, do computador para o periférico externo, e as outras duas formas são bidirecionais. Segundo [REI - 2000], a porta paralela é subutilizada por projetistas e estudantes, apesar de ser a maneira mais fácil de comunicação entre o computador e os meios externos. Este projeto visa a comunicação do periférico com o computador, necessitando da bidirecionalidade da porta. 25 6 – Software Outra parte muito importante do projeto é o software, que será responsável pelo tratamento das informações a respeito da temperatura recebidas através da porta de comunicação. Para isso, utilizar-se-á a linguagem de programação “C” [SCH-1996], devido a sua finalidade de aplicações geral e de ser uma linguagem de nível médio, ou seja, ela permite operações diretas em binário (manipulação de bits) e de endereços de memória – os elementos básicos com os quais o computador funciona. Há algum tempo, já existem versões orientadas a objetos como o Microsoft Visual C++ e Borland C++ Builder que são ferramentas de construção e de montagem de programas, na qual reutiliza-se “peças” ou objetos, que reúnem informações e instruções, combinando as etapas simples ou complexas, para formar um único procedimento, ou seja, não é uma técnica de codificação, mas de agrupamento de código (subcomponentes). Desta forma, pode-se resumir a Programação Orientada à Objetos em duas palavras: encapsulamento e herança, onde encapsulamento é separar o código do programa em blocos, facilitando a manutenção e a reutilização deste no mesmo programa, ou mesmo em outros programas, por isso o termo herança. Essas ferramentas trabalham com os sistemas operacionais Windows 95, Windows 98 e Windows NT. No projeto utilizar-se-á estas plataformas para executar o programa de leitura das informações, pelas facilidades de operação e visualização dos dados. 26 O funcionamento do software é descrito no fluxograma apresentado na figura 6.1. Figura 6.1 – Fluxograma do software implementado Assim como, descrito no algoritmo, que foi implementado, apresentado na seqüência. 27 //-------------------------------------------------------------------------------------------------------// //Algoritmo do Programa para um Sistema de Sensoriamento Térmico // //desenvolvido para o Programa de Iniciação Científica. // //-------------------------------------------------------------------------------------------------------// INICIO { int unidade=1, selecao, intervalo, temperatura; intervalo = 1; enquanto 1 < 2 faça{ escreva(“1 – Iniciar”); //menu de seleção inicial escreva(“2 – Escolher Unidade”); escreva(“3 - Mudar intervalo de medida”); escreva(“4 – Sair”); faça{ //loop para o usuario não selecionar leia(selecao); //opções inválidas }enquanto(selecao<1 OU selecao>4); escolha(selecao){ //seleção da opção do menu principal caso 4: salve arquivo de log; //opção para saída do programa salvanabandone; //do o conteúdo em arquivo de log caso 3: escreva(“Digite novo intervalo de medida em segundos”); leia(intervalo); caso 2: escreva(“1 – Celsius”); escreva(“2 – Farenheit”); escreva(“3 – Kelvin”); faça{ leia(unidade); }enquanto(unidade<1 OU unidade>3) caso 1: //opção de início do sensoriamento while(1){ //loop até o pressionamento do ESC if(TeclaPressionada()==’ESC’) break; temperatura = leia(PortaParalela); if(unidade==2) temperatura = 9/5*temperatura+32; //conversão if(unidade==3) temperatura = temperatura+273; //em escalas de escreva(temperatura); //temperatura espere(intervalo); //espera antes da próxima leitura } }fim escolha }fim enquanto }FIM 28 7 – Implementação Como apresentado anteriormente este projeto pode ser dividido em quatro partes distintas mas interligadas, que são: sensor, conversor A/D, interface e o software, nas partes eletrônicas, sensor e conversor A/D, existem componentes indispensáveis, sem os quais não seria possível a execução deste projeto, estes componentes são apresentados na seqüência. 7.1 - Principais Componentes Em projetos eletrônicos existem componentes essenciais para o desenvolvimento do trabalho, nas 4 partes que são divididas este projeto, como visto na figura 2.1, capítulo 2, existem certos componentes eletrônicos que tem importância fundamental, esses componentes são descritos a seguir. 7.1.1 - Diodo 1N4148 Uma das subdivisões deste projeto é o sensor. Como visto anteriormente utilizarse-á como elemento sensor um componente eletrônico semicondutor. Após alguns teste chegou-se a definição deste diodo como melhor elemento sensor. 29 O diodo 1N4148 é um diodo para aplicações gerais com alta velocidade de resposta fabricado por todas as empresas que trabalham com semicondutores e suas características principais são apresentadas na tabela 7.1. Símbolo VRRM Parâmetros VR Tensão contínua c/ polarização invertida Corrente Contínua Corrente Alternada Potência total dissipada Temperatura p/ estoque Temperatura junção IF IFRM Ptot Tstg Tj Tensão alternada c/ polarização invertida Mínimo - Máximo 75 Unidade V - 75 V -65 - 200 450 500 +200 +200 mA mA mW ºC ºC Tabela 7.1 – Características Elétricas do Diodo 1N4148 Este diodo foi utilizado porque apresentada uma variação de tensão mais linear como apresentado no figura 7.1 obtida de [PHI – 1996]. Figura 7.1 – Corrente X Temperatura Com o desenvolvimento do circuito sensor utilizando-se o diodo descrito acima, chegou-se a definição que trabalharíamos com uma faixa de tensão de 0 à 100 mV, esta faixa de tensão é muito baixa para a utilização de um conversor A/D, a próxima subdivisão do projeto, o conversor A/D trabalha com faixas de tensões de 0 à 5 V, assim sendo necessitava-se de um elemento que transformasse a tensão máxima de saída do 30 sensor, 100 mV, na tensão máxima do conversor A/D, de 5V, para esse fim foi utilizado um amplificador operacional. 7.1.2 - Amplificador Operacional LM358 Como visto anteriormente, a tensão máxima de saída do circuito sensor e a tensão mínima da entrada do conversor A/D são incompatíveis entre si, para que possase trabalhar com os dois circuitos em conjunto é necessária a amplificação do sinal de saída do sensor para que ela seja reconhecida pelo conversor A/D. Figura 7.2 – Diagrama Esquemático do CI LM358 O LM358 é um amplificador operacional desenvolvido pela National Semiconductors® usado para amplificação transistorizada, ganho de tensão e outros usos de amplificadores operacionais. Desenvolvido para ser usado com apenas uma alimentação de tensão de +5V para utilização em sistemas digitais, ao contrário da maioria dos amplificadores operacionais desenvolvidos com alimentação de +12V e – 12V. Em nosso circuito é utilizado para um ganho de tensão em 50 vezes, pois a saída máxima do circuito sensor é de 100mV enquanto a entrada máxima do conversor A/D é de 5V, suas características principais são apresentadas na tabela 7.2 e na figura 7.2 é apresentado o seu esquemático 31 Descrição Tensão de Trabalho (V) Temperatura de Trabalho (Celsius) Potência Dissipada (mW) Corrente de Entrada (mA) Corrente de Saída (mA) Mínimo 0-+5 0º 435 0,5 0,3 Máximo -12-+32 70º 850 50 40 Tabela 7.2 – Características principais do LM358 Amplificação da Diferença Este método de amplificação é aqui descrito pois foi utilizado para a amplificação do sinal sendo que a tensão real era medida pela diferença de duas outras tensões. O circuito da amplificação da diferença é feito utilizando-se dois outros circuitos amplificadores, conhecidos como amplificador inversor e amplificador não-inversor, os seus respectivos circuitos são mostrados nas figuras 7.3 e 7.4. Figura 7.3 – Montagem inversora 32 Figura 7.4 – Montagem para amplificação não inversora Utilizando-se as duas montagens simultaneamente, podemos implementar um circuito que amplifica a diferença entre duas tensões distintas, apresentado na figura 7.5. Figura 7.5 – Esquemático da Amplificação da Diferença A partir deste esquemático e com o teorema da sobreposição de fontes é possível reconhecer duas fontes distintas de energia, apresentadas na equação 1 abaixo: Equação 1 33 Fazendo as simplificações possíveis na equação 1 chega-se a equação 2, que é a equação necessária para se calcular o ganho de tensão no amplificador: Equação 2 7.1.3 - Conversor A/D ADC0804 Após a amplificação do sinal podemos utilizar o conversor A/D para repassarmos os dados para o computador que os manipulará, e para isto, utilizar-se-á o circuito integrado ADC0804. Figura 7.6 – Vista superior do ADC0804 O ADC0804 é um conversor Analógico/Digital com saída de 8 bits que utiliza o método da aproximação sucessiva para executar a conversão, com clock interno e saída tri-state, suas características principais são apresentadas na tabela 7.3, a pinagem é apresentada na figura 7.6. Símbolo Vcc TA PD Parâmetro Tensão de alimentação Temperatura Potência Dissipada Margem 4 até 6,5 -40 até +85 1650 Unidade Volts Celsius MiliWatts Tabela 7.3 – Características Principais do ADC0804 34 Utilizando-se do conversor ADC0804 projetou-se um circuito que fizesse a conversão da tensão recebida do circuito sensor para a forma digital, esse circuito é mostrado na figura 7.7. Figura 7.7 – Circuito para conversão contínua com o ADC0804 7.2 Hardware Como visto estes três componentes tem uma função especial na execução do projeto, na tabela 7.4 são apresentados todos os componentes utilizados para a implementação do projeto. 35 Componente Quantidade Resistor 40O 1 Resistor 120O 1 Resistor 200O 1 Resistor 1KO 1 Resistor 2,2KO 2 Resistor 10KO 4 Resistor 56KO 1 Resistor 100KO 1 Resistor 110KO 2 Resistor 470KO 1 Resistor 560KO 1 Trimpot 10KO 2 Trimpot 200KO 1 Capacitor 100nF 2 Capacitor 56pF 1 Capacitor 1nF 1 Diodo 1N4148 1 LM358 1 ADC0804 1 Conector DB25 1 Tabela 7.4 – Listagem dos Componentes O hardware é constituído de uma parte sensora, que mantém a corrente do circuito sempre estável, assim a tensão irá ser alterada quando a temperatura variar, após temos um estágio amplificador para compatibilizar a saída do circuito sensor com a entrada do circuito conversor, e o circuito conversor finaliza a operação analógica convertendo a tensão em um valor binário ao qual o computador compreende e pode manipular. O esquemático do circuito da placa, hardware, é apresentado na figura 7.8. 36 Folha para impressão 37 do Esquemático Procedimento para Ajuste/Calibragem do Hardware Como com o tempo pode ocorrer dos circuitos sofrerem desgastes e perderem a sua calibragem inicial apresentamos abaixo o método necessário para a calibração do sensor e do conversor A/D: 1. Coloca-se o dispositivo sensor, diodo, em uma cuba de gelo que atinja 0ºC. 2. Com um multímetro mede-se as diferenças entre a saída do potenciômetro P2 e o terra do circuito, altera-se a resistência do potenciômetro P1 até que a o multímetro aponte 0mV. 3. Após aquece-se o sensor até a temperatura de 100ºC, altera-se a resistência do potenciômetro P2 até que a diferença atinja 100mV. 4. Após mede-se a diferença de tensão entre a saída do potenciômetro P3 em relação ao terra do circuito, altera-se a resistência deste potenciômetro até que o valor atinja 2,5 V. 38 7.3 - Software Como comentado anteriormente o projeto constitui-se de hardware, a parte física dele, que gera os dados, e do software que manipula os dados gerados pelo hardware, com esse intuito foi desenvolvido um software específico para a manipulação dos dados transmitidos pelo hardware, esse software é descrito na seqüência. A implementação do programa não é sofisticada, contendo elementos básicos como conversão da temperatura para as três escalas: Celsius, Fahrenheit e Kelvin; a freqüência de leitura da temperatura, o gráfico com o histórico da temperatura, a manipulação de arquivos (com o registro das temperaturas) e outras, para que o usuário do software dos sistema de sensoriamento térmico o opere facilmente. A figura 7.9, mostra um exemplo de como é a interface gráfica com o usuário. Figura 7.9 – Interface Gráfica com o Usuário 39 O funcionamento e a operação é simples: Ao clicar no botão Iniciar, o programa inicia um laço e começa a leitura da porta de comunicação. O valor indicado na caixa Tempo de Leitura é a freqüência com que o programa irá ler a porta de comunicação. Após ter lido o valor, ele será convertido através de uma fórmula, que relaciona o valor binário com o correspondente em temperatura, e este valor será a temperatura, armazenado em um arquivo, que conterá o horário, momento (da leitura), que será obtido do computador e a data. Conforme a seleção da Escala, apresentar-se-á a temperatura na tela por meio de gráfico e pela caixa Temperatura Atual. Caso a temperatura lida exceda o valor máximo permitido, será emitido um aviso sonoro assim como um alerta visual: “A temperatura excedeu o limite máximo”, conforme mostra a figura 7.10. Clicando-se no botão Parar o programa interromperá o processamento (leitura) até que o usuário reinicie o processo. Figura 7.10 – Aviso indicando que a temperatura excedeu o limite máximo. Na seqüência apresentar-se-á o código-fonte do programa feito com o objetivo de receber dados gerados pelo hardware descrito acima, os quatro primeiros códigos são referentes aos arquivos de biblioteca criados por nós no segundo é descrito o arquivo do software em si. 40 Arquivo temperatura.h, contém as definições do programa de leitura: //--------------------------------------------------------------------------#ifndef temperaturaH #define temperaturaH //--------------------------------------------------------------------------#include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include "CSPIN.h" //definicao das bibliotecas padrao do compilador #include "PERFGRAP.h" //que serao necessarias #include <Buttons.hpp> #include <ComCtrls.hpp> #include <ExtCtrls.hpp> #include <Menus.hpp> //--------------------------------------------------------------------------class TForm1 : public TForm { __published: // IDE-managed Components TPerformanceGraph *PerformanceGraph1; //classes das bibliotecas acima TLabel *Label9; //cada classe tem uma relacao direta TProgressBar *ProgressBar1; //com um objeto por exemplo um botao TGroupBox *GroupBox1; TLabel *Label1; TRadioGroup *RadioGroup1; TBitBtn *BitBtn1; TGroupBox *GroupBox2; TLabel *Label2; TGroupBox *GroupBox3; TLabel *Label3; TGroupBox *GroupBox4; TLabel *Label4; TGroupBox *GroupBox5; TLabel *Label6; TLabel *Label7; TCSpinEdit *CSpinEdit2; TCSpinEdit *CSpinEdit3; TBitBtn *BitBtn2; TCSpinEdit *CSpinEdit1; TBitBtn *BitBtn3; TMainMenu *MainMenu1; TMenuItem *Arquivo1; TMenuItem *Ajuda1; TTimer *Timer1; TTimer *Timer2; TMenuItem *Iniciar1; TMenuItem *Parar1; TMenuItem *N1; TMenuItem *Sair1; TLabel *Label8; TLabel *Label10; TMenuItem *Sobre1; TMenuItem *VerArqdeLog1; void __fastcall BitBtn1Click(TObject *Sender); //funcoes orientadas a evento void __fastcall Timer1Timer(TObject *Sender); void __fastcall Timer2Timer(TObject *Sender); void __fastcall BitBtn2Click(TObject *Sender); void __fastcall CSpinEdit1Change(TObject *Sender); void __fastcall BitBtn3Click(TObject *Sender); void __fastcall FormClose(TObject *Sender, TCloseAction &Action); void __fastcall Timer3Timer(TObject *Sender); void __fastcall Sobre1Click(TObject *Sender); 41 void __fastcall Iniciar1Click(TObject *Sender); void __fastcall Parar1Click(TObject *Sender); void __fastcall VerArqdeLog1Click(TObject *Sender); void __fastcall Sair1Click(TObject *Sender); private: // User declarations public: // User declarations __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------#endif A seguir são apresentadas as quatro bibliotecas com as funções necessárias ao funcionamento do programa. Arquivo Unit2.h, contém as definições da tela de alerta. //--------------------------------------------------------------------------#ifndef Unit2H #define Unit2H //--------------------------------------------------------------------------#include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <MPlayer.hpp> //--------------------------------------------------------------------------class TForm2 : public TForm { __published: // IDE-managed Components TButton *Button1; TLabel *Label1; void __fastcall Button1Click(TObject *Sender); private: // User declarations public: // User declarations __fastcall TForm2(TComponent* Owner); }; //--------------------------------------------------------------------------extern PACKAGE TForm2 *Form2; //--------------------------------------------------------------------------#endif Arquivo Unit3.h, contém as definições da tela de ajuda. //--------------------------------------------------------------------------#ifndef Unit3H #define Unit3H //--------------------------------------------------------------------------#include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <ExtCtrls.hpp> #include <jpeg.hpp> //--------------------------------------------------------------------------class TForm3 : public TForm { __published: // IDE-managed Components TMemo *Memo1; 42 TButton *Button1; TTimer *Timer1; TImage *Image1; void __fastcall Button1Click(TObject *Sender); void __fastcall Timer1Timer(TObject *Sender); void __fastcall FormActivate(TObject *Sender); private: // User declarations public: // User declarations __fastcall TForm3(TComponent* Owner); }; //--------------------------------------------------------------------------extern PACKAGE TForm3 *Form3; //--------------------------------------------------------------------------#endif Arquivo Unit4.h, contém as definições da tela de log. //--------------------------------------------------------------------------#ifndef Unit4H #define Unit4H //--------------------------------------------------------------------------#include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> //--------------------------------------------------------------------------class TForm4 : public TForm { __published: // IDE-managed Components TMemo *Memo1; TButton *Button1; void __fastcall Button1Click(TObject *Sender); private: // User declarations public: // User declarations __fastcall TForm4(TComponent* Owner); }; //--------------------------------------------------------------------------extern PACKAGE TForm4 *Form4; //--------------------------------------------------------------------------- #endif Arquivo temperatura.cpp, arquivo que contém o programa propriamente dito. //-------------------------------------------------------------------------------------------// // Programa de Sensoriamento Térmico desenvolvido em conjunto com Hard // //ware para o PIC-2000 // //Alunos: Cleverson Sabatowski, Josmar Klemba, Mauricio Perretto // //Última Alteração: 11/11/2000 Versão: 0.9a // //-----------------------------------------------------------------------------------------// //--------------------------------------------------------------------------#include <vcl.h> #include <stdlib.h> #pragma hdrstop #include "temperatura.h" #include "Unit2.h" #include "Unit3.h" #include "Unit4.h" //--------------------------------------------------------------------------#pragma package(smart_init) #pragma link "CSPIN" #pragma link "PERFGRAP" #pragma resource "*.dfm" 43 short int inp(unsigned short port); //funcao para leitura de um endereco de memoria /* valor = inp(porta); | |-> endereco de memoria, em hexadecimal ou caracter | ex.: 0x378 ou 'LPT1' |-> variavel inteira */ void outp(unsigned short port, unsigned char value); //funcao que envia //dados para um endereco /* oup(porta, valor); | |-> valor a ser enviado |-> endereco de memoria em hexadecimal, ex.: 0x378 */ TForm1 *Form1; //----------------------Variaveis Globais------------------------------TStrings *arquivo; short int resposta=0, temperatura=23; bool valor; //---------------------------------------------------------------------//----------------------Funcoes Criadas--------------------------------short int inp(unsigned short port){ asm mov dx,port asm in al,dx asm xor ah,ah return _EAX; } void outp(unsigned short port, unsigned char value){ asm mov dx,port asm mov al, value asm out dx, al } //---------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { //inicializacao da variavel q armazenar o log arquivo = new TStringList(); //carregamento do arquivo de log antigo if(FileExists("C:\\temp\\temp.log")) arquivo->LoadFromFile("C:\\temp\\temp.log"); //definição de um tempo com o qual o aplicativo irá iniciar Timer1->Interval = CSpinEdit1->Value*1000; } //---------------------------------------------------------------------void __fastcall TForm1::Timer1Timer(TObject *Sender) { //variavel temporaria utilizada para a criacao do arquivo de log AnsiString dados; //defini que a porta paralela ira receber dados externos outp(0x37A,32); //le a porta paralela resposta = inp(0x378); temperatura = (100*resposta)/255; //converte para graus Celsius pela // formula: 100 - 255 --> X = (100 * resposta)/255; // X - resposta 44 //criando os registros temporários que ao final serão repassados ao //arquivo de log dados = DateToStr(Date())+" "+TimeToStr(Time())+" "+temperatura; arquivo->Add(dados); Label1->Caption = IntToStr(temperatura)+"ºC"; ProgressBar1->Position = temperatura; //alteracao dos dados na barra PerformanceGraph1->DataPoint(234,temperatura);//e no grafico PerformanceGraph1->Update(); //acionamento do alerta se a temperatura excedeu os limites if((temperatura<CSpinEdit3->Value) ||(temperatura>CSpinEdit2->Value)){ Form2->Show(); } if(((temperatura>CSpinEdit3->Value) && (temperatura<CSpinEdit2->Value)) >Visible==true)) { // Form2->MediaPlayer1->Stop(); Form2->Hide(); } //seleção de transformação de unidades switch(RadioGroup1->ItemIndex) { case 1: temperatura = 9/5*temperatura+32;//conversao para Farenheit Label1->Caption = IntToStr(temperatura)+"ºF"; break; case 2: temperatura = temperatura + 273;//conversao para Kelvin Label1->Caption = IntToStr(temperatura)+"ºK"; break; } arquivo->SaveToFile("C:\\temp\\temp.log"); } //---------------------------------------------------------------------void __fastcall TForm1::Timer2Timer(TObject *Sender) { //timer para as horas Label2->Caption = DateToStr(Date()); Label4->Caption = TimeToStr(Time()); } //---------------------------------------------------------------------void __fastcall TForm1::BitBtn1Click(TObject *Sender) { //Botao que inicia o monitoramento, ativando o timer1 Timer1->Enabled = true; BitBtn1->Enabled = false; BitBtn2->Enabled = true; Iniciar1->Enabled = false; Parar1->Enabled = true; } //---------------------------------------------------------------------void __fastcall TForm1::BitBtn2Click(TObject *Sender) { //Botao que cancela o monitoramento, desativando o timer1 Timer1->Enabled = false; BitBtn1->Enabled = true; BitBtn2->Enabled = false; Iniciar1->Enabled = true; Parar1->Enabled = false; } 45 && (Form2- //---------------------------------------------------------------------void __fastcall TForm1::CSpinEdit1Change(TObject *Sender) { //Quando o valor da caixa intervalo de leitura for alterado,essa linha //irá alterar o tempo de leitura do timer1 Timer1->Interval = CSpinEdit1->Value*1000; } //---------------------------------------------------------------------void __fastcall TForm1::BitBtn3Click(TObject *Sender) { //Botao para fechamento do programa Form1->Close(); } //---------------------------------------------------------------------void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { arquivo->SaveToFile("C:\\temp\\temp.log"); } //--------------------------------------------------------------------------- void __fastcall TForm1::Timer3Timer(TObject *Sender) { valor = true; } //--------------------------------------------------------------------------- void __fastcall TForm1::Sobre1Click(TObject *Sender) { Form3->Show(); } //--------------------------------------------------------------------------void __fastcall TForm1::Iniciar1Click(TObject *Sender) { Timer1->Enabled = true; BitBtn1->Enabled = false; BitBtn2->Enabled = true; Iniciar1->Enabled = false; Parar1->Enabled = true; } //--------------------------------------------------------------------------void __fastcall TForm1::Parar1Click(TObject *Sender) { Timer1->Enabled = false; BitBtn1->Enabled = true; BitBtn2->Enabled = false; Iniciar1->Enabled = true; Parar1->Enabled = false; } //--------------------------------------------------------------------------void __fastcall TForm1::VerArqdeLog1Click(TObject *Sender) { Form4->Show(); } //--------------------------------------------------------------------------void __fastcall TForm1::Sair1Click(TObject *Sender){ Form1->Close(); } 46 8. Resultados Inicialmente definiu-se que o circuito sensor a ser implementado deveria ter uma faixa de atuação de 0ºC à 100ºC, a partir desta definição iniciou-se testes com os dispositivos semicondutores descritos, para descobrir qual teria uma variação de tensão mais linear em relação a temperatura, os resultados destes teste podem ser vistos nas figuras 8.1 e 8.2, nas quais estão descritos as curvas de resposta do Transistores Tensão (mV) 100 80 60 40 20 88 80 70 60 50 40 30 20 10 0 0 Temperatura (ºC) Figura 8.1 – Relação Temperatura X Tensão no transistor 2N2222 diodo 1N4148 e do transistor 2N2222, pode-se notar que eles tem uma variação bastante linear na faixa entre 0ºC e 80ºC, mas a partir deste último eles tem uma curva abrupta sendo a curva do diodo mais suave, a partir desta conclusão definimos o diodo 1N4148, seria utilizado como elemento sensor neste projeto. 47 Diodos Tensão (mV) 100 80 60 40 20 88 80 70 60 50 40 30 20 10 0 0 Temperatura (ºC) Figura 8.2 – Relação Temperatura X Tensão no diodo 1N4148 Na implementação do hardware ocorreram diversos contratempos, o principal foi quanto a impedância do amplificador operacional, como ela não era grande o suficiente, quando conectava-se o amplificador, o circuito sensor não funcionava corretamente, após a resolução desse problema pode-se concluir o projeto devidamente. A implementação da comunicação entre o hardware e o software também causou-nos contratempos, pois não tínhamos informações precisas de como ativar a leitura de dados através da porta paralela, com o auxílio de [KRI - 1998] efetuou-se a transmissão sem problemas. Foram executados testes com o circuito montado em uma protoboard, uma tablatura com conexões para montagem e testes de circuitos em fase de desenvolvimento ou pesquisa, o circuito foi testado com temperaturas que variavam da temperatura ambiente, passando pela temperatura corpórea de um ser humano, até o aquecimento através de isqueiros e ferros de solda, procedimento perigoso que resultou na quebra de um diodo, após mantivemos o projeto funcionando por um longo período de tempo para testar a durabilidade deste. Com os testes pode-se assegurar que a placa 48 cumpre o seu propósito de verificar e controlar a temperatura, pois fizemos testes com várias temperaturas e medindo as mesmas com dispositivos termosensores, termômetros, pode-se constatar que a placa apresenta pouquíssima diferença em relação a este último, dentro de uma faixa de erro prevista já que a curva de resposta tensão X temperatura não era totalmente linear. 49 9 – Conclusão Como observado acima, existem diversos dispositivos que poderiam ser usados como sensores foi necessária uma avaliação mais técnica de cada um para que cheguese em um consenso de qual foi o melhor para utilização no projeto. Para o interfaceamento é melhor utilizar a porta paralela pois tem uma boa taxa de transmissão e não é muito utilizada pelos periféricos externos do computador. Com a utilização da porta paralela se faz necessário um conversor que transmita os dados de 8 bits por vez (formato da porta paralela) e, desta forma, tornou-se necessário uma pesquisa mais detalhada a respeito do conversor. O software foi desenvolvido simultaneamente à parte eletrônica, e por fim, foi elaborada toda a documentação do projeto, com todas as fases e resultados obtidos. Através desde projeto tivemos a oportunidade de nos adentrarmos na eletrônica analógica, necessária para o desenvolvimento do circuito sensor, e através disso compreender como funcionam dispositivos que fazem a transmissão de dados analógicos para digital assim como de amplificadores operacionais, áreas nas quais não tínhamos nenhuma visão clara ao iniciarmos o desenvolvimento deste projeto. Assim como tivemos que aprender como comunicarmos com o hardware interno do computador, pois até então apenas tínhamos feito programas que recebiam dados do usuário, assim sendo o hardware se encarregava dos problemas que tivemos que solucionar. 50 Alguns projetos podem vir a utilizar-se deste como princípio como o aumento da faixa de atuação do sensor, conexão de vários sensores, alteração do modo de transmissão dos dados, conversão do programa para outro sistema operacional, microprocessamento da placa o que permitiria a utilização do sensor sem a utilização de um computador, outra aplicação que poderia ser implementada facilmente a partir deste projeto é o aumento da faixa de atuação, isto é facilmente implementável através do processo de calibração quando definesse a temperatura mínima e máxima ao qual o sensor irá responder, ao invés de calibrar 0 mV a 0ºC definisse a temperatura mínima em 0 mV o mesmo ocorrendo com a temperatura máxima, este método tem o inconveniente de aumentar a faixa de erro, outro projeto implementável a partir deste é o desligamento automático de aparelhos eletrônicos, adicionando-se apenas uma linha de código no programa ele poderia acionar um relé que desligaria automaticamente uma máquina, este acionamento poderia ser feito a partir da porta paralela; o custo total dos componentes constituintes da placa é de aproximadamente R$ 12,00, não é possível determinar o custo da placa em si pois depende de fatores como a quantidade de placas fabricadas e da empresa contratada para esse serviço. Através deste projeto pode-se ter um envolvimento do desenvolvimento de um projeto de pesquisa, as diversas seqüências de pesquisas que se deve tomar, as fases de testes, o cumprimento de metas e objetivos segundo um cronograma pré-definido que deve ser respeitado, a interdisciplinaridade que um curso de engenharia deve ter, pois dentro deste projeto envolveu-se conceitos de física, química, programação de computadores, hardware de computadores e eletrônica analógica, todas matérias vistas em cursos de engenharia de forma isolada. Também desenvolveu-se o conceito de trabalho em equipe, delegação de funções aos membros da equipe e estudo conjunto, pois apesar de cada membro executar partes separadas elas deveriam ser interligadas 51 entre si, assim sendo todos os membros da equipe deveriam `ter o conhecimento necessário sobre as outras áreas que estavam sendo implementadas. Este projeto foi de grande valia também porque ensinou a aprender com os próprios erros e nunca desistir, não importando o quão difícil e árdua a tarefa possa parecer. Já existem diversos projetos de sensoriamento térmico já desenvolvidos, assim como circuitos integrados que fazem a medição da temperatura, o que demonstra a preocupação com sistemas desta natureza. 52 Referências Bibliográficas [DAS – 2000] – Da Silveira, J. L.; Comunicação de Dados e Sistemas de Teleprocessamento; São Paulo; Makron Books – McGraw-Hill Ltda; 1991. [ENC – 1987] – Larousse, Librarie; Enciclopédia Larousse Cultural; Editora Universo Ltda, 1987, São Paulo, Brasil [KHA – 1984] – Khambata, Adi J.; Microprocessadores, Microcomputadores: Volume 1; Editora Campus; 1984; Rio de Janeiro; Brasil. [KOK – 1999] – Kokkori, Th.; Registrador de Temperatura; Revista Elektor; Edição Maio/1999; Editora Elektor; Seção PC Tópicos; págs. XIV à XV. [KRI – 2000] – Heidenstrom, Kris; [email protected]; Nova Zelândia [LEM – 2000] – Lemmens, L.; Temperature Recorder DS 1615; Revista Elektor; Edição Fevereiro/2000; Editora Elektor; págs. 33 à 37. [MAL – 1985] – Malvino, A.P.; Microcomputadores e Microprocessadores; Editora McGraw-Hill; 1985; Rio de Janeiro; Brasil. [MAN – 1970] – Mann, George B.; ABC dos Transistores; Antenna Empresa Jornalística S/A; 3ª Edição; 1970; Rio de Janeiro; Brasil. [ROD – 1998] – Rodrigues, A. B.; http://ciel2.eletr.ufpr.br/edu/ie99/trab2/augusto/; Termopar Tipo T; 1998. 53 [REI – 2000] – Reimbold, Manuel M. P. et alli; Módulo Didático para Acesso ao Desempenho Unidirecional da SPP dos PC´s Utilizando C++; Revista de Ensino de Engenharia; Volume 19; Número 1; págs. 27-35; 2000. [SCH – 1996] – Schildt, Herbert; C Completo e Total; 3ª Edição; Editora Makron Books; 1996; Rio de Janeiro; Brasil. 54 Anexos I. - Software - Manual do Usuário Descrição O software é o elemento responsável pelo processamento, tratamento das informações vindas do monitoramento da temperatura, bem como a apresentação visual. Ele possui apresentação gráfica no padrão 32 bits, pois foi desenvolvido em linguagem visual, para Windows 95 ou superior. No caso, foi utilizado o Borland C++ Builder. Ele contém elementos básicos, como conversão da temperatura para as três escalas: Celsius, Fahrenheit e Kelvin; caixas de seleção da freqüência de leitura da temperatura; o gráfico com o histórico da temperatura; um termômetro; a manipulação de arquivos (com o registro das temperaturas lidas). Requisitos de Hardware e Software • IBM/PC Compatível; • 32 Mbytes de memória RAM; 55 • Windows 9X/Me • Porta Paralela Bidirecional, padrão PS/2; • Monitor SVGA; • Placa de Som. Instalação O software pode ser instalado, e ser executado a partir de qualquer diretório, deixando a critério do usuário. A instalação é em ambiente gráfico. Para iniciá-la, deve-se abrir o arquivo “instalar.exe”, feito isto basta selecionar o diretório para a instalação. Funcionamento Básico O layout principal da tela do software, como mostrado na figura I.1, possui a 56 Figura I.1 – Interface do software caixa temperatura atual, que mostra a temperatura lida pelo sensor; possuí uma caixa de seleção da escala para a temperatura, que, pode ser Celsius, Fahrenheit ou Kelvin, e então aplica o valor recebido do sensor a fórmulas de conversão de escala; existem caixas temporais, onde é mostrada a data e a hora do sistema; também existem caixas de seleção para definição de limites de temperaturas, ou seja, o usuário define os pontos críticos, máximo e mínimo, que ele considera que o equipamento ou ambiente monitorado, não pode alcançar. O usuário é quem define o intervalo (freqüência) de leitura dos dados (temperatura) via porta paralela. Após configuração acima, feita pelo usuário, basta clicar no botão Iniciar, para que o programa comece o monitoramento. Clicando no botão Parar, o monitoramento é suspenso. Existe ainda um terceiro botão, Sair, que encerra a execução do programa. A apresentação gráfica da temperatura é feita por um termômetro, e por um gráfico Temperatura X Tempo. O programa possui um recurso de armazenamento em arquivo do histórico da temperatura, que conterá a temperatura lida, o horário e a data. Este arquivo, chamado de arquivo de log, poderá ser aberto para consulta, no próprio Software do Sistema de Sensoriamento Térmico, ou em qualquer editor de texto. O arquivo, é sempre salvo com o nome “temp.log”, no diretório selecionado pelo usuário para a instalação. No menu Arquivo, pode-se abrir o arquivo com o histórico da temperatura, e no menu Sobre, pode-se obter informações diversas. O funcionamento e a operação é simples: ao clicar no botão Iniciar, o programa inicia uma seqüência repetitiva de leitura da porta de comunicação, o valor indicado na 57 caixa Tempo de Leitura é a freqüência com que o programa lerá a porta de comunicação. Após ter lido o valor, ele será convertido através de uma fórmula, que relaciona o valor binário com o correspondente em temperatura, e este valor será a temperatura, armazenado em um arquivo, que conterá o horário, momento (da leitura), que será obtido do computador e a data. Conforme a seleção da Escala, apresentar-se-á a temperatura na tela por meio de gráfico e pela caixa Temperatura Atual. Caso a temperatura lida exceda o valor mínimo ou máximo permitido, será emitido um aviso sonoro bem como visual: “A temperatura excedeu o limite máximo”, conforme mostra a figura I.2. Clicando-se no botão Parar, o programa suspende o processamento (leitura) até que o usuário reinicie. Figura I.2 – Aviso indicando que a temperatura excedeu o limite máximo. 58 Glossário • Camada de Carga Espacial – Espaço da junção PN de um diodo, responsável pela determinação se o diodo irá conduzir corrente ou se portar-se-á como um isolante. • Circuito biestável – Circuito que possui dois estados de equilíbrio e que é capaz de passar de um ao outro, sob a ação de excitações. • Efeito Joule – Efeito observado em objetos que se mostra pelo aquecimento do objeto pelo atrito. • Eletromotriz – Algo que produz eletricidade a partir da ação de uma força mecânica. • Elétron – Partícula fundamental do átomo portadora de carga elétrica negativa. Encontra-se em volta do núcleo e é a única partícula fundamental que pode se mover para fora do átomo. • IEEE 1394 – Novo barramento externo de dados projetado pela Apple® e aceito recentemente pelo IEEE (Instituto dos Engenheiros Elétricos e Eletrônicos), tem boa taxa de transferência de dados, mas não é utilizado no mercado. • Lacuna – Dá-se o nome de lacuna a falta de elétron em um átomo. • Núcleo – Porção central do átomo onde estão o próton e o nêutron e onde os elétrons circulam em volta. • Período de clock – Período de uma instrução de um computador. • Resistor – Dispositivo eletrônico caracterizado pela sua resistência elétrica. • Resistência Elétrica – Propriedade física de um objeto que varia segundo sua constituição. • USB (Universal Serial Bus) – Tipo de barramento que vem ganhando espaço no mercado porque é mais fácil a manutenção de periféricos externos para o usuário. • Voltímetro Digital – Aparelho eletrônico responsável pela medição de tensão em um circuito. 59