FAÇA UM SIMPLES TERMOSTATO ELETRÔNICO COM UM PIC 16F676 (SENSOR LM35)

2

Gostaria de controlar de forma automática a temperatura de seu aquário? Ou ainda, de um aquecedor de café? Ou quem sabe, de uma chocadeira de ovos? Então, você vai querer saber mais…

Existem muitas maquinas que trabalham com termostato interno: geladeiras, freeser, cafeteiras de padaria, ar condicionado, fornos, aquarios,etc. Muitos usam laminas de bi-metal (ferro de passar roupa), outros usam a expansão dos gases para pressionar um interruptor (geladeira) e ainda os que usam a eletrônica como controle. A vantagem dos termostatos eletrônicos está na possibilidade de visualizar a temperatura e as facilidades de calibração.
Neste projeto didático, estamos usando um microcontrolador PIC 16f676 e um sensor LM35 para controlar on/off, um rele de carga. Este poderá acionar inúmeras cargas, dependendo da necessidade do hobista.
Veja o esquema elétrico abaixo:

Em princípio, não difere muito do PIC_TERMOMETRO, exceto pelas chaves de controle e rele adicionado.
Ao ligar, aparecerá o seguinte no display:

| PIC_TERMOSTATO |
|LARIOS.TECNOL.WS|

E após alguns instantes, vai para tela de trabalho, como abaixo:

|TEMP= 30.4Cº ON |
|L= 28.4 D= 32.5 |

Onde, a primeira coluna, indicará a temperatura atual do sensor e a situação do rele: on= ligado ou off= desligado. Na segunda coluna, a letra “L” indica a temperatura que irá ligar o rele e a letra “D”, a temperatura que irá desligar o rele. No pino 2 do pic, foi colocado um botão para fazer incremento de temperatura (up) e no pino 3, o botão de decremento (down). Quando apertamos um ou outro, irá incrementar ou decrementar os digitos da função “L” ( ligar abaixo desta temperatura). Para ajustar a função “D” (desligar acima desta temperatura) , o botão ligado ao pino 4 (func) deverá ser acionado antes do botão, e mantê-lo pressionado, enquanto se aciona o botão ‘up’ ou ‘down’. O incremento na função “L” ocorrerá até o seu valor ser igual ao da função “D”. Depois, para de incrementar, mesmo com botão pressionado. Sempre a função “L’ será menor ou igual ao valor da função “D”, nunca superior.
Os fios que ligam o sensor LM35 devem ser preferivelmente curtos para evitar interferências que possam gerar instabilidades na leitura. Foi colocado um filtro, com um resistor de 75 ohms em série com capacitor de 1 uF, conforme sugestão do datasheet.
No ponto de teste PT1, poderá ser colocado um voltimetro de precisão para ler a temperatura para fins de calibração. A cada 10mVolts corresponderá a um grau centigrado. No ponto de teste PT2, deverá ser colocado também o voltimetro e ajustado no potenciômetro para obter 2,048 volts, em relação ao GND. Este potenciômetro, ser for do tipo ‘multivoltas’ facilitará em muito a calibração.
As regulagens são salvas nas primeiras posições da EEprom. Assim, mesmo que acabe a energia, não será perdido este valores, sendo recuperados da EEprom, na ocasião da inicialização.
O rele de carga tem bobina para 5 volts, sendo seus contatos para 10 a 15 amperes (dependendo da sua aplicação, poderá ser alterado).
A fonte de alimentação poderá ser feita com um pequeno transformador de 110/9volts, retificadores, capacitores e um regulador 7805 para obter os ‘regulados’ 5 volts.

Abaixo temos a primeira sugestão de uso: Controlar a temperatura de um aquário !

Deverá ser usada as resistências apropriadas para aquário nesta aplicação e tomar todas as medidas de segurança e isolação de fios.
O LM35 deverá ser soldado a 3 fios flexíveis de comprimento suficiente para chegar a placa. Depois, este sensor, já com os fios ligados, deverá ser colocado em um pequeno tubo de ensaio (de vidro) e preenchido com cola resistente a água (silicone por exemplo). O tubo de ensaio, com o sensor em dentro, deverá ficar mergulhado dentro do aquário.

A próxima sugestão: Controlar a temperatura de uma chocadeira !

Poderá ser usado um conjunto de lampadas para prover o calor necessário ao ambiente dos ovos a serem chocados.
Deverá ser pesquisado qual é a temperatura ideal para esta aplicação, visto ser muito critica.

Uma sugestão final: Aquecedor de cafeteira

Também, deverá ser usado resistências ‘blindadas’, com aterramento em toda a estrutura metalica, visando a segurança do operador deste equipamento. O rele nesta função, deverá ser bem dimensionado, ou ainda, acionar um ‘contator’ adicional.
Obs: Este material é publicado em caracter didático. Pode estar sujeito a bug’s ainda não detectados. Foi feita a montagem apenas em protoboard.
Visto que está sendo fornecido o arquivo asm, cada hobista poderá fazer as alterações que julgar necessário, em conformidade com as suas necessidades. Visto que algumas sugestões envolvem riscos de choque elétrico, cada montador assumirá seus próprios riscos de segurança.
Caso queira uma versão com display de 7 seguimentos, veja este link.

Clique abaixo para visualizar o arquivo ASM da primeira versão:
PIC_TERMOSTATO_ASM

Clique abaixo para visualizar o arquivo HEX da primeira versão:
PIC_TERMOSTATO_HEX

Poderá baixar estes arquivos com terminação ‘.asm’ e ‘.hex’, na pasta abaixo:
PIC_TERMOSTATO_V1_FILES

Em 08/02/2012 foi feita uma alteração, com aprimoramento na velocidade de incremento do ajuste inicial, em 3 etapas: lento, médio e rápido, mantendo-se simplesmente apertado o botão de ajuste. Adicionalmente, a frase ‘off’ foi substituída por ‘des’ e ‘on’ por ‘lig’ (padronizado para português).

Poderá visualizar o arquivo ASM desta segunda versão clicando abaixo:
PIC_TERMOSTATO_V2_ASM

Poderá visualizar o arquivo HEX da segunda versão clicando abaixo:
PIC_TERMOSTATO_V2_HEX

Poderá baixar os arquivos da versão 2, com terminação ‘.asm’ e ‘.hex’, clicando na pasta abaixo:
PIC_TERMOSTATO_V2_FILES

Segue abaixo, pasta para baixar, com versão 3 de 13/03/2014, com aprimoramentos citados acima, acrescentando mais estabilidade na leitura:
PIC_TERMOSTATO_V3

Segue a placa para circuito impresso, sendo gentileza do Agnaldo ‘Foxcom’ (dúvidas: agnaldofraga@hotmail.com):
TERMOMETRO 676 LCD PCB FOXCON

Manuais:
datasheet Pic16f676
LM35

Curiosidades:
A ventilação do cupinzeiro
A longa soneca dos ursos
Cuidado com alimentos
Fim do mundo – Do que as pessoas tem mais medo?

Outros assuntos:
Ensine seus filhos bons principios com atividades de colorir
Como posso ter ânimo para exercitar
Entrevista com um bioquímico
Como posso controlar meu peso?
Como reagir a um assédio sexual?
Como lidar com os sogros?
Converse com seus filhos sobre sexo
Desempenhem bem seu papel de pais
Como lidar com dívidas
Como parar de discutir com seu conjuge
Como sobreviver ao primeiro ano de casamento

Até o próximo artigo!!!

2

