Existem diferentes formas de se montar um relógio digital. A mais didática usa do ci (circuito integrado) 555, que pode ser configurado para gerar um pulso elétrico de um em um segundo (1 Hz). Junto de contadores e decodificadores, esse pulso é transmitido para displays de 7 segmentos que marcam a hora. A desvantagem desse circuito é a quantidade de ci's e a quantidade de ligações necessárias.
Outra forma de se montar um relógio é através dos PIC's (Programmable Intelligent Computer), que são uma família de ci's programáveis. A linguagem de programação pouco importa, contanto que a lógica possa ser traduzida para comandos. Utilizo linguagem C para programar e para passar do computador para o PIC, o gravador K150. Aprendi a gravar aqui https://www.filipeflop.com/blog/como-utilizar-gravador-de-pic-usb-k150/. A vantagem de se utilizar um PIC para montar um relógio está em reduzir o tamanho do circuito e atribuir mais funções além de simplesmente contar o tempo, como alarme, sons, ajuste fino, etc.
Utilizei do PIC16F877A pois ele possui muitas saídas digitais. Através de cada saída digital, pode-se controlar o acender e apagar dos LED's presentes nos displays. Como usei quatro displays de 7 segmentos, são 28 LED's associados a 28 saídas digitais. Abaixo dá para ver a quantidade de saídas digitais desse PIC, em colorido:
Para formar o número zero, por exemplo, fiz a seguinte sequência de códigos (considerando que a saída B0 está ligada com o LED a, B1 com o LED b, e assim por diante):
O resto do código consiste em mudar a combinação de saídas ativas para formar outros dígitos, atualizando a cada minuto e respeitando o sistema de contagem de hora. Planejei para que o relógio tivesse um único botão de ajuste de hora, que faz a contagem avançar rapidamente. Preciso admitir que foi uma ideia horrível, quem gosta de ficar 10 minutos segurando um botão para acertar a hora?? Enfim, após finalizado o código, testei no Proteus e montei o design da placa:
Para alimentação, montei uma fonte de 5V na própria placa e coloquei um potenciômetro em série com os displays, para ajustar o brilho. Boas práticas de eletrônica exigiriam um resistor para cada LED dos displays, mas dá para viver assim.
Não vou especificar aqui os detalhes da construção da placa (vou fazer outro post para isso), mas houveram certas falhas nas trilhas do circuito que fez a soldagem dos componentes bem ruim.
Atualmente um dos LEDs do segundo display não acende (problema de toda gambiarra que tive que fazer para soldar), como dá para ver na foto acima. Definitivamente há muito que melhorar para as próximas versões. Para quem quiser ver o código, vou disponibiliza-lo (duvido que alguém entenda algo, nem eu entendo mais minha lógica)
Código em txt:
Obs.: não me julgue pelo código, prometo melhorar nas próximas versões
Positivos:
- Circuito simples (para um relógio digital);
- Contagem de tempo precisa.
Negativos:
- Ajuste de hora muito demorado;
- Acabamento ruim;
- Soldagem horrível.
Comentários
Postar um comentário