CONTADOR DIGITAL UP/DOWN – COM PIC 16F628A (REF308)

Um contador up/down que salva contagem na EEprom em caso de falta de energia elétrica na rede…

Os contadores digitais são dispositivos que mostram uma contagem em um visor de LCD ou em displays de 7 seguimentos. O valor desta contagem pode ser incrementado ao apertar o botão “Up” ou decrementado se apertar o botão “Down”. Os contadores podem ser usados em muitas aplicações práticas, como placares esportivos, organizadores de fila, hodômetros, catracas eletrônicas, etc.
Este artigo tratará de um contador up/down que salva a contagem na EEprom interna do PIC. Veja o esquema abaixo:

Para controlar os processos de leitura de interruptores e multiplexação dos displays de 7 seguimentos foi usado o conhecido PIC 16F628A.
O portB aciona os seguimentos de cada display. Apenas o pino 13 foi usado como saída para um relé.
Este relé liga quando a contagem for diferente de zero e desliga em zero. Dependendo da aplicação talvez você prefira não usar esta saída.
O portA aciona os transistores drives dos displays ligados nos cátodos (ou ânodo, conforme a versão). Também serve de entrada para os interruptores de pressão momentânea para incrementar (Up) e decrementar (Down), além do interruptor para zerar a contagem e também a memória. Note que o pino 3 foi usado como um sensor de falta de energia. Em funcionamento este pino está em nível ‘1’ por meio do divisor de tensão e o diodo Zener de 5 Volts ligado na tensão de 12 Volts na fonte. Quando ocorre uma queda de tensão na rede elétrica, a tensão acumulada pelo capacitor de entrada da fonte começa a cair e quando chega em aproximadamente 8 Volts produzirá nível lógico ‘0’ no pino 3. Isto faz que a rotina salve a contagem na EEprom interna. Ao voltar a energia, na inicialização do programa, os registradores da contagem serão carregados com os valores salvos.
Por que foi usado este método de salvamento? Muitos preferem simplesmente ir salvando na EEprom a cada aperto em um dos botões. Isto significa que a memória EEprom será constantemente utilizada. Em certa aplicações, talvez tenha que acumular contagens altas e várias vezes por dia. Nesta situação, a EEprom poderá ter sua vida útil reduzida, com a perda do microcontrolador. O datasheet do PIC 16F628A informa logo na página inicial, o tempo de vida da EEprom: 40 anos para a retenção dos dados e 1 milhão de ciclos de escrita. Se queremos que ela dure o tempo de vida máximo então temos de descobrir quantas vezes podemos gravar uma mesma posição de memória por dia.

1000000 / (40 * 365 ) = 68 vezes.

No caso proposto, o salvamento ocorrerá somente ao desligar o equipamento, ou quando ocorre a falta de energia elétrica na rede, aumentando em muito a vida útil da EEprom interna.
Logicamente em montagens de pouco uso não haveria necessidade de ter esta preocupação com a vida da EEprom. Mas é sempre bom lembrar que tudo tem um tempo de vida, inclusive as memória internas do PIC e tomar cuidado em como as usamos.
Obs. Esta montagem é experimental, sendo de caráter didático, montada apenas em placa experimental (do tipo “Breadboard”), sujeita a “bugs” ainda não detectados. Está sendo fornecido os arquivos para que cada hobista possa alterar o programa segundo suas necessidades.

Segue abaixo uma pasta zipada com os arquivos da montagem. Ao descompactar, você encontrará 4 pastas, com versão usando 4 dígitos, 3 dígitos, 2 dígitos e 1 dígito. Encontrará esquemas e arquivos .hex para ânodo ou cátodo comum em cada uma das pastas.

CONTADOR UP_DOWN

Em 21/01/2018 foi postado esta nova versão, com ‘debounce’ de interruptores melhorado:

CONTADOR_U_D_E_RELE_V2_1

Em 13/06/2020 foi acrescentado esta versão alternativa, para 4 dígitos, sem botão ‘Down’, mas um botão ‘Mem’ em seu lugar. Contagem apenas crescente, com memorização do valor ao apertar botão ‘Mem’. Se o botão ‘Mem’ estiver apertado durante o pós reset, então os dígitos mostrarão o valor salvo:

contador_up_alterado

Manuais:
Datasheet do PIC16F628A

Curiosidades:
Por que parar de fumar?
O que devo saber sobre esteróides?
Conceito equilibrado sobre animais de estimação
Desatualizada ou à frente do seu tempo?
Como a vida se originou?

Outros assuntos:
O caminho para a felicidade
Como cuidar de um parente com uma doença terminal
Como controlar os gastos
Evolução ou Criação parte 1
Evolução ou Criação parte 2
Evolução ou Criação parte 3

Vídeos:
As maravilhas da criação revelam a glória de Deus
Em frente dos meus olhos
Porque Deus criou a Terra?
Aprenda a perdoar

Até o próximo artigo!

40 comments on “CONTADOR DIGITAL UP/DOWN – COM PIC 16F628A (REF308)

  1. conheci o site a pouco tempo e ja posso dizer sem duvida q e um dos melhores da web!! vc tem ai um projeto de um contador de pulsos programavel? tipo quero que conte ate o numero que eu escolher e depois ative o rele para desligar o motor. pode ser com displays lcd. por favor eu preciso muito para usar na minha rebobinadora de motor. aguardo resposta e obrigado desde ja!

    1. Olá Raimundo!
      Não tem ainda. Poderá sugerir um artigo sobre isto usando o Fórum na aba:
      Idéias para novos projetos

      Obrigado

  2. Olá, Claudio boa noite !!, fiz as alteraçoes up down 999 liga rele, como disse, deu tudo certo, tá do jeito que eu quero, valeu pela ajuda, abraço !!

  3. Olá, boa noite!,
    fiz alteraçao no 999 rele liga, pra 600 rele liga, nao entendo de programa, so alterei os numeros no lugar dos dig 0, dig1 e dig 2, limita em 600, compilei no ccs compiler 5.0, deu certo, só que funciona apagado, ce coloca o numero (1), aparece (E), que será? pode me dizer alguma coisa, compilador ?!!, bios !!????

    1. Olá Raimundo!
      Você deve estar usando provavelmente o display cátodo comum. Mas o programa está para ânodo comum. Altere então a seguinte linha, por simplesmente descomentá-la ( ou seja, apagar os // da frente):

      de:
      // #DEFINE CATODO_COMUM //descomente p/ catodo comum e comente p/ anodo comum

      para:

      #DEFINE CATODO_COMUM //descomente p/ catodo comum e comente p/ anodo comum

      Depois recompile para obter o hex correto.

  4. nóis de novo, o up down com dois digitos versao 2, acabei de montar, ele conta com os segmentos apagados, acende o contrario, por exemplo o numero 1, o display mostra uma letra E ou um 3 ao contrario, ja inverti o hex catodo pra anodo, to usando display catodo, da uma luz ai pra nois se possivel, agradeço sua paciencia !!

      1. Boa noite Claudio !, obrigado pela sua atençao, gravei o pic com a versao alternativa e funcionou bem, tambem fiz a versao 1 digito e deu certo,grato pela ajuda, um abraço !!

Comments are closed.

Back To Top