112 comentários sobre “FAÇA UM SIMPLES TERMOSTATO ELETRÔNICO COM UM PIC 16F676 (SENSOR LM35)

  1. 0

    Bom dia Claudio, consegui copiar o codigo ASM para o meu MPLAB,configurei corretamento CCS,quando executo no MPLAB aparece esse erro na linha 2

    Executing: “C:\Program Files (x86)\PICC\Ccsc.exe” +FM “main.c” +DF +LN +T +A +M +Z +Y=9 +EA
    *** Error 128 “main.c” Line 2(1,1): A #DEVICE required before this line
    1 Errors, 0 Warnings.
    Halting build on first failure as requested.
    BUILD FAILED: Tue Aug 23 10:54:02 2016

    1. 0

      Olá Jeferson!
      Creio que você esteja tentando compilar um arquivo asm no compilador CCS C. Você deve usar o arquivo ‘.c’ para CCS C compiler. Para arquivos ‘asm’ poderá usar o Mplab-Ide usando a linguagem ‘Assembly’. Veja tutorias no YouTube de como iniciar um projeto, bem como os fóruns da Microchip, e a partir dai, tente compilar o seu.
      Cláudio

  2. 0

    Tentei compilar o arquivo ASM no MPlab, e apareceu esse erro,mas não sei o que pode ser.

    Clean: Deleting intermediary and output files.
    Clean Warning: File “C:\Users\JEFFERSONCOSTA\Desktop\PROJECT\Acionamento de rele com PIC16f676+LM35.o” doesn’t exist.
    Clean: Done.
    Executing: “C:\Program Files (x86)\PICC\ccsloader.exe” +FM “Acionamento de rele com PIC16f676+LM35.c” +DF +LN +T +A +M +Z +Y=9 +EA
    UNKNOWN OPTION: FMUNKNOWN OPTION: DFUNKNOWN OPTION: LNUNKNOWN OPTION: AUNKNOWN OPTION: MUNKNOWN OPTION: ZUNKNOWN OPTION: Y=9UNKNOWN OPTION: EA
    BUILD FAILED: Mon Aug 22 22:26:28 2016

    Se puder me ajudar agradeço.

  3. 0

    Desculpas pela demora em lhe responder, mas não consegui copiar esse codigo PIC_TERMOSTATO_HEX e colar no meu programador JDM,
    Por que ele aparece em txt,não sei como salvar ele em HEX no meu pc.

    1. 0

      Olá Jeferson!
      Entendi. Se salvando com terminação ‘.hex’ você não está conseguindo, poderá fazer o seguinte:

      1)Faça uma cópia de um arquivo .hex de um outro programa qualquer. Use o botão direito do mouse para ‘copiar’ e depois ‘colar’ esta cópia do arquivo no local que desejar.
      2)Abra esta cópia, com um editor, como o ‘bloco de notas’.
      3)Vá nas ferramentas do editor em ‘Editar’ e depois ‘Selecionar tudo’.
      4)Depois de selecionado, delete tudo usando a tecla ‘delete’.
      5)Vá em ‘Arquivo’ e depois ‘Salvar’, para salvar tudo em branco.
      6)Agora abra o arquivo que você deseja em hex.txt, como no caso de alguns projetos do blog.
      7)Selecione com o mouse, apertando o botão esquerdo e arrastando para baixo, abrangendo do começo ao fim do arquivo.
      8)Aperte o botão direito do mouse e escolha na janela, a opção ‘copiar’ . Ficará na área de transferência.
      9)Abra novamente aquela cópia em branco com terminação .hex e clique em qualquer lugar dela (no vazio) e aperte o botão direito do mouse, abrindo a janela, na opção ‘Colar’.
      10)Após colar, vá em ‘Arquivos’ e depois ‘Salvar’ para salvar o novo conteúdo.
      11)Saía desta pasta alterada e renomeie ela para o nome que desejar. Ela será automaticamente salva com terminação ‘.hex’.

      Pronto. Esta pasta será usada no seu programador de pic!

      Se achar difícil, poderá ir no artigo original e baixar a pasta da versão que desejar, pois já as acrescentei por facilidade.

      Cláudio

  4. 0

    Bom dia Claudio, estou com duvidas de como baixar o arquivo PIC_TERMOSTATO_HEX,estou utilizando um programa WimPic,tento copiar o codigo HEX, e reproduzir no programa e nada. Me ajuda por gentileza.

    1. 0

      Olá Jeferson!
      Acredito que tenha conseguido carregar mas que não tenha funcionado, é Isto! Se for, verifique não perdeu o byte de calibração. Para saber se perdeu, leia a flash e veja o último endereço. Deverá ter um valor começando com 34 XX. O XX será o valor da calibração. Se estiver 0xff, então você perdeu este byte e não irá funcionar. Tente carregar um valor provisório como 0x34fc, alterando manualmente este valor, após abrir o arquivo hex para gravar.
      Cláudio

  5. 0

    Primeiramente parabéns pelo blog, sempre visito para ver os assuntos, principalmente relacionados a microprocessadores Pic.
    Montei este circuito para controlar temperatura e funcionou perfeito para meu caso. Coloquei como controle anti-congelamento na placa do meu aquecedor solar.

    1. 0

      Olá Celso!
      Obrigado por retornar o sucesso de sua montagem. Muito legal esta sua ideia de uso. Parabéns!
      Cláudio

  6. 0

    Olá Claudio!
    É possível ter uma saída PWM? por exemplo,numa temperatura de 38 a 38,5 ,graus, a saída “sofrer” uma variação de 0v a 5v ou seja, 38,5 = 0v 38= 5v. Seria de muita utilidade no acerto de temperatura em uma incubadora,chocadeira.

    Att.
    Costa Eusébio.

  7. 0

    OLA CLAUDIO TUDO BEM COM VOCE? EU GOSTARIA DE SABER SE TEM JEITOS DE SUBSTITUIR OS BOTÕES DE INCREMENTO E DECREMENTO POR UM POTENCIÔMETRO, SENDO QUE EU QUERO FAZER UNS TESTES SEM O DISPLAY,USANDO UM OUTRO TERMÔMETRO EXTERNO.(TESTES EM REFRIGERAÇÃO) CONTO COM SUA AJUDA OBRIGADO.

    1. 0

      Olá Yuiri!
      Esta versão abrange de 0 a 150 graus centígrados. Não serve para refrigeração. Qual seria a faixa de trabalho que pretende Usar?
      Cláudio

  8. 0

    Olá Claudio!
    Esse projeto veio de encontro com minha necessidade. Confeccionei a placa do Agnaldo, porém os componentes estampados na mesma são diferentes do esquema do seu blog, como tinha feito a placa comprei os componentes da mesma mas ao ligar não aparece nada, apenas quadriculado na linha de baixo, usei resistores de 10k no lugar dos indicados por xx na placa, fiz os 5 jumpers e nada, fiz apenas os dois que aparece no 3D do arq. LYT e nada, nem o LED acende… O que fiz errado, devo abandonar a placa e seguir o esquema???

    1. 0

      Olá Márcio!
      Antes de mais nada, você carregou o arquivo hex no pic? Pois ele vem virgem ao adquirir em uma loja. Se não for esse o caso, talvez o Aguinaldo tenha alguma dica sobre essas diferenças que você encontrou.
      Cláudio

      1. 0

        Sim Claudio!
        Gravei o PIC sim, já entrei em contato com o Agnaldo ele já respondeu agora mandei outro e estou no aguardo. Obrigado

        1. 0

          Olá Claudio!
          Este projeto está me deixando louco kkk
          Eu examinei a placa disponibilizada pelo Agnaldo e a pinagem dos pinos do lcd não batem em nada com o seu esquema, os pinos do pic não chegam nos pinos do lcd que deveriam.
          Fiz um conector acertando essas ligações ms mesmo assim não mostra nada no display.
          Tem idéa do que poderia ser? Mandei e-mail para o Agnaldo porém sem resposta…
          No aguardo

          1. 0

            Olá Marcio!
            Entende-se que as ligações do pcb deveriam corresponder ao esquema para poder funcionar. Eu não montei esta placa, mas acredito que o Agnaldo deva ter feito funcionar a contento.
            Se tiver uma placa de montagens experimentais do tipo ‘ protoboard’, experimente montar o circuito original e faze-lo funcionar. Depois confira a placa pcb com as ligações reais necessárias e se for o caso, corrija as ligações ou mesmo faça uma nova placa.
            Cláudio

  9. 0

    então ….eu estou em um projeto de escola que existe uma placa q controla o cuveiro (placa dimmer), e nela tem um potenciometro de 100k,queria q a temperatura de entrada,quanto mais ela esquenta, mais diminui a potencia do chuveiro…tendeu? (procura essa plaquinha no google imagens)

    1. 0

      Olá Yagomm!
      Obrigado por compartilhar seu objetivo. Na realidade, o que você quer é um ‘feed-back’ da temperatura da água, para controlar exatamente no valor desejado (ou próximo). Com eletrônica analógica poderia usar talvez um amplificador operacional, onde em uma entrada (+) colocaria o potenciômetro da temperatura e na outra entrada (-) o sinal do LM35. A saída seria a somatória da tensão do potenciômetro + feed-back do LM35. Esta tensão seria então usada para comparar com o sinal da rede de 60 hz (isolado e obtido talvez através de fotoacopladores) para determinar o momento do disparo do triac.
      De forma digital, com pic, terá que implementar um dimmer + leitor de temperatura em um único programa, e usar a informação obtida do LM35 para alterar o momento do disparo do triac.
      Ambos os processos são complicados para iniciantes, e exigirá bastante pesquisa.
      Sucesso no seu trabalho!

      Cláudio

      1. 0

        teria como vc me falar um amplificador operacional ideal para o LM35 ou q trabalhe com 15 MiliVoltis…pra cima…e tambem um foto acoplador …pesquisei datasheet e não achei um ideal…

        1. 0

          Ola Yagomm!
          Poderá ver muitos esquemas usando o LM35 digitando no Google: ‘imagens de circuitos com lm35‘ e dando ‘enter’. Geralmente, para aplicações experimentais poderá usar operacionais do tipo LM324, LM358, LM741, etc. O mesmo pode ser feito com o fotoacoplador digitando: ‘imagens de fotoacoplador‘.
          Veja também os ‘Note Applications’ do produto pois o fabricante sempre dá sugestões de como usar.
          Espero que tenha ajudado.

          Cláudio

  10. 0

    como eu poderia fazer a saida do pic para o bc548…ao invez de ligar e desligar…queira q ele aumenta-se e diminui-se a voltagem de saida dessa porta do pic…com forme a temperatura lida…tendeu?

    1. 0

      Olá Yagomn!
      Teria que ter um conversor digital para analógico, não disponível neste modelo de pic. Você já pensou em usar direto a tensão que sai do LM35 para isto? Na sua saída tem uma tensão analógica proporcional a temperatura, variando 10 milivolts por grau centigrados (veja datasheet).
      Podemos saber qual seria a sua intenção de usar deste modo?
      Cláudio

  11. 0

    como eu faço para inverter o L de ligar para D de desligar…queria instalar em uma geladeira…e a opção so funcinaria invertida…so queria mudar as letras no display

    1. 0

      Olá Yagomn! Este circuito trabalha apenas com temperatura positivas, de 0 a 150 graus centigrados. Para usar com temperatura negativas, será necessário outro esquema de funcionamento. Neste blog temos um termostato que pode ser usado tanto em temperaturas positivas como negativas, mas usa display de 7 seguimentos. Verifique se atende sua necessidade.
      Cláudio

      1. 0

        e o que eu mudaria na programação para inverter somente as letras
        mas continuar com a mesma função…pois depois eu ligo na outra saida do relé…
        queria o valor que liga o relé…fosse a letra D ao invez da L
        e o valor que desliga teria q ser L ao invez da letra D…tendeu…so queria essa mudança na programação…se sim teria como enviar no meio e-mail.

        1. 0

          Olá Yagomn!
          Bem, se o caso é só de inverter, procure no arquivo asm a seguinte porção de código:

          FRASE1:
          dt ” PIC_TERMOSTATO “,0
          FRASE2:
          dt “LARIOS.TECNOL.WS”,0
          FRASE3:
          dt “TEMP= “,0
          FRASE4:
          dt “L= D= “,0 ; nesta parte você deve trocar o ‘L’ pelo ‘D’ como deseja e ficaria assim:

          FRASE4:
          dt “D= L= “,0 ; já trocado.

          Depois, é só recompilar no Mplab_ide, para obter o arquivo hex alterado.

          Cláudio

  12. 0

    Boa Tarde, muito bom esse projeto e didatico tanto é que vou usa-lo no projeto de tcc, eu nao sei como programa o pic

    1. 0

      Olá Jeferson!
      Obrigado por seu comentário apreciativo sobre o artigo. Para programar um pic você necessitará de um programador para pic ( o aparelho onde você coloca o PIC para programa-lo). Existem vários fabricantes e os modelos ‘caseiros’ como o JDM Programmer, bem fáceis de serem construídos. Poderá ver na Internet, em especial no Youtube, vários tutoriais de como programar um pic. Neste blog tem um esquema de um simples programador de pic, onde você poderá gravar um pic usando um simples protoboard e conectando 3 fios e alimentação de 5 volts. Utiliza a saída serial de um PC (DB9). No PC deverá estar rodando o programa WinPic, devidamente configurado.
      Cláudio

  13. 0

    OLÁ CLÁUDIO,DOBRE VICHER,BOA NOITE .OBRIGADO PELA VIAGEM KKK
    TUDO FUNCIONANDO ,PORÉM A TEMPERATURA AMBIENTE MOSTRADA NO LCD ESTA FLUTUANDO DE MAIS CHEGANDO A SALTOS DE 1 DE 2 ,3 GRAUS ,MESMO COM O LM35 EM CONDIÇÕES ESTÁVEIS ,TEM COMO ESTABILIZA-LO?
    (ISPACIBA) OBRIGADO.

    1. 0

      Olá Yuri! A parte mais crítica é justamente esta. No datasheet do LM35 tem algumas sugestões para isto. Costuma-se contornar a situação por filtrar bem a alimentação do LM35 , usar cabos blindados e aterrados do LM35 ao pic. Aumentar a quantidade de leituras (tipo 200 a 300) e depois tirar a média tende a reduzir os erros e estabilizar. Com esta montagem é mais de natureza didática, não entrei a fundo nesta questão.
      Cláudio

      1. 0

        olá cláudio bom dia.
        gostaria de saber se o termostoto de 3 d de7 também apresenta a mesma instabilidade.
        obrigado.

        1. 0

          Olá Yuri! Visto que usa PIC e também o LM35, apresenta também os mesmos problemas de instabilidade. Como eu falei, a instabilidade pode vir de interferências no fio do LM35 até o PIC. Cabos blindados e um filtro com resistor de 4k7 seguido de um capacitor de 1uf ao gnd e mais um outro resistor de 1k podem amenizar isto.
          Outro fator tem que ver com ruídos no pino da tensão de referencia . Coloque também um capacitor de 1 microfarads ao gnd.
          O ideal é que o PIC tivesse gnd diferenciados para parte analógica e digital, como é no ATMEL. Até o formato das trilhas podem influir nos ruídos. Os que são causados pela parte digital causam instabilidade no conversor AD ( ruídos do LCD, propagação em trilhas de rf, etc)
          Também, gostaria que você fizesse este teste. Ao invés de alimentar o circuito com fonte chaveada, use 4 pilhas AA com um diodo 1n4007 em série. Se a instabilidade melhorar, você saberá que era devido a fonte. Se for isto, terá que tentar outros modelos inclusive fonte convencional com trafo e regulador, ou blindadar, ou filtrar (Digamos que começa outra diversão!)
          Note que muitos passam pelo mesmo problema. Digite no googgle ‘como eliminar instabilidade na leitura do lm35′ e verá o que eu digo. Talvez encontre mais dicas que possa funcionar no seu caso.
          Cláudio

  14. 0

    olá Cláudio ,parece que esta quase tudo ok,porém já fiz mudanças nas ligações do lcd, mas o mesmo mostra-se quadriculado ,sem letreiro ,por favor ,obrigado.

    1. 0

      Olá Yuri!
      Confira realmente as ligações pino a pino da sua montagem. O fato de aparecer quadriculados no display é sinal que não está recebendo corretamente os sinais nos seus pinos. Experimente, se dispor de um osciloscópio, se tem sinais nos pinos ligados ao LCD. Se não tiver osciloscópio, poderá visualizar com um led e um resistor de 470 ohms em série, colocando pino a pino com o outro extremo no gnd (respeite a polaridade do led). Se perceber ele piscando, o pic está ativo e pode ser erro de ligação ou problemas no LCD. Se não ocorre nenhuma piscada ou não vemos sinal no osciloscópio, talvez precisará verificar se o seu pic está ainda com o byte de calibração intacto. Este byte fica no ultimo endereço da Flash e será perdido quando apagamos a Flash. Alguns aparelhos programadores salvam este byte antes de apagar a Flash e depois o devolve ao seu lugar, ao término. Faça o seguinte:
      Use o seu programador para ler a inteira Flash. Após a leitura, examine a ultima posição da Flash e ve se encontra um valor começando com 0x34YY onde ‘YY’ poderá ser um valor qualquer de calibração.
      Se encontrar um 0xFFFF é porque você perdeu o byte de calibração e não irá funcionar. O porque é que quando começa a rodar o programa, temos logo no inicio uma intrução de CALL 0x3ff. Esta busca na ultima posição o valor que deverá ajustar o oscilador do pic para uma melhor precisão. Se não encontrar um valor começando com 0x34 (retlw) , ele não conseguirá retornar do CALL e se perderá o programa.
      Caso chegue a conclusão que realmente perdeu este byte de calibração, terá algumas opções de solução:
      1) Um pic novo
      2) Restaurar o byte de calibração no pic. Isto exigirá um circuito especial, conforme tratado no artigo ‘como calibrar a frequência do oscilador interno do pic 12f675/629’ mas adaptando para o 16f676.
      3) Comentar as instruções de procura do byte de calibração e recompilar o programa ASM no Mplab_ide,
      conforme mostrado na porção de código abaixo:
      ;==================================================================================
      ; INICIO DO PROGRAMA
      ;==================================================================================
      ;CONFIGURAÇÕES INICIAIS DOS REGISTRADORES E PORTAS
      INICIO
      BANK1 ;BANCO 1
      ; CALL 0X03FF ;BUSCA CALIBRAÇÃO DO OSCILADOR ; Comente esta linha de código
      ; MOVWF OSCCAL ;TRANSFERE PARA O REG.OSCILADOR ; e esta também
      MOVLW .0
      MOVWF INTCON ;DESLIGA TODAS INTERRUPCOES

      4) Ao carregar o arquivo .hex para o buffer do programador, antes de gravar o chip, ir até o endereço 0x3ff da Flash e alterar para 0x3480 (valor médio).
      Depois sim, grave o pic. Isto pode ser facilmente feito com o WinPic800. Não conheço os outros programadores, como o que você usa.
      Espero que isto possa ajudar você a resolver o problema.
      Claudio

  15. 0

    Boa Tarde Claudio,
    Estou tentando fazer este termostato.
    Baixei o programa Pic C compiler e adicionei o arquivo ASL que você passou acima.
    Mas ao compilar acontece um erro. *Error 128*
    o que pode estar acontecendo? Obrigado.

    1. 0

      Olá Yuri!
      Este projeto foi feito unicamente em assembly, portanto, não tem como você tentar usar um compilador C para abri-lo. Antes, você deverá usar o Mplab-Ide caso queira alterar o programa assembly (.ASM) e em seguida, recompilar para gerar o novo arquivo . hex. Este sim, será usado para programar o PIC usando um programador de sua preferência ou então usar o ‘simples programador’ deste blog , junto com o Winpic800 (software). Veja videos de como usar o Mplab e também o Winpic800.
      Caso não necessite fazer nenhuma modificação, poderá usar o arquivo .hex fornecido para gravar diretamente seu PIC.
      Cláudio

      1. 0

        Obrigado pela atenção,
        Eu fiquei na duvida para que devo recompilar e tornar o aquivo em .hex. E como devo fazer isso.

        Agradecido.

        1. 0

          Olá Yuri!
          Basicamente, o Pic só poderá ser carregado com dados de programação na forma de ‘1’ ou ‘0’s. O arquivo ‘.hex’ tem estas informações prontas para ser carregado no Pic. Mas quando você deseja criar um programa, ficaria difícil manusear bit a bit, para nosso objetivo. Aí entra a linguagem de programação. Ela facilita a programação, pois usamos instruções que podem ser aprendidos pelo programador e alterar o programa ficará mais fácil. A compilação é o processo que convertemos o programa de certa linguagem em códigos que poderão ser usados para carregar o PIC (ou outro microcontrolador), ou seja , o código ‘.hex’. Note que cada linguagem tem um conjunto diferente de palavras e símbolos específicos (reservados), próprios da linguagem. Podemos ter compilador em Assembly, em “C”, em Basic, em Pascal,etc. Também, cada família de microcontrolador tem seu compilador específico, pois as instruções mudam de fabricante para fabricante e de modelo para modelo.
          Assim, se você, por exemplo, tiver um programa em ‘c’, poderá abri-lo em um compilador ‘C’ e alterar o programa conforme desejar. Depois, clique em ‘Compile’ e será gerado um arquivo ‘.hex’ junto a pasta do programa “c”.
          Quando não precisar alterar o programa e já tiver um arquivo ‘.hex’, como os fornecidos neste blog, basta usa-los sem necessidade de recompilar.
          Recapitulando: Compilamos um programa para converte-lo em arquivo ‘.hex’ , o único que poderá ser carregado no PIC (usando um programador, é claro).
          Cláudio

          1. 0

            Ola Claudio ,obrigado mais uma vez pelas elucidações .Baixei o winpic800
            mas não consegui gravar o pic , ate assisti uns videos do youtube, mas preciso exatamente gravar o pic 16f676 e não encontrei video deste em especifico ,e pelo que entendi de acordo com o nº do pic ,varia também a posição dele no programador , copiei para um bloco de notas e colei no programa o codigo “HEX” passado por você nesta pagina. Enfin não deu certo,você pode me dar uma dica de como usa-lo? ou videos seus sobre ou ate mesmo existe um programa mais facil ? Desde ja agradeço.

          2. 0

            Olá Yuri!
            Exatamente. Se você tem programador profissional, geralmente ele já grava automáticamente sem se preocupar com pinagem. Mas, quando for usar o gravador deste blog, o ‘simples programador’ , você deverá baixar o datasheet (ou ver on line) quais são os pinos usados na programação. São 3 pinos: VPP( recebe tensão de programação de 12 volts), o ICSPDAT (recebe o ‘dado’serial), o ICSPCLK (recebe o ‘clock’ para ‘empurrar os dados para o chip) mais o VCC (+5volts) e o VDD (GND ou – da alimentação). Assim, tendo Datasheet do pic a programar em mãos para saber qual pino ligar os 5 fios citados, um protoboard, uma fonte de 12 volts e o simples programador deste blog, com o WinPic800 rodando no PC, fazendo uso da porta serial DB9, você poderá gravar TODOS os pic’s alistados no Winpic800.
            Cláudio

          3. 0

            OLA CLAUDIO ,
            USEI O PROGRAMA DIY K150 E DE ACORDO COM O PROGRAMA FOI GRAVADO COM SUCESSO ,NO MEU PROJETO O LCD ACENDEU MAS NÃO MOSTROU A ESCRITA ,DUVIDA:
            1º- NO ESQUEMA A CIMA ,OS RESISTORES NO VALOR 220 PARA O LCD ,SÃO OHms ou K?
            2º PARA O TERMOSTATO LCD FOI USADO PIC 16F676 OU PIC 12F676 ,PORQUE NO TITULO VOCÊ CITA UM E NO TEXTO CITA O OUTRO ,OU ELES SÃO EQUIVALENTES? OBRIGADA.

          4. 0

            Olá Yuri!
            Os resistores são realmente de 220 ohms e o PIC é um 16f676 (postei o título errado). Obrigado por trazer atenção esta falha, para poder corrigi-la. Se não aparece o nome do aparelho ao ligar, procure confirir as ligações em especial as que vão para o LCD. É comum se enganar o ‘RS’ com o ‘E’.
            Claudio

    2. 0

      OLA CLAUDIO ,BOA NOITE
      QUANTO AO LCD MOSTRAR QUADRICULADO,FIZ OS TESTE QUE VC INDICOU .CONFERI AS SAÍDAS COM O LED NOS PINOS E ESTÃO PISCANDO,CADA UM EM INTERVALOS E INTENSIDADES DIFERENTES .TROQUEI O LCD ,CONFERI AS LIGAÇÕES(FIOS DE CORES DIFERENCIADAS)MAS O LCD CONTINUA QUADRICULADO.SERÁ QUE TEM À VER COM O PROGRAMA PELO QUAL CONFIGUREI O PIC? E USO COMO FONTE UM CARREGADOR DE CEL DE5V 350mA PODE SER? (ISPACIBA OBRIGADO)

      1. 0

        Olá Yuri!
        Bom sinal. Todos os pinos do pic para o LCD acredito que foi testado por você com o led (db4 a 7 , RS e E). Vamos pensar em mais possibilidades:
        O resistor que você colocou no pino ‘VO’ ao gnd é de 1KiloOhms? Ele controla o contraste do display. Valores baixos tendem a deixar tudo ‘quadriculado’ (escuro). Valores altos tendem a apagar e tornar muito fraco a visualização. Confira por favor.
        Você citou se tinha que ver “com o programa que configurei”. Você alterou o modelo de pic ou fez outras modificações no programa ou está original?
        Caso seje original, qual das versões você está usando? Se for a versão 2 tente carregar a primeira versão e ver se funciona. Na segunda versão usei um tempo de delay para o pulso no pino ‘E” do display bem menor. Alguns display não funcionam bem com tempos menores. Caso a primeira versão funcione bem ( pois está compilada para tempos de pulso “E” maiores) então, poderá comentar a primeira opção de tempo ( mais rápida) e ficar com a segunda (descomentando, sendo esta mais lenta), e recompilar no Mplab_ide , conforme a porção de código abaíxo:

        ;LcdPulse_E ;(comente esta primeira opção mais rápida e problemática)
        bsf LCD_E ;Enables LCD
        goto $+1
        goto $+1
        goto $+1
        goto $+1
        goto $+1
        goto $+1
        goto $+1
        ; goto $+1
        ; goto $+1
        bcf LCD_E ;Disabled LCD

        return

        LcdPulse_E ;(descomente esta segunda opção, mais lenta)
        bsf LCD_E ;Enables LCD
        ; movlw 1 ;Wait 1ms
        ; call LcdDelay
        movlw .200
        call WAIT_uS
        bcf LCD_E ;Disabled LCD
        ; movlw 1 ;Wait 1ms
        ; call LcdDelay
        return

        Por favor, verifique qual caso e retorne , por favor.
        Claudio

        1. 0

          Olá Claudio, bom dia.
          Consegui regular as escritas dentro dos quadradinhos usando na saída do contraste ligado ao GND um tripote de 10K. Afetaria alguma outra cosia? Pois parece que deu certo. Preciso apenas ajudar a temperatura.

          1. 0

            Olá Yuri! Você esta indo bem. Já apareceu então a mensagem inicial? Em exatamente no que precisa de ‘ajuda na temperatura’?
            Claudio

  16. 0

    Olá. Eu sou o Costa, moro no Porto , Portugal.
    O meu passatempo é a eletrónica, na programação sou um principiante.

    Caro Claudio ,devo felicitá-lo pela sua bondade em compartilhar estes, excelentes, projetos e sua explanação pormenorizada.
    Devo também dizer que, pesquisei na net e não encontrei “material”, assembler, tão didático quanto o seu.
    Quanto a este projeto, ao gravar o programa no pic,uso o winpic e o programador é uma variação do Tait programmer,fabrico caseiro,grava muito bem os pics 16f84a, 16f628a, 16f877a, apresenta o seguinte erro:
    Info: Loading definitions for “PIC16F676” from C:\Programas\WinPic\devices.ini .
    Info: PIC16F676 added by Rich Heslip, merged 2004-08-07
    Couldn’t find “devices\PIC16F676.dev”, please borrow/copy from MPLAB !
    Initialising PIC-Programmer: Success.
    Testing: delay(500ms) took 0.50 seconds, timer_freq=2800.8900 MHz … ok
    Programming…
    Erasing (“bulk” or “chip”) …
    Oscillator calibration word looks bad (0x003FFF) !
    Programming and Verifying CODE, 0x000000..0x0002BC
    Warning: using default OSC CALIB word instead of 0x003FFF .
    Verify Error: 000000: read 00342B, wanted 002856
    Verify Error: 000004: read 003FFF, wanted 000009
    Verify Error: 000005: read 003FFF, wanted 0000A6
    Verify Error: 000006: read 003FFF, wanted 000833
    Verify Error: 000007: read 003FFF, wanted 00008A
    Verify Error: 000008: read 003FFF, wanted 000826
    Verify Error: 000009: read 003FFF, wanted 002011
    Verify Error: 00000A: read 003FFF, wanted 003E00
    Verify Error: 00000B: read 003FFF, wanted 001903
    Verify Error: 00000C: read 003FFF, wanted 000008
    Verify Error: 00000D: read 003FFF, wanted 00225D
    Verify Error: 00000E: read 003FFF, wanted 000AA6
    Verify Error: 00000F: read 003FFF, wanted 000826
    Verify Error: 000010: read 003FFF, wanted 002809
    Verify Error: 000011: read 003FFF, wanted 000082
    Verify Error: 000012: read 003FFF, wanted 003420
    Verify Error: 000013: read 003FFF, wanted 003450
    Programming aborted after 17 errors.
    Programming DATA, 0x002100..0x002103
    Verify Error: 002101: read 000048, wanted 000090
    Verify Error: 002102: read 0000FF, wanted 000001
    Verify Error: 002103: read 0000FF, wanted 00002C
    Restoring BANDGAP calibration bits for CONFIG-WORD
    Programming CONFIG, 0x002000..0x002007
    Verify Error: 002007: read 003E00, wanted 003FC4
    ERROR: Programming FAILED !

    Se pudesse me elucidar.
    Aqui fica, o meu muito obrigado.
    Atentamente
    R. Costa Eusébio

    1. 0

      Olá Costa!
      Obrigado por suas observações apreciativas sobre o blog. Quanto ao seu problema, note a linha ‘Info:’ que diz:

      Info: Carregando definições para “PIC16F676” de C: \ Programas \ WinPIC \ devices.ini.
      Info: PIC16F676 adicionado por Rich Heslip, adição em 2004-08-07
      Não foi possível encontrar “dispositivos \ PIC16F676.dev”, por favor, emprestar / copiar do MPLAB!

      O WinPic não conseguiu encontrar o arquivo de definições para o pic 12f675. Não sei dizer porque está faltando.
      Sugiro que tente reinstalar o WinPic800 novamente e então tente gravar o pic.

      Adicionalmente, se algum leitor deste blog já passou por esta situação, se desejar, poderá dar sugestões para a solução do problema, as quais serão muito apreciadas.

      Cláudio

      1. 0

        Olá Cláudio.
        Desejo-lhe, muito bom dia.

        Fiz o que você sugeriu.
        Problema resolvido.

        E,como nunca é demais mostrar gratidão,
        mais uma vez lhe fico grato pela sua gentileza e disponibilidade.

        Atentamente:
        R. Costa Eusébio.

  17. 0

    Prezado Claudio, quero lhe agradecer por toda a atenção e ajuda. O projeto já esta funcionando em minha aplicação. Mais uma vez obrigado!

    1. 0

      Olá Rodney! Parabéns, e sucesso em suas aplicações. Caso tenha algum ‘projetinho’ que queira compartilhar conosco, fique a vontade em enviar!
      Cláudio

      1. 0

        Prezado Claudio, pintou uma dúvida após alguns dias utilizando o projeto. Eu percebi que quando ligo o dispositivo e a temperatura ajustada para ligar for menor que a temperatura de leitura, quero dizer a temperatura ambiente, ele não arma o relé. O relé só é acionado quando coloco a temperatura de ligar igual a temperatura ambiente ou se for maior(quando ele alcançar a temperatura ele arma). Quanto ao ajuste de desligar esta funcionando perfeitamente. Eu não sei se o problema esta na programação ou se fiz algo de errado. Desde já agradeço a atenção.

        1. 0

          Olá Rodney!
          Montei em protoboard para testar isto, e com o hex original não procede o comportamento mencionado. Verifique alguma possível alteração que você tenha feita no código.
          Cláudio

  18. 0

    Prezado Claudio eu consegui montar o gravador do PIC e testei no winpic800. O programa detectou o Pic e nos testes que realizei deu tudo ok. A minha dúvida é que o código quando baixo do fórum vem para mim como TXT. De qualquer forma carreguei ele no winpic800, mas quando fui gravar deu o seguinte erro (erro de verificação no endereço 0x000000 verificando:0x284A lendo:0x3fff). Não sei o que tem de errado. Você pode me ajudar. Desde já agradeço!

    1. 0

      Olá Rodney!
      Isto significa que não conseguiu gravar o pic. Verifique as ligações do programador ao pic. Certifique de alimentar o pic com 5 volts (vcc e gnd). A fonte do programador tem que ter no minimo 13 volts para produzir a tensão correta de programação no pino ‘vpp’ (4). Tente ler o pic, mas ligando o pino pgd(dado) ao gnd e veja se está lendo tudo ‘0000’. Depois deixe sem ligar este fio e leia o pic e veja se está dando 0xff em tudo. Se não acontecer o mencionado, tem erro de conexão, ou instalação do Winpic, ou mesmo, o Windows poderá não estar liberando a porta serial . Lembre-se que o WinPic tem que ser configurado para PROGRAMADOR JDM e Vpp invertido para funcionar. Para saber quais pinos ligar em cada pic, baixe os datasheet dos mesmo e veja em que pinos devem ser ligados os mesmos, pois isto muda de pic para pic. No pino pino 16f676 o pino 4 é o ‘vpp’, o pino 12 é o clock, o pino 13 é o dado, o pino 14 é o VCC (5 volts) e o pino 1 o gnd.
      Cláudio

      1. 0

        Prezado Claudio, ainda não desistir do projeto. Me tira uma dúvida. olhando o datasheet do 16f676 o VDD esta no pino 1 e o VSS esta no pino 14. Diferente do que você me falou. Com isso fiquei na dúvida e não sei se ligando errado posso danificar o projeto ou até mesmo queimar o PIC. Outra coisa essa fonte externa de 5V posso tirar de uma USB ou tem que ser externa como a de 13V? O meu led acende direto quando ligo a fonte de 13v e pisca mais forte quando peço para o WinPic ler o PIC. Isso é normal? Abraço!

        1. 0

          Olá Rodney!
          Ops! É isto mesmo, siga a pinagem do datasheet, pois de cabeça, sempre me engano. A inversão realmente fará esquentar o pic, conduzindo os diodos de proteção das portas e poderá danifica-lo permanentemente. Já cheguei a ligar invertido brevemente e constatei isto, apesar de ter sobrevivido. Na hora de programar, seria bom você reduzir os 13 volts para 5 com um regulador 7805. Não sei se teria problemas misturando alimentação, mas é um bom prato para confusão. No uso, poderá usar os 5 volts do USB. Durante o período de leitura/escrita é normal o led ficar piscando, pois o programador liga e desliga a tensão de programação no pino vpp.
          Cláudio

  19. 0

    Prezado Claudio, consegui montar o circuito, mas estou com um problema, pois o display acende, mas aparece apenas quadradinhos na linha debaixo, fiz medições nos pontos de teste a o Lm35 esta funcionando direitinho. Pode me ajudar quanto ao problema do display? Desde já agradeço!

    1. 0

      Olá Rodney!
      Estes ‘quadradinhos’ podem indicar que não houve uma ligação correta com o pic. Verifique algum erro de ligação entre o LCD e o PIC, conferindo a ligação pino a pino. Lembrando que você deverá já ter carregado o arquivo hex no pic antes de tentar fazer funcionar.
      Cláudio

      1. 0

        Prezado Claudio, obrigado pela resposta. Na verdade nunca trabalhei com PIC e estudando melhor vi que o mesmo tem multi funções e precisa ser programa para a qual você deseja. Vou ter que criar o gravado para o PIC e gravar o arquivo HEX que você disponibiliza no fórum. Abraço!

        1. 0

          Olá Rodney! Não se preocupe, que programar o pic é uma operação rápida e simples. Você necessitará de um software programador em seu PC, como o WinPic (gratuíto) e também um hardware programador simples que poderá usar o “SIMPLES PROGRAMADOR DE PIC‘ deste blog. Depois, com o hardware ligado ao pic e alimentado, e a conexão na porta serial (DB9) ligada do programador ao PC, basta abrir o WinPic e escolher o hex para esta montagem e clicar em programar. Em segundos será feita esta programação. Existe também a venda, vários programadores profissionais e também os caseiros (como o JDM), para o pic. Caso faça apenas esta montagem, poderá montar um programador em 5 minutos usando um protoboard e poucos componentes (use o esquema do simples programador e dispense a chave multipla, ligando direto no pinos do pic). Não desista!
          Cláudio

  20. 0

    Prezado Claudio, seu projeto é perfeito para as minhas necessidades. O único problema é que moro no Rio de Janeiro e as melhores lojas de eletrônica aqui não vendem os principais componentes para o projeto. Minha pergunta é, você tem esse projeto pronto para venda? caso não você me indica algum site de venda de componentes confiável. Desde já agradeço!

    1. 0

      Olá Rodney!
      Os artigos aqui postados são de caracter didático e não tenho arranjo para comercializar kits ou componentes. Existem várias empresas que comercializam na Internet e são sérias. Verifique a opinião de usuários da internet sobre isto, e tome a sua decisão.
      Cláudio

      1. 0

        Prezado Claudio, muito obrigado pela sua atenção. Eu consegui achar aqui no RJ uma loja que tinha todos os componentes. Gostaria de tirar uma dúvida do esquema, pois não consegui identificar que componente é esse. No pino 13 do PIC antes de passar pelo resistor de 75 ohms tem um componente descrito 1/15 o que é isso? Desde já agradeço.

        1. 0

          Olá Rodney! O componente em questão é um capacitor eletrolítico de 1 microfarads com tensão de trabalho de 15 volts .
          Cláudio

  21. 0

    Bom Dia Claudio Larios consegui mudar a frase.
    Obrigado pelas informações.
    O meu projeto graças o seu termostato eletrônico ficou muito Bom 😆 .logo que eu finalizar o projeto enviarei as fotos a você se me permitir 😆

  22. 0

    olá claudio, vou utilizar o termostato em aquario.Qual a recomendação que vc me daria para isolar o sensor adequadamente? Poderia utilizar uma fonte 5V/1A(carregador de celular)ao invés de montar essa do circuito?

    1. 0

      Olá Lucas! Poderá usar um carregador de celular, desde que seja um com 5 volts regulados. Alguns produzem tensões elevadas entre 7 a 13 volts. Estes necessitam do 7805 para reduzir. Os modelos com tomada tipo usb miniatura geralmente são de 5 volts. Meça a tensão com multitester para ter certeza. Quanto a isolar o sensor, poderá usar um tubo de ensaio miniatura e colocar o sensor com os fios já soldados, depois encher com silicone liquido ou outro vedante. Quanto ao programa, nosso colega Foxcon poderá responder melhor.
      Cláudio

        1. 0

          Olá Lucas! Sim e que seja o mais isolante possível, resistente a ação da água, etc. Verifique outros sites que possam dar alguma dica sobre produtos apropriados.
          Cláudio

  23. 0

    quando e feita a mudança seria troca do nome do projeto ( PIC_ TERMOSTATO – ESTUFA_PCI_ ROGER ) (os valores da temperatura máxima mínima não fica mais originas do seu programa ( L= 30.3 D= 40.0 ) e sim desta forma ( L= 556.5 D= 578.9 )e com uma grade dificuldade de mudança de valores 😥

    1. 0

      Olá Roger! Quanto a mudança do nome, você deverá colocar no máximo 16 caracteres por mensagem, incluindo espaço. Assim, na FRASE1 você pode trocar para :
      FRASE1:
      dt “Pic_Termostato “,0

      E na FRASE2:
      dt “Estufa_Pci_Roger”,0

      Deverá funcionar sem problemas. Você não pode ultrapassar o valor máximo de 16 caracteres para não ‘embaralhar o programa’.
      Quanto a funcionamento do botão, foi optado para uma forma de acesso rápido. Mas você poderá alterar a rotina, de forma que troque somente quando soltar o botão, causando incremento de 1 em 1.
      E com respeito a trocar ‘D’ por ‘OFF’ e ‘ L’ por ‘ON’ , entra na situação de que cada linha do LCD possui somente 16 caracteres. Trocando como você gostaria, iria ultrapassar este limite Este código já não serviria, pois teria que colocar estas informações em 2 linhas distintas, tirando a simplicidade da apresentação.
      Cláudio

  24. 0

    Boa Noite Cladio Larios primeiramente quero te agradecer do fundo do meu coração pela divulgação de seu
    conhecimento técnico e de ajudar pessoas iguais a mim órfão de conhecimento sobre esse mudo fascinante do PIC .
    Montei o projeto que o mesmo divulgou aqui tudo fusionou OK .
    Só que ficou uma duvida na minha montagem eu só consigo mudar os dígitos das temperaturas mínima e máxima em sequencia ( quando permanece apertado o teclado ) como eu faço para que os valores mudem a cada um toque que os dígitos mudem um de cada vez .
    Outra duvida consegui mudar o nome do projeto para “
    PIC_ TERMOSTATO
    ESTUFA_PCI_ ROGER
    quando e feita a mudança os valores da temperatura máxima mínima não fica mais originas .
    Queria mudar também a palavra L= para ON e a palavra D= para OFF tem como.
    Muito obrigado Claudio Larios por tudo

    1. 0

      Olá Roger! Obrigado por seu comentário apreciativo. Quando você citou que ‘não ficam mais originais’, não deu para entender bem. O que acontece?
      Cláudio

  25. 0

    bom dia lario. sim a chocadeira trabalha com um motor que pode ser de passo, as chaves fins de curso e para quando o motor vira os ovos para um lado atua um fim de curso, dai 2 horas o motor gira em sentido inverso dai o outro fim de curso desliga o motor.
    cada fim de curso fica numa extremidade oposta.obrigado lario.

    1. 0

      Olá José! Entendi! Obrigado pela explicação. Vi em alguns videos que o pessoal usa um pequeno motor com redução alta ( 1 volta por minuto), com um sistema de pino, que muda a posição da calha constantemente, para um lado e para o outro. É um sistema interessante.
      Cláudio

  26. 0

    olá lario tudo bem? quanto a acrescentar as chaves fins de curso e o timer refere_se a uma automaçao para chocadeira visto que este termostato e ideal,gostaria se saber se tem como acrescentar estes acessorio,pois a chocadeira trabalha com temperaturas entre 26a28 graus e de 2 em duas horas os ovos vira de um lado para outro.desde ja agradeço

    1. 0

      Olá José! Obrigado pela explicação. Mas eu não conheço o processo a qual você se refere. O que faz o fim de curso quando ele é acionado? Como os ovos são virados? Trabalha motores elétricos?
      Cláudio

  27. 0

    lario boa tarde desde ja te agradeço pela acessibilidade. gostaria de saber se tem como acrescentar 2 chave fim de curso neste termostato e acrescenta tambem um timer que liga de 2 em 2 horas ? isto e para uma chocadeira ou se voce ja tem deste algo neste sentido.obrigado.

    1. 0

      Olá José! Eu não entendi bem o que você quis dizer com ‘colocar 2 fins de curso neste termostato’. Para que ? Acrescentar um timer de 2 horas? Poderia explicar detalhadamente a sua ideia, por favor?
      Claudio

  28. 0

    lario bom dia venho atraves deste notificado lhe agradecer pelo suporte e apoio que me deu, alem de me passar desenho eletronico, pois montei todos os displays e estao tudo funcionado,tanto a hora e minutos,dia mes e ano e a temperatura. entao por enquanto meus agradecimento por este arranjo de acessibilidade que voce tem. abraço jose luiz estou disponivel.

  29. 0

    lario vou investir na fonte pesada de alta corrente
    refise o display em serie e nao quise ser acionado
    vou montar em pararelo mesmo,depois eu corrijo este problema.

  30. 0

    claudio fiquei impressionado com este termostato com pic 16f676 e lcd tem como mudar ele para o pic 16f628? na biblioteca do meu compilador nao tem este o 16f676.grato aliás to impressionado e com todos estes artigos rsrsr.abraço

    1. 0

      Olá José !
      O PIC 12f676 tem internamente um conversor analógico digital, sendo que no pic 16f628a não dispõem deste hardware interno, impossibilitando a implementação deste termostato.
      Cláudio

    2. 0

      Olá José!
      Desconsidere o email anterior, pois confundi com outro assunto.
      Quanto a usar 12 leds por seguimento, sendo que cada led tem um resistor de 150 ohms, teremos por volta de 20 mA por led. Multiplique por 12= 240 mA por seguimento, pois estão em paralelo, certo! Cada display necessitará então, de 7 x 240 mA= 1,68 A. Agora, você montará 5 display x 1,68A = 8,4 Amperes !!!! Haja fonte para isto, não é verdade!
      No entanto, 8,4 Amperes x 5 volts = 42 watts ( potencia pequena). Qual a solução ?
      Usar tensões maiores para obter correntes menores. Se fosse colocado 12 leds em série, obteremos 2,2v (queda da tensão do led) x 12 = 26,4 volts. Uma fonte de 30 volts poderia ser usada. Assim, ficaria: 30 – 26,4 = 3,6 v e o resistor limitador será: 3,6v/0,02Amp = 180 ohm 1/4 w. Acionando 7 seguimentos a 20mA = 140 mA por display. Usando 5 display, necessitaria de :
      140 mA x 5 = 0,7 Amperes. Este valor seria mais razoável do que usar 8,4 Amperes, não é mesmo!!!

      Claudio

    3. 0

      Olá José!
      Eu me esqueci que o circuito é multiplexado. Assim na versão de leds paralelos terá 1,68 Amperes com todos seguimentos acesos e na versão série com 30 V , terá 140 mA.
      Note que a potencia dissipada será menor com 30 V. (1,68 x 5 = 8,4 W , no caso paralelo e 30 x 0,14 = 4,2 W, no caso de led série em 30 v).
      Cláudio

        1. 0

          Olá José!
          Existem vários, mas alguns não são facilmente encontrados no comercio. Tente por UDN2981, M63800, M54561P, sendo estes do tipo PNP.
          Cláudio

  31. 0

    :mrgreen: Olá Claudio, ja enviei o pcb desta versão com lcd ao seu e-mail, caso queira disponibilizar ao pessoal fique a vontade….

  32. 0

    :mrgreen: Olá claudio, Bem explicado, vou analizar o fonte para que redusa esta piscada, o pcb ti envio assim que estiver 100% o esquema, fiz algumas alterações por isto que que nao envieia ainda para vc ok. valeu ai pelas dicas, abraços.

  33. 0

    ❓ Olá claudio. Fiz o que vc me surgeriu ai que o display nao funciona mesmo, ja testes com mais de uma marca e fica da mesma forma, o que ficou piscando menos foi alterar o valor=
    movlw .200
    call WAIT_uS

    para=
    movlw .6
    call WAIT_uS

    mesmo assim da para perceber quando atualiza os caracter da a piscada.
    Vc teria alguma outra surgestão, valeu ai pela atenção ok.

    1. 0

      Olá Agnaldo! Alguns comandos do lcd exigem mais delay que outros, e pode variar de fabricante. Acredito 6 useg foi o menor valor que você testou, que o Lcd ainda funciona corretamente. Este é o limite, então. Para um projeto didático já está bom. Mas para um projeto profissional, talvez teriamos que alterar as rotinas de apresentação, como manter certos caracteres e trocar apenas o resultado. Também pensar em fazer todas as conversões, salvar na ram e apresentar em uma única sequencia de envio, etc (ou seja, refazer o código até achar o que agrada). Tente entender como o código asm funciona e faça as modificações que, a seu ver, possam melhorar o desempenho (código free).
      Cláudio

  34. 0

    😛 Olá claudio, o pcb esta pronto e ja montei, aqui em meus testes observei que acada leitura concluida da temperatura o lcd pisca os caracter, ja tentei diminuir o tempo de leitura mais ainda continua, o que vc me sujere ai para o display para piscar a cada atualização. abraços,,,

    1. 0

      Olá Agnaldo!
      A piscada tem que ver com o tempo do pulso de clock do “E” do lcd. Em desenvolvimento, coloco um tempo maior pois alguns lcd não operam bem em tempos rápidos. Mas, tente alterar a parte do código asm conforme abaixo, descomentando o primeiro ‘LcdPulse_E’ e comentando o segundo:

      ;LcdPulse_E
      bsf LCD_E ;Enables LCD
      NOP
      NOP
      NOP
      NOP
      bcf LCD_E ;Disabled LCD
      return

      LcdPulse_E bsf LCD_E ;Enables LCD
      ; movlw 1 ;Wait 1ms
      ; call LcdDelay
      movlw .200
      call WAIT_uS
      bcf LCD_E ;Disabled LCD
      ; movlw 1 ;Wait 1ms
      ; call LcdDelay
      return

      Claudio

  35. 0

    Olá Claudio. Já envei para seu e-mail o arquivo do esquema e layout da pci, que desenhei no Altium. Fico à disposição. Barone.

  36. 0

    Olá Claudio,
    Converti o esquema em formato Altium e elaborei o layout de uma pci do projeto do termostato. Posso postar para você se quiser. Grato. Barone.

  37. 0

    Bom dia ao nobre amigo.
    Parabéns pelos seus excelentes projetos, estou com umas dificuldades com um projetinho de uma sirene com PIC 12F629 seria possivél email para contato o meu email é eli.silva_47(a)hotmail.com , desde já lhe agradeço um forte abraço.

    Elionaldo.´.

    1. 0

      Olá Elisilva!
      Talvez possa ajudar (adiantando que ‘sou um mero hobista’, não programador profissional!!!). Se desejar, poderá enviar seu material e a sua duvida para o email claudio@larios.tecnologia.ws.
      Assim que tiver uma oportunidade, verei se tenho ou não condição de ajudar.
      Claudio

  38. 0

    Mais um bom projeto, vou testar numa estufa que tem que ficar sempre com 36.5ºC,pois ela esta com um termostato analógico,digital fica melhor.

  39. 0

    olá claudio , tenho uma ideia para seu site . porque você não coloca para que quando alguém ou você comentar enviar automaticamente um e-mail para nós para avisar que houve um comentário .
    por exemplo eu mesmo fico caçando comentários novos para acompanhar o blog e fica um pouco difícil saber qual houve um comentário .

    fica aqui uma ideia diferente . um abraço .

    1. 0

      Olá Michael! Obrigado pela sua sugestão. Irei analisar se é possível com quem de direito ou ver se existe outros meios.
      Cláudio

Os comentários estão fechados.