Acesse aqui - Engenheiro Carlos Alexandre Gouvêa da Silva
Transcrição
Acesse aqui - Engenheiro Carlos Alexandre Gouvêa da Silva
SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL PROJETO DE APRENDIZAGEM TERCEIRO PERÍODO CONTROLADOR DE TEMPERATURA PARA AMBIENTES RESIDENCIAIS - CTAR CURITIBA 2014 ANDRESSA ARAUJO DIAS ANNE KAROLINE OKASAKI DA SILVA WELLINGTON VILLELA BAPTISTA DOS SANTOS PROJETO DE APRENDIZAGEM TERCEIRO PERÍODO Trabalho apresentado para obtenção parcial de nota no trabalho do Projeto de Aprendizagem sob orientação do Professor Engenheiro Carlos Alexandre Gouvêa da Silva da instituição Serviço Nacional de Aprendizagem – SENAI. CURITIBA 2014 RESUMO O Controlador de Temperatura para Ambientes Residenciais, CTAR, tem como público alvo pessoas que querem ter o conforto de um ambiente com a temperatura controlada. Este projeto é indicado para ambientes residenciais devido ao sensor ter a capacidade de examinar temperaturas entre -55°C e 150°C. Palavras-chaves: CTAR, Senai Cic, Eletrônica, Terceiro Período. ABSTRACT The Temperature Controller for Residential Environments, CTAR's target audience are people who want the comfort of a temperature controlled environment. This design is suitable for residential due to the sensor has the ability to examine temperatures between -55°C and 150°C. Keywords: CTAR, Senai Cic, Electronics, Third Period. LISTA DE ILUSTRAÇÕES Figura 1: Circuito do sensor. ..................................................................................... 16 Figura 2: Esquemático .............................................................................................. 17 Figura 3: (a) teste utilizando dois sensores, (b) conversor ADC0808 com clock gerado a partir do CI555 em modo astavél, (c) teste utilizando um sensor e (d) teste utilizando um sensor. ................................................................................................ 18 Figura 4: Placa do controle, lado bottom. .................................................................. 19 Figura 5: Placa do controle, lado top. ........................................................................ 19 Figura 6: Placa de conversão de sinal, lado bottom. ................................................. 20 Figura 7: Placa de conversão de sinal, lado top. ....................................................... 20 Figura 8: Placa do sensor, lado bottom. .................................................................... 20 Figura 9: Placa do sensor, lado top. .......................................................................... 20 Figura 10: Layout impresso. ...................................................................................... 21 Figura 11: Impressão estampada em placa virgem. .................................................. 21 Figura 12: Toner nas placas. ..................................................................................... 21 Figura 13: Placa do controle, corroída. ..................................................................... 22 Figura 14: Placa de conversão de sinal, corroída. .................................................... 22 Figura 15: Placas furadas.......................................................................................... 22 Figura 16: Placa de controle, soldada. ...................................................................... 23 Figura 17: Placa de conversão de sinal, soldada. ..................................................... 23 Figura 18: (a) placa controladora e displays, (b) conversor ADC, (c) conjunto placas e (d) sensor. .............................................................................................................. 23 Figura 19: Célula de Peltier, Funcionamento da Célula de Peltier ............................ 25 Figura 20: Microcontrolador....................................................................................... 25 Figura 21: Capacitor interno, Capacitor Cerâmico, Capacitor Eletrolítico ................. 26 Figura 22: Relé .......................................................................................................... 26 Figura 23: Display de 7 segmentos, Terminais do display de 7 segmentos .............. 27 Figura 24: Invólucro DIL 28 ....................................................................................... 28 Figura 25: LM35 - Sensor de temperatura. ............................................................... 30 Figura 26: Transistor BC327 ..................................................................................... 31 LISTA DE TABELAS Tabela 1: Tabela de componentes ............................................................................ 24 Tabela 2: Tabela verdade do display ........................................................................ 27 Tabela 3: Funções de suas pinagens ........................................................................ 28 Tabela 4: Características Elétricas Absolutas Máximas ............................................ 29 Tabela 5: Tabela para endereçamento para entradas analógicas. ........................... 29 SUMÁRIO RESUMO................................................................................................. I ABSTRACT............................................................................................ II LISTA DE ILUSTRAÇÕES .................................................................... III LISTA DE TABELAS ............................................................................ IV SUMÁRIO .............................................................................................. V 1 INTRODUÇÃO ................................................................................... 8 2 CRONOGRAMA ............................................................................... 10 3 DEFINIÇÃO DO PROJETO .............................................................. 11 4 PROGRAMAÇÃO............................................................................. 12 4.1 DESCRIÇÃO DA PROGRAMAÇÃO ............................................... 12 5 SENSOR DE TEMPERATURA......................................................... 16 5.1 ESQUEMÁTICO ......................................................................... 17 6 TESTES NO PROTOBOARD ........................................................... 18 7 PROCESSO DE REALIZAÇÃO DA PLACA DE CIRCUITO IMPRESSO .......................................................................................... 19 8 MATERIAIS UTILIZADOS ................................................................ 24 8.1 DESCRIÇÕES DE MATERIAIS ..................................................... 25 CONCLUSÃO ...................................................................................... 32 REFERÊNCIAS .................................................................................... 33 ANEXO I .............................................................................................. 34 ANEXO II................................................................................................37 ANEXO III...............................................................................................40 ANEXO IV...............................................................................................42 APÊNDICE I............................................................................................43 APÊNDICE II...........................................................................................44 1 INTRODUÇÃO A partir dos conhecimentos adquiridos durante o curso de Aprendizagem em Eletrônica Industrial, além de pesquisas feitas durante esse período, foi desenvolvido este projeto com o propósito de colocar em prática nosso aprendizado durante este curso. Atualmente no mercado existem vários projetos de automação residencial que fazem o controle da temperatura dentro de uma residência, como por exemplo, os projetos das empresas Parallax e Lexone, que fazem o controle de alguns arescondicionados que estão distribuídos entre os cômodos para realizar a climatização desses ambientes (PARALLAX, 2014), (LEXONE,2014). Nomeamos nosso projeto de CTAR – Controlador de Temperatura para Ambientes Residenciais. Nosso projeto consiste em um controlador que faz a leitura da temperatura em vários pontos de um mesmo ambiente e posteriormente calcula esta temperatura média, realizando assim o controle de uma estação de condicionamento de ar para que esta temperatura se adeque ao setpoint configurado pelo usuário. As vantagens que nosso projeto tem em relação aos outros são baseadas na redução de custos, como por exemplo, não são necessárias mudanças na estrutura da residência, pois cada estação de condicionamento de ar não ocupa muito espaço e é de fácil instalação. A parte de monitoramento e controle também foi projetada para gerar o menor custo possível, ao invés de utilizarmos um termopar para fazer a medição da temperatura, utilizamos o sensor LM35 que tem um custo muito mais baixo e não necessita de nenhum tipo de calibração externa para realizar uma leitura precisa. Outro diferencial muito importante é que não temos apenas um ponto de medição de temperatura, temos um conjunto de até oito sensores que medem a temperatura em vários pontos do mesmo ambiente, para que se obtenha um valor médio da temperatura em que o ambiente se encontra. O funcionamento da estação de condicionamento de ar depende da necessidade do usuário. Para aquecer ou esfriar o ambiente, é feita a polarização de uma célula termoelétrica, conhecida como célula de Peltier, de acordo com a polarização desse componente é feita uma troca de calor entre as duas faces do mesmo, ou seja, enquanto um lado aquece o outro esfria. O sentido dessa troca de calor depende da polarização da célula. Usamos um dissipador e um cooler em cada lado da célula, pois assim podemos criar uma corrente de ar quente ou frio. 8 Utilizaremos apenas um lado da célula, onde o mesmo está direcionado para dentro do ambiente e o outro para fora, fazendo com que a temperatura no local aumente ou diminua de acordo com o desejado. O controle da temperatura será realizado por histerese, onde o usuário determina um setpoint e uma tolerância de 2 a 8 graus Celcius, para mais ou para menos. Feito isso o controlador mantém a temperatura dentro desse valor, polarizando a célula de Peltier conforme a necessidade. A seguir estará descrito as etapas da realização deste projeto. 9 2 CRONOGRAMA Para que houvesse uma melhor realização do projeto foi criado o cronograma, que nos serviu para organizar e estruturar todo o trabalho. O tempo previsto foi determinado a partir do Cronograma de aulas e também para que houvesse uma divisão das atividades, ficando assim um tempo bem distribuído para cada parte do projeto. O nosso cronograma foi divido em meses e posteriormente em semanas. O cronograma se encontra em apêndice número I. 10 3 DEFINIÇÃO DO PROJETO O projeto consiste em um controlador de temperatura que faz o monitoramento a partir de vários pontos do ambiente verificando assim a temperatura média no local. Controla uma estação de condicionamento de ar, que por sua vez aquece ou esfria o ambiente para que se adeque a temperatura desejada pelo usuário. Esse condicionamento do ar é feito a partir da polarização de células de Peltier (células termoelétricas que conforme são polarizadas aquecem ou esfriam). 11 4 PROGRAMAÇÃO A programação é uma forma de obter a comunicação com um computador. Conforme o aprendizado adquirido durante o Segundo Período do curso, e a orientação dos professores, será utilizado o microcontrolador AT89S52. Decidimos fazer a linguagem C, por ser bastante utilizada e por termos uma breve noção dela. Em nosso projeto ele tem a função de: · · · 4.1 Ler a temperatura em vários pontos do ambiente; Tirar média da temperatura; Controlar as cargas através do acionamento de dois relés, para que a temperatura neste ambiente se ajuste a temperatura desejada pelo usuário (de 10-35ºC). DESCRIÇÃO DA PROGRAMAÇÃO Ao iniciarmos qualquer programação é necessário fazer: · Declaração de biblioteca padrão da programação (linha 1 e 2 do apêndice número II). · A declaração das variáveis (linha 6 até 27 do apêndice número II). Unsigned char: · · · Ocupa apenas um byte; Tem a capacidade de representar até 256 valores; Não tem números negativos; 12 Variavéis: · Unsigned char simbolo []; Essa variável é um vetor que armazena os símbolos que serão mostrados nos displays. · Unsigned char DP0= 14, DP1=14, DP2=14, DP3=14; Nessas variáveis são armazenados os endereços correspondentes aos símbolos que devem aparecer nos displays. · Unsigned char timer0; É um contador auxiliar da função atualizaTemperatura() interrupt 1, tem o objetivo de regular o tempo de atualização da variável unsigned char temperatura. · Unsigned char numSensor[]; Essa variável determina o número de sensores que serão utilizados para ler a temperatura do ambiente. · Unsigned char vSensores[8]; São armazenados nesse vetor os valores lidos por cada sensor. · Unsignedchartemperatura; Essa variável recebe o valor da temperatura média no ambiente. · Unsigned char uniTemperatura, dezTemperatura; Nessas duas variáveis são armazenadas a dezena e unidade da temperatura média do ambiente. · Unsigned char setPoint; Essa variável guarda o valor da temperatura desejado pelo usuário (10ºC até 35ºC). · Unsigned char enderSensor; É armazenado nessa variável o endereço da entrada analógica do ADC0808 que será lida. 13 · Unsigned char menu; Determina qual menu será mostrado nos displays. · Unsigned char histerese; Determina o valor de histerese que será usado para fazer o controle da temperatura. Funções: · void clock() interrupt 3 ; Função que utiliza o estouro do timer 1 (interrupt 3) para gerar um clock de 3,9kHz para o ADC0808. · void delay (unsigned int tempo2); Função que utiliza um laço for para gerar um atraso no programa. Quando essa função é chamada em qualquer parte do programa deve ser carregado um valor de no máximo dois bytes em um contador, após esse valor ser atingido o programa volta a executar outras tarefas. · void atualizaTemperatura() interrupt 1; Função que utiliza o estouro do timer 0 (interrupt 1) para fazer a atualização do valor da temperatura, que será mostrado no display. · void atualizaDisplay(); Função que faz a multiplexação dos displays. · void atualizaDado(char soma); Função que faz a troca de menus da IHM. · void IHM(); Função que faz a comunicação entre o microcontrolador e o usuário através das teclas PRO, DEC, INC e os displays. · void leTemperatura(); Função que lê e armazena os valores de cada sensor que está sendo utilizado. 14 · void controleHisterese(); Função que faz o controle da temperatura por histerese. · void main(); Função principal, nela é feita a configuração dos timers 0 e 1 para o modo 1 (contador de 16bits), mostra o valor da temperatura média no ambiente, chama as funções leTemperatura e controleHisterese. A programação completa se encontra em apêndice número II. 15 5 SENSOR DE TEMPERATURA Para fazer a medição da temperatura utilizamos o sensor LM35. Esse sensor tem em sua saída um sinal de 10mV/ºC. Devido ao fato desse sinal ser muito baixo decidimos amplifica-lo utilizamos um amplificador não inversor com o CI LM358. Nesse amplificador temos um ganho mínimo de 1,33 e um ganho máximo de 4. Cálculos do ganho: ݊݅݉ܩൌ ͳ ݊݅݉ܩൌ ͳ ʹ ʹͲπ ʹ ݔܽ݉ܩൌ ͳ ͳ ͳ ʹͲπ ͳͲπ ʹͲπ ͳͲπ ݔܽ݉ܩൌ ͳ ͳͲπ ͳͲπ ʹͲπ ݊݅݉ܩൌ ͳ ͳͲπ ͵Ͳπ ݔܽ݉ܩൌ ͳ ͵Ͳπ ͳͲπ ݊݅݉ܩൌ ͳ Ͳǡ͵͵ ݔܽ݉ܩൌ ͳ ͵ ݊݅݉ܩൌ ͳǡ͵͵ ݉ܩൌ ͳǡ͵͵ ͵ ൌ Ͷ Figura 1: Circuito do sensor. 16 5.1 ESQUEMÁTICO Figura 2: Esquemático 17 6 TESTES NO PROTOBOARD Com o esquemático pronto no Protheus, decidimos montar no protoboard para analisarmos se funcionaria corretamente. Porém o CI NE555 não funcionou, pois ele acabou causando uma espécie de ruído que acabava atrapalhando o funcionamento do circuito. Solucionamos esse problema com a retirada dele, decidimos fazer um clock micro controlado através de uma interrupção. Depois de retirado foi possível ler e converter a temperatura ambiente com precisão, obtendo assim resultados excelentes. Foram montados os circuitos: (a) ds (c) · Sensor de temperatura; · Conversor A/D; · Clock; (b) (d) Figura 3: (a) teste utilizando dois sensores, (b) conversor ADC0808 com clock gerado a partir do CI555 em modo astavél, (c) teste utilizando um sensor e (d) teste utilizando um sensor. 18 7 PROCESSO DE REALIZAÇÃO DA PLACA DE CIRCUITO IMPRESSO Utilizando o Protheus, e com o diagrama esquemático pronto, realizamos o roteamento das placas. Figura 4: Placa do controle, lado bottom. Figura 5: Placa do controle, lado top. 19 Figura 6: Placa de conversão de sinal, lado bottom. Figura 7: Placa de conversão de sinal, lado top. . Figura 8: Placa do sensor, lado bottom. Figura 9: Placa do sensor, lado top. 20 Depois de realizado o roteamento, o layout foi impresso em papel fotográfico utilizando uma impressora a laser. Estampamos a impressão em uma placa virgem já limpa (com palha de aço), utilizando um ferro de passar roupa (levou cerca de 3 a minutos). Figura 10: Layout impresso. Figura 11: Impressão estampada em placa virgem. Para retirar a impressão fixada na placa, pegamos um recipiente com água e friccionamos levemente o papel com as pontas dos dedos até que ficasse somente o toner na placa. Após isso retiramos a placa do recipiente e secamos com cuidado. Figura 12: Toner nas placas. 21 Para a corrosão do cobre, utilizamos um recipiente com Percloreto de Ferro (FeCI3). Este procedimento levou um pouco mais tempo para ser totalmente concluído. Figura 13: Placa do controle, corroída. Figura 14: Placa de conversão de sinal, corroída. Após a corrosão, retiramos a placa e colocamos no recipiente de água novamente para limpá-la. Enxugamos a e retiramos o toner utilizando palha de aço. Perfuramos a placa com uma furadeira de broca 0,8mm nos lugares exatos em que os componentes seriam soldados. Figura 15: Placas furadas. 22 Depois de furada a placa, soldamos os componentes. Figura 17: Placa de conversão de sinal, soldada. Figura 16: Placa de controle, soldada. (a) (b) (c) (d) Figura 18: (a) placa controladora e displays, (b) conversor ADC, (c) conjunto placas e (d) sensor. 23 8 MATERIAIS UTILIZADOS Para que fosse realizado o nosso projeto, pesquisamos e definimos, com a orientação dos professores, todos os componentes que poderíamos utilizar conforme a necessidade de um funcionamento eficaz dos circuitos. Cada componente tem uma função exata, tornando-o muito importante para nosso projeto. Com a finalidade de obter o valor do custo do projeto, realizamos esta tabela com todos os componentes que utilizamos, além da quantidade e do preço de cada um. Tabela 1: Tabela de componentes 24 8.1 DESCRIÇÕES DE MATERIAIS CÉLULA DE PELTIER Figura 19: Célula de Peltier, Funcionamento da Célula de Peltier É uma célula que aquece de um lado e esfria do outro, e conforme a sua polarização ela inverte os lados. Contém dois pequenos condutores, um vermelho e um preto. Ao polarizarmos o vermelho com positivo e o preto com negativo o lado de cima ficará frio e o debaixo ficará quente. Mas ao invertemos a polaridade, os lados também se invertem, ou seja, onde era quente fica frio e onde era frio fica quente. MICROCONTROLADOR Figura 20: Microcontrolador O microcontrolador é considerado um computador dentro de um chip, onde é possível observar as memórias (RAM e ROM), input/output, sistema de clock e periféricos. É um componente de baixa potência e pequeno. 25 Em nosso projeto é utilizado o micro controlador AT89S52 que tem como função controlar as funções do CTAR. Para programá-lo utilizamos a linguagem C. Mais informações sobre o AT89S52 estão disponíveis no anexo número I. CAPACITOR Figura 21: Capacitor interno, Capacitor Cerâmico, Capacitor Eletrolítico O capacitor, também chamado de condensador, tem como função armazenar cargas elétricas e por consequência, energia elétrica. Possui duas placas idênticas, que são denominadas de armaduras, e entre elas há um material isolante chamado dielétrico. Existem vários tipos de capacitores, porém os que utilizamos no projeto foram os cerâmicos e os eletrolíticos. RELÉ ELETRÔNICO Figura 22: Relé 26 É um mecanismo eletromecânico que serve para ligar e desligar dispositivos. Ao polarizarmos ele forma-se um campo magnético onde seus contados que são normalmente abertos (NA) se fecham, e os normalmente fechados (NF) se abrem. Possui uma grande desvantagem, pois como é mecânico ele tem uma vida útil, já a sua vantagem é que o seu circuito de carga não é conectado ao de controle. DISPLAY DE 7 SEGMENTOS Tabela 2: Tabela verdade do display Figura 23: Display de 7 segmentos, Terminais do display de 7 segmentos É utilizado como uma das formas para mostrar uma informação alfanumérica, a outra forma de mostrar seria a partir de display de matriz de ponto, mas esta maneira tem um custo elevado além de ser complicado. É formado por sete segmentos, como o próprio nome já se refere que podem ser ligados ou desligados de maneira individual. A exibição neste display pode ser de números decimais (0 até 9) e de números hexadecimais (A à F, 0 1 2 3 4 5 6 7 8 9 A B C D E F e H). Como estes segmentos são leds é preciso que a corrente seja limitada, sendo assim, em cada led é colocado um resistor. Este display tem duas formas de ser, uma é o ânodo comum e a outra o cátodo comum. Se for ânodo comum, os ânodos dos leds que formam o display são ligados entre si e ao VCC, mas se for cátodo comum, os cátodos dos leds que formam o display são ligados entre si e ao GND. 27 O ponto do display é o ponto decimal que se for ânodo comum deve ficar em nível lógico alto, mas se for cátodo comum deve ficar em nível lógico baixo. No nosso projeto usamos 4 displays e como há um alto consumo de energia fizemos a multiplexação. A multiplexação dos displays é quando liga um display de cada vez, porém como a frequência é alta e o olho humano tem algumas limitações e ao observarmos temos a impressão de que todos estão ligados ao mesmo tempo, ou seja, enquanto um display estará ligado os outros estarão desligados. ADC0808 Figura 24: Invólucro DIL 28 Este CI da NationalSemiconductor é um conversor Analógico/Digital CMOS com resolução de 8 bits e oito entradas analógicas, utiliza em sua conversão o processo de aproximação sucessiva. Seu tempo de conversão é de 100µs com um consumo máximo de 15mW possuindo 8 saídas tri-state. (TEIXEIRA, 2014) Tabela 3: Funções de suas pinagens IN_0 a IN_07 D0 a D7 START EOC OUTPUT ENABLE CLOCK Vref(+) Vref (-) ALE ADD A, ADDB, ADD C Entradas analógicas independentes Saídas digitais Sinal externo para início de conversão Sinal de saída indicador de fim da conversão Habilita saídas Sinal de clock externo Tensão de referência para máxima tensão na entrada Tensão de referência para mínima tensão na entrada Habilita latch para seleção de canal (ADD A, ADD B, ADD C) Lógica de seleção de entrada analógica Fonte: (TEIXEIRA, 2014) 28 Tabela 4: Características Elétricas Absolutas Máximas VCC ICC Tensão de alimentação Corrente de consumo Iout Corrente de saída em tri state VControl START, OE, CLOCK, ALE ADD A, ADD B, ADD C PD 4,5V a 6,0V 0,3mA a 3mA 3uA(Vout=5V) -3uA(Vout=0V) Faixa de tensão para entrada de controle -0,3V a 15V Potência de dissipação 875mW Fonte: (TEIXEIRA, 2014) Possui 8 entradas analógicas independentes IN-0 a IN-7 selecionadas pelo endereçamento dos pinos ADD A, ADD B, ADD C estes habilitados pelo sinal ALE. Um sinal de partida START inicia o ciclo de conversão com o sinal EOC indicando sua finalização. Para utilização com sistemas microprocessados um comando OE coloca as saídas digitais em tri state. O sinal de CLOCK externo é responsável pelo incremento de seu contador interno. (TEIXEIRA, 2014) Tabela 5: Tabela para endereçamento para entradas analógicas. Canal Analógico IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7 ADD C 0 0 0 0 1 1 1 1 ADD B 0 0 1 1 0 0 1 1 ADD A 0 1 0 1 0 1 0 1 Fonte: (TEIXEIRA, 2014) Mais informações sobre o ADC0808 estão disponíveis no anexo número II. 29 LM35 Figura 25: LM35 - Sensor de temperatura. É um sensor de precisão que na saída mostra um sinal de 10mV para cada Grau Celsius (ºC) devido a sua alimentação que varia de 4 a 20Vdc e GND. Por esta razão o Lm35 apresenta um excelente funcionamento em relação aos outros sensores. Não precisa de nenhuma calibração externa para mostrar um rigoroso valor de temperaturas que pode diversificar entre -55 e 150ºC. Tem um interfaceamento de leitura simples que torna o lm35 barato. Apresenta uma saída com: · · · Calibração inerente precisa; Baixa impedância; Tensão linear. Mais informações sobre o sensor LM35 estão disponíveis no anexo número III. 30 BC327 Figura 26: Transistor BC327 O BC327 é um transistor do tipo PNP. Possui três terminais, sendo um para receber tensão elétrica, o outro para mandar o sinal amplificado e o outro (terminal do meio) que controla esse método. A corrente entra e sai, somente quando a tensão é aplicada ao terminal dois (meio). Este componente permite que seja possível realizar a amplificação e substituição de sinais. Mais informações sobre o sensor LM35 estão disponíveis no anexo número IV. 31 CONCLUSÃO Com este trabalho foi possível observar que é necessário à colaboração de todos os membros da equipe para que um projeto funcione. Percebemos também que com organização, disciplina e a orientação de um bom professor somos capazes de desenvolver bons projetos. No início o nosso principal problema foi com a programação, pois tivemos apenas uma breve noção de linguagem C durante o segundo período, mas após várias pesquisas e orientações adquiridas com os professores Carlos Golvêa e Celso Villela conseguimos obter resultados satisfatórios. Aprendemos funções que não tínhamos visto como, por exemplo, interrupções do micro controlador AT89S52 e também aprendemos como isolar alguns bits dos ports do microcontrolador para que a leitura de algum dado e o envio de alguns comandos não sejam prejudicados. Outro problema foi no hardware de nosso projeto. Inicialmente pensamos em gerar um clock para o ADC0808 através de um CI NE555 no modo astável, mas ele acabou causando uma espécie de ruído que acabava atrapalhando o funcionamento adequado do circuito. Solucionamos esse problema com a retirada do CI NE555 e realizando um clock micro controlado através de uma interrupção, interrupt 3 (interrupção corresponde ao overflow do timer 1). Após a resolução desses problemas chegamos ao objetivo que queríamos. Optamos por controlar a temperatura em um ambiente menor, pois nossa carga (célula de Peltier) não tem potência suficiente para um ambiente como uma sala, mas temos potência suficiente para um ambiente menor como uma caixa de acrílico. Ao concluirmos esse projeto e constatarmos que seu funcionamento está correto, tivemos algumas ideias de melhorias, que poderiam ser utilizados como trabalhos futuros, por exemplo, ao invés de mostrarmos os dados em displays de sete segmentos, poderíamos utilizar um display LCD de 16x2, podemos também fazer o controle de temperatura por P. I. D. (proporcional, integral, derivado), que proporcionaria uma maior estabilidade a temperatura. 32 REFERÊNCIAS GADGETRONICX. Criação de atraso usando timer no microcontrolador 8051. Disponível em <http://www.gadgetronicx.com/2014/01/creating-time-delay-timerscounters-8051-microcontrollers-embedded-programming-tutorials.html>. Acessado em 18 de maio de 2014. KEIL. Funções de interrupções. Disponível em <http://www.keil.com/support/man/docs/c51/c51_le_interruptfuncs.htm>. Acessado em 21 de Maio de 2014. KARASNSKI. Como construir um ar-condicionado para o seu computador. Disponível em <http://www.tecmundo.com.br/area-42/31505-area-42-como-construirum-ar-condicionado-para-o-seu-computador-video-.htm>. Acessado em 9 de junho de 2014. LEXONE. Automação Residencial: Controle de temperatura. Disponível em <http://b.loxone.com/Pages/br/service/Fuer-Private-Hausherren/Usuarios-eProprietarios.aspx>. Acessado em 24 de junho de 2014. MECATRONICA HOJE. Célula de Peltier: características e comportamento. Disponível em <http://mecatronicahoje.blogspot.com.br/2011/06/modulo-celula-depeltier-ou-pastilhas.html>. Acessado em 23 de maio de 2014. PARALLAX. Automação Residencial: Controle de temperatura. Disponível em <http://www.parallaxautomacao.com.br/beneficios-da-automacaoresidencial/controle-de-temperatura/>. Acessado em 24 de junho de 2014. WEBTRONICO. Sensor de temperatura LM35: Características físicas e comportamentos. Disponíveis em <www.webtronico.com/lm35-sensor-detemperatura.html>. Acessado em 4 de fevereiro de 2014. TEIXEIRA. Componentes. CIs Analógicos. Características do ADC0808. Disponível em <http://www.projetostecnologicos.com/Componentes/CIsAnalogicos/ADC0808/ADC0 808.html>. Acessado em 1 de junho de 2014. 33 ANEXO I 34 35 36 ANEXO II ADC0808-N, ADC0809-N www.ti.com SNAS535H – OCTOBER 1999 – REVISED MARCH 2013 ADC0808/ADC0809 8-Bit ȝP Compatible A/D Converters with 8-Channel Multiplexer Check for Samples: ADC0808-N, ADC0809-N FEATURES DESCRIPTION • • The ADC0808, ADC0809 data acquisition component is a monolithic CMOS device with an 8-bit analog-todigital converter, 8-channel multiplexer and microprocessor compatible control logic. The 8-bit A/D converter uses successive approximation as the conversion technique. The converter features a high impedance chopper stabilized comparator, a 256R voltage divider with analog switch tree and a successive approximation register. The 8-channel multiplexer can directly access any of 8-single-ended analog signals. 1 2 • • • • • • Easy Interface to All Microprocessors Operates Ratiometrically or with 5 VDC or Analog Span Adjusted Voltage Reference No Zero or Full-Scale Adjust Required 8-Channel Multiplexer with Address Logic 0V to VCC Input Range Outputs meet TTL Voltage Level Specifications ADC0808 Equivalent to MM74C949 ADC0809 Equivalent to MM74C949-1 KEY SPECIFICATIONS • • • • • Resolution: 8 Bits Total Unadjusted Error: ±½ LSB and ±1 LSB Single Supply: 5 VDC Low Power: 15 mW Conversion Time: 100 ȝs The device eliminates the need for external zero and full-scale adjustments. Easy interfacing to microprocessors is provided by the latched and decoded multiplexer address inputs and latched TTL TRI-STATE outputs. The design of the ADC0808, ADC0809 has been optimized by incorporating the most desirable aspects of several A/D conversion techniques. The ADC0808, ADC0809 offers high speed, high accuracy, minimal temperature dependence, excellent long-term accuracy and repeatability, and consumes minimal power. These features make this device ideally suited to applications from process and machine control to consumer and automotive applications. For 16channel multiplexer with common output (sample/hold port) see ADC0816 data sheet. (See AN-247 (Literature Number SNOA595) for more information.) Block Diagram Connection Diagrams 1 2 Please be aware that an important notice concerning availability, standard warranty, and use in critical applications of Texas Instruments semiconductor products and disclaimers thereto appears at the end of this data sheet. All trademarks are the property of their respective owners. PRODUCTION DATA information is current as of publication date. Products conform to specifications per the terms of the Texas Instruments standard warranty. Production processing does not necessarily include testing of all parameters. Copyright © 1999–2013, Texas Instruments Incorporated 37 ADC0808-N, ADC0809-N SNAS535H – OCTOBER 1999 – REVISED MARCH 2013 Figure 1. PDIP Package See Package N0028E www.ti.com Figure 2. PLCC Package See Package FN0028A These devices have limited built-in ESD protection. The leads should be shorted together or the device placed in conductive foam during storage or handling to prevent electrostatic damage to the MOS gates. Absolute Maximum Ratings (1) (2) (3) Supply Voltage (VCC) (4) 6.5V í0.3V to (VCC+0.3V) Voltage at Any Pin Except Control Inputs í0.3V to +15V Voltage at Control Inputs (START, OE, CLOCK, ALE, ADD A, ADD B, ADD C) í65°C to +150°C Storage Temperature Range Package Dissipation at TA=25°C 875 mW Lead Temp. (Soldering, 10 seconds) PDIP Package (plastic) PLCC Package ESD Susceptibility (1) (2) (3) (4) (5) 260°C Vapor Phase (60 seconds) 215°C Infrared (15 seconds) 220°C (5) 400V Absolute Maximum Ratings indicate limits beyond which damage to the device may occur. DC and AC electrical specifications do not apply when operating the device beyond its specified operating conditions. All voltages are measured with respect to GND, unless otherwise specified. If Military/Aerospace specified devices are required, please contact the TI Sales Office/Distributors for availability and specifications. A Zener diode exists, internally, from VCC to GND and has a typical breakdown voltage of 7 VDC. Human body model, 100 pF discharged through a 1.5 kȍ resistor. Operating Conditions (1) (2) TMINTATMAX Temperature Range í40°CTA+85°C Range of VCC (1) (2) 4.5 VDC to 6.0 VDC Absolute Maximum Ratings indicate limits beyond which damage to the device may occur. DC and AC electrical specifications do not apply when operating the device beyond its specified operating conditions. All voltages are measured with respect to GND, unless otherwise specified. Electrical Characteristics – Converter Specifications Converter Specifications: VCC=5 VDC=VREF+, VREF(í)=GND, TMINTATMAX and fCLK=640 kHz unless otherwise stated. Symbol Parameter ADC0808 Total Unadjusted Error (1) (1) 2 Conditions Min Typ Max Units 25°C ±½ LSB TMIN to TMAX ±¾ LSB Total unadjusted error includes offset, full-scale, linearity, and multiplexer errors. See Figure 5. None of these A/Ds requires a zero or full-scale adjust. However, if an all zero code is desired for an analog input other than 0.0V, or if a narrow full-scale span exists (for example: 0.5V to 4.5V full-scale) the reference voltages can be adjusted to achieve this. See Figure 15. Submit Documentation Feedback Copyright © 1999–2013, Texas Instruments Incorporated Product Folder Links: ADC0808-N ADC0809-N 38 ADC0808-N, ADC0809-N www.ti.com SNAS535H – OCTOBER 1999 – REVISED MARCH 2013 Functional Description MULTIPLEXER The device contains an 8-channel single-ended analog signal multiplexer. A particular input channel is selected by using the address decoder. Table 1 shows the input states for the address lines to select any channel. The address is latched into the decoder on the low-to-high transition of the address latch enable signal. Table 1. Analog Channel Selection ADDRESS LINE SELECTED ANALOG CHANNEL C B IN0 L L L IN1 L L H IN2 L H L IN3 L H H IN4 H L L IN5 H L H IN6 H H L IN7 H H H A CONVERTER CHARACTERISTICS The Converter The heart of this single chip data acquisition system is its 8-bit analog-to-digital converter. The converter is designed to give fast, accurate, and repeatable conversions over a wide range of temperatures. The converter is partitioned into 3 major sections: the 256R ladder network, the successive approximation register, and the comparator. The converter's digital outputs are positive true. The 256R ladder network approach (Figure 3) was chosen over the conventional R/2R ladder because of its inherent monotonicity, which ensures no missing digital codes. Monotonicity is particularly important in closed loop feedback control systems. A non-monotonic relationship can cause oscillations that will be catastrophic for the system. Additionally, the 256R network does not cause load variations on the reference voltage. The bottom resistor and the top resistor of the ladder network in Figure 3 are not the same value as the remainder of the network. The difference in these resistors causes the output characteristic to be symmetrical with the zero and full-scale points of the transfer curve. The first output transition occurs when the analog signal has reached +½ LSB and succeeding output transitions occur every 1 LSB later up to full-scale. The successive approximation register (SAR) performs 8 iterations to approximate the input voltage. For any SAR type converter, n-iterations are required for an n-bit converter. Figure 4 shows a typical example of a 3-bit converter. In the ADC0808, ADC0809, the approximation technique is extended to 8 bits using the 256R network. The A/D converter's successive approximation register (SAR) is reset on the positive edge of the start conversion start pulse. The conversion is begun on the falling edge of the start conversion pulse. A conversion in process will be interrupted by receipt of a new start conversion pulse. Continuous conversion may be accomplished by tying the end-of-conversion (EOC) output to the SC input. If used in this mode, an external start conversion pulse should be applied after power up. End-of-conversion will go low between 0 and 8 clock pulses after the rising edge of start conversion. The most important section of the A/D converter is the comparator. It is this section which is responsible for the ultimate accuracy of the entire converter. It is also the comparator drift which has the greatest influence on the repeatability of the device. A chopper-stabilized comparator provides the most effective method of satisfying all the converter requirements. The chopper-stabilized comparator converts the DC input signal into an AC signal. This signal is then fed through a high gain AC amplifier and has the DC level restored. This technique limits the drift component of the amplifier since the drift is a DC component which is not passed by the AC amplifier. This makes the entire A/D converter extremely insensitive to temperature, long term drift and input offset errors. Copyright © 1999–2013, Texas Instruments Incorporated Submit Documentation Feedback 5 Product Folder Links: ADC0808-N ADC0809-N 39 ANEXO III Product Folder Sample & Buy Technical Documents Support & Community Tools & Software LM35 www.ti.com SNIS159D – AUGUST 1999 – REVISED OCTOBER 2013 LM35 Precision Centigrade Temperature Sensors FEATURES DESCRIPTION • • • • • • • • • • • The LM35 series are precision integrated-circuit temperature sensors, with an output voltage linearly proportional to the Centigrade temperature. Thus the LM35 has an advantage over linear temperature sensors calibrated in ° Kelvin, as the user is not required to subtract a large constant voltage from the output to obtain convenient Centigrade scaling. The LM35 does not require any external calibration or trimming to provide typical accuracies of ±¼°C at room temperature and ±¾°C over a full í55°C to +150°C temperature range. Low cost is assured by trimming and calibration at the wafer level. The low output impedance, linear output, and precise inherent calibration of the LM35 make interfacing to readout or control circuitry especially easy. The device is used with single power supplies, or with plus and minus supplies. As the LM35 draws only 60 ȝA from the supply, it has very low self-heating of less than 0.1°C in still air. The LM35 is rated to operate over a í55°C to +150°C temperature range, while the LM35C is rated for a í40°C to +110°C range (í10° with improved accuracy). The LM35 series is available packaged in hermetic TO transistor packages, while the LM35C, LM35CA, and LM35D are also available in the plastic TO-92 transistor package. The LM35D is also available in an 8-lead surface-mount smalloutline package and a plastic TO-220 package. 1 2 Calibrated Directly in ° Celsius (Centigrade) Linear + 10 mV/°C Scale Factor 0.5°C Ensured Accuracy (at +25°C) Rated for Full í55°C to +150°C Range Suitable for Remote Applications Low Cost Due to Wafer-Level Trimming Operates from 4 to 30 V Less than 60-ȝA Current Drain Low Self-Heating, 0.08°C in Still Air Nonlinearity Only ±¼°C Typical Low Impedance Output, 0.1 ȍ for 1 mA Load +VS (4 V to 20 V) LM35 +VS OUTPUT 0 mV + 10.0 mV/°C Figure 1. Basic Centigrade Temperature Sensor (+2°C to +150°C) LM35 VOUT R1 tVS Choose R1 = –VS / 50 µA VOUT = 1500 mV at 150°C VOUT = 250 mV at 25°C VOUT = –550 mV at –55°C Figure 2. Full-Range Centigrade Temperature Sensor 1 2 Please be aware that an important notice concerning availability, standard warranty, and use in critical applications of Texas Instruments semiconductor products and disclaimers thereto appears at the end of this data sheet. All trademarks are the property of their respective owners. PRODUCTION DATA information is current as of publication date. Products conform to specifications per the terms of the Texas Instruments standard warranty. Production processing does not necessarily include testing of all parameters. Copyright © 1999–2013, Texas Instruments Incorporated 40 LM35 SNIS159D – AUGUST 1999 – REVISED OCTOBER 2013 www.ti.com These devices have limited built-in ESD protection. The leads should be shorted together or the device placed in conductive foam during storage or handling to prevent electrostatic damage to the MOS gates. CONNECTION DIAGRAMS METAL CAN PACKAGE TO (NDV) +VS SMALL-OUTLINE MOLDED PACKAGE SOIC-8 (D) TOP VIEW VOUT GND t Case is connected to negative pin (GND) VOUT N.C. 1 2 8 7 +VS N.C. N.C. 3 6 N.C. GND 4 5 N.C. N.C. = No connection PLASTIC PACKAGE TO-92 (LP) BOTTOM VIEW PLASTIC PACKAGE TO-220 (NEB) +VS VOUT GND LM 35DT +VS GND VOUT Tab is connected to the negative pin (GND). NOTE: The LM35DT pinout is different than the discontinued LM35DP 2 Submit Documentation Feedback Copyright © 1999–2013, Texas Instruments Incorporated Product Folder Links: LM35 41 ANEXO IV BC327, BC328 Small Signal Transistors (PNP) TO-92 FEATURES .142 (3.6) .181 (4.6) min. .492 (12.5) .181 (4.6) ♦ PNP Silicon Epitaxial Planar Transistors for switching and amplifier applications. Especially suit-able for AF-driver stages and low-power output stages. ♦ These types are also available subdivided into three groups -16, -25, and -40, according to their DC current gain. As complementary types, the NPN transistors BC337 and BC338 are recommended. max. ∅ .022 (0.55) ♦ On special request, these transistors are also .098 (2.5) manufactured in the pin configuration TO-18. E C MECHANICAL DATA B Case: TO-92 Plastic Package Weight: approx. 0.18 g Dimensions in inches and (millimeters) MAXIMUM RATINGS AND ELECTRICAL CHARACTERISTICS Ratings at 25 °C ambient temperature unless otherwise specified Symbol Value Unit Collector-Emitter Voltage BC327 BC328 –VCES –VCES 50 30 V V Collector-Emitter Voltage BC327 BC328 –VCEO –VCEO 45 25 V V Emitter-Base Voltage –VEBO 5 V Collector Current –IC 800 mA Peak Collector Current –ICM 1 A Base Current –IB 100 mA Power Dissipation at Tamb = 25 °C Ptot 6251) mW Junction Temperature Tj 150 °C Storage Temperature Range TS –65 to +150 °C 1) Valid provided that leads are kept at ambient temperature at a distance of 2 mm from case. 4/98 42 APÊNDICE I 43 APÊNDICE II 1 #include <at89x52.h> 2 #include <stdio.h> 3 4 /* DECLARAÇÃO DE VARIÁVEIS*/ 5 6 #define SPmax 35 // const - valor máximo do setpoint 7 #define SPmin 10 // const - valor mínimo do setpoint 8 #define HISTmax 8 // const - valor máximo da histerese 9 #define HISTmin 2 // const - valor mínimo da histerese #define tDSP 0x64 // const - 100uS 13 #define display P0 14 #define ADC P1 // in 15 #define ALE P3_3 // out - address latch enable "borda de subida" 16 #define dp3 P2_4 // out - pino que liga o display 3 17 #define dp2 P2_5 // out - pino que liga o display 2 18 #define dp1 P2_6 // out - pino que liga o display 1 19 #define dp0 P2_7 // out - pino que liga o display 0 20 #define EOC P2_0 // in - fim da converção 21 #define START P2_1 // out - adc start convertion "borda de decida" 22 #define AQUECE P2_2 // 23 #define ESFRIA P2_3 // out - pino que liga o resfriamento 24 #define CLK P3_4 // 25 #define PRO P3_5 // in - muda de parametro 26 #define DEC P3_6 // in - decrementa valores 27 #define INC P3_7 // in - incrementa valores 10 11 12 // out - port 0 escreve valores nos display's - port 1 recebe valores convertidos pelo ADC0808 out - pino que liga o aquecimento out - saída de clock para o ADC0808 28 29 30 31 32 unsigned char simbolo[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xA B ,0x8C , 0x87,0x88 ,0xBF ,0x09 } , //{ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ,10"n",11"P",12"t",13"A",14"-",15"H"} 33 //vetor que guarda simbolos 7_segmentos 34 DP0=14, DP1=14, DP2=14, DP3=14, 35 //todos os display iniciam com "-" 36 timer0=0, 37 //contador auxiliar do timer 0 38 numSensor=1, 39 //número de sensores(1..8) - limitado pelo ADC0808 40 vSensores[8] , 41 //vetor que armazena valores lidos pelos sensores 42 temperatura=0, 43 // número de sensores(1..8) - limitado pelo ADC0808 44 uniTemperatura=0, 45 //unidade da temperatura inicia em 0 46 dezTemperatura=0, 47 //dezena da temperatura inicia em 0 48 setPoint=15, 44 49 //caracter onde será escrito o valor do setpoint *15 é o valor pré determinado* 50 enderSensor=0; 51 //contador que define o endereço da porta do adc0808 52 menu=0, 53 //menu recebe valor 0 54 histerese=HISTmin; 55 //variável onde sera guardado a histerese minima que sera lida 56 57 58 void clock() interrupt 3 { // clock de 3,9kHz gerado por interupção 59 CLK = ~ CLK; //barra o estado do CLK(P3_4) 60 61 /*cálculo de peiodo /*(65535 - TH+TL)*1uS*//*cálculo de frequência /*(1S/periodo)*/ 62 63 TH1 = 0XFF; TL1 = 0X00; //carrega timer_1 com FF00h (65280) 64 TF1 = 0; 65 } //reseta timer_1 66 67 void 68 for ( ;tempo2>0;tempo2--) ; delay(unsigned int tempo2) 69 } { // rotina de atraso 70 void 71 atualizaTemperatura() interrupt 1 { // atualização da temperatura feita 72 timer0++; //contador auxiliar do timer_0 incrementa 73 74 /* 75 (se dividir o tempo desejado por esse valor tera a qtd. de incrementos no timer0) */ 1uS * 65.535 = 65,535mS p/cada incremento 76 77 if(timer0==45){ 78 dezTemperatura = temperatura/10; //atualiza a dezena da temperatura 79 uniTemperatura = temperatura%10; //atualiza a unidade da //a cada 1 segundo temperatura 80 timer0=0;} //zera o contador auxiliar do timer_0 81 TH0 = 0X00; TL0 = 0X00; //carrega o timer_0 com 0000h(0) 82 TF0 = 0; 83 } //reseta o timer_0 84 85 void atualizaDisplay() { // função que faz a multiplexação dos display's 86 dp3 = 1; 87 delay(tDSP); //apaga o display 3 //chama a rorina de atraso "delay de 100uS" 88 display = simbolo[DP0]; //P0 recebe o caracter 45 correspondente ao display 0 //acende o display 0 89 dp0 = 0; 90 delay(tDSP); //chama a rotina de atraso "delay de 100uS" 91 92 dp0 = 1; 93 delay(tDSP); //apaga o display 0 //chama a rotina de atraso "delay de 100uS" 94 display = simbolo[DP1]; //P0 recebe o caracter correspondente ao display 1 95 dp1 = 0; 96 delay(tDSP); //acende o display 1 //chama a rotina de atraso "delay de 100uS" 97 98 dp1 = 1; 99 delay(tDSP); //apaga o display 1 //chama a rotina de atraso "delay de 100uS" 100 display = simbolo[DP2]; //P0 recebe o caracter correspondente ao display 101 dp2 = 0; 102 delay(tDSP); //acende o display 2 //chama a rotina de atraso "delay de 100uS" 103 104 dp2 = 1; 105 delay(tDSP); //apaga o display 2 //chama a rotina de atraso "delay de 100uS" 106 display = simbolo[DP3]; //P0 recebe o caracter correspondente ao display 107 108 dp3 = 0; //acende o display 3 delay(tDSP); "delay de 100uS" 109 //chama a rotina de atraso } 110 void atualizaDado(char soma) 111 { // função que atualiza dador da IHM 112 switch(menu){ 113 //numSensor 114 case 0: DP0 = 10; //mostra o caracter "n" no display 0 115 DP1 = 5; //mostra o caracter "S"(equivalente ao "5") no display 1 116 numSensor = numSensor + soma; //soma a variável "numSensor" com a variável "soma" 117 if(numSensor == 0) 118 numSensor = 1; 119 else //se não... 120 if(numSensor == 9) 121 numSensor = 8; 122 DP2 = numSensor/10; //mostra a dezena de "numSensor" //se "numSensor" for igual a 0 //"numSensor" recebe 1 //se "numSensor" for igal 9 //"numSensor" recebe 8 no display 2 123 DP3 = numSensor%10; "numSensor" no display 3 //mostra a unidade de 46 124 break; 125 //setPoint 126 case 1: DP0 = 5; //mostra o caracter "S"(equivalente ao "5") no display 0 127 DP1 = 11; //mostra o caracter "P" no display 1 128 setPoint = setPoint + soma; //soma a variável "setPoint" com a variável "soma" 129 if(setPoint < SPmin) //se "setPoint" for menor que "SPmin" 130 setPoint = SPmax; //"setPoint" recebe "SPmax" 131 else //se não... 132 if(setPoint > SPmax) //se "setPoint" for maior que "SPmax" 133 setPoint = SPmin; //"setPoint" recebe "SPmin" 134 DP2 = setPoint / 10; //mostra a dezena de "setPoint no display 2 135 DP3 = setPoint % 10; //mostra a unidade de "setPoint" no display 3 136 break; 137 //histerese 138 case 2: DP0 = 15; //mostra o caracter "H" no display 0 139 DP1 = 12; //mostra o caracter "t" no display 1 140 histerese = histerese + soma; //soma a variável "histerese" com a variável "soma" 141 if(histerese < HISTmin) //se "histerese" for menor que "HISTmin" 142 histerese = HISTmin; 143 else //se não... 144 if(histerese > HISTmax) //se "histerese" for maior que //"histerese" recebe "HISTmin" "HISTmax" 145 histerese = HISTmax; 146 DP2 = histerese/10; //mostra a dezena de "histerese" //"histerese" recebe "HISTmax" no display 2 147 DP3 = histerese%10; //mostra a unidade de "histerese" no display 3 148 break; 149 } 150 } 151 void IHM() { // função que faz a comunicação com o usuário 152 unsigned char tecla; //caracter utilizado para ler as teclas 153 DP0 = 10; //mostra o caracter "n" no DP1 = 5; //mostra o caracter display 0 154 "S"(equivalente ao "5") no display 1 155 DP2 = numSensor/10; //mostra a dezena de "numSensor" no display 2 156 DP3 = numSensor%10; //mostra a unidade de 47 "numSensor" no display 3 157 menu=0; //"menu" recebe 0 158 while(menu<3){ //enquanto "menu" for menor que 159 atualizaDisplay(); //chama a função atualizaDisplay 160 tecla = P3; 161 tecla = tecla|0x1f; //faz com que P3 receba 10001111 162 switch(tecla){ 163 //muda de menu 164 case 0XDF: //P3 = 11011111 165 menu++; //"menu" incrementa 166 menu = menu & 0x03; //"menu" recebe "menu" and 3... //"tecla" recebe P3 00000011 167 atualizaDado(0); 168 while(PRO==0) //enquanto PRO(P3_5) estiver precionado... 169 170 //chama a função "atualizaDado" atualizaDisplay(); //chama a função "atualizaDisplay" break; 171 //incrementa valores 172 case 0x7F: //P3 = 01111111 173 atualizaDado(1); //faz com que "soma"(char utilizado na função "atualizaDado") receba 1 174 while(INC==0) //enquanto INC(P3_7) estiver precionado... 175 atualizaDisplay(); //chama a função "atualizaDisplay" 176 break; 177 //decrementa valores 178 case 0xBF: //P3 = 10111111 179 atualizaDado(-1); //faz com que "soma"(char utilizado na função "atualizaDado") receba -1 180 while(DEC==0) //enquanto DEC(P3_6) estiver precionado... 181 atualizaDisplay(); //chama a função "atualizaDisplay" 182 break; 183 } 184 } 185 } 186 187 void leTemperatura() { // função que faz a leitura da temperatura 188 unsigned char i, temp; 189 ALE = 1; 190 // habilita o endereçamento do sensor 191 P3 = enderSensor | 0xF8; // mostra o endereço nos três primeiros pinos do port 3 192 ALE = 0; // desabilita o endereçamento do sensor 193 194 START = 1; 195 atualizaDisplay(); 196 START = 0; 197 while(EOC==0){atualizaDisplay();} // start convertion recebe 1 // chama a função atualizaDisplay // start convertion recebe 0 // enquanto EOC(end of convertion) estiver em 0, chama a função "atualizaDisplay" 48 198 // divida o valor convertido por 199 vSensores[enderSensor] = ADC; 201 1.7 e guarde o resultado no vetor dos sensores 200 atualizaDisplay(); // chama a função "atualizaDisplay" 202 203 if (enderSensor >= numSensor-1) numero de sensores... 204 enderSensor = 0; // se o endereço do sensor for maior que o // o endereço do sensor recebe o valor 0 205 else 206 // senão... enderSensor++; // a variável "enderSensor" incrementa 207 208 temp = 0; 209 for (i=0; i<numSensor; i++) { // i recebe 0, se i for menor // a variável "temp" recebe 0 que numSensor, i incrementa 210 temp = vSensores[i] + temp; // é somado ao valor de "temp" um valor de temperatura guardadono em vSensores 211 temperatura = temp/numSensor;} // a variável temperatura recebe a variável "temp" dividida pelo número de sensores que estão sendo usados 212 213 if(PRO == 0){ 214 while(PRO == 0){atualizaDisplay();} // se PRO(P3_5) estiver precionado... // enquanto PRO(P3_5) estiver precionado, chama a função "atualizaDisplay" 215 IHM(); } // chama a função "IHM" 216 atualizaDisplay(); // chama a função "atualizaDisplay" 217 } 218 void 219 controleHisterese() { // função que faz o controle da temperatura 220 /*aquecer*/ 221 if(temperatura < setPoint-histerese){ //se "temperatura" for menor que "setPoint" - "histerese" 222 AQUECE = 0; 223 ESFRIA = 1; 224 atualizaDisplay();} //pino P2_2 igual a 0 //chama a função "atualizaDisplay" 225 else 226 if(temperatura == setPoint) //se "temperatura" for igual a "setPoint" 227 AQUECE = 1; 228 229 /*esfriar*/ 230 if(temperatura > setPoint+histerese){ //se "temperatura" for maior que "setPoint" + "histerese" 231 ESFRIA = 0; 232 AQUECE = 1; 233 atualizaDisplay();} 235 //pino P2_3 igual a 0 //chama a função "atualizaDisplay" 234 if(temperatura == setPoint) igual a "setPoint" else //se "temperatura" for 49 236 ESFRIA = 1; 237 } 238 void main() { 239 /*configuração dos timers*/ // função principal 240 = 0X8A; 241 IE 242 TMOD = 0x11; //habilita timer_0 e timer_1 //configura timer_0 e timer_1 para o modo 1 243 TCON = 0x50; 244 TH0 = 0X00; TL0 = 0X00; //carrega 0000h(0) no timer 0 245 TH1 = 0XFF; TL1 = 0X00; //carrega ff00h(65280) no timer 1 //dispara timer_0 e timer1 246 247 IHM(); //chama função da IHM 248 249 while (1) 50 250 { 251 DP0 = 12; //display 0 recebe o simbolo 252 253 "t" DP1 = 13; DP2 = dezTemperatura; //display 1 recebe o simbolo "A" //display 2 recebe o simbolo 254 correspondente a dezena da temperatura DP3 = uniTemperatura; //display 3 recebe o simbolo 255 correspondente a unidade da temperatura controleHisterese(); //chama a função que faz o 256 controle da temperatura leTemperatura(); leitura da temperatura 257 } 258 } 2 5 9 //chama a função que faz a 51