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

Comments are closed.

Back To Top