FAÇA UM TIMER PROGRAMÁVEL – COM PIC 16F628A E DISPLAY LCD 16X2 (REF188)

1

Não fique esperando para desligar. Use um timer…

Existem algumas atividades que necessitamos ligar algum equipamento e ficar esperando um determinado tempo para desliga-lo. O timer facilita muito porque podemos programar o tempo desejado que o equipamento fique ligado e ao darmos ‘start’, ele ligará e desligará no tempo programado. Assim, evitamos de esquecermos algo ligado e as possíveis consequências disto. Apesar de ser uma coisa simples de ser feita, em especial com microcontroladores, ainda assim é muito útil. Então resolvi fazer uma montagem com este tema. Veja como ficou o esquema:

A rotina usa a interrupção do timer 0 para obter o tempo de 1 segundo necessário ao funcionamento do relógio. Com o prescaller ajustado para dividir por 64 obtemos uma interrupção a cada 8 ms. Um contador adicional divide por 125 obtendo assim este tempo básico.
Para usa-lo basta programar o tempo desejado entre 1 s e 59 minutos/59 segundos, e em seguida, apertar o botão ‘On/Pause’. Os botões ‘Seg’ e ‘Min’ ajustam respectivamente os segundos e os minutos. Apertando começa a incrementar e soltando para o incremento. Somente podemos ajustar o tempo quando em pausa ou desligado por tempo. Se estiver em ‘pausa’ e ajustamos qualquer um dos valores, o display passa a mostrar ‘Timer Off’ ao invés de ‘Timer Pause’. Quando em modo ligado, ou seja, está acionando a saída e contando tempo para desligar, o LCD apresenta ‘Timer On’. Quando apertamos para pausar, também desliga o rele e a carga na sua saída.
Quando o tempo atinge o valor ’00:00′, além de desligar o rele, também ativa um ‘beep’ produzindo um sinal sonoro do termino do tempo, parecido com os usados em forno de microondas. Foi usado um simples disco piezoelétrico, pois a frequência é gerada por software.
Obs. Esta montagem é de caráter didático, sendo realizado em placa de montagem experimental ( tipo protoboard), sujeita a bugs ainda não observados. Está sendo fornecido os arquivos que poderão ser alterados pelos hobistas conforme a sua necessidade.
Atenção: Antes de fazer placa de circuito impresso para este circuito, monte em placa experimental e teste para certificar que ele atende as suas necessidades.

Segue a pasta com os arquivos para esta montagem, nas duas versões (CCS C Compiler):

TIMER_FILES

Segue a pasta com os arquivos para esta montagem, nas duas versões (XC8 Compiler):

TIMER_XC8_FILES

Adicionalmente, em 16/12/2015 foi feita esta versão para tempos menores (1 ms a 9999 ms), para fins de testes com temporizações pequenas, usadas em efeitos estroboscópicos e fotografias:

FAST_TIMER_FILES

Em 08/08/2016 foi postado esta versão do Timer de 0 a 59 minutos, em CCS C Compiler, que permite zerar a contagem ao apertar os botões de ajuste de ‘segundos’ e ‘minutos’ ao mesmo tempo, em modo ‘stop’ ou ‘pause’:

TIMER_LCD_ZERA_FILES

Manuais:
PIC 16F628A
LCD

Curiosidades:
Alguém tem um lápis?
Obras-primas “pintadas” com pedras
A arca de Noé e a arquitetura naval
Como surgiu a moderna indústria do diamante
Mestres na arte de pescar
O fascínio da pesca no gelo
O modo eficiente de o salmão nadar

Assuntos Bíblicos:
Como ensinar seus filhos a ter autocontrole
Como parar de discutir
A Bíblia é produto da sabedoria humana?
O que é preciso para entender a Bíblia?
Por que Deus permitiu o Holocausto?
Será que Deus, a Bíblia ou a religião podem ajudar você a ter satisfação na vida?
Como posso me proteger do assédio sexual?
O que é a fera de sete cabeças de Apocalipse capítulo 13?

Videos Motivadores:
Vejo a vida com as mãos
‘Eu estava cheio da minha vida’
Um novo começo
Japão — refazendo a vida um ano após o desastre
Uma exposição histórica
Deus tem nome?
Outros videos

Até o próximo artigo!!!

1

