TINY_DUAL_TERMOMETER – TERMÔMETRO DUPLO C/ PIC 12F675 E DS18B20 (REF274)

2

Visualize duas temperaturas em seu LCD com poucos componentes…

Esta montagem permite a visualização em um LCD 16×2, de 2 temperaturas diferentes por meio de 2 sensores integrados DS18B20 fabricados pela Maxim Integrated Products,Inc.
Veja o esquema abaixo:

Tiny_Dual_Termometer

Um PIC pequeno de apenas 8 pinos foi escolhido para esta montagem de poucos componentes. Este conhecido PIC12F675 realiza a função de comunicar com o LCD por meio de 3 pinos (Lplex) e também com os dois sensores DS18B20.
Os sensores de temperatura integrado DS18B20 permitem a comunicação por meio de um único fio mais o gnd. O seu protocolo foi criado para que muitos DS18B20 compartilhassem uma única linha de comunicação com um microcontrolador. Mas isto exige mais memória que nosso pequeno PIC possa dispor. Então foi optado em colocar um DS18B20 em cada pino de entrada. Isto permitiu simplificar o software, eliminando a parte de procura de sensores, gravação de seus seriais, rotina de chamada por serial específico, etc.
Usando apenas o comando para conversão (comando(0x44) seguido pelo comando “SKIP ROM” (comando(0xcc)) e imediatamente o comando “READ ROM” (comando(0x33)) já obtemos o valor da temperatura.
A rotina de conversão usa números inteiros, pelo método de ‘peso por bit’. O uso de ponto flutuante ficou fora de questão com tão pouca flash disponível.
Mesmo assim, a rotina quase preencheu toda a memória flash (99%), sobrando uns poucos bytes.
Toda vez que o DS18B20 sofre um reset (falta de energia) ele mostra a primeira conversão de temperatura o resultado 85°C. Isto é uma característica do componente. Foi incluído no programa uma função para ler os 2 sensores na momento que está apresentando o nome do aparelho no LCD. Esta leitura é desprezada por apresentar os 85°C. Assim, na próxima leitura já teremos a temperatura real do sensor.
Como estamos usando conversão de 12 bits, temos um tempo de conversão de 750 milissegundos, tempo este que demora para mudar a apresentação no LCD para cada linha. A cada 1,5 segundos aproximadamente teremos novas leituras em ambos sensores.
A alimentação poderá ser feita por 4 pilhas AA em série com um diodo 1N4007 (para reduzir para 5,3 Volts máximo). Carregadores de celular de 5 Volts de saída poderão ser usados.
Obs. Esta montagem é experimental, sendo de caráter didático, montada apenas em placa experimental (do tipo “Breadboard”), sujeita a “bugs” ainda não detectados. Está sendo fornecido os arquivos para que cada hobista possa alterar o programa segundo suas necessidades.

Segue pasta zipada com os arquivos da montagem:

Tiny_Dual_Termometer

Manuais:
PIC 12F675
DS18B20 datasheet

Curiosidades:
Os eficientes e versáteis escudos da Terra
‘Dessas montanhas extrairás cobre’
Obesidade infantil — o que pode ser feito?
Controle de tráfego aéreo — como influencia em sua segurança?
A pelagem da lontra-marinha

Outros assuntos:
Recuperar a confiança no casamento
Como evitar os perigos das salas de bate-papo?
Faz diferença ter boas maneiras?
Como os pais podem ensinar os filhos sobre sexo?
Como posso me proteger do assédio sexual?
Será que a Bíblia ensina que ‘uma vez salvo, salvo para sempre’?
Por que existem tantas denominações religiosas?

Vídeos:
O que é o Reino de Deus?
Você Pode Ter uma Família Feliz!
“Para isto vim ao mundo”
Como a vida começou?
vídeos infantis (com o Pedrinho e a Sofia)

Até o próximo artigo!

2

4 comments

  1. 0

    Olá Larios, parabéns pelo seu trabalho,
    esse projeto termometro dual, você não disponibilizou os arquivos de programa em ASM, seria interressante nas duas linguagens disponibilizados nos seus projetos…

    Eu ainda estou aprendendo a programar em ASM e não consegui migrar para linguangem C…

    se possivel a disponibilização em ASM, sou grato

    1. 0

      Olá Fernando!
      Fica complicado fazer um projeto em várias linguagens de programação. Mas na pasta com os arquivos da montagem do artigo em questão você encontrará um arquivo com terminação .list.
      Abra ele com um bloco de notas ou mesmo o WORD. Nele você verá como foi compilado em assembly cada parte do programa e poderá servir de base para você estudar o funcionamento e montar seu próprio projeto em assembly.

      1. 0

        Olá Larios, obrigado pelo seu retorno,
        não consigo abrir esse arquivo .list nem com bloco de notas e nem word, como que eu procedo para fazer a abertura dele?

        entendo que é complicado fazer os projetos em mais de uma linguagem,

        observei que os primeiros continham ASM e C também, por via disso que comentei,

        vou estudar a fundo em C pois pelo que observei a maioria dos trabalho em geral são feitos em programação C,

        Parabéns pelo seu trabalho, por nos auxiliar nesses projetos e pela inteira disposição nas respostas,

        Forte abraço…

        1. 0

          Olá Fernando!
          Obrigado por sua compreensão e pelo seu agradecimento pelo trabalho prestado por este blog. Quanto ao arquivo .list, tenho aberto com bloco de notas ou mesmo word. Na primeira vez pode ser que o sistema operacional pergunte com qual programa deve usar para abrir. Busque na lista interna do seu PC pelo bloco de notas ou word. Depois disso, costuma aceitar sem problemas. Outra opção é renomear com extensão .txt. Costuma dar certo também. O programa que gera o .list é o próprio compilador CCS C Compiler. Poderá portanto, abrir usando ele.
          Quanto a linguagem C, quando começar a usar sentirá uma certa ‘dificuldade’, com tendência a voltar para o ASM. Mas é normal, porque no ASM você vê linha a linha as instruções e no C você não vê. Então use o arquivo .list para ver e ter certeza do que está sendo feito em ASM. Faça sempre pedaços pequenos de código, compile e confira se está saindo do jeito que pretendia. Desta forma não terá surpresas no final. Quando fizer alguns projetinhos usando C, verá que consegue obter ganho no tempo (umas 10 x mais rápidos), facilidade para portar o código para outro microcontrolador que use outros tipos de instruções (ex. PIC com AVR), facilidade de compreensão das rotinas (em C fica claro o que estamos fazendo, mas em ASM tem que ir fazendo diagramas de blocos para ver como funciona o código), etc. Aconselho a aprender sim a linguagem C. Depois disso, todas as outras linguagens parecerão mais fáceis de aprender.
          Obrigado…

Comments are closed.