FAÇA UM TIMER PROGRAMÁVEL – COM PIC 16F628A E DISPLAYS DE 7 SEGUIMENTOS (REF189)

Um simples Timer de 1 segundos a 59 minutos usando 4 displays de 7 seguimentos…

Os timers realmente podem ser muito útil em situações que precisamos desligar um equipamento após alguns minutos, de forma automática. Esta versão utiliza displays de 7 seguimentos. Veja o esquema abaixo:

Visto que o uso de displays de 7 seguimento consome muitos pinos do microcontrolador (12 pinos), foi necessário reaproveitar alguns dos pinos para obter informação dos interruptores. Por isso, os pinos 1, 17 e 18 tem dupla funcão:
1) como entrada para os interruptores de ‘on/pause’, ‘min’ e ‘seg’.
2) como saída para acionar os anodos dos displays.
Também o pino 3 trabalha como saída para o rele e também para o disco piezoelétrico (apenas disco piezoelétrico simples).
Ao dar o ‘start’, o rele liga e se mantém ligado. Ao terminar o tempo, a mesma saída gera uma onda quadrada que produz som no disco piezo, mas não consegue manter ligado o rele.
A precisão do tempo de 1 segundo é mantida por um cristal de 4 mhz. O timer 0 gera interrupção a cada 16,3 ms. Para obter o tempo correto a partir deste valor, foi usado uma rotina baseado no algorítimo ‘Bresenham‘, a chamada ‘rotina de acúmulo de erros’. Este método foi analisado brevemente no livro ‘Livro Microcontroladores PIC Programação em C – Fábio Pereira’. Poderá ver uma explicação bem detalhada deste tópico em RomanBlack.
Com respeito aos 2 pontos entre os displays, pode ser feito com uso de 2 leds entre os displays espaçados, dois antes e dois depois. Outra opção, é usar os pontos decimais do próprio display. Mas neste caso, um dos displays deverá ser montado invertido, de cabeça para baixo, de modo que o ponto fique para cima. Lembre de inverter os seguimentos para acenderem de forma correta (veja o esquema).
Ao ligar o aparelho, deverá aparecer ’00:00′, sem piscar os pontos. Ao pressionar o botão ‘min’, começa a incrementar os minutos e o mesmo com o botão ‘seg’ para os segundos. Após ajustar o tempo desejado, basta pressionar o botão ‘On/Pause’ para começar a funcionar, ligando o rele e decrementando a cada segundo os displays (também começa a piscar os 2 pontos). Se o botão ‘On/Pause’ for novamente pressionado, a contagem congela e o rele desliga. Na condição de ‘ligado’ o Timer conta de forma regressiva até desligar o rele, soando o aviso com 5 toques de ‘beep’.
Visto que alguns preferem montagem com display ‘anodo comum’, muitas vezes, por já ter em seu material eletrônico, outros o preferem em ‘catodo comum’. No arquivo “C” tem como compilar em ambas as versões, apenas alterando um ‘#define’ no começo do programa. Para facilitar, na pasta fornecida com o material da montagem, temos as 2 versões com esquema e hex.
Poderá, se desejar, obter uma versão usando display LCD acessando o artigo FAÇA UM TIMER PROGRAMÁVEL – COM PIC 16F628A E DISPLAY LCD 16X2 (REF188).

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 de displays (compilador CCS C):

TIMER_7SEG_CCS_FILES

Como opção, segue a pasta com os arquivos para esta montagem, nas duas versões de displays (compilador XC8 – MicroChip ‘free’):

TIMER_7SEG_XC8_FILES

Como outra opção, segue a pasta com os arquivos para esta montagem, nas duas versões de displays (compilador MikroC):

TIMER_7SEG_MIKROC_FILES

Em 25/12/2020 foi postado esta versão, com recarga do valor anteriormente ajustado. Ao fim de um período de tempo, o valor de tempo anteriormente ajustado será novamente visível no display, bastando dar ‘start’ para recomeçar um novo ciclo.  A pasta zipada abaixo contém os arquivos para compiladores: CCS C, Mikroc For Pic, Mplab-IDE (XC8 COMPILER) e GREAT COW BASIC (em assembly e basic):

TIMER_7SEG_REC_V2_ZIP

Manuais:
PIC 16F628A
DISPLAY 7 SEGUIMENTOS

Curiosidades:
Plantas com habilidade matemática
Podemos confiar nos noticiários?
A capacidade de armazenamento do DNA
Os desafios da menopausa
As penas do pinguim-imperador
O resistente cérebro do esquilo-do-ártico
A visão embaçada da papa-moscas
O sistema de navegação do fuselo

Assuntos Bíblicos:
A vida sem visão
O fim do mundo
Um matemático fala de sua fé
Como posso causar uma boa impressão?
Uma especialista em doenças renais fala de sua fé

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