34 comments

  1. 0

    Boa noite Claudio ,teria como colocar uma função apertando se as teclas min e seg ao mesmo tempo e zerar temporizaçao pq ocorre o seguinte as vezes coloca se um tempo errado e ai tem resetar e demora muito para mexer no timer novamente grato

        1. 0

          Olá Marcos!
          Tente ver quais são as mensagens de erro do compilador e corrija. Ou baixe a versão 3.2.
          Cláudio

  2. 0

    Boa tarde Claudio! Mais uma vez Parabéns pelos seu excelentes projetos, estou com dificuldades para compilar alguns codigos seus , inclusive esse do Timer com PIC16F628A esta dando erro na platagem do LCB
    printf(env_lcd_d(“Timer Eletronico”));// nome do aparelho
    env_lcd_c(0xc0);//linha 2
    printf(env_lcd_d(“Larios.Tecnol.Ws”));//blog
    delay_ms(2000);//tempo de apresentação
    env_lcd_c(1);//limpa tela.
    Refiz a PCB no soft SprintLay 5.0 conforme segue links desde já fico muito grato forte abraço.
    https://www.facebook.com/groups/700366773388875/ Arquivos para download.
    https://www.facebook.com/928803753806423/photos/pcb.1132980150055448/1132979546722175/?type=3&theater PCB pagina Facebook.
    Eli Silva

      1. 0

        Bom dia Claudio ! Apoós seguir suas orientações , baixei a versão 3.249 do CCS Compiler e consgui compilar normalmente , muitissimo obrigado mais uma vez , sempre aprendo muito com os seu projetos … forte abraço.

    1. 0

      Olá Marcos!
      Verifique por favor, a nova versão para tempos curtos (1 ms a 9999 ms). Nela foi usado um disparo por borda de subida no pino 6, além de 3 saídas: Uma normal, uma invertida e outra que fornece um pulso de 1 mseg após o tempo escolhido ser alcançado.
      O display apresenta um contador de números de disparos realizados e na segunda linha, o tempo desejado para a temporização.
      Cláudio

  3. 0

    Boa noite Claudio estou fazendo alguns testes com lampadas estroboscópicas e o disparo das mesmas tem que ser entre esses tempos .abraço

  4. 0

    Boa noite Claudio estou precisando temporizar tempos entre 0,10 a 5 segundos poderia disponibilizar uma versão para esses tempos obrigado

    1. 0

      Olá Marcos!
      Tempos bem curtos, não é verdade! Pode compartilhar o uso? Talvez temporização para foto?
      Claudio

        1. 0

          Olá Marcos!
          Creio que o que pede não é apenas uma mudança de tempo. Você não vai disparar no final do tempo? O circuito atual liga e fica ligado até acabar o tempo. Descreva como funcionará a sua ideia, por favor.
          Cláudio

          1. 0

            perfeito Claudio o temporizador sera acionado por um radio controle a 500mts de distancia .usando esse mudança de tempo. abraços

          2. 0

            Olá Marcos!
            Obrigado por compartilhar o uso, mas o que gostaria de saber é se você usará como um temporizador normal. Ao chegar o sinal de rádio, ele liga e ficará ligado pelo tempo programado (p. ex. 0, 5 segundos) e desligará (modo normal).
            Ou ao chegar o sinal de rádio, espera desligado pelo fim do tempo e então liga (modo que precisa modificar mais a rotina)?
            Cláudio

          3. 0

            Olá Marcos!
            Então, recebe o sinal na tecla on (não usar off eu suponho), ficará a saída acionada pelo período ajustado e depois desligará, certo?
            Com o uso do esquema atual usando rele na saída, com certeza não conseguirá resposta rápida na casa inicial dos 10 mseg. Irá usar outra coisa no lugar do rele? Transistor? Triac? Fotoacoplador?
            Cláudio

  5. 0

    Fala Claudio, blz?
    Obrigado pelo projeto.
    Elaborei a PCB para este timer espero que possa ajudar o pessoal.
    Coloquei um transistor para amplificar o som do buzzer e no lugar do Cristal, usei um Ressonador para nao precisar usar os 2 capacitores.

    Abaixo Seguem os arquivos para fazer a pcb e um vídeo do Timer funcionando em teste na Protoboard.
    Um forte abraço meu amigo.

    PCB para imprimir e Simulação no Proteus:
    https://drive.google.com/folderview?id=0B5HFSntIQ8OKSWVRWjRMNmpQWHc&usp=sharing#grid

    Video teste na Protoboard:
    https://youtu.be/6DdM48JRT6M

    1. 0

      Olá Ricardo!
      Muito obrigado por disponibilizar os arquivos da placa de PCB. Creio que muitos do blog irão usa-lo.
      Muito sucesso em suas montagens !

      Cláudio

  6. 0

    Olá Claudio,
    Este projeto é grande para uma variedade de aplicações. E o que eu construí e ele funciona perfeitamente, eu tentei com um tempo de 20 min. e ele teve apenas uma diferença Mima 4 seg.
    Parabéns e obrigado.
    Se possível, seria bom ter uma versão do programa de conservação contempladas na memória o último conjunto tempo, quando utilizado para o mesmo horário várias vezes e, portanto, não teria de ser ajustada em cada evento.
    Não, se eu usei os botões, mas é um pouco difícil de colocar, por exemplo 1 minuto, porque se você pressionar o botão não mudar em breve 0-1 e se muito é brilhou a 2.
    Muito obrigado.

    Hola Claudio,
    Este proyecto esta muy bueno para una gran variedad de aplicaciones. Ya lo armé y funciona perfectamente, lo probé con una temporización de 20 min. y tuvo solo una míma diferencia de 4 seg.
    Felicitaciones y gracias.
    Si fuera posible, seria bueno tener una versión del programa que contemplara el guardar en memoria el último tiempo programado, para cuando se emplee el mismo tiempo de manera repetitiva, y asi no se tendría que estar ajustando en cada evento.
    No se si es por los botones que usé, pero me es un poco difícil poner, por ejemplo 1 minuto, ya que si se presiona el botón poco tiempo no cambia de 0 a 1 y si es mucho se pasa rápidamente hasta el 2.
    Muchas gracias.

  7. 0

    olá Claudio poderia disponibilizar também para quem só possui mplab,uma verão para compilar os projetos obrigado.

    1. 0

      Olá Marcos!
      Por favor, veja a nova versão anexa ao artigo. Poderá baixar o MPLABX-IDE , e em seguida, o compilador XC8(free) direto do site da Microchip.
      Cláudio

  8. 0

    teria como fazer esse mesmo projeto mas não usar o LCD e sim um display de sete seguementos pois ficaria mais barato pra ser montado ?
    Parabens pelo projeto amigo

    1. 1

      Olá Liliano!
      Muito obrigado por seu apreço e também por sua sugestão. Realmente os displays de 7 seguimentos são bem mais acessíveis do que o LCD, tanto no preço como na facilidade de se encontrar nas casas de material eletrônico. Irei ver isto em uma versão futura.

      Cláudio

Comments are closed.