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.
Em 21/01/2018 foi postado esta nova versão, com ‘debounce’ de interruptores melhorado:
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:
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!
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!
Tem aí um programa de uma roleta, pic 16f628 junto com outro ci pra uns 16 leds ?
Olá Raimundo!
Não tem ainda. Poderá sugerir um artigo sobre isto usando o Fórum na aba:
Idéias para novos projetos
Obrigado
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 !!
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 !!????
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.
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 !!
Olá Raimundo!
Obrigado pelo retorno desta informação. Em breve estarei atualizando a pasta destes arquivos.
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 !!