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

1

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!!!

1

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

  1. 0

    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. 0

      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. 0

    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. 0

      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. 0

        Claudio Larios. Os treis rele de velocidade o controle manual no display, no automático so a temperatura para ajustar.

        1. 0

          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. 0

    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. 0

      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

  4. 0

    Descupe Larios, eu não soube expressar direito.
    Eu quis dizer que (varrer)seria caso mais de uma maq solicitasse a manutençao, apareceria no display o N° da maq solicitante depois a 2 3 ou quantas fossem solicitadas mostrando em sequencia, e o beep seria para alertar que a uma solicitação no display

  5. 0

    Olá Larios, voce esta de parabens pela otima qualidade do conteudo do site, ja emulei montei alguns projetos que funcionaram a contento,
    Gostaria da sua ajuda ou dos participantes mais experientes em um projeto similiar ao atendente de salas, ou seja um chamador de maquinas para manutenção.
    Quando a maquina falhar o operador aperta um botão e via rs485 ou 232, envia o numero da maquina em um display que com bip varre o display mostrando qual maquina ou maquias chamou,agradeço quem ajudar e de antemão obrigado

    1. 0

      olá MKleber! muito obrigado por seu comentário apreciativo e positivo quanto a este blog. Creio que o chama_atendente_escolar pode ser usado como chama_manutenção. Talvez possa incrementar o código com alguma funcionalidade extra. Eu não entendi a parte do ‘ com bip varre o display’???? Talvez alguém tenha alguma sugestão com microcontroladores ou até com PC!!!!
      Cláudio

  6. 0

    BOA NOITE LARIOS BOM EU FIZ O ESQUEMA NO PROTEUS COM OS MESMOS COMPONENTES MAS INFELIZMENTE NAO FAZ A LEITURA. BOM GOSTARIA MUITO DE FAZER ESSE SENSOR E VI QUE A ENTRADA DO MICROCONTROLADOR É A MSM DO OSC NAO SEI SE É ESSE O PROBLEMA BOM DE QUALQUER FORMA VC PODERIA ME ESCLARECER MELHOR? TO FAZENDO COM O CATODO QUE NAO MUDA NÉ SE VC PODER ME MANDA INFORMAÇOES NO E-MAIL. daniel.marinho81@hotmail.com… Grato

    1. 0

      Olá Daniel! Simular com Proteus não é comigo. Faço os testes no simulador do Mplab e com protoboard montado.
      Cláudio

  7. 0

    :mrgreen: Ok claudio, toda e qualquer ajuda para conhecimento e bem vinda, obrigado pela ajuda e por explicar com detalhes o porque do “C”, vou dar as minhas primeiras caminhadas em “C”, a minha dificuldade e saber o que pode e não pode nesta linguagem, mais vamos lá, vai que eu consigo ne, valeu mesmo ai, um abraço.

  8. 0

    😛 Opa claudio, e as versões com assembler, em c nadinha de nada em mexer aqui em, tem como vc fazer uma versão em assembler de exemplo, valeu..

    1. 0

      Olá Foxconn! Até uns tempos atrás eu torcia o nariz só de pensar em programar em “C”. Pensei comigo: Se é tão ruim assim quanto acho, porque é ele tão usado? Então, meio a contragosto resolvi fazer o primeiro programa, que como sempre, deu vários problemas e se negava como um ‘ burrinho empacado’, a funcionar. Gastei uma semana para conseguir compilar sem erros (aperte um botão , pisca um led)! Insisti, com outro programa. Gastei 1 hora apenas. O próximo programa gastei 30 minutos (coisa bem simples) e o tempo foi diminuindo. Resolvi fazer um projetinho em “C”, que em ‘Assembly’, com certeza, gastaria por volta de 20 a 30 dias. Fiz em apenas 3 dias. Fiquei animado! Comecei a entender porque tantos usam “C” e torcem o nariz para o ‘Assembly’. Farei o seguinte: O compilador também gera um arquivo em ‘Assembly’ usado para analisar como o programa foi montado. Poderei enviar a você para que possa estudar e aproveitar rotinas.
      Cláudio

Os comentários estão fechados.