Navigator

Termômetro Digital com PIC16F818 e LM35

PIC
 

Introdução

Nesta página vou descrever a construção de um dispositivo eletrônico para medir a temperatura ambiente, que é informada ao usuário por meio de um display de LED's do tipo 7-segmentos.

Este projeto consiste de duas partes: hardware(menor complexidade) e software(maior complexidade). Na primeira descrevo o conceito, o funcionamento e a montagem do dispositivo. Na segunda faço o mesmo para o firmware(programa) que irá executar dentro do dispositivo.

A principal vantagem da abordagem adotada neste projeto é o número reduzido de componentes utilizados na construção. Embora existam chips dedicados a esta tarefa, estes podem não ser muito facilmente encontrados e não podem ser modificados ou adaptados a uma utilização em particular. Além disso, a construção com PIC é bastante didática.

Todos os arquivos necessários para realizar a construção e a programação, incluíndo o esquema elétrico e o código fonte em assembler, podem ser encontrados neste arquivo compactado.

Hardware

O componente escolhido para ser o coração deste projeto foi o PIC16F818, que em seus 18 pinos apresenta uma quantidade suficiente de entradas e saídas (16), possui conversor A/D integrado, oscilador interno de 8MHz, pode armazenar até 1K palavras de programa, 128 bytes de RAM e 128 de EEPROM, bem mais do que o necessário para esta aplicação. Esse componente apresenta ainda outros recursos bem convenientes, como um módulo para comunicação serial síncrona e outro para PWM. Em outro projeto, utilizei o módulo de comunicação serial para implementar um bus I2C para que um componente mestre controle outros componentes escravos.

O PIC16F818 é compatível pino-a-pino com seu ancestral direto, o popular PIC16F84, mas é muito mais versátil do que este.

Dentre todos os tipos de sensores de temperatura, por causa do baixo preço, estabilidade, precisão e facilidade de uso, o LM35 foi escolhido. Este componente é um circuito integrado dotado de um sensor de temperatura e circuitos de compensasão térmica e de potência, apresentando a temperatura medida como voltagem com resolução de 10mV de por grau Celsius.

Protótipo montado em proto-board:

Protótipo auto-iluminado:

Vesão final e sua caixa:

Versão final, em seu local definitivo:

Esquema elétrico:

Versão em PDF.

Arquivo fonte para o gEDA: Termometro.sch

Arquivo de símbolos descrevendo o componente PIC16F818: pic16F818-1.sym

Software

O firmware para o termômetro foi escrito em linguagem assembly para PIC em PC/Linux usando as ferramentas de código aberto piklab e gputils. Os repositórios de algumas distros já vêm com esses pacotes, mas normalmente eles não são instalados por padrão. Apesar disso foi muito fácil instalá-los em meu Fedora usando yum:

[waldeck@hal pic]$ yum -y install piklab gputils

O screenshot abaixo mostra o ambiente de desenvolvimento integrado do piklab, com um excerto do código fonte do termometro visivel na janela de editoração. Com o piklab é possível organizar os arquivos contendo o código fonte em um mesmo diretório, e incluí-los em um arquivo de projeto, que contém também detalhes e configurações sobre o hardware onde o programa irá executar. Após compilar o código fonte, pode-se transferir o executável para a memória flash do chip com apenas um clique do mouse.

O software é responsável por fazer leituras digitais periódicas do sinal analógico fornecido pelo LM35, converter essa informação em uma temperatura segundo a escala Celsius, converter esse número de binário para decimal, exibir a temperatura no visor, memorizar na EEPROM as temperaturas mínima e máxima observadas e responder à pressão de um botão. O software também permite exibir a temperatura em Farenheit, se desejado. Para algumas dessas conversões, foi necessário implementar rotinas de multiplicação e divisão eficientes, já que estas operações não estão presentes no hardware.

Referências


Updated on  Mon Jul 15 16:27:35 2013
Copyright © 1997-2014, Waldeck Schutzer
 
http://twitter.com/ityessal http://twitter.com/liminft