FAÇA UM RELÓGIO CONTROLADOR DE 6 CANAIS – COM PIC 16F628A E LCD (REF104)

Quantas vezes você desejou que um determinado aparelho já estivesse ligado quando você chegasse em casa? Ou então, que seu pãozinho estivesse pronto juntamente com o seu café da manhã? Se isto lhe parece interessante, leia mais…

Sem dúvida, a tecnologia prove meios de aumentar nossa comodidade em muitos aspectos. A montagem proposta aqui visa obter alguns benefícios práticos para o dia a dia. Trata-se de um relógio com calendário, com apresentação em LCD 16×2 e que conta com o recurso de se poder programar 6 canais com reles, para que possam acionar aparelhos nos horários a ser programado pelo usuário. Veja o esquema abaixo:

Podemos notar que usamos 6 pinos do microcontrolador para controlar o Lcd e também 4 interruptores. Estes são usados na programação, sendo o ‘Menu’, ‘Ajuste de horas’, ‘Ajuste de minutos’ e o ‘Ajuste de segundos’. Apertando o botão ‘Menu’ navegamos pelas telas de programação. Podemos acertar o ‘relógio’, o ‘dia da semana’, a data, mês e ano e a seguir, podemos programar a hora de ligar do canal 1, a hora de desligar o canal 1, indo até o canal 6. A ultima tela é de ‘Encerrar Ajustes’, onde apertando o botão de horas, ou minutos ou ainda de segundos, saímos do ‘modo de programação’.
Quanto a obtenção de horas precisas, foi optado por colocar um ci DS1302, sendo este um relógio de tempo real, com oscilador próprio a cristal de 32,768 Khz. Mais 3 pinos do PIC foram usados para a comunicação com este circuito integrado. As outras 6 saídas foram usadas para comandar, via transistores BC548, os reles que irão suportar as cargas dos mais variados aparelhos desejados.
A alimentação deverá ser feita com um adaptador de parede que forneça 12 volts contínuos ou pode ser feita a moda antiga, com transformador de 110v/12volts , somando os diodos retificadores e capacitores de filtros apropriados. Os reles usados são de 12 volts na bobina e deverão suportar nos contatos, as correntes dos equipamentos que se deseja ligar. Em geral, reles de 10 amperes de contato já são suficientes para a maioria das aplicações. Nota-se um grande simplicidade para se efetuar a montagem, mesmo em placa de protoboard.

ARQUIVO ASM

Quanto ao programa, optou-se por uma interrupção do timer 1 (poderia ter sido usado o timer 0 como opção) para gerar a cada 256 milissegundos, uma interrupção breve, que apenas seta um flag. Este sinaliza para atualizar os contadores do relógio com os contadores internos do DS1302, na rotina principal. Após atualizar, a rotina também compara os valores programados dos canais, contidos na EEprom, com estes contadores atualizados. No momento que os valores são iguais, a rotina irá ligar ou desligar uma determinada saída que controla um rele. Depois, a rotina também testa o botão ‘Menu’ e se estiver apertado, irá entrar em modo de programação, e desligará as interrupções. As rotinas são simples, com muitas repetições , sendo que poderia ter sido feita mais compacta fazendo mais uso do ponteiro da ram (FSR e INDF), em detrimento da simplicidade. Fez se uso do famoso ‘salto goto’, inclusive em paginas diferentes da ‘pagina zero’, carregando valores corretos no PCLATH para gerar saltos apropriados.

USO DO EQUIPAMENTO

Após carregar o código HEX no PIC, e coloca-lo na montagem, ao ligar irá mostrar na primeira linha do Lcd, as horas, minutos e segundos e na segunda linha, o dia da semana e depois, o dia, mês e ano.
Deverá acertar o relógio e calendário, por apertar o botão ‘Menu’ e navegar nas telas, bem como programar os horários desejados nos canais. Os intervalos aceitos na programação, poderão ser pequenos como um segundo e grandes como 23 horas, 59 minutos e 59 segundos. Use os botões adicionais para acertar hora, minutos e segundos. Programando o mesmo horário para ligar e para desligar, fará que um dado canal nunca atue (ficará desligado).

SUGESTÃO DE USO

O uso deste equipamento vai além do que se possa descrever. Por exemplo, poderia ser usado para simular a presença de pessoas em uma residência, por acionar luzes e outros aparelhos em um determinado horário. Veja a figura abaixo:

Uma outra possibilidade, tem que ver com a irrigação de jardins. Podemos programar vários horários e colocar em paralelos alguns canais para obter os resultados desejados. Veja abaixo esta sugestão:

Agora, esta sugestão apela para o conforto matinal. Você já deixa a água e o pó na cafeteira elétrica, e os ingredientes na máquina de fazer pão. O rádio já fica na estação preferida e pronto! Acordar com música, pão feito na hora e café da manhã! Veja abaixo:

Acredito que você leitor, já tenha em mente algo que gostaria de controlar com um circuito destes! Mãos a obra! Use a sua imaginação e divirta-se!

Atenção: Esta montagem é de carater didático, sendo montada e testada apenas em placa de protoboard, sendo sujeita a bugs ainda não detectados. São fornecidos os arquivos ASM e HEX, que poderão ser modificados conforme as necessidades dos hobistas.

Segue o arquivo ASM:

RELOGIO_CONTROL_ASM

Segue o arquivo HEX:

RELOGIO_CONTROL_HEX

Segue pasta zipada com o arquivo hex para baixar:

relogio_control

Caso deseje uma versão usando o circuito integrado DS1307 (i2c) clique aqui.

Manuais:

DS 1302
PIC 16F628A

Curiosidades:

20 modos de criar mais tempo
Saiba mais sobre os relógios de pulso
Compre tempo para ler e estudar
Já que não pode guardá-lo, use-o bem
É tudo culpa do ‘Destino’?
Sou viciado em aparelhos eletrônicos?
O que preciso saber sobre redes sociais? — Parte 1
Seja pontual!
As pessoas nos tempos bíblicos realmente viviam mais?

Outros assuntos:
Como disciplinar seu filho adolescente
Por que eu me corto?
Desempenhem bem o papel de pais
Como fazer seu segundo casamento dar certo
O que acontece quando morremos?
Como criar filhos responsáveis
Como administrar o seu dinheiro
Ensine valores morais a seus filhos
Ensine seus filhos bons principios com atividades de colorir
Como posso ter ânimo para exercitar
Como posso controlar meu peso?
Entrevista com um bioquímico
Adolescentes- O que fazer se estou sofrendo bullying?
Como evitar ferir com palavras?
Como tratar seu cônjuge com respeito?

Até o próximo artigo!!!

74 comments on “FAÇA UM RELÓGIO CONTROLADOR DE 6 CANAIS – COM PIC 16F628A E LCD (REF104)

  1. Claudio bom dia,
    Parabéns por este excelente trabalho.
    (estou usando o tradutor do Google).
    Eu tenho um problema, eu amei o circuito em um PCB, mas o visor LCD mostra caracteres japoneses, que estão constantemente em movimento.
    Quando eu pressionar os botões se houver mudanças, eu estou usando o JHD162A.
    Gostaria de receber sua ajuda.
    Saudações.

  2. Olá Claudio boa tarde a um tempo atras quando vc publicou este projeto tbm foi publicado uma versão para o DS 1307 o qual montei e ficou 100% porem agora encontrei perdido aqui um DS1302 e montei esta versão acima porem quando entro no menu para ajustar a hora o display somente zera os digitos nw mudando nem para mais nem para menos ele exibe somente zero ja no ajuste do dia da semana as opçoes vão ate segunda feira ou seja exibe domingo e segunda e para por ai,ja nos ajustes de tempo das temporizações ele funciona mudando os digitos para o valor desejado vc pode me dar uma luz de onde posso ter errado pq estou a manha inteira tentando descobrir e ainda nw encontrei nada.Desde ja obrigado e um abraço Edmilson LS

    1. Olá Edmilson! Verifique por favor, as ligações quanto a esquecimento de algum componente. Certifique de estar usando um cristal de 32khz. Verifique também se os resistores são de valor corretos, especialmente os dos botões.
      Cláudio

  3. Bom dia Claudio. Não sei se estou postando no local certo, mas preciso de ajuda com o timer do pic 16f628a, preciso fazer um contador de tempo variável (que conte quando acionado uma entrada do pic os seguintes tempos: 5 segundos, 10 segundos, 15 segundos; 30 segundos independentes e mesmos contando o tempo o programa continue rodando e recebendo outros comandos). Pode me ajudar? Não entendo C ainda estou tentando fazer em ASM que é a linguagem que entendo um pouco mais. Desde já agradeço, meu Skype é tiagofass@hotmail.com. Grato

    1. Olá Tiago! Fica difícil saber o que fazer, sem mais detalhes do seu projeto. Quando será 5, ou 10 ou 15 seg? Terá botões que acionam? Ou níveis de tensão?
      Cláudio

  4. boa tarde claudio , montei esse circuito e funcionou direitinho , mas quando desligo a alimentação e ligo novamente tudo volta ao normal menos os segundos que sempre volta a 00 segundos . é assim mesmo ??

    1. Olá Michel! É normal, pois o pic fica sem alimentação e ao reiniciar apresentará 0 seg. Se isto te incomodar, mantenha o pic também alimentado pela bateria.
      Cláudio

    2. Olá michaelverdan… com a permissão do claudio consegui resolver esta situação de começar o relogio quando e ligado o circuito com os segundos em 00, comente este comando que esta enviando ao ds1302 para zerar os segundos

      CLRF BUFFER ;LIBERA ESCRITA NO DS1302
      MOVLW C_CONTROL
      CALL W_SPI
      ;================================================
      ;comente abaixo, desta forma ele carrega o ;que esta rodando no ds1302
      ;CLRF BUFFER ;LIGA RELOGIO
      ;MOVLW C_SEC
      ;CALL W_SPI
      ;================================================
      CLRF R_MENU

      aqui comigo deu certo ok, abraços a todos :mrgreen:

      1. Olá Foxconn! Fique sempre a vontade em dar sugestões , idéias e aprimoramentos. Estamos todos aprendendo com os sucessos mútuos, desde que compartilhemos.
        Cláudio

        1. :mrgreen: Opa com certeza, e compartilhando que se aprende, estou alterando uma versão deste exemplo aqui, mais com display de 8×2 e uma saída so, estou acertando as alterações e mando para vc postar aos demais do fórum ok, abraços…

  5. 🙄 Olá Claudio, este exemplo do relógio controlador, eu estou tentando colocar uma mensagem para ser apresentada a cada 2 minutos ou mais não estou conseguindo esta simples proeza, vc poderia dar uma dica para mim, mais uma vez obrigado ai pela a sua atenção….

    1. Olá Agnaldo! Tente incrementar um contador cada vez que houver um incremento no contador de minutos. Compare com um valor, como por exemplo = 2 (2 minutos). Se for igual, vai para rotina da mensagem, deixa por um pequeno tempo (delay de 500 ms) e depois zera este contador, para iniciar o processo continuamente. Boa diversão!
      Claudio

      1. :mrgreen: Ok Claudio, bem lembrado eu tinha feito um esquema desta forma para decrementar dentro interrupção, vou testar aqui valeu 😉

Comments are closed.

Back To Top