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)
TMIN”TA”TMAX
Temperature Range
í40°C”TA”+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, TMIN”TA”TMAX 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