Você está na página 1de 15

CENTRO DE TECNOLOGIA DE ALEGRETE

CURSO DE ENGENHARIA DE TELECOMUNICAES


DISCIPLINA DE MICROCONTROLADORES

PROJETO FINAL
SENSOR DE TEMPERATURA

Luimar Donini
Tarcisio Vessozi

Alegrete, 31 de janeiro de 2015.

RESUMO

Este trabalho tem por objetivo explicar o desenvolvimento e funcionamento do


projeto de um sensor de temperatura com o sensor analgico LM35 e o
microcontrolador PIC16F877A. Inicialmente ser feita uma breve introduo terica
sobre o assunto, mais adiante ser mostrado como foi desenvolvido o projeto, e
tambm, a logica utilizada para o algoritmo de programao do microcontrolador.

SUMRIO
1.

INTRODUO ........................................................................................................................ 1

2.

OBJETIVOS ............................................................................................................................. 1

3.

MATERIAS UTILIZADOS.......................................................................................................... 1

4.

DESENVOLVIMENTO.............................................................................................................. 1

5.

CONSIDERAES FINAIS ...................................................................................................... 10

6.

REFERNCIAS BIBLIOGRFICAS ........................................................................................... 11

1. INTRODUO
Os Microcontroladores so dispositivos programveis que apresentam grande
velocidade de processamento devido a sua arquitetura, que, como o nome j diz,
controla algo. possvel programa-lo para que execute diversas tarefas desejadas, como
receber valores analgicos, convert-los em digital, fazer operaes aritmticas, e
mostra-los em displays, como o caso do sensor. Os Microcontroladores so
programados atravs de algoritmos desenvolvidos para a aplicao desejada.
Inicialmente falando, o sensor foi projetado para captar a temperatura local, atravs do
componente LM35, que um circuito integrado de 3 terminais, desses terminais, um
ligado a uma fonte de corrente continua que alimenta o sensor, outro pino ligado ao
GND e o terceiro pino o de sada (Vout), o qual varia a sua tenso linearmente
conforme a temperatura que est submetido. Esse terminal de sada do LM35 ento
ligado diretamente ao microcontrolador, o qual se encarrega de converter o valor
recebido, mostrar a temperatura em displayse ligar um cooler para refrigerao caso
ultrapasse uma determinada temperatura. Em seguida ser mostrado com mais detalhes
a montagem e aplicao do circuito.
2. OBJETIVOS

Desenvolver um algoritmo para interface do sensor LM35 com o


microcontrolador e os displays.
Montar o esquemtico do sensor no software PROTEUS para testes em
simulao.
Realizar a montagem do circuito na protoboard com todos os
componentes para analise fsica.

3. MATERIAS UTILIZADOS
Para a realizao do projeto utilizou-se os seguintes materiais: Microcontrolador
PIC16F877A, sensor de temperatura LM35, regulador de tenso LM7805, 2 capacitores
de 100 nF, 2 displays de 7 segmentos, 1 transistor BC337, matriz de contatos, 2
capacitores de 15 pF, 1 cristal oscilador de 4 MHz, 14 resistores de 100 , 2 resistores
de 1 k.
4. DESENVOLVIMENTO
O sensor foi projetado para funcionarcom uma tenso de entrada de 7 V a 30 V,
o pino 11 (Vdd) do PIC foi conectado na sada de um regulador de tenso de 5 V, a
sada do sensor LM35 foi ligado no pino RA0, o RA2 foi conectado ao terra, no RA3
foi conectado uma tenso de referencia de 2,55 V obtida atravs de um divisor resistivo
de tenso ligado tambm na sada do regulador, o PORTB e o PORTC so as sadas do
PIC para os displays, o pino RD0 foi configurado como sada, para ligar quando o
sensor atingir uma determinada temperatura, este pino manda um sinal que funciona
como chave a um transistor que aciona um cooler ligado em 12V.Abaixo, na figura 1,
mostrado o esquemtico do circuito do software de simulao Proteus.

