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

2

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

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

2

35 comentários sobre “FAÇA UM TIMER PROGRAMÁVEL – COM PIC 16F628A E DISPLAYS DE 7 SEGUIMENTOS (REF189)

  1. 0

    Amigo Claudio Larios, Eu coloque o projeto no proteus antes de fazer um circuito para montar a contagem regressiva tá funcionar mais o pino 3 do RA4 não tá saindo a tensão. para ligar o relê, você pode me da uma dica para ver se funcionar no proteus. obrigado.
    florisvaldo@yahoo.com

    1. 0

      Olá Florisvaldo!
      Não faço uso do Proteus, portanto não saberia ajudar. Mas uma coisa talvez ajude: O pino 3 é ‘open-colector’ ou seja, não fornece tensão, apenas drena para o gnd. Por isso, no esquema foi colocado o resistor de 470 Ohms, justamente para fornecer o nível ‘1’ através dele. Verifique se não esqueceu de inclui-lo no seu projeto.
      Claudio

        1. 0

          Olá Florisvaldo!
          Os arquivos c geralmente podem ser portados de um compilador para outro apenas mudando a sintaxe de algumas palavras reservadas de cada compilador. Já experimentou tentar a compilação?
          Cláudio

  2. 0

    Olá Claudio Larios. Sou tecnico em eletrônica, mas não entendo nada de Programação de PIC. Estou precisando de um timer com 3 displays de 7 segmentos, que faça a temporização de 0,1 décimos de segundos até 2,5 segundos. Vc poderia me ajudar com isso?

    1. 0

      Olá Edmilsonjunior!
      Poderia compartilhar a aplicação deste Timer? Fotografias?
      3 digitos, então seria centésimos de segundo no digito menos significativo, é isto mesmo?
      Cláudio

      1. 0

        Claudio Larios, seria para um controlador de maquina de RX antiga. O pic dela desprogramou e por ser antiga não existe mais peça para reposição. O controle dela utiliza 3 displays de 7 segmentos. Existe o botão de aumentar, diminuir, iniciar e outro de parar ( 4 botões no total ). Ela fazia a contagem de 0.1 segundo até 2.50 segundos. Ao digitar o segundo pretendido, apertava o botão de iniciar e acionava um relé, o qual ficava alimentado até o final do tempo programado. Estava querendo montar um novo circuito. Ele utilizava o PIC16F873-04/SP

        1. 0

          Olá Edmilsonjunior!
          Só uma pergunta de curiosidade: Este tipo de equipamento não tem que ter alguma certificação para poder ser usado, ou algo do tipo?
          Cláudio

          1. 0

            É utilizado na construção civil, para ver o solo. Deve ser certificado. É portátil e muito simples o uso. Como lhe informei, vc programa o tempo que vai de 0,1 segundos até 2,50 segundos. Quando aperta start, ele arma um relé que se desliga após o fim do tempo programado. Se puder me ajudar com isto fico agradecido. Se puder também criar um projeto e cobrar por ele, fique a vontade. Ou se conhecer alguém que trabalhe criando estes projetos e puder me informar, ficarei grato. Estou procurando alguém que entenda de programação de PIC, como vc para resolver isto. Qualquer coisa, entra em contato por email comigo, para conversarmos.

          2. 0

            Olá Edmilsonjunior!
            Obrigado por matar a minha curiosidade. Percebo que tem urgência no assunto. Quem sabe algum programador que esteja lendo este comentário possa oferecer seus préstimos. Infelizmente não disponho de tempo, mas quem sabe, no futuro possa publicar um artigo sobre temporizadores de curto período.
            Cláudio

          3. 0

            Blz Claudio Larios, obrigado pela atenção. Neste projeto só vou querer o esquema e o arquivo .hex para gravar no PIC. A parte de elaboração e confecção do circuito impresso, eu mesmo faço. Vc teria alguém que vc conheça que trabalhe com estes projetos? Não conheço ninguém, e não encontrei na net.

          4. 0

            Olá Edmilson Junior!
            Como sou apenas hobista nesta área, eu não conheço quem trabalha com isto. Tente encontrar programadores “freelancer” em foruns de programação de microcontroladores.
            Cláudio

  3. 0

    Tenho um circuito onde o display de sete segmentos c.c estão ligado nos seguintes pinos do pic16f628a:
    1, 2, 9, 15, 16, 17, 18 ou seja os pinos 1, 2,15, 16, 17, 18 correspondem ao PORTA e o pino 9 ao PORTB, gostaria de adaptar o código do seu temporizador, no seu exemplo todos os pinos do display estão ligados ao PORTB, o que aparentemente torna mais fácil a programação, agora a pergunta como poderia fazer para funcionar o display nas condições de ligação da minha placa, teria como dar uma idéia um exemplo de como fazer para funcionar o timer se fosse ser ligado nos pinos conforme a minha placa?

    1. 0

      Olá Jura!
      O pino 16 não poderá ser usado para o display pois é necessário ligar o cristal. Portanto , não conseguirá usar esta placa para esta montagem.
      Cláudio

        1. 0

          Olá Jura!
          Até pode se não requerer precisão. Mas como você deve ter notado, o acesso aos pinos é feito por bytes para justamente facilitar o programa. Eu não saberia te dizer quantas mudanças necessitaria para trocar os pinos para o que deseja, pois alguns deles tem dupla função. Creio que talvez seja mais fácil você iniciar um novo projeto.
          Cláudio

  4. 0

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

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

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

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

  5. 0

    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?

  6. 0

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

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

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

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

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

            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

  7. 0

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

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

  8. 0

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

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

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

Os comentários estão fechados.