35 comments on “FAÇA UM TIMER PROGRAMÁVEL – COM PIC 16F628A E DISPLAYS DE 7 SEGUIMENTOS (REF189)

  1. Boa tarde, Claudio! Montei o circuito más só atraca o relé se eu desconectar o gnd do buzzer porém o buzzer não funciona, com o gnd do buzzer conectado se eu apertar a tecla para pausar ele não pausa, já verifiquei essa parte do circuito e esta correta a montagem, você tem alguma ideia do que fazer neste caso.

    1. Ola Jura!
      Por favor, certifique que esteja usando um buzzer piezoelétrico. Estes tem uma resistência ohmica elevada. Já os magnéticos tem baixa resistência ohmica que causa um curto no sinal que acionaria o relé. Meça o valor dele com multitester na escala ohmica. Se o valor for baixo, está usando o buzzer errado.
      Cláudio

        1. Olá Jura!
          Este buzzer que você tem funciona simplesmente alimentando com 5 volts (está escrito + e – junto aos terminais) ou é realmente apenas um disco piezoelétrico sem nenhuma eletrônica internamente?
          O circuito foi projetado para um disco piezoelétrico simples, sem eletrônica interna.
          Cláudio

          1. Boa tarde, Claudio! Tirei um disco piezoelétrico simples de uma sucata de telefone e funcionou perfeitamente, muito bom.

  2. Boa tarde, Claudio! Duvida, no esquema tem lá o circuito oscilador externo com cristal e capacitores, o programa não esta configurado o oscilador externo, configura o oscilador externo e usa o cristal e capacitores ou deixa o programa do jeito que esta e tira o circuito oscilador, há diferença no funcionamento?

  3. Hola Claudio: Me dirijo a usted ya que he estado buscando un timer en internet y los que he encontrado no cumplen la función que deseo. He leído su artículo y éste timer hace justo lo que quiero. Lamentablemente lo he probado en una placa experimental con los distintos archivos HEX y solo me encienden los diplay, pero no puedo ingresar el tiempo para que funcione. No se si tendrá algo que ver que no he puesto los display de los segundos, éstos no los necesito, solamente voy a contar minutos.
    Le agradezco alguna información para ver si puedo hacer funcionar su timer. Entiendo de electrónica pero no de programación.

    MUCHAS GRACIAS
    FERNANDO
    hard964@hotmail.com

    1. Olá Fernando!
      Creio que o problema seja possivelmente a falta de polarização correta nos pinos 17 e 18.
      Por favor, certifique de manter os resistores de 1k e 10 k nos pinos 18 do PIC ( e o interruptor de ajuste de minutos) e de colocar apenas o de 10k ao Vcc, no pino 17. Eles são necessários para dar o nível correto de funcionamento para o interruptor de ajuste de minutos , uma vez que não usará o de segundos e nem os displays A1 e A0 de segundos. Caso tenha algum problema de nível de tensão, reduza o resistor de 1k para 470 ohms e teste.

      Cláudio

      1. Huuuurrrraaaaaaa!!!!!!! 😛 Muchas gracias Claudio, esta funcionando perfectamente, ahora no me pedirán más que controle el tiempo de cocción de la pasta en casa, JAJAJAJAJA. Tengo una consulta ya que los viejos a veces oprimen mal los botones. Si agrego un pulsador en el pin 4, el cual al pulsarlo conmutaría GND, éste funcionaría como RESET ?

        He encontrado muy buenos proyectos en el blog, con tiempo iré implementando algún otro al hogar. FELICITACIONES

        1. Olá Fernando!
          Fico feliz com o sucesso de sua montagem! Parabéns! Se adicionar um botão no pino 4 ao GND irá causar um reset ao aperta-lo, fazendo retornar a condição inicial de funcionamento. Verifique se isto atende a sua necessidade.
          Cláudio

          1. Ok, de nuevo muchas gracias y le agregaré el pulsador de reset por si se equivoca pueda comenzar de nuevo. Por su respuesta creo que solo hay que agregar el pulsador al circuito, no hay que modificar nada en el programa ?

          2. Ahora sí está pronto con todo y Reset. Tenía un archivo hex de 4k y otro de 3k. El de 3k no tiene Reset el de 4K si.
            Ya he diseñado el pcb así que la semana próxima lo estaré armando. Si usted desea el pcb se lo envío con mucho gusto, o para alguien que lo quiera. Con 2 dígitos la medida del pcb es 53,5mm x 61mm. Más adelante aré el proyecto completo.

            NUEVAMENTE MUCHAS GRACIAS.
            SALUDOS CORDIALES DESDE URUGUAY.
            FERNANDO

  4. Olá Claudio,
    Eu realmente gosto deste projeto e funciona muito bem, obrigado.

    Hola Claudio,
    Me gusto mucho este proyecto y funciona muy bien, gracias.

  5. Olá, Cláudio!
    Sempre aqui apreciando suas montagens.
    Esse timer me interessou bastante devido a facilidade da montagem por usar poucos componentes, além deles serem baratos e de fácil obtenção.
    Então resolvi montar e ainda dei uma “encrementada” nele colocando um controle remoto, onde junto aos botões liguei um PIC12F675 programado para receber os sinais de um controle desses de TV (foi outra montagem sua o “RECEPTOR PARA CONTROLE REMOTO INFRAVERMELHO DE 5 CANAIS COM PIC 12F675”). Com poucas alterações nos programas, fiz os dois “PICs” se comunicarem. Eu sei que poderia usar apenas um e ligar o Sensor InfraRED no 16F628, mas devido a falta de pinos sobrando resolvi deixar prá lá.

    Somente depois que terminei a montagem, me veio a seguinte ideia na cabeça:
    Quando usar Displays de 7 segmentos e PIC, poderia também usar um “Decodificador BCD” do tipo 4511 (catodo comum), ou o 7447 (anodo comum), esses CIs custam barato e usam apenas 4 pinos do PIC (ao invés de 7), além de tornar o programa mais simples (pois não precisa fazer linhas para escolher se é catodo ou anodo comum).

    1. Olá Renato!
      Que bom que você já está ‘se virando bem’ com os pics. A sua ideia de usar decodificadores BCD é válida e sobra realmente mais 4 pinos. Eu tenho evitado ci’s adicionais nas minhas montagens para simplificar na hora de se fazer uma placa de pcb.
      Agradeço a sua sugestão e as expressões de apreço

      Cláudio

      1. Sim, entendi. É que no meu caso fica mais fácil, porque quando faço montagens que usam vários CIs, eu uso aquelas placas perfuradas (que eu acho meio “gambiarra”, mas são práticas e funcionais).

Comments are closed.

Back To Top