Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
DESENVOLVIMENTO DE UM TERMOSTATO
DIGITAL MICROCONTROLADO
por
ARTUR RAFAEL MARANHO DE OLIVEIRA
CCERO JOS DOS SANTOS JNIOR
TIAGO CAVALCANTI ALVES
ESCOLA POLITCNICA
2
DE PERNAMBUCO
MARCLIO FEITOSA
3
Resumo da Monografia apresentada ao Departamento de Engenharia Eltrica da Escola
Politcnica de Pernambuco.
DESENVOLVIMENTO DE UM TERMOSTATO
DIGITAL MICROCONTROLADO
Artur Rafael Maranho de Oliveira
Ccero Jos dos Santos Jnior
Tiago Cavalcanti Alves
Dezembro/2005
Orientador: Zlcio de Lavor Telles, Msc.
rea de Concentrao: Dispositivos Programveis.
Palavras-chave: Dispositivos Programveis, Automao Predial, Microcontroladores
Nmero de Pginas: 54.
4
Summary of Monograph presented to UPE.
SUMRIO
LISTAS ...................... vi
1.
INTRODUO..........................................................................................................1
2.
FUNDAMENTOS TERICOS................................................................................ 2
2.1. INTRODUO....................................................................................................... 2
2.2. TRANSDUTORES DE TEMPERATURA.............................................................. 2
2.2.1. PRINCPIO DE FUNCIONAMENTO ................................................................ 2
2.3. AMPLIFICADORES DE SINAIS ........................................................................... 3
2.4. CONVERSORES ANALGICO-DIGITAL ........................................................... 5
2.5. MICROCONTROLADORES 8051.......................................................................... 6
2.5.1. INTRODUO AOS MICROCONTROLADORES........................................... 6
2.5.2. O 8051 NO PROJETO.......................................................................................... 6
2.6. DISPLAY DE CRISTAL LIQUIDO........................................................................ 7
2.7. CIRCUITO DE POTENCIA..................................................................................... 8
2.8. CONDICIONADOR DE AR ................................................................................... 8
3. DESENVOLVIMENTO DO SISTEMA......................................................................... 10
3.1. INTRODUO......................................................................................................... 10
3.2. PARTIO DO SISTEMA.......................................................................................10
3.3. DESENVOLVIMENTO DE HARDWARE..............................................................12
3.3.1. DIAGRAMA EM BLOCOS ...............................................................................12
3.3.2. SELEO E PINAGEM DOS COMPONENTES .............................................13
3.3.3. DIAGRAMA ESQUEMATICO .........................................................................15
3.3.4. LAYOUT DA PCI (PLACA DE CIRCUITO IMPRESSO)...............................16
3.3.5. LISTA DE COMPONENTES ........................................................................... 16
3.4. DESENVOLVIMENTO DE SOFTWARE.............................................................. 17
3.4.1. ESPECIFICAO DO SISTEMA.................................................................... 17
3.4.2. PRINCIPIO DE FUNCIONAMENTO DO SISTEMA...................................... 20
3.4.3. DESCRIO DAS PINAGENS DOS COMPONENTES................................ 26
3.4.4. ESCRITA DO ALGORITIMO.......................................................................... 26
3.4.5. ELABORAO DO CODIGO FONTE............................................................ 27
3.4.6. COMPILAO E DEBUGG ............................................................................ 29
3.4.7. GRAVAO DO PROGRAMA NO CHIP ..................................................... 30
4.
CONCLUSES E
PERSPECTIVAS.............................................................................31
4.1. CONCLUSES....................................................................................................... 31
4.2. PERSPECTIVAS................................................................................................... 31
ANEXOS............................................................................................................................ 33
ANEXO 1 DIAGRAMA ELTRICO.......................................................................... 33
ANEXO 2 FOTOS DO PROJETO............................................................................... 34
ANEXO 3 PROGRAMA FONTE................................................................................ 36
REFERENCIAS BIBLIOGRAFICAS............................................................................... 53
LISTAS
LISTA DE FIGURAS
FIGURA 2.1 AMPLIFICADOR OPERACIONAL........................................................ 3
FIGURA 2.2 AMPLIFICADOR OPERACIONAL INVERSOR E O RESPECTIVO
GANHO................................................................................................... 4
FIGURA 2.3 AMPLIFICADOR OPERACIONAL NO INVERSOR E O
RESPECTIVO GANHO.......................................................................... 4
FIGURA 3.1 PARTICIONAMENTO DO PROJETO................................................... 10
FIGURA 3.2 SISTEMA GENRICO MICROCONTROLADO UTILIZADO PARA
CONTROLE........................................................................................... 12
FIGURA 3.3 DIAGRAMA EM BLOCOS DO PROJETO.............................................13
FIGURA 3.4 DIAGRAMA EM BLOCOS COM COMPONENTES
SELECIONADOS....................................................................................15
FIGURA 3.5 DESENVOLVIMENTO DE UM PROJETO.............................................18
FIGURA 3.6 BLOCO SENSOR DE TEMPERATURA..................................................20
FIGURA 3.7 BLOCO AMPLIFICADOR........................................................................21
FIGURA 3.8 BLOCO CONVERSOR ANALGICO DIGITAL....................................22
FIGURA 3.9 BLOCO DE POTNCIA............................................................................23
FIGURA 3.10 PROGRAMADOR MPT 1010..............................................................30
LISTA DE TABELAS
TABELA 2.1 ENDEREO DAS 32 POSIES DO LCD 16 X 2 ................................. 7
TABELA 3.1 PARTICIONAMENTO DO PROJETO ................................................... 11
TABELA 3.2 COMPONENTES ESCOLHIDOS............................................................ 14
TABELA 3.3 COMPONENTES UTILIZADOS............................................................. 16
TABELA 3.4 HISTERESE.............................................................................................. 25
CAPTULO 1
1. INTRODUO
8
CAPTULO 2
2. FUNDAMENTOS
TERICOS
2.1. INTRODUO
Este captulo tem por finalidade mostrar os conceitos e os princpios de
funcionamento dos componentes que utilizaremos no nosso projeto. Faremos uma anlise
simplificada de cada bloco do sistema em questo.
Termoresistncias;
Termopar;
Faz uso da juno de dois metais que geram uma diferena de potencial dependente da
temperatura devido diferena de potencial eletroqumico entre os metais.
Juno de semicondutor;
Encapsulamento TO-92
Este dispositivo foi escolhido pois apresenta diversas vantagens de utilizao, entre elas citamos : O
custo, a facilidade de ligao (somente 3 pinos), maior confiabilidade em relao aos termopares e
termistores comerciais. Detalhes de ligao ver anexo 1.
10
1. Entrada diferencial: V2 V1;
2. Elevada impedncia de entrada, Z = ;
3. Baixa impedncia de sada, Z = 0 ;
4. Elevado ganho de amplificao, A= ;
As duas montagens mais utilizadas como amplificadores de sinais so: o amplificador
inversor na figura 2.2 e o amplificador no inversor na figura 2.3, com os seus respectivos ganhos.
G=
Vout
R
= 2
Vin
R1
G=
Vout
R
= 1+ 2
Vin
R1
11
Tempo de converso. . . Mx 17 s
12
13
2K Bytes EEPROM
4V a 6V Faixa de Operao;
Encapsulamento DIP-40pinos
10
11
12
13
14
15
16
Linha 1
80
81
82
83
84
85
86
87
88
89
8A
8B
8C
8D
8E
8F
Linha 2
C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF
14
Podemos ter vrias configuraes para comunicao sendo a mais usual a que utiliza 10 pinos
do microcontrolador.
2.8. CONDICIONADOR DE AR
O condicionador de ar um equipamento de refrigerao destinado a climatizar um ambiente.
Alm de climatizar, ele purifica, filtra e desumidifica o ar.
Ressaltamos a importncia dos sistemas capazes de controlar a temperatura e a umidade do
ambiente com preciso. Tomando como exemplo a rea de Telecomunicaes, esses sistemas
garantiro o perfeito funcionamento dos equipamentos eletrnicos em um site, tendo em vista a
vulnerabilidade dos mesmos temperatura e umidade. Qualquer indisponibilidade do sistema,
15
mesmo com curta durao, acarretar numa perda de receita para a empresa de telecomunicaes.
Logo, o sistema de climatizao de suma importncia.
Componentes dos Condicionadores de ar:
Condensador: tem como funo dissipar o calor que o fluido refrigerante absorveu ao
longo do sistema de refrigerao. no condensador que o gs superaquecido ao
perder calor para o meio ambiente, passa do estado gasoso para o lquido.
16
CAPTULO 3
3. DESENVOLVIMENTO DO SISTEMA
3.1 INTRODUO
Projetar um determinado sistema eletrnico envolve uma anlise detalhada de cada bloco que
faz parte do sistema. Sabendo disso, a elaborao de projetos se torna um pouco pessoal. Mesmo
assim, existe uma linha de raciocnio comum para todo projetista, um backbone. Nos prximos
tpicos est uma determinada seqncia, na qual seguimos, para facilitar a elaborao do projeto
supra citado. Ento descreveremos neste captulo todas as etapas do projeto, desde a sua concepo
inicial at o seu funcionamento final.
Para facilitar o desenvolvimento do sistema dividimo-lo em duas partes conforme a figura 3.1.
17
A primeira parte sobre o desenvolvimento do hardware, onde tratamos do diagrama em
blocos, pinagem dos componentes, diagrama esquemtico, layout da placa e da lista de
componentes. A segunda parte sobre o descritivo do princpio de funcionamento do sistema,
escrita do algoritmo, escrita do cdigo fonte na linguagem de programao escolhida, etc. As
partes esto resumidas na tabela 3.1.
18
19
No item anterior, o diagrama em blocos diz o que o circuito faz, sem se preocupar quais os
componentes sero utilizados. Nesta seo, mostramos qual componente cada bloco comporta, ou
seja, fazemos a seleo dos dispositivos. A escolha dos dispositivos foi baseada na facilidade de
ligao eltrica, preo, facilidade de compra e algumas sucatas que encontramos. A pinagem dos
componentes poder ser obtida atravs da suas respectivas folhas de especificaes. As folhas de
especificaes ou data-sheets so disponibilizadas pelos seus respectivos fabricantes. A seguir, a
tabela 3.2 mostra o resumo dos componentes escolhidos, suas funes bsicas e suas respectivas
vantagens neste projeto.
20
Tabela 3.2 Componentes escolhidos.
DISPOSITIVO
FUNO
VANTAGEM DE UTILIZAO
Sensor
LM 35 DZ
Ampliop
LM 324 N
TLC 549 CP
precisaremos
de
pinos
comparado
do
ao
Microcontrolador
AT 89s 8952
um
armazenado.Aciona
arquitetura
8051.
atuadores.
Display
da
LCD 16x2
Teclas
push - button
Rels de
precisaremos de 4 teclas.
Controla as altas correntes do atuador, J tnhamos esses Rels de contato seco
atravs do fechamento do contato seco para amperagem desejada.
Contato seco
Transistores
557 e BD 139
BC Amplifica
microcontrolador
sinal
para
vindo
acionar
dispositivo de potncia.
Condicionador de Controlador
ar 7000btus
que
ir
usados.
manipular
21
A figura 3.4 mostra o diagrama em blocos da figura 3.3 com os componentes j selecionados.
O prximo passo para a execuo do projeto sabermos como ligar cada componente entre
si, ou seja, precisamos da pinagem dos componentes utilizados. As figuras abaixo foram retiradas
dos respectivos data-sheets ou folhas de especificao de cada fabricante.
22
3.3.4 LAYOUT DA PCI (PLACA DE CIRCUITO IMPRESSO)
QD.
DESCRIO
REF.
01
02
03
CN1
04
diodo 1N4001
D1, D3 E D4
05
C1
06
C2, C3,C4
23
07
U1
08
R1
09
D2
10
U2
11
U3
12
R3
13
R2,R8,R4, R6
14
P1 e P2
15
U4
16
T1,T2,T3,T4e T5
17
U5
18
C5 e C6
19
C7
20
cristal 12Mhz
K1
21
U6
22
R5 e R7
23
rel1 e rel2
24
Q3 e Q4
25
con1 e con2
26
Optoacopladores TIL111
U7 e U8
27
24
A figura 3.5 mostra as etapas do desenvolvimento de um projeto:
ESPECIFICAO
ANLISE
PROJETO
IMPLEMENTAO
25
- LCD atualizado freqentemente, mostrando o valor da temperatura do ambiente
monitorado.
- Teclado com 4 teclas funcionais, onde:
2 teclas mudana de variveis.
1 tecla ( funo Mais aumentar o valor da varivel )
1 tecla (funo Menos diminuir o valor da varivel )
2 teclas para controle de funes.
1 tecla ( funo Menu mostra as diversas telas )
1 tecla (funo Enter confirma o valor da varivel desejada )
- Subsistema para adquirir o dado a ser controlado. Esse sistema mandar o valor da
temperatura em forma de bits para o microcontrolador.
- Subsistema para acionar o controlador que neste caso o condicionador de ar, logo, um
acionamento de um drive ser necessrio, e, este por sua vez acionar um rel de contato seco,
dispositivo de potncia.
26
3.4.2 PRINCPIO DE FUNCIONAMENTO DO SISTEMA
Durante o estudo dos componentes eletrnicos descobrimos que para termos informaes do
meio externo (temperatura) necessrio usar o sensor de temperatura que foi o LM35 que a cada
1C, ele converte em 10mV, 2C, ele converte em 20mV, 10C, ele converte em 100mV, e assim
sucessivamente. Essa converso foi obtida conforme folha de especificao, as mudanas de escala
necessrias escalonamento sero feitas via software. A sua faixa de trabalho de 55C a
150C, mais que suficiente para o projeto. Na figura abaixo temos a ligao mais que simplificada
do componente. H dois pinos de alimentao e o outro de sada. O capacitor serve para evitar que
possveis oscilaes da tenso de alimentao interfiram no processo interno de converso.
Para facilitar a anlise tomaremos um valor como exemplo, no caso, 10C que equivale a
100mV. Como o sinal de sada pequeno foi necessrio usar um amplificador par aumentar o nvel
do sinal. O elemento usado foi o LM124 por apresentar tambm facilidade de ligao, impedncia
de entrada elevada e no necessitar de ajuste de off-set. Usamos a entrada no-inversora, para
obter o sinal de sada j em fase com o sinal de entrada, facilitando, pois, a manipulao da
informao.
27
Outro motivo para que utilizssemos amplificadores operacionais que seu ganho
dependente de impedncias externas, na qual o projetista se encontra em plena liberdade para
definir o ganho do seu sistema utilizando resistores de valores comerciais. Usamos um ganho de
9,3, ou seja um G=9,3, pois, o ganho necessrio para o fundo de escala usado no conversor A/D
que ser comentado adiante. Como a equao para a configurao no-inversora dada por
G=
Vout
R
= 1+ 2
Vin
R1
Precisamos que a relao R2/R1 seja igual a 8,3. Ento chegamos a dois valores: R2=100k e
R1=12k obtendo assim, o valor desejado. O valor de R1=12k foi obtido atravs da soma de um
resistor fixo de 10k e um resistor ajustvel tambm de 10k, no qual fizemos um ajuste para 2k.
O bloco do circuito responsvel por esta amplificao esta descrito na figura abaixo.
28
Com o sinal j amplificado o mesmo seguir para o conversor analgico-digital ADC que
ir converter o sinal analgico vindo do sensor para sinais digitais. O conversor escolhido foi o
TLC549 que aps a sua converso armazena em um registrador interno de oito bits. Sendo,
portanto, um conversor AD de 8bits. No nosso exemplo de 10C e um ganho de 9,3 temos agora
um sinal de 930mV digitalizado na sada do conversor.
A referncia do TLC549 diferencial, significa que a resoluo depender da faixa de
valores correspondente. Quanto mais ampla for esta faixa mais preciso ter a converso. Mais uma
vez para fazer da maneira mais fcil, abriremos mos da preciso do sistema por ser um controle de
uma sala qualquer e a faixa escolhida ser de 5V. Colocamos 5V no pino REF+ (pino 1) e 0V no
pino REF- (pino 3) . Observe a figura abaixo:
29
Para o fundo de escala temos: um valor binrio de 11111111(2) uma tenso de 5V e uma temperatura
de 53,76 C, na qual arredondamos para 52,2C. Os trs pinos servem para: (pino 7) habilitar a
comunicao, (pino 6) mandar os dados e o (pino 5) mandar os pulsos para deslocar os bits do
registrador interno.
O microcontrolador recebe o sinal de forma serial descrita utilizando pulsos de leitura no
habilitador do conversor e os oito pulsos consecutivos atravs de uma das portas do micro e,
recebemos os oito bits um a um. No confundir com a funo do microcontrolador que utiliza
registradores especficos de comunicao serial. Ao ligar o mdulo o sensor ir captar a temperatura
ambiente, e atravs da converso necessria o microcontrolador mandar o valor dessa temperatura,
em grau Celsius, para o display.
O microcontrolador interpreta o valor lido com o programado e toma a deciso de ligar ou
no o condicionado e o ventilador. Esta deciso tomada pelo sistema de retroalimentao. Caso a
temperatura ambiente esteja abaixo da programada ele desligar o condicionador e o ventilador.
Caso contrrio, se a temperatura estiver acima ele acionar os dois dispositivos. Na sada do micro
ter um drive, formado por transistores, que aumentar o nvel de corrente do micro ao ponto de
disparar um outro sinal que acionar um rel de contato seco. A figura abaixo mostra as portas P1.0
e P1.1 responsveis pelo acionamento do compressor e ventilador, respectivamente. O circuito do
ventilador foi omitido por ser absolutamente igual ao do compressor.
Figura 3.9 Bloco de potncia acionamento do compressor pela porta P1.0. O bloco do
ventilador semelhante s que o acionamento atravs da porta P1.1.
30
O nvel de acionamento destas duas portas no nvel lgico zero. Tendo em vista que, ao
ligar o microcontrolador todas as suas portas vo para nvel lgico 1 ou FFH. Ao passar pelo
inversor o nvel lgico mudado para o seu inverso, 1. Nvel um no pino 1 do optoacoplador
TIL111 aciona o LED que mandar ftons para a base do fototransistor e, este por sua vez entrar
em conduo e os 5V presentes no seu coletor, pino 4, chegar no seu emissor, pino 5. A tenso que
surgir no resistor ser maior que os 0,7V necessrios para a conduo do BD139 que acionar a
bobina do rel e este por sua vez ligar o contato NA acionando, pois, a carga.
Atravs da tecla Menu (pressionando-a uma vez) o usurio entrar numa tela onde ter que
colocar o valor da temperatura que ele deseja para o ambiente. A esta etapa chamaremos de
PRESET. O valor de preset depender do tipo de atividade que com condicionador se encontra.
Num laboratrio, por exemplo, tem-se uma temperatura de 22C. Enquanto numa sala de recepo
de uma empresa esse valor poder ser 20C, por que pessoas entram e sai com maior freqncia.
31
Tabela 3.4 Histerese
Direo
Histerese
PRESET
Negativa
Histerese
Positiva
do ciclo
Temperatura Temperatura
23 - 4 =
23C
19C
aumentando
23 + 4
Temperatura
= 27C
> 27C
Liga
C+V
C+V
Ligados
23 + 4
Temperatura
< 19C
C+V
Desligados
Temperatura Temperatura
C+V
C+V
Desligados Desligados
23 - 4 =
23C
19C
diminuindo
= 27C
< 19C
> 27C
C+V
Desliga
C+V
C+V
C+V
Desligados
C+V
Ligados
Ligados
Ligados
32
3.4.3 DESCRIO DAS PINAGENS DOS COMPONENTES
Mesmo sendo particionado quem vai fazer a parte de software precisa saber como funcionam
os componentes do circuito, logo necessrio recorrer tambm a pinagem dos componentes. Ento
o projetista dever tambm recorrer s folhas de especificaes dos componentes.
33
3.4.5 ELABORAO DO CDIGO-FONTE
Depois de executar uma seqncia em termos de algoritmo precisa-se passar essa forma de
pensar para um tipo de estrutura que seja manipulvel por mquinas. Ou seja, uma linguagem de
programao. Existem diversas linguagens de programao para esse tipo de converso. Umas so
ditas de alto nvel, como o BASIC, enquanto outras so ditas de baixo nvel, ou linguagem de
mquina, como o ASSEMBLER (montador).
Escolhemos a linguagem Assembler, por ser mais familiar aos integrantes do grupo, embora
tenha milhares de desvantagens, como por exemplo, a no estruturao, o que dificultou bastante
o uso de sub-rotinas.
Logo abaixo est o cabealho e os equates do programa citada apenas como exemplo.
;===========================================================
;PROGRAMA FONTE: TERMMETRO DIGITAL MICROCONTROLADO
;AUTOR(ES): CCERO JOS / FABIANO BRITO
;DESCRIO: Executa as atividades referente ao termmetro digital microcontrolado,
descrito no captulo 3 da Monografia da Disciplina projeto Final de Curso da Escola
Politcnica de Pernambuco da Universidade de Pernambuco UPE.
;VERSO: lambda_2 - DATA: Novembro/ 2005
;===========================================================
;lista de equates: associa um nome lgico aos endereos
.equ rs, p3.6
.equ enable, p3.7
.equ dados_dsp, p0
.equ ioclk, p2.5
.equ data_lm, p2.6
.equ cs,p2.7
.equ menu,p2.0
.equ mais,p2.1
.equ menos,p2.2
.equ enter,p2.3
.equ pr_reg,08h
.equ hst_reg,09h
.equ ctr_reg,0Ah
.equ ctr_reg2,0bh
.equ wmcom,96h
.equ ee_temp,0000h
.equ ee_hst,0001h
.equ compr, p1.0
.equ ventil, p1.1
.equ data_term,0ch
34
No software comeamos com o cabealho que tem a funo de facilitar a identificao e a
documentao do programa, bem como a data, autor (es) e suas possveis revises.
Na seqncia temos os equates que tem a funo de associar um nome lgico ao endereo
determinado pelo programador. Isto facilita a programao por que mais fcil lembrar de nomes,
do que de nmeros.
O vetor de interrupo de reset est no endereo 0000H e na arquitetura 8051, esse vetor
possuem trs bytes, o suficiente para uma instruo de salto incondicional de caso ljmp.
Usamos uma rea de memria para as mensagens do display essa rea esta no endereo
(org0050H), utilizamos o db (define byte) para associar bytes ou conjuntos de bytes (string) a um
nome lgico, essa ttica foi usada para escrevermos as mensagens no display de cristal liquido Ex:
TEMP; PRESET; TEMP DESEJADA; HISTERESE, etc.
Limitamos o preset em 39C e a histerese a 9C, logo, o valor de temperatura mximo
programvel de 30C + 9C, ou seja, 39C. Convertendo para BCD o que estava armazenado na
EEPROM e fazendo a funo ANL. As informaes que temos no LCD no software foi dividida em
4 sub-rotinas: TELA1, TELA2, TELA3 e TELA4. A tela1 escreve na tela principal no display ou
seja a que mostra a histerese, temperatura e o preset. A tela2 escreve a tela de Presets no display no
display ou seja mostra temperatura desejada que podemos controlar e a temperatura. A tela3 escreve
a histerese no display ou seja o ajuste de histerese e a histerese. A tela4 escreve termmetro
digital no display.
Utilizamos o complemento a 10 para podermos trabalhar com nmeros negativos na base
decimal, usamos tambm a sub-rotina CMPROT para comparar o valor de temperatura lido pelo
sensor, para fazermos o controle usamos os limites inferior e superior, ou seja, se a temperatura for
menor que a limite inferior (T<lim_inf) desliga o ventilador e o compressor e se a temperatura for
maior ou igual ao limite superior (Tlim_sup) liga o ventilador e o compressor.
As sub-rotinas dado1 enviam ao display o string e ele varrido e cada carecter (ou seja
men1) enviado ao display, cada dado seja do dado 1 ao dado 9 tem a funo de enviar as
mensagens ao display (men1 a men9).
35
Outras sub-rotinas muito importantes so a que mostra a temperatura (mostra_temp), a que
mostra o preset (mostra_pr) que est na EEPROM no registro e mostra no display, e a que mostra a
histerese que est na EEPROM (EE_HST) e mostra-a no display.
O programa-fonte completo est listado no anexo 3.
Agora estamos prontos para passar para a etapa final do nosso projeto, que consiste em fazer
o microcontrolador entender o cdigo-fonte.
3.4.6 COMPILAO E DEBUGG
Depois da escrita do algoritmo e da elaborao do cdigo-fonte precisamos transformar toda
escrita, palavra, ou mnemnico da linguagem escolhida em nmeros binrios para que o
microcontrolador entenda nossos comandos. Pode-se tambm converte em Hexadecimal.
Na compilao usamos o PSEUDOSAM (tm) 51 assembler. V1.6.00 Level I Semiprofessional Development Product Copyright (c) 1986, 87, 88. PseudoCorp. do kit 8031 da WF
AUTOMAO IND. COM. SERV. LTDA. ME. E atravs dos seguintes comandos realizados no
ambiente do MS-DOS, teremos o arquivo para gravao.
36
3.4.7 GRAVAO DO PROGRAMA NO CHIP
No item anterior foi gerado o arquivo (.HEX) que contm os dados necessrios para a
gravao do chip. O arquivo foi gravado no Programador e Testador Universal MPT 1010 da
Minipa Indstria e Comrcio Ltda.
O manuseio e os comandos de utilizao no sero descrito, pois, no o nosso objetivo.
Qualquer informao a mais pode ser obtida no manual de instrues do programador que se
encontra disponvel no site do fabricante [20]. Entretanto, os passos bsicos so o seguinte:
1. Colocar o chip no programador verificando a pinagem correta;
2. Carregar o arquivo hexadecimal padro Intel;
3. Selecionar o dispositivo destinado a gravao: ATMEL AT89s8252;
4. Apagar a memria do chip para garantir integridade da gravao;
5. Fazer a programao e esperar as possveis mensagens de erro;
6. Verificar se os dados foram gravados;
Na figura 3.10 temos o programador usado na projeto.
37
CAPTULO 4
4. CONCLUSES E PERSPECTIVAS
4.1 CONCLUSES
Conclumos que no desenvolvimento do projeto, Termostato Digital Microcontrolado
conseguimos atender aos objetivos propostos inicialmente. Desenvolvemos e implementamos um
prottipo de um sistema digital usando um dispositivo programvel de baixo custo, fazendo
modificaes no condicionador de ar, tendo em mente que podemos implementar tambm em
sistemas de refrigerao de centrais de telefonia fixa, estaes rdio base ou BTS, salas de
provedores de internet, etc.
bom saber que nos vimos presentes com um projeto astucioso que, alm de tudo,
proporcionou aos envolvido o desenvolvimento de habilidades importantes para o futuro
profissional, como a capacidade de implementao de projetos, a facilidade de apresentao em
pblico e a capacidade de resoluo de problemas.
4.2 PERSPECTIVAS
Sugere-se que na automao de projetos futuros, possamos desenvolver solues de melhoria
com produtos de vanguarda, que sejam de certa forma mais baratos, eficientes, portveis,
documentveis, e de fcil entendimento para outros programadores, pois sabemos que a linguagem
assembler est perdendo, ou j perdeu espao para a potente linguagem C.
Dentre as solues de implementaes futuras possveis destacamos 5, descritas logo a
seguir:
38
39
ANEXOS
ANEXO 1 Diagrama esquemtico
40
41
42
.org 000BH
ljmp INTER
43
.ORG 0050H; rea de memria para as mensagens do display
;utilizamos a diretiva db (define byte) para associar bytes
;ou conjuntos de bytes (string) a um nome lgico. Os valores
;entre aspas indicam que pegaremos os caracteres em ascii.
;vemos que utilizamos a ttica de strings terminados em zero.
MEN1:
MEN2:
MEN3:
MEN4:
MEN5:
MEN6:
MEN7:
MEN8:
MEN9:
.DB
.DB
.DB
.DB
.DB
.DB
.DB
.DB
.DB
"TEMP:",0
"PRESET:",0
"TEMP. DESEJADA",0
"AJ. DE HISTERESE",0
"HISTERESE:",0
"TERMOM. DIGITAL",0
"MONOGRAFIA ",0
"EXECUTORES
",0
"CICERO/FABIANO ",0
;===========================================================
.ORG 0150H
;incio do programa
44
MOV R7,#120
LCALL INIT_DSP
MOV TMOD,#11H
MOV IE,#82H
CLR TR0
CLR TF0
MOV TH0,#0B1H
MOV TL0,#0E0H
SETB TR0
AQUI:
;=====================================================================
;se o boto menu for apertado far-se- o seguinte:
TELAP2: MOV DPTR,#EE_TEMP
MOVX A,@DPTR
MOV PR_REG,A
MOV DPTR,#EE_HST
MOVX A,@DPTR
MOV HST_REG,A
MOV A,#01H
LCALL DSP_COM
LCALL TELA2
SOLTA: JNB MENU,SOLTA
45
MOVX @DPTR,A
LCALL DELAY
SOLTA9: JNB ENTER,SOLTA9
SOLTA00:LCALL DELAY
JB MAIS,SOLTA11
LCALL INC_HST
LCALL TELA3
SOLTA14:JNB MAIS,SOLTA14
SOLTA11:LCALL DELAY
JB MENOS,SOLTA12
LCALL DEC_HST
LCALL TELA3
SOLTA15:JNB MENOS,SOLTA15
;
;
;
;
;
SOLTA17:LCALL DELAY
JB MENU,SOLTA00
MOV A,#01H
LCALL DSP_COM
SOLTA16:JNB MENU,SOLTA16
TELAP: LCALL TELA1
LCALL TELA4
Ljmp AQUI
botes
;============sub-rotina: inc_pr====================================
46
;Pega o que est escrito em pr_reg
;incrementa e copia de volta nesse registro.
INC_PR:PUSH ACC
MOV A,PR_REG
ADD A,#01H
DA A
ANL A,#3FH
MOV PR_REG,A
POP ACC
RET
;
;
;
;
;
;
;
;
;============rotina: dec_pr=================================
;Pega o que est escrito em pr_reg
;decrementa e copia de volta nesse registro.
;==================================================================
; inc_hst e dec_hst: so idnticas s subrotinas inc_pr e dec_pr
; incrementando ou decrementando o registro hst_reg
INC_HST:PUSH ACC
MOV A,HST_REG
ADD A,#01H
DA A
ANL A,#0FH
MOV HST_REG,A
POP ACC
RET
DEC_HST: PUSH ACC
MOV A,HST_REG
ADD A,#99H
DA A
47
ANL A,#0FH
MOV HST_REG,A
POP ACC
RET
;============sub-rotina: tela(x)====================================
;subrotina tela1: escreve a tela principal no display
TELA1:LCALL
LCALL
LCALL
LCALL
LCALL
RET
DADO1
;chama a subrotina que escreve "TEMP:" no display
MOSTRA_TEMP;chama a subr.que mostra a temper.no lcd
DADO2
; chama a subrotina que escreve "PRESET:"no lcd
MOSTRA_PR ; chama a sr que mostra a temper.armaz. na eeprom
MOSTRA_HST ; chama a sr que mostra a hist.armaz. na eeprom
; sai da subrotina
48
;
;
;
;
;
;
;
;
;
49
DA A
MOV CTR_REG2,A
MOV DPTR,#EE_TEMP
MOVX A,@DPTR
ADD A,CTR_REG2
DA A
MOV CTR_REG2,A
RET
;
;
;
;
;
;
;================sub-rotina: cmprot============================
;Comparar o valor de temperatura lido pelo sensor,
;(a parte inteira), com os limites inferior (preset-hist) e o superior
;(preset+hist). Se t<inf_lim, desliga o vent. e o compressor,
;Se t>=sup_lim, liga o ventilador e o compressor.
CMPROT: LCALL SUP_LIM ; chamo a sr que calcula o lim. superior, e
armazena em ctr_reg
MOV A,DATA_TERM ;movo para o acc, a temp. lida do sensor
SUBB A,CTR_REG ;subtraio a temp. lida com o limite superior
JC CMPASSA
;se Acc<ctr_reg, cy=1,se no,cy=0.se a
temp<sup_lim,salta
clr VENTIL
; se a temp. ambi.>=limite super.liga ventilador
clr COMPR
; liga tambm o compressor
CMPASSA:LCALL INF_LIM ; chamo a sr que calcula o lim. inferior e
coloca em ctr_reg2
MOV A,DATA_TERM
; movo para o acc a temperatura ambiente
SUBB A,CTR_REG2
;Subtraio a temp.lida com o limite inferior
JNC CMPASSA2
; Se Acc>=ctr_reg2, cy=0, se no, cy=1.
setb VENTIL
; Se cy=1, a temp. ambiente<limite inferior
setb COMPR
; desligando o compressor e o ventilador
CMPASSA2: RET
; sai da subrotina
;================rotina init_dsp====================================
;Rotina de inicializao do display
INIT_DSP: LCALL DELAY
; d um atraso de 15ms
LCALL DELAY
LCALL DELAY
MOV A,#30H
; barramento de dados de 8 bits
LCALL DSP_COM
; envia o comando para o display
MOV A,#38H
; 8 bits de dados, mais de uma linha, fonte padro
LCALL DSP_COM
; envia o comando para o display
MOV A, #08H
; apaga o display
50
LCALL DSP_COM
MOV A,#01H
LCALL DSP_COM
MOV A, #06H
LCALL DSP_COM
MOV A, #0CH
LCALL DSP_COM
RET
;==================sub-rotina desloca=============================
;L os bits enviados pelo tlc549 ao 8051
;de forma serial. Para cada transio negativa em ioclk, sai no pino
;de dados um bit correspondente ao valor da temperatura,
;comeando com o mais significativo, enviado j na queda do cs.
DESLOCA:
MOV R0,#08H ;indica a quant. de pulsos em ioclk do tlc549
DESLX:
MOV C,DATA_LM
RLC A
SETB IOCLK
; transi. de subida do clk no pino ioclk do tlc
SETB IOCLK
SETB IOCLK
SETB IOCLK
CLR IOCLK
;transio de descida do clk no pino ioclk do tlc
CLR IOCLK
;na transi. de descida do sinal no ioclk Receb.
CLR IOCLK
;pelo pino de dados, mais um bit de dados
CLR IOCLK
DJNZ R0,DESLX
;enquanto os 8 bits no forem recebidos,
continua a gerar pulsos
MOV R2,A
; move o byte correspondente para R2
RET
; sai da subrotina
;============rotina: le_temp===========================
;rotina que ler o valor de temperatura do conversor A/D
LE_TEMP: PUSH ACC
; salvo o
CLR CS
;habilito
CLR CS
CLR CS
CLR CS
LCALL DESLOCA
;
SETB CS
;
SETB CS
acumulador na pilha
o cs do tlc549, por 2us
51
SETB CS
SETB CS
MOV A,R2
; pego o byte correspondente para separar a
MOV B,#05H
; parte inteira da decimal. divido por 5 o
DIV AB
; valor encont. O que fica em Acc o quociente
MOV R2,A
; e em B o resto.Movo o quociente para R2
MOV A,#02H
; Multiplico o Resto por 2
MUL AB
MOV R3,A
; e deixo o resto em R3
LCALL CONV_DADO; chamo a sr que converte binrio em decimal
POP ACC
; reponho o acc que foi salvo na pilha
RET
; saio da subrotina
;============rotina: conv_dado===================================
;Pega a parte inteira da temperatura em binrio
;e converte para decimal utilizando a tcnica da soma de pesos
CONV_DADO: MOV A,#00H ;inicial.o valor do registro de converso
MOV 20H,R2 ;movi a parte int.da temp.para a rea de bits
JNB 00H,VAI1
; endereveis e fiz a 1a. comparao
ADD A,#01H
; se o bit um, somo 1 ao acumulador
DA A
; fao o ajuste decimal
VAI1: JNB 01H,VAI2
; testa se o 2o. bit um, se no
ADD A,#02H
; se o bit um, somo 2 ao acumulador
DA A
; fao o ajuste decimal
VAI2: JNB 02H,VAI3
; testa se o 3o. bit um, se no, salto
ADD A,#04H
; se o bit um, somo 4 ao acc.
DA A
;fao o ajuste decimal
VAI3: JNB 03H,VAI4
; testa se o 4o. bit um, se no, salto
ADD A,#08H
;se o bit um, somo 8 ao acc
DA A
;fao o ajuste decimal
VAI4: JNB 04H,VAI5
; testa se o 5o. bit um, se no, salto
ADD A,#16H
; se o bit um, somo 16 ao acc
DA A
;fao o ajuste decimal
VAI5: JNB 05H,VAI6
;testa se o 6o. bit um, se no, salto
ADD A,#32H
; se o bit um, somo 32 ao acc
DA A
;fao o ajuste decimal
VAI6: MOV DATA_TERM,A
; movo para o registro data_term
RET
; fim da subrotina
;================sub-rotina: dsp_com===============================
;Envia para o display um comando
; O comando copiado no acumulador, para ser enviado ao lcd
52
;Subrotina dsp_com2: idntica a dsp_com, s que com um delay menor
DSP_COM: clr enable
clr rs
mov dados_dsp,a
setb enable
lcall delay
lcall delay
clr enable
ret
;
;
;
;
;
;
;
;
DSP_COM2:clr enable
clr rs
mov dados_dsp,a
setb enable
lcall delay3
lcall delay3
clr enable
ret
;
;
;
;
;
;
;
;
;=============sub-rotina: dsp_dat2==========================
;Envia um caracter ascii para o display escrever
;o caracter ascii copiado no acumulador
DSP_dat2:clr enable
setb rs
mov dados_dsp,a
setb enable
lcall delay3
lcall delay3
clr enable
ret
;
;
;
;
;
;
;
;
;============sub-rotina: DELAY=========================================
DELAY: MOV TMOD, #11H
CLR TR1
CLR TF1
MOV TH1,#0B1H
MOV TL1,#0E0H
SETB TR1
DLYXX: JNB TF1, DLYXX
CLR TF1
CLR TR1
;timers no modo1:
;t/c1 desligado
;flag overflow retado
;configura v. inicial de cont.
;coloca o t/c para rodar
;espera o t/c estourar
;reseta o flag de overflow
;desliga o t/c1
53
RET
;===========sub-rotina: DADO1 a DADO9==========================
;Pega um string e envia ao display
;o string varrido e cada caracter enviado ao display
;o string varrido at encontrar zero.
DADO1: MOV A,#80H
;enderea o display para a 1a. linha
LCALL DSP_COM2 ;envia o comando ao display
MOV DPTR, #MEN1 ;ender. o apontador p/ o ender.inic. string
MOV A, #00H
;zera o acumulador
MOVC A,@A+DPTR ;envia o dado apontado por dptr para o acc
;(1o. caracter do string)
VDADO1: LCALL DSP_DAT2 ;chama a subr.de enviar caracter p/ o display
INC DPTR
;incre.o apontad. para ler o prx.carac. do string
MOV A,#00H
;zera o acc
MOVC A,@A+DPTR ;move o caracter do string para o acc
CJNE A, #00H,VDADO1 ; compara e salta se o caracter no for zero
RET
;sai da subrotina
DADO2: MOV A, #0C0H
;enderea a 2a.linha do display
LCALL DSP_COM2
MOV DPTR, #MEN2
MOV A,#00H
MOVC A,@A+DPTR
VDADO2: LCALL DSP_DAT2
INC DPTR
MOV A,#00H
MOVC A, @A+DPTR
CJNE A,#00H, VDADO2
RET
DADO3: MOV A,#80H
;enderea a 1a.linha do display
LCALL DSP_COM2
MOV DPTR, #MEN3
MOV A, #00H
MOVC A,@A+DPTR
VDADO3: LCALL DSP_DAT2
INC DPTR
MOV A,#00H
MOVC A,@A+DPTR
CJNE A, #00H,VDADO3
RET
54
DADO4: MOV A,#80H
;enderea a 1a. linha do display
LCALL DSP_COM2
MOV DPTR, #MEN4
MOV A, #00H
MOVC A,@A+DPTR
VDADO4: LCALL DSP_DAT2
INC DPTR
MOV A,#00H
MOVC A,@A+DPTR
CJNE A, #00H,VDADO4
RET
DADO5: MOV A,#0C0H
;enderea a 2a. linha do display
LCALL DSP_COM2
MOV DPTR, #MEN5
MOV A, #00H
MOVC A,@A+DPTR
VDADO5: LCALL DSP_DAT2
INC DPTR
MOV A,#00H
MOVC A,@A+DPTR
CJNE A, #00H,VDADO5
RET
DADO6: MOV A,#90H
;enderea a 3a. linha do display
LCALL DSP_COM2
MOV DPTR, #MEN6
MOV A, #00H
MOVC A,@A+DPTR
VDADO6: LCALL DSP_DAT2
INC DPTR
MOV A,#00H
MOVC A,@A+DPTR
CJNE A, #00H,VDADO6
RET
55
MOVC A,@A+DPTR
CJNE A, #00H,VDADO7
RET
DADO8: MOV A,#90H
;enderea a 3a.linha do display
LCALL DSP_COM2
MOV DPTR, #MEN8
MOV A, #00H
MOVC A,@A+DPTR
VDADO8: LCALL DSP_DAT2
INC DPTR
MOV A,#00H
MOVC A,@A+DPTR
CJNE A, #00H,VDADO8
RET
DADO9: MOV A,#0D0H
;enderea a 4a.linha do display
LCALL DSP_COM2
MOV DPTR, #MEN9
MOV A, #00H
MOVC A,@A+DPTR
VDADO9: LCALL DSP_DAT2
INC DPTR
MOV A,#00H
MOVC A,@A+DPTR
CJNE A, #00H,VDADO9
RET
;==========sub-rotina: mostra_temp===========================
56
;==========sub-rotina mostra_pr============================
;Pega o preset que est na eeprom
;no registro ee_temp e mostra no display
MOSTRA_PR: MOV A,#0C8H
LCALL DSP_COM2
mov dptr,#ee_temp
MOVx A,@dptr
ANL A,#0F0H
SWAP A
ADD A,#30H
LCALL DSP_DAT2
MOVx A,@dptr
ANL A,#0FH
ADD A,#30H
LCALL DSP_DAT2
MOV A,#0DFH
LCALL DSP_DAT2
;smbolo de grau
57
RET
;==========sub-rotina: mostra_pr2===============================
;Pega o valor escrito em pr_reg e mostra no display
MOSTRA_PR2:
MOV A,#0C8H
LCALL DSP_COM2
MOV A,PR_REG
ANL A,#0F0H
SWAP A
ADD A,#30H
LCALL DSP_DAT2
MOV A,PR_REG
ANL A,#0FH
ADD A,#30H
LCALL DSP_DAT2
MOV A,#0DFH
LCALL DSP_DAT2
RET
;==========SUB-ROTINA MOSTRA_HST2===============================
;Pega o que est escrito em hst_reg e escreve no display
MOSTRA_HST2: MOV A,#0CCH
LCALL DSP_COM2
MOV A,HST_REG
ANL A,#0F0H
SWAP A
ADD A,#30H
LCALL DSP_DAT2
MOV A,HST_REG
ANL A,#0FH
ADD A,#30H
LCALL DSP_DAT2
MOV A,#0DFH
LCALL DSP_DAT2
RET
58
;===========sub-rotina: mostra_hst===============================
;Pega o que est na eeprom (ee_hst) e envia para o display
MOSTRA_HST:
MOV A,#0CCH
;DIGITO MAIS SIGNIFICATIVO
LCALL DSP_COM2
mov dptr,#ee_hst
MOVx A,@dptr
ANL A,#0F0H
SWAP A
ADD A,#30H
LCALL DSP_DAT2
MOV DPTR,#EE_HST
MOVX A,@DPTR
ANL A,#0FH
ADD A,#30H
LCALL DSP_DAT2
MOV A,#0DFH
LCALL DSP_DAT2
RET
;===========================================================
.end ;fim do programa
59
REFERNCIAS BIBLIOGRFICAS
[1]BIGNELL, James W. e DONOVAN, Robert L;1995. Vol. 1. Eletrnica Digital, Makron Books.
[2]ASSOCIAO BRASILEIRA DE NORMAS TCNICAS;1997. Norma Brasileira de
Instalaes Eltricas de Baixa Tenso, Norma NBR-5410.
[3]CORPORATION, Atmel;1997. AT89C52 Microcontroller Data Sheet .
[4]TOCCI, Rolnald J. e WINDER ,Neal S; 1998.Sistemas Digitais princpios e aplicaes .
[5]SALVADOR, Gimenez P;1998.Microcontrolador 8051 Transparncia de aulas. Prentice
Hall.
[6]SILVA JR Vidal P;1999.Aplicaes prticas do Microcontrolador 8051.Editora rica.
[7]TOMS, Lang ;2000. Introduo aos Sistemas Digitais. Bookman.
[8]JOS, David;2002 .Desbravando o Pic 16F84. Editora rica.
[9]LANDER, Cyril W; 1998.Eletrnica Industrial. Mc Graw Hill.
[10]ALMEIDA, Jos Luiz A; Eletrnica Industrial. Livros rica Editora Ltda.
[11]SENAI . DR. PE. Microcontroladores, Recife, SENAI/DITEC?DET. 1988.
[12]SEDRA, A.S;SMITH, K.S;2000.Microeletrnica., 4 Edio. Editora Makron Books.
[13]ASHRAE, normas . American Society of Heating, Refrigerating, Air Conditioning Engineers
[14]Intel,1991 Component Data Catalog. Intel Corporation (1991)
[15]Assembler,1991] The Art of Assembler. Apostila (1991)
[16]Philips,1995] 80C51 Basead 8 bit microcontrollers. Philips, (1995)
60
[17]Introduo ao Amplificadoroperacional,
http://www.ifi.unicamp.br/~kleinke/f540/e_amp1.htm#intro, Acesso em 16/11/05.
[18]ARAUJO, Maria Tereza Machado.Sistema Microcontrolado de Revelao de Placas de
Circuito Impresso, http://www.eee.ufg.br/cepf/pff/2003/pf2003_03.pdf. Acesso em 09/11/05.
[19]Sensor de Temperatura.
http://vinicius.brasil.vilabol.uol.com.br/eletronica/Sensortemp/SENSORTEMP.htm,
Acesso em 09/11/05.
[20] Manual LPT -1010, www.minipa.com.br.
[21]ALL DATA SHEET
http://pdf.alldatasheet.com/datasheet-pdf/view/8098/NSC/ADC0808CCN.html ,Acesso em
16/11/05.