TERMÔMETRO COM SENSOR LM35 + PIC16F676
Este projeto é bem simples, utiliza um
sensor
tipo LM35 para medir a temperatura. O sensor é ligado
diretamente na entrada analógica do PIC16F676. Este lê a
grandeza analógica e converte-a para digital através do
conversor A/D interno e também mostra o valor correspondente a
temperatura em graus Celsius através de três displays a
LED, de sete segmentos. Os displays são multiplexados e ainda
é usado um CI 4511 (conversor BCD para display sete segmentos)
para minimizar o uso de I/Os do microcontrolador.
CARACTERÍSTICAS:
- Faixa de temperatura de 2°C a 150°C;
- De 2°C a 99.9°, o formato de
indicação é XX.X °C e de 100°C a 150°C
é XXX°C;
- Indicação visual através de
displays
de sete segmentos a LED;
- Utilização de múltiplas
leituras,
melhorando a precisão e tornando a indicação
mais estável;
- Software em assembly;
- Resolução de conversão A/D de
10bit;
- Utilização do Oscilador RC interno do
PIC16F676, de 4MHz;
- Tensão de referência externa para o
conversor
A/D.
Fotografias da gambiarra:


Apesar de aparecer 4 displays na foto, um
dígito não é implementado (o da esquerda).
O software foi escrito em assembly e basicamente,
faz 32 leituras A/D separadas por um intervalo de 30ms, somando os
valores de cada leitura. Quando forem finalizadas as 32 leituras, o
valor total da soma destas deverá ser dividido por 32; aí
temos o valor da conversão A/D. Como a tensão de
referência é de 2.048V e a resolução do
conversor A/D é de 10 bits, cada bit lido equivale a 2mV na
entrada analógica, então temos que multiplicar o valor
lido por 2. Então, pela lógica, o somatório de 32
leituras A/D deverá ser dividido por 32 e depois multiplicado
por 2. Para simplificar a coisa, o que fazemos é dividir o
somatório das 32 leituras por 16, que equivale ao que disse
antes. O software utiliza a interrução do timer0 para
multiplexar os displays. O prescale é aplicado ao timer0, sendo
configurado para dividir por 4. O timer0 é apenas "limpado" a
cada interrupção, então temos quatro contagens de
0 a 256 para que ocorra a interrupção de
multiplexação dos displays. O microcontrolador é
configurado para funcionar com oscilador RC interno, de 4MHz, uma vez
que precisamos de I/Os e não é necessário muita
precisão de clock.
A utilização de múltiplas
leituras e posterior divisão pelo número delas, dá
uma maior estabilidade à indicação. Foi escolhido
a quantia de 32 vezes pelo fato de ser fácil fazer rotinas de
divisão/multiplicação para esse valor, bastando
apenas utilizar as Instruções RRF/RLF para este fim.
CALIBRAÇÃO:
A calibração é muito simples,
consiste em ajustar a tensão de referência em 2.048V no
pino 12 do PIC(Vref) através do trimpot de 220R, no esquema R11.
ESQUEMA ELÉTRICO: Está no formato de
imagem:
term_f676_sch.png
PROGRAMA:
Abaixo está o link para pegar o programa, em
assembly.
term_f676.asm
Retornar para a
página principal