Neste post vai ser abordado 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:
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:
$ 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.
Código fonte: termometro.asm, distribuído sob a licença GPL
Arquivo de projeto para o piklab: Termometro.piklab
Arquivo compilado .HEX para programar o chip: Termometro.hex
Todos os arquivos acima em formato .ZIP
Posts Relacionados:
- A lâmpada se torna digital
- Simulador de Manipuladores Robóticos – Kukim
- Evento Alagoas Digital começa a selecionar trabalhos acadêmicos














Muito interessante e facil de fazer mesmo… só o código em assembly que não é moleza não…hehe
Muito massa!
Ate que enfim artigos sobre pic para linux.
Difícil de achar na net.
Valeu
estou louca. Amanhã vou apresentar este projeto e ainda não consegui o assembler compilado. Aquele assembler do rpojeto já ta pronto para gravar no pic. ou tenho que mudar. Me ajudem por favor.
OLa,
Cara montei o mesmo no meu protoboard e nada de funcionar, ja gravei e regravei varias vezes no pic e o mesmo persiste em não funcionar. O que sera que devo fazer para o mesmo funcionar?
Ola
E o mesmo caso do amigo Carlucio, montei gravei regravei e nada de funcionar.
O que sera que pode ser?