FAÇA UM HORÍMETRO DIGITAL – C/ PIC 16F628A (REF187)

Mais confiabilidade nas manutenções de equipamentos…

Geralmente, em um veículo de passeio, usamos o hodômetro para obter a informação de quando devemos fazer a manutenção, como por exemplo, a substituição do óleo do motor. Muitos já estão acostumados a fazer esta troca a cada 5.000 km rodados.
Mas que dizer de uma empilhadeira ou mesmo uma máquina estacionária (ex. gerador elétrico acionado por um motor diesel)? A maioria da empilhadeiras não possuem hodômetro. E os equipamentos estacionários nem fariam sentido ter um hodômetro, pois não se locomovem. Então, a maneira encontrada para se fazer a manutenção nestes equipamentos foi usar as ‘horas trabalhadas’ como uma informação para se determinar quando fazer reparos preventivos, baseado na vida útil esperada das peças da máquina. Em outras palavras, trocamos as peças que possivelmente iriam quebrar ou causar mau funcionamento antes que isto aconteça. O resultado é que temos um equipamento sempre em bom estado e operacional. Também, os custos de ‘se deixar quebrar para depois arrumar’ são muito maiores. Peças adicionais poderão ser atingidas fazendo o reparo mais demorado. Tome a situação de quem não troca o óleo do motor, no tempo correto. Isto, a longo prazo, poderá danificar o motor e até mesmo leva-lo a ‘travar’ (fundir), por falta de lubrificação. Sim, óleo tem tempo máximo de uso e depois ele perde suas características de lubrificação ( o motor se desgasta mais rápido), além de se impregnar com resíduos da combustão. Ainda mais com o uso de combustíveis adulterados, que leva a formar a famosa ‘borra no motor’, situação está que se resolve somente desmontando completamente o motor para limpeza e reparos.
Pensando em quem deseja montar o seu próprio horímetro, fiz algumas experiências e obtive o esquema abaixo:

Para esta montagem foi usado o pic 16F628A, por ter pinos suficientes para uso com display de 7 seguimentos, de forma multiplexada.
Foram usados 5 dígitos, sendo os 4 primeiros (k4… k1) para indicar as horas completas de 0 a 9999 horas. O último dígito após a virgula (k0) fornece os minutos em forma centesimal ou seja, cada unidade equivale a 6 minutos.
O horímetro é um relógio que marca horas de forma cumulativa. Se estiver alimentado, irá prosseguir com a contagem de tempo do ponto onde foi desligado. Por exemplo: A máquina foi desligada (desligou o horímetro também). Nesta ocasião marcava ‘302,4’. Passou uma noite inteira e na manhã seguinte, ao ligar a máquina, o horímetro será ligado também e marcará ‘302,4’. A medida que a máquina continua ligada, o horímetro irá continuar incrementando seus contadores e mostrando o tempo correspondente nos dígitos.
Portanto, a informação dos dígitos tem que ser guardada na memória EEprom do pic. No meu pensamento ocorreu duas maneiras de se fazer isto:

1) Usar um pino do pic sem nenhum capacitor de filtro, ligado por meio de uma malha resistiva, a alimentação de entrada do equipamento. Já na alimentação do pic (+ 5 volts) usaria bons capacitores para manter a tensão até acabar a gravação na EEprom do pic , ao desligar. Funcionamento: Desligando a alimentação, o pino resetaria e entraria na rotina que salva os contadores na EEprom. Os bons capacitores mantém a tensão por tempo suficiente para acabar a gravação (+- 2 ms por byte).

2) A medida que incrementa um contador, também incrementa na EEprom.

O primeiro sistema necessita mais uma port para receber a informação de desligamento e aumentaria as quantidades de peças para a montagem (capacitores maiores, diodos adicionais, resistores adicionais, etc).
Optei pela segunda opção. Mas usar este método será que não iria danificar a EEprom com o passar do tempo? Realmente, as memórias EEprom tem uma quantidade de vezes que podem ser escritas e apagadas, podendo depois apresentar mau funcionamento. Consultando o datasheet do pic 16F628A, nele fornece o valor de 1000.000 (um milhão) de ciclo de apagamento/escrita da EEprom. Se o contador de horas incrementar a cada hora, dará um milhão de horas (por volta de 114 anos, mas a vida da memória é garantida por 40 anos apenas). Então, sem problemas. Mas que dizer dos minutos? Neste caso, teremos um problema, pois os incrementos dos minutos são 60 vezes mais rápidos do que das horas. Isto daria uma vida estimada de quase 2 anos para a EEprom. O que fazer? Desistir e migrar para a primeira solução?
Lembrei de ter visto alguma coisa nas informações fornecidas pela então Motorola, que explicava como usar as suas próprias flash para guardar informações do usuário. E o processo fazia com que o próximo dado fosse gravado na casa seguinte, sem ter que apagar todo o bloco. Então surgiu a ideia de usar os 4 primeiros bytes da EEprom para guardar as horas e o restante, do endereço 4 até o 127, para gravar os minutos por este método. Assim, a cada incremento do minuto, ele será salvo em alguma posição entre 4 e 127. A rotina de leitura simplesmente procura um número que não seja 0xFF, sequencialmente, do endereço 4 até o 127. Se achar um valor diferente de 0xFF, por exemplo, na posição 54, então retorna este endereço que será usado para pegar o valor salvo. Assim, com este arranjo, a vida da EEprom é mantida dentro da expectativa máxima (40 anos). Mas que dizer dos segundos? Estes infelizmente, não pode ser salvo por este método, por que a memória EEprom é limitada em 128 bytes. Ao reiniciar, usamos um valor médio para os segundos (30 seg).
Quanto aos displays, temos uma versão para anodo comum e outra para catodo comum, oferecendo uma certa versatilidade. Poderá obtê-las, baixando a pasta com os arquivos desta montagem, no final do artigo.
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 suas várias versões:

HORIMETRO_FILES

Em 26/08/2015 foi atualizado esta montagem, com opção de zeramento do horímetro, por meio de um ‘jumper’. Para realizar o zeramento, siga os passos:
1) Desligue a alimentação.
2) Coloque o jumper em “J1”.
3) Religue a alimentação.
4) Aguarde mostrar “E” no display
5) Desligue a alimentação.
6) Retire o jumper.
7) Religue a alimentação para uso normal (deverá mostrar no display ‘0.0’)

Segue abaixo a pasta com esta versão para CCS C Compiler, com opção para anodo comum ou catodo comum:

HORIMETRO_ERASE_CCS

Segue abaixo a pasta com esta versão para XC8 C Compiler, com opção para anodo comum ou catodo comum:

HORIMETRO_ERASE_XC8

Manuais:

PIC 16F628A
LCD

Curiosidades:
Como os ouvidos detectam os sons
Como funciona a ultra-sonografia
O que não se vê a olho nu
Os elementos químicos surgiram por acaso?
Você se exercita o suficiente?
Obesidade infantil — o que pode ser feito?
Pernaltas — as aves que nunca param de viajar
Seda — “a rainha das fibras”
Pressão alta: prevenção e controle

Assuntos Bíblicos:

Como Deus encara a guerra?
Você Sabia(1)?
Você Sabia (2)?
Perdoe generosamente
Quem pode acabar com a pobreza?
Será que existe — vida após a morte?

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

5 comments on “FAÇA UM HORÍMETRO DIGITAL – C/ PIC 16F628A (REF187)

  1. Boa noite Claudio, Gostei Desse Horímetro, Posso Fazer Uma Pergunta? No Caso de Precisar Ressetar (zerar)Por Fazer Uso do Aparelho Em Outro Equipamento, Teria Jeito? Não Estou Querendo Arrumar Mais Trabalho Pra Você, Só Pra Saber se é Possível, Obr.

    1. Olá Bagini!
      Os dados são salvos na EEprom. Basta entrar com o programador no pic e apagar a EEprom. Outra opção seria colocar um botão de ‘Reset_EEprom’ somando uma rotina de apagamento.
      Cláudio

        1. Olá BAGINI!
          Postei junto ao artigo do horímetro, uma versão que se pode resetar através de um jumper.
          Cláudio

          1. Bom Dia Claudio, E Fico Agradecido Pela Atenção, Até Que Pegar Um Pic E Ler a EEPROM Num Gravador Fica Fácil, Porem Alterar ou Acrescentar Uma Escrita No .ASM Fica Mais Difícil Pra Não Quem Entende De Programação(no meu caso)Baixei Ele e Outra Hora Qualquer Montarei Pra Curtir, Rs Rs. Obr. Mais Uma Vês. Att.

Comments are closed.

Back To Top