FAÇA UM VERSÁTIL TERMOSTATO COM DS18B20 E PIC 16F628A – VERSÃO 7 SEGUIMENTOS (REF143)

Gostaria de construir um termostato eletrônico, que possa ser usado tanto em aquecimento como em resfriamento, sem alterar o circuito?

A maioria dos termostato são específicos na sua função: ou são para aquecimento ou são para resfriamento. A proposta deste artigo é usar um único circuito, que possa ser programado para qualquer uma das necessidades mencionadas. Veja o circuito abaixo:

Fazendo uso de um DS18B20 como sensor de temperatura, um PIC 16F628a e 4 display de 7 seguimentos (anodo ou catodo comum), mais alguns componentes comuns, podemos conseguir o objetivo proposto.
O sensor de temperatura DS18B20 da Maxim, opera com comunicação 1-Wire, ou seja, usa apenas um fio e o gnd para enviar/receber dados.
Cabe ao microcontrolador controlar todo o tráfego de informações entre eles. Poderá obter mais informações deste interessante componente estudando o seu datasheet.
Após a carga do firmware no PIC e antes de usar o circuito, devemos programar a atuação desejada. Para isto, basta apertar momentaneamente o botão dactilar nomeado de ‘PROG’ para entrar em modo de programação. Neste momento, o display mostra brevemente a letra ‘P’ e em seguida, passa a apresentar o valor da histerese desejada. Esta pode ser positiva quando desejamos trabalhar com aquecimento, ou negativa, quando o objetivo é acionar compressores frigoríficos em sua saída. Ainda em modo de programação, apertando o botão ‘FUNC’ e mantendo-o apertado, iremos ver a temperatura que deverá ligar a saída, podendo ser alterada por apertar o botão ‘UP’ ou ‘DOWN’. Ao soltar o botão ‘FUNC’ voltará a apresentar no display o valor da histerese. Esta poderá ser alterada também usando os botões ‘UP’ e ‘DOWN’.
Vamos supor que queiramos controlar a temperatura de uma chocadeira de ovos. Ajustaremos a histerese para 1 ou 2 graus positivos (aquecimento) e a temperatura que deverá ligar em 40°C. Se a histerese for 1, então irá desligar com 41°C, e 42°C se for 2. Religará novamente quando a temperatura cair para 40°C.
Ainda outro exemplo. Talvez queiramos ligar um motor de um freezer com -15 °C ou menos. Ajustamos a histerese para 1 ou 2 graus negativos (resfriamento) e a temperatura em -15°C. Se a histerese for -1, então irá desligar com -16°C, e -17°C se for -2. Religará novamente quando a temperatura for igual a – 15°C.
Apesar da leitura apresentar uma casa após a vírgula, a comparação é feita apenas com graus inteiros, desprezando a parte fracionaria.
Deverá ser previsto uma fonte de alimentação de 5 volts para o PIC e de 12 volts para o relé de saída. Esta poderá ser feita com um pequeno transformador de 110/220 para 12 volts, e uma ponte retificadora, capacitores eletrolíticos de filtro, bem como um regulador de tensão do tipo 7805.
É possível usar display de 7 seguimento de cátodo comum, desde que use o Hex apropriado ou altere o arquivo ‘c’ e recompile para obter o novo hex.
Obs. Esta montagem é apenas didática, sendo testada apenas em placa de protoboard, estando sujeita a bugs ainda não observados. Estão sendo fornecidos os arquivos que poderão ser alterados conforme a necessidade do hobista.

Segue pasta com os arquivos “C” (CCS Compiler V3.200) e Hex para versão cátodo e ânodo comum (revisada em 13/04/2017):

TERMOSTATO_DS18B20_V2

Manuais:
DS18B20
PIC16F628A

Curiosidades:
Como está a saúde da sua gengiva?
Por que o mar é salgado?
Seja grato pela chuva
Coleta da água da chuva — métodos antigos e modernos
Como é viver acima das nuvens
O delicioso café de Kona
Como as cores afetam você?
Quem criou as leis que governam o Universo?
Quando o Sol ficou vermelho
Obras-primas “pintadas” com pedras
‘Passar pelo buraco da agulha’
Kamchatka — um paraíso russo no pacífico
Como surgiu a moderna indústria do diamante
Os desastres naturais estão mais freqüentes?