Figura 1. Esquemtico do Projeto no Proteus.

possvel perceber, atravs da figura 1, que a temperatura no sensor LM35 (U2)


aparece tambm nos displays conectados s sadas do PIC. Tambm nota-se, atravs de
um multmetro, que a tenso de sada do LM35 de 0,29 volts ou 290mV,
comprovando o que foi dito anteriormente: que o sensor LM35 aumenta 1 grau a cada
10mV.V-se tambm, que o divisor de tenso est alimentando com 2,55V a tenso de
referncia do conversor A/D do PIC. Este artifcio foi utilizado, devido preciso do
conversor A/D ser muito grande para a tenso de referncia interna (5V), ou seja, com
5V a preciso seria de 1024 bits, e com 2,55, aproximadamente a metade (512 bits).
Assim sendo, apenas um dos registradores que guardam os dados convertidos de
analgicos para digitais, a saber, ADRESL e ADRESH, precisou ser usado.
Na sada RD0, est ligado um transistor que funciona como uma chave. Para este
caso, quando a temperatura atinge 30 graus (300mV do LM35), o transistor polarizado
atravs de uma tenso na base proveniente do pino RD0 do PIC, e deste modo, uma
corrente IC flui, ativando o motor (cooler).

No projeto prtico, foi colocado o regulador de tenso LM7805 para que o PIC
fosse alimentado sempre com 5V, independente da tenso de alimentao do circuito.
O cdigo utilizado para a gravao no micro controlador mostrado a seguir, e
ser explicado separadamente em partes.
Parmetros de configurao iniciais:
PROCESSOR 16F877A; TIPO DO PIC
#INCLUDE <P16F877A.INC>

;arquivo de definies para o PIC em questo

__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _XT_OSC
TEMPO1

EQU

0x0C

VAR_TEMP_MOTOR EQU 0X30


XLOW EQU 0X20
ADLOW EQU 0X21
ORG 0X00
;endereo inicial de processamento
GOTO INICIO
ORG 0X04
;endereo inicial de interrupo
GOTO INICIO

No trecho de cdigo acima, so declaradas as variveis utilizadas, os parmetros


de configurao interna do PIC e os endereos dos vetores de inicio e de interrupo.
Rotina de incio:
INICIO
bsf

STATUS,RP0

;banco1

movlw

b'11111111'

;configura todos os pinos do porta como entrada

movwf

TRISA

;finaliza a configurao do porta

movlw

b'00000000'

;configura todos os pinos do portb como saida

movwf

TRISB

;finaliza a configurao do portb

movlw

b'00000000'

;configura todos os pinos do portc como saida

movwf

TRISC

;finaliza a configurao do portc

movlw

b'00000000'

;configura todos os pinos do portd como saida

3
movwf

TRISD

movlw

b'00101101'

;finaliza a configurao do portd


;configura o conversor A/D: resultado justificado
; direita, AN1 e AN0 como entradas
;analgicas, AN3 como Vref+, AN2 como Vref- e
;os demais pinos como entradas digitais

movwf

ADCON1

bcf

STATUS,RP0

movlw

;finaliza a configurao do conversor A/D

;banco 0

b'11000001'

;Configura a frequencia de converso do A/D para


;utilizar a freq. interna, e habilita o
;PIC para converso (estado do A/D ligado)

movwf

ADCON0

clrf

PORTC

clrf

PORTD

clrf

PORTB

movlw

;finaliza a configurao
;limpa portc
;limpa portd
;limpa portb

b'00000000'

;configura o pino RD0 do portd para nivel baixo


;inicialmente (motor desligado)

movwf
CALL

bsf

PORTD
TEMPORIZADOR

ADCON0,GO

;finaliza configurao do portd


;chama um temporizador para que a entrada
;analgica possa ser lida antes da converso
;comea a converso A/D

O cdigo acima est todo comentado, de forma que o mesmo autoexplicativo.


A seguir, vem o cdigo que testa se a converso A/D j foi realizada, e se sim, chama
outra rotina chamada COMPARA, responsvel por comparar a temperatura atual com a
determinada para o acionamento do motor. Essa comparao feita atravs de uma
subtrao desses valores, por exemplo, quando a temperatura atinge 30 graus, este valor
subtrado de 29 (29 - 30), de modo que o resultado gerado negativo, deste modo,
uma flag (bit 1) setada no registrador STATUS, e atravs de monitoramento deste
registrador, pode-se determinar a hora certa de ligar ou desligar o motor. Esse
monitoramento feito toda vez que ocorre uma converso A/D. Para o motor ser
desligado, a subtrao mencionada anteriormente, dever resultar em um valor positivo
ou nulo, por exemplo, 29-29 = 0, 30-29 = 1, etc.

4
teste
btfsc

ADCON0,GO ;testar se ja fez a converso

goto

teste

;no terminou? volta para teste

movf

ADRESL,W

;terminou, move o valor do resultado da converso


;para w

MOVWF VAR_TEMP_MOTOR

;guarda o valor do resultado da converso na variavel


;VAR_TEMP_MOTOR

GOTO

;vai para a rotina COMPARA

COMPARA

COMPARA
BCF

STATUS,C

MOVF

VAR_TEMP_MOTOR,W

SUBLW

D'29'

BTFSC

STATUS,C

GOTO

LIGA_MOTOR

GOTO

DESLIGA_MOTOR

LIGA_MOTOR

movlw

b'00000000'

movwf

PORTD

GOTO

teste2

DESLIGA_MOTOR

movlw

b'00000001'

movwf

PORTD

GOTO

teste2

; FIM DA SUBROTINA COMPARA

;se X >= 30 (result. negativo)


;se X < 30 (result. positivo)

Aps comparar os valores, e ligar ou desligar o motor, o cdigo vai para uma
rotina chamada teste2, a qual responsvel por escrever a temperatura correta nos
displays de sada. Isso feito atravs da chamada a uma tabela, a qual, por sua vez, de
acordo com a linha correspondente ao valor contido no registrador ADRESL acionar a
rotina que mostra no display o nmero correspondente temperatura. As sub-rotinas
teste2 e tabela so mostradas a seguir.
teste2
movf
goto

ADRESL,W
tabela

movwf PORTC
CALL TEMPORIZADOR
bsf

ADCON0,GO

goto

teste3

;comea a converso A/D

tabela
addwf

PCL

GOTO ACENDE00
GOTO ACENDE01
GOTO ACENDE02
GOTO ACENDE03

GOTO ACENDE86
GOTO ACENDE87
GOTO ACENDE88
GOTO ACENDE89
GOTO ACENDE90
GOTO ACENDEEE
GOTO ACENDEEE

Pode-se perceber claramente, atravs do cdigo da tabela acima, que as


temperaturas so mostradas nos displays apenas at 90 graus, e que depois disso,
mostrada uma visualizao de erro (EE). As rotinas responsveis por ligar os pinos
certos dos displays, e assim, mostrar a temperatura correta so mostradas abaixo.

6
ACENDE00
MOVLW

B'01111110'

MOVWF

PORTB

MOVLW

B'00111111'

MOVWF

PORTC

CALL

TEMPORIZADOR

bsf

ADCON0,GO

goto

teste

;comea a converso A/D

ACENDE01
MOVLW

B'01111110'

MOVWF

PORTB

MOVLW

B'00000110'

MOVWF

PORTC

CALL

TEMPORIZADOR

bsf

ADCON0,GO

goto

teste

;comea a converso A/D

ACENDE02
MOVLW

B'01111110'

MOVWF

PORTB

MOVLW

B'01011011'

MOVWF

PORTC

CALL

TEMPORIZADOR

bsf

ADCON0,GO

goto

teste

ACENDE03
MOVLW

B'01111110'

MOVWF

PORTB

;comea a converso A/D

7
MOVLW

B'01001111'

MOVWF

PORTC

CALL

TEMPORIZADOR

bsf

ADCON0,GO

goto

teste

;comea a converso A/D

ACENDE90

MOVLW

B'11011110'

MOVWF

PORTB

MOVLW

B'00111111'

MOVWF

PORTC

CALL

TEMPORIZADOR

bsf

ADCON0,GO

goto

teste

;comea a converso A/D

ACENDEEE

MOVLW

B'11110010'

MOVWF

PORTB

MOVLW

B'01111001'

MOVWF

PORTC

CALL

TEMPORIZADOR

bsf

ADCON0,GO

goto

teste

;comea a converso A/D

Nota-se que, aps mostrar a temperatura nos displays, o cdigo chama o


temporizador e comea novamente a converso A/D, e logo aps, retorna rotina teste
e todo o ciclo realizado novamente. A rotina do temporizador mostrada a seguir.

8
TEMPORIZADOR
BSF

STATUS, 5

; mudana para o banco de memoria 1


; os pinos (RB0 a RB7) sero utilizados como sadas

MOVLW

B'00000111'

; utilizando o registrador Work (W) para


; configurar o registrador de operaoo do
; microcontrolador. Os trs primeiros bits, que
; correspondem configurao do prescaler,
; esto sendo setados, o que significa que o
; prescaler assumir o valor de 1:256. Por
; exemplo, se tivermos um clock de 4Mhz,
; cada instruo executada em 1us. Com o
; prescaler de 1:256, o TMR0 incrementado
; a cada 256 ciclos, consequentemente ele ir
; estourar em, aproximadamente, 6,5ms.

MOVWF

OPTION_REG ; concluindo a configurao do registrador deoperaes

BCF

STATUS, 5

; mudando para o banco de memoria 0

CALL Delay1S

RETURN

Delay1S

BCF

STATUS, 5

CALL

Del10

RETURN

;mudando para o banco de memria 0


; chamando a rotina Del10
; retornando

Del10
BCF

INTCON, 2

; setando o bit 2 do registrador de

Del10_1
BTFSS

INTCON, 2

; se o bit 2 do registrador de interrupes


; (T0IF) estiver setado, significa que ocorreu

; um estouro do TMR0.
GOTO

Del10_1

; volta para verificar se ocorreu interrupo

RETURN

Como mencionado anteriormente, o temporizador serve apenas para que o sinal


analgico possa se estabilizar na entrada do PIC antes de comear a converso A/D, de
modo que este tempo de espera de aproximadamente de 6,5ms a 8ms apenas.

10

5. CONSIDERAES FINAIS
No comeo do projeto, ocorreram alguns problemas que dificultaram a
implementao do mesmo, tais como, mau contato nos componentes e na matriz de
contatos. Ajustes no cdigo tambm precisaram ser feitos para o bom funcionamento.
Porem, aps todos os ajustes, o projeto comportou-se exatamente como esperado.
Futuramente, pretende-se prototipar o projeto, e implementar novas funcionalidades,
tais como, display de LCD, mdia da temperatura nas ultimas horas, temperatura
mnima e mxima e medio de temperatura negativa.

11

6. REFERNCIAS BIBLIOGRFICAS
[1] MARTINSN. A.Sistemas Microcontrolados, 1 edio, editora Novatec, 2005.
[2] ORDONEZ E. D. M., PENTEADO C. G., SILVA A. C. R.Microcontroladores e FPGAS:
Aplicaes em Automao, 1 edio, editora Novatec, 2005.
[3] PEREIRA F. Microcontroladores PIC: Tcnicas Avanadas, 6 edio, editora rica.

Você também pode gostar