Outros assuntos:
Um site para você
Quando seu casamento não é o que você esperava
Como resolver diferenças no casamento
Como recuperar a confiança no casamento
Como controlar o estresse
Quando um dos cônjuges tem necessidades especiais
Aprenda a perdoar
Como acabar com a tática do silêncio
Como criar filhos responsáveis
Como administrar o seu dinheiro
Ensine valores morais a seus filhos
Como posso ter ânimo para exercitar
Como posso controlar meu peso?
Adolescentes- O que fazer se estou sofrendo bullying?
Como evitar ferir com palavras?
Como tratar seu cônjuge com respeito?

Até o próximo artigo!!!

17 comments on “FAÇA UM VERSÁTIL TERMOSTATO COM DS18B20 E PIC 16F628A – VERSÃO 7 SEGUIMENTOS (REF143)

  1. ola amigo…eu queria usar 2 quadradado de numeros…e um traço para significar menos…ou seja se a temperatura tivesse menos q 10 graus …ele aparecia assim, -5°C…… -5.0 ….isso q eu queria q aparecesse…poderia mandar a programação para o pic se possivel …desde ja agradeço

    1. Olá Yagomn!
      Parece uma ideia interessante esta sua. Mas no momento, eu não tenho disponibilidade de tempo para alterar o programa. Como esta sendo fornecido os arquivos, poderia tentar alterar da maneira que desejar.
      Cláudio

  2. Claudio Larios.Que tal montar um programa Pic 12f675 para controlar sistema de Arcondicionado,com treis rele para velocidade,o motor ventilador do ar já vem treis fios para velocidade,mais rele para compressor com termômetro de temperatura que sera um display.

    belson.vasconcelos@terra.com.br

    1. Olá Belson!
      Agradeço sua sugestão de projeto. Mas há de convir comigo que, somente para acionar um display LCD, necessitamos no modo convencional, de 6 pinos de controle. Terá mais 3 reles de velocidade, mais rele do compressor, além do sensor de temperatura, pinos para regulagem da temperatura… O 12f675 definitivamente tem pouco pino para isto, a menos que seja usado alguma forma externa de aumentar as ports, como um ci I2C do tipo PCF8574 ou ainda, um ‘shift register’ como o 74c595, que acredito não ser uma solução tão confortável como usar um pic com mais ports.
      Cláudio

        1. Olá Belson!
          Parece que não estou entendendo muito bem, não é verdade! Você citou ‘o controle manual no display’. Quem aciona este display? O pic ou é algum termostato com display? O que apresenta este display? A temperatura em graus Celsius? A velocidade (1,2 ou 3 do motor)? Sinceramente, não estou entendendo o funcionamento pretendido. Poderia esclarecer usando mais linhas ou fazendo um descritivo detalhado do funcionamento, por favor?
          Cláudio

  3. Olá ! Teria como eu alterar o valor da histerese para 20 ou mais? Não consegui identificar no código o ponto para alteração. Obrigado.

    1. Olá Dindobel! O código realmente não mostra isto com facilidade . Mas veja a porção de código abaixo:
      if(ffunc){

      if(fup){
      if(++temp_lig==126) temp_lig=126-1;
      fup=0;
      }
      if(fdown){
      if(–temp_lig==0xc8) temp_lig=0xc8+1;
      fdown=0;
      }
      buffer[1]=temp_lig;
      ffunc=0;}
      else {

      if(fup){
      if(++temp_desl==11) temp_desl=11-1; // * aqui controla em 10 graus de histere para o lado positivo
      fup=0;
      }
      if(fdown){
      if(–temp_desl==0xf5) temp_desl=0xf5+1; // *aqui controla os 10 graus de histere para o lado negativo (note que 0xf5= 0xff-10decimal)
      fdown=0;
      }
      buffer[1]=temp_desl;}

      neg=0;
      if(buffer[1]>0xC7){ buffer[1]=0xff-buffer[1]+1; neg=1;
      }

      Deverá fazer suas experiencias alterando os valores marcados com * no acima para os valores desejados. Não sei dizer com certeza se funcionará.
      Quando fiz o projeto, deu trabalho para deixar operacional. Eu não me lembro muito bem o porque escolhi ’10’ para a histerese.
      Cláudio

Comments are closed.

Back To Top