Relógio binário. Relógio no microcontrolador AVR com DS1307

Este relógio de pulso digital exibe a hora em binário porque requer menos LEDs para exibir a hora do que os relógios convencionais com indicadores digitais, e a originalidade estará no mesmo nível. O cristal 32C417 comum a 32,786 kHz foi usado para operar o PIC16F527 no modo de baixa potência e ajudar a melhorar a precisão do tempo. Um cinto de tecido adequado foi usado para usar no pulso.

O microcontrolador PIC16F527 foi utilizado aqui por possuir o menor pacote disponível. O relógio é alimentado por baterias CR2032 em um suporte especial. Esta bateria tem uma capacidade decente, embora seja apenas do tamanho de uma moeda. Para reduzir a área da PCB e o custo do projeto, um único resistor de têmpera foi escolhido para todo o bloco de LED SMD.

Você pode ampliar a imagem salvando-a em seu computador. O design do circuito aqui é baseado em uma placa de circuito impresso padrão de duas camadas.

E uma pulseira padrão de 20 mm cabe dentro dos recortes.

Algoritmo de operação do relógio

O loop principal monitora em que modo o relógio está funcionando no momento. O primeiro estado é ocioso, onde o relógio é monitorado pelo switch e aguarda a entrada do usuário. Assim que o botão é pressionado, o sistema passa para um segundo estado que calcula por quanto tempo o relógio será exibido. Depois há uma transição para o estado três, que faz a maior parte do trabalho de ramificação com base no fato de que o usuário está em este momento faz. O relógio liga os LEDs neste estado. Se o usuário segurar o botão por mais de 3 segundos, o relógio entra no estado quatro. Este é um estado de correção de tempo. Quanto mais tempo o botão for pressionado, mais tempo mais rápido está mudando.

Quase todo mundo tem um relógio, e é uma daquelas coisas que ninguém pode prescindir. para o homem moderno. Claro, há quem prefira olhar o relógio do telefone ou a hora do sistema do computador, mas sem relógio de pulso Todo mundo sente desconforto toda vez que olha para a mão por hábito. Às vezes parece que eles não conseguem pensar em mais nada, o que mais pode ser feito com os relógios para torná-los originais e verdadeiramente inusitados. Uma das soluções de sucesso neste caminho, sem dúvida, são aquelas em cujos mostradores estão representadas imagens engraçadas, e o tempo só pode ser determinado aproximadamente - aqui atuam a intuição e o lado emocional. Mas também gostaria que o relógio fornecesse alimento para a mente. É possível? Acontece que é mais do que possível! Só para quem quer encontrar num relógio um treino diário para a mente, ou simplesmente surpreender os outros com os seus relógios fora do padrão, os chamados relógio binário.

O que é isso? Na verdade, um relógio binário é um relógio onde a forma de apresentar a informação muda radicalmente - não nos números a que estamos habituados, mas em código binário. Embora, é claro, existam muitos relógios binários com números, a hora é exibida de forma completamente diferente de um relógio normal. Em sistemas binários, os LEDs são usados ​​para indicar o tempo, por isso também são chamados relógio de diodo. A princípio, não é fácil determinar a hora nesses relógios - sejam colunas de números ou simplesmente pontos luminosos localizados em uma ordem estranha no mostrador. No entanto, depois de pegar o jeito, você poderá ler as horas facilmente usando este relógio. Mas os não iniciados não conseguirão fazer isso! Há um certo prazer nisso - ter um relógio elegante e um conhecimento único.

Aqui, por exemplo, está um dos relógios binários mais fáceis de entender e, ao mesmo tempo, extremamente elegantes.

Pedra Preta

Onde comprar: inter-time.ru
Preço: 1.850 rublos

À primeira vista, o seu mostrador evoca associações com o filme "Matriz", no entanto, esta é apenas uma primeira impressão. Quatro colunas verticais de números de 0 a 9 são exibidas: as duas da esquerda são horas e o par da direita são minutos. Assim, o tempo é lido da direita para a esquerda. Na foto, como é fácil de determinar, o relógio marca 5h27. Ícones adicionais na parte superior refletem todas as outras informações: o sol corresponde à exibição do dia e da data, e o dólar significa que a exibição mostra o ano. O copo serve como indicador do início da segunda metade do dia. Para ver a hora, basta pressionar um botão. Isso economiza energia da bateria.

Mas nesses relógios binários não há números - você mesmo precisa contar os pontos luminosos nas colunas.

Estrela da moda

Onde comprar: inter-time.ru
Preço: 1.600 rublos

Embora a princípio este relógio pareça mais uma espécie de equalizador, então você pode se acostumar e determinar rapidamente a hora.

Pode não haver muitos pontos luminosos. Por exemplo, se cada um deles for responsável pelo seu próprio grupo de números.

Futurama

Onde comprar: inter-time.ru
Preço: 1.700 rublos

Os indicadores podem ser colocados em qualquer lugar do mostrador. Por exemplo - arcos. Eficaz e conveniente.

Metal Flash

Onde comprar: inter-time.ru
Preço: 1.600 rublos

A imaginação dos designers de relógios binários não tem limites – este relógio apresenta a silhueta do personagem mais popular da Disney.

Estilo Mickey

Onde comprar: inter-time.ru
Preço: 1.200 rublos

Mas aqui estão alguns dos binários mais impressionantes e funcionais Relógio LED no mercado hoje. A exibição original e ao mesmo tempo clara das informações os torna muito convenientes para o uso diário.

Delta V2

Onde comprar: leddirect.ru
Preço: 1.700 rublos

A propósito, esta loja tem muitos relógios binários muito interessantes que irão agradar aos mais exigentes conhecedores do tempo binário.

Bem, aqueles que alcançaram o verdadeiro domínio na determinação do tempo usando relógios binários estarão especialmente interessados ​​no relógio

Onde comprar: inter-time.ru
Preço: 1.550 rublos

Será muito difícil para os “não iniciados” entender que horas esse relógio mostra. Há uma transcrição excelente e clara para isso.

Determinar o tempo deles, conhecendo este princípio simples, não é nada difícil.

E os relógios parecem especialmente impressionantes superfície do espelho display, sob o qual há uma grade com 27 diodos.

Onde comprar: inter-time.ru
Preço: 1.400 rublos

As horas são contadas em linhas verticais e os minutos em linhas horizontais.

Esses e muitos outros relógios binários ajudarão você a ver o tempo de maneira diferente, contribuirão para o desenvolvimento da memória e poderão se tornar os mais detalhe elegante sua imagem. As pessoas ao seu redor ficarão surpresas não apenas com a aparência de tal relógio, mas também com a facilidade com que você pode determinar a hora a partir dele.

Porém, antes disso, aprenda, porque, veja bem, será estranho admitir ignorância quando lhe for pedido que diga que horas são. Você vai me contar, é claro, mas suas informações podem ser comparadas com as leituras de um relógio tradicional. Concordo, será estranho. Então siga instruções simples e você aprenderá determinar o tempo usando relógios binários. Existem duas maneiras de fazer isso.

Modo BCD

Decodificação

Para começar, observe atentamente relógio binário. O display do relógio possui três colunas, cada uma com duas fileiras de luzes.

A primeira coluna mostra as horas, a segunda, respectivamente, os minutos, e a terceira informa quantos segundos se passaram. Todas as colunas têm a mesma estrutura.

A primeira linha de luzes na coluna que reflete as horas mostra o primeiro dígito, dezenas, e o segundo, segundo dígito, unidades. Cada linha contém de duas a quatro luzes, cada uma das quais implica uma potência de dois. Portanto, a luz mais baixa representa 2 elevado à potência de “0”. Este valor é considerado um.

A segunda luz representa 2 elevado a 1, que é considerado dois.

A terceira luz simboliza 2 elevado à potência de “2”, ou seja, representa quatro. Bem, a quarta luz exibe 2 elevado à terceira potência, que significa oito (veja a imagem).

Agora que você tem uma ideia de como funciona um relógio binário, tente determinar quantas horas o relógio binário mostra em uma imagem. Você vê que na primeira linha da coluna que reflete as horas, uma luz está acesa. Lembramos que a primeira luz exibe 2 elevado a “0” e é lida como um. Mais adiante, na segunda coluna, nem uma única luz está acesa, então é lida como zero. Com base nos dados obtidos, podemos concluir que o relógio da imagem marca dez horas. Lembre-se de que o relógio exibe a hora no modo diurno; portanto, se você se sentir desconfortável, subtraia doze quando o relógio mostrar treze horas ou mais. Por exemplo, se o relógio marca quinze horas, você pode presumir com segurança que são três horas.

Da mesma forma, tente determinar quantos minutos o relógio binário mostra na imagem apresentada. Portanto, na primeira linha da coluna que reflete os minutos, você vê que duas luzes estão acesas. Lembrando as regras para determinar o tempo usando relógios binários, podemos concluir que a primeira coluna exibe um triplo. Na segunda linha desta coluna você pode ver que três luzes estão acesas. Tendo em mente as potências de dois, somamos todos os indicadores e obtemos o número sete (ver imagem). Comparando o primeiro e o segundo dígitos, podemos concluir que a coluna dos minutos mostra o valor 37. Vamos lembrar o indicador do relógio e obtemos que o relógio mostra a hora 10:37.

Decifrar os indicadores de segundos às vezes parece bastante difícil, porque os segundos mudam constantemente seus valores. Você aprenderá a determinar o valor da coluna com segundos quando a determinação dos indicadores binários do relógio atingir a automatização. Assim, na imagem apresentada você vê que na primeira linha da coluna que reflete os segundos valores, a terceira luz superior está acesa. Lembrando as potências de dois, podemos concluir que esta luz indica o número 4. Na segunda linha da mesma coluna, a quarta luz e a primeira estão acesas, ou seja, o mais baixo. Seguindo as regras para determinação do tempo usando relógios binários, podemos concluir que a luz superior significa o número 8, e a inferior, respectivamente, um. Somamos os dois números e obtemos nove.

Resultado

Agora comparamos o valor da primeira e segunda linhas da coluna e obtemos o valor 49. Assim, o relógio da imagem mostra a hora 10:37:49.

Modo binário verdadeiro (binário).

Indicadores de decodificação

O método de decifrar relógios binários, que possuem apenas duas linhas, é exatamente o mesmo que no modo decimal binário. No entanto, há uma ressalva: agora há apenas uma linha em cada linha. As luzes na coluna superior correspondem ao princípio das potências de dois: 1, 2, 4, 8. Mas na coluna inferior você pode notar não quatro luzes, mas seis. Não se assuste, pois o princípio é seguido na segunda coluna, apenas alguns valores foram somados: 1, 2, 4, 8, 16, 32. Não há necessidade de adicionar mais de seis luzes, pois o próximo valor será 59, que pode ser escrito de forma que se acenda a primeira, segunda, quarta, quinta e sexta luzes.

Determinar horas

Agora tente determinar quantas horas o relógio da imagem mostra. Você vê que a primeira e a segunda luzes estão acesas. Conhecendo as potências de dois em relógios binários, podemos determinar que a primeira luz significa o número um e a segunda, respectivamente, dois. Vamos somar os dois indicadores e obter o número “3”.

Na imagem mostrada, o relógio possui duas fileiras de luzes, mas lembre-se que também pode haver relógios com colunas. O princípio de determinação do tempo usando esse relógio será o mesmo que neste caso. A principal coisa a lembrar é o sistema numérico binário, que implica apenas dois dígitos para criptografia, “0” e “1”. Portanto, os indicadores que você acabou de definir serão parecidos com 0011 em binário, que também será igual ao valor “3”.

Determinar minutos

Usando a técnica descrita, você pode ver no relógio da imagem que a primeira, a quarta e a quinta luzes estão acesas. No sistema binário será semelhante a 011001. Lembrando as potências de dois, podemos concluir que a primeira luz mostra “1”, a quarta “8” e a quinta, respectivamente, “16”. Vamos somar todos os indicadores e obter o valor “25”.

Determinar segundos

Resta determinar os segundos. Faça você mesmo de acordo com o princípio descrito se o seu relógio tiver uma coluna ou linha exibindo os segundos. Está ausente na imagem apresentada, pelo que não faz sentido descrever a sua definição.

Lembre-se de praticar e treinar seu cérebro. Com o tempo, você aprenderá a determinar o tempo de maneira rápida e fácil usando um relógio binário, mesmo que à primeira vista pareça muito difícil para você. Não se preocupe com matemática, apenas lembre-se do significado e da localização de cada luz. Para aprender rapidamente como contar as horas usando um relógio binário, compre seu primeiro relógio com uma coluna exibindo os segundos. Os valores nele serão os maiores, portanto, tendo aprendido a determinar rapidamente os segundos, a leitura de minutos e horas se tornará muito simples para você.

Por querer montar um relógio binário, nunca encontrei um design pronto aceitável na Internet. A maioria dos relógios tinha uma séria desvantagem - quando a energia era desligada, as configurações de hora eram perdidas. Por sorte, pouco antes disso, comecei a dominar a linguagem C e os microcontroladores AVR. Assim, optou-se por reforçar os conhecimentos adquiridos com a experiência prática, e ao mesmo tempo reinventar a roda. Eu também adoro os LEDs verdes piscando.



Esquema



RTC

O problema de salvar as configurações atuais é perfeitamente resolvido pelo relógio em tempo real (RTC). Minha escolha recaiu sobre o chip DS1307.

Segundo o fabricante, se a energia for desligada, ele pode salvar a hora e a data por 10 anos, consumindo a energia de apenas uma bateria de lítio CR2032. Ou seja, o relógio continua a funcionar, mantendo uma precisão aceitável. O tempo não se perde, ligando novamente o relógio, obtemos tempo real no mostrador, e não a hora no momento do desligamento. O microcircuito se comunica com o microcontrolador através do “barramento quadrado” I 2 C, informando a hora exata e aceitando seus novos valores.

O coração do dispositivo

A escolha do microcontrolador Mega32a foi ditada pelos seguintes fatores:
Existem portas suficientes para evitar o uso de exibição dinâmica, da qual não gosto, principalmente porque irrita os olhos (piscar com alta frequência em qualquer caso, não natural). Conheci-o enquanto brincava com microcontroladores PIC na linguagem Proton PICBasic, e se for possível não usar um display dinâmico, prefiro fazê-lo.
Custo relativamente baixo de 130 rublos (Mega16a, por exemplo, custa o mesmo), e com desconto geralmente é de 104 rublos.
Pacote QPF-44 transparente, com pinagem conveniente


A porta “A” exibe os segundos, a porta “B” exibe os minutos e a porta “C” exibe as horas. É muito conveniente que você possa atribuir valores de tempo recebidos do DS1307 às portas sem nenhuma alteração. Os botões são conectados à porta “D” (pinos 3 – 7), os pinos 0 e 1 funcionam como linha de clock (SCL) e linha de dados serial (SDA), respectivamente. O chip RTC é configurado para produzir pulsos na frequência de 1 hertz em sua sétima perna. Esta perna está conectada ao 3º pino da porta “D”. Esta porta em si é configurada como uma entrada e, por precaução, estão incluídos pull-ups internos para a fonte de alimentação plus, duplicados com resistores SMD na parte externa. Tais ações protegem totalmente contra quaisquer surpresas.

LEDs


Escolhi LEDs em caixa fosca com baixa luminosidade. Primeiro, foram testados diodos brilhantes em uma caixa transparente, mas mesmo com uma corrente de 3 mA eles brilhavam muito e de forma irregular, o que novamente causou desconforto. Com uma queda de tensão no diodo de 2 volts, uma tensão de alimentação de 5 volts e um resistor de 1 kOhm, o valor da corrente que flui através do diodo será igual a (5 – 2)/1000 = 3 mA. Este valor foi selecionado empiricamente e o brilho do brilho é perfeito para uma sala escura. Se você planeja acertar o relógio diretamente luz solar, então o valor do resistor deve ser reduzido, até 200 ohms, para um brilho mais forte (obrigado, boné).

Botões

Em uma placa separada com botões, há um “fusível” (que nos protegerá de um tiro acidental na cabeça), na forma de outro botão Bt6. A hora pode ser editada mantendo-o pressionado primeiro.

Programas

O código é escrito no ambiente CodeVisionAvr.
O programa começa com a configuração dos periféricos do microcontrolador.
Configure as portas (A,B,C – saída, D – entrada)
Por precaução, é fornecida uma pausa de 300 ms para que o DS1307 tenha tempo de “recuperar o juízo”
Inicializando o “barramento quadrado”
Configuramos o chip RTC para que ele produza pulsos retangulares a cada segundo no pino SQW/OUT
Verificamos se o botão CLR está pressionado. Se sim, redefina todos os valores para 0
Habilitar interrupções globais
Sim, algumas palavras sobre eles. Usamos interrupções externas INT0 em PD2 na borda descendente, ou seja, a cada segundo o programa irá para o manipulador de interrupções, no qual lemos os valores de tempo do DS1307 e os exibimos nos indicadores LED.
Entramos em um loop infinito, onde pesquisamos os botões
Se o botão for pressionado, adicione (subtraia) uma hora (minuto) e envie o novo valor via I2C
Ao mesmo tempo, verificamos se os novos valores de tempo se enquadram nos intervalos de 24 horas e 60 minutos.

Placa de circuito impresso

A placa é feita usando a tecnologia Great Cosmic Laser-Ironing em um textolite unilateral. Na confecção do tabuleiro superior foi utilizado papel comum (experiência malsucedida).


Existem muitas variações desta tecnologia. Na minha opinião, este é o melhor:
1. Corte um pedaço de PCB no tamanho necessário.
2. Lixamos as pontas, eliminando rebarbas prejudiciais.
3. Lubrifique a futura placa com pó de limpeza ou pasta de dente e esfregue com o lado duro da esponja até brilhar.
4. Mergulhe nossa peça por algumas dezenas de segundos em uma solução fraca de cloreto férrico quente até que apareça uma superfície uniforme, fosca e marrom-vinho. Ao ser retirado da solução, o líquido deve molhar completamente a superfície.
5. Lave o cocô e seque com cuidado, sem tocar na superfície com os dedos ou qualquer outra coisa gordurosa. Coloque-o imediatamente sobre papel limpo com o lado cobre voltado para baixo para evitar poeira ou cabelos.
6. Imprima o desenho espelhado em papel fino(!) brilhante, você pode recortá-lo de uma revista, por exemplo. Não tocamos no desenho com as mãos. Recorte com cuidado e coloque o padrão para baixo.
7. Aplique-o no pedaço de PCB preparado, passe-o por 1-2 camadas de papel limpo, ajustando o ferro à temperatura máxima. 10 segundos devem ser suficientes, porque se você exagerar, as faixas ficarão planas e fluirão umas sobre as outras. O toner deve aderir completamente ao cobre.
8. Mergulhe em água corrente água morna, pode ser deixado na água por 10 minutos. Rasgue e raspe o papel com cuidado. Uma escova de dentes velha me ajuda nisso. Remova os pedaços restantes de papel com uma agulha. O toner permanece na PCB.
9. Aqueça uma solução forte de cloreto férrico em banho-maria, jogue nossa prancha nela e salpique por alguns minutos (de acordo com a regra de Van't Hoff, com um aumento de 10 graus na temperatura, a taxa de reação aumenta 2 vezes. O cobre desaparece bem diante de nossos olhos. Você não pode aquecer, mas terá que esperar mais.
10. Assim que todo o cobre desnecessário desaparecer, desligue o gás, retire (por exemplo, com uma pinça) a placa, tente lavar a placa e os dedos do cloreto férrico. Lavamos do tabuleiro com água corrente.
11. Pegue acetona (removedor de esmalte) e limpe o toner. Você pode tentar raspar com uma lixa ou uma esponja.
12. Faça furos.
13. Vamos trapacear. Eu uso LTI como fluxo, e aconselho, porém, após estanhar e soldar, esse fluxo deve ser lavado (com a mesma acetona, e melhor com uma misturaálcool-gasolina 1:1), pois LTIshka tem alguma condutividade.
Todo trabalho deve ser realizado em área ventilada, durante
muitos vapores nocivos são liberados.


As placas são conectadas entre si por meio de conectores PBS e PLD. Os primeiros são conectados à placa superior por meio de um fio de montagem fino, que pode ser retirado, por exemplo, de um cabo ou adaptador LPT antigo.


Os segundos são soldados na placa inferior e os pinos que levam ao teclado são dobrados (ver foto).

Placas de circuito impresso no formato SprintLayout5.0 estão incluídas. Existem alguns erros nas fotos, mas já foram corrigidos nos arquivos anexos.

Firmware do microcontrolador

Para tanto foi montado um programador USBasp, que pode ser visto na foto acima. É uma coisa muito bonita, fácil de usar e você pode carregá-la no bolso o ano todo (espero que ninguém faça isso). Para atualizar o firmware mega32 você terá que instalar o jumper “Slow SCK”.
Fusíveis:
Fusível baixo = 0xC4
Fusível alto = 0xD9
Nosso microcontrolador é sincronizado a partir de um oscilador RC interno com frequência de 8 MHz. Tive que desabilitar a interface JTAG na PortC, caso contrário alguns LEDs não acenderiam.
A placa possui um conector ISP10 para flash/depuração rápida.

Painel frontal

Fabricado em chapa de alumínio com 40 mm de largura e 1,5 mm de espessura. Possui 18 furos com diâmetro de 5 mm e 4 furos com diâmetro de 3 mm para fixação de racks.


Primeiro, o modelo foi impresso e colado na placa. Em seguida, foram feitos furos piloto com broca de 1,5 mm, após o que as brocas diâmetros necessários Os furos principais foram perfurados.


Por fim, a placa foi dobrada, lixada com lixa fina e polida com pasta GOI.
O modelo está incluído nos arquivos anexados como um arquivo layout5.0

LED vermelho no canto superior esquerdo

Repete os pulsos gerados pelo DS1307 na 7ª perna, ou seja, pisca a cada segundo. Um pequeno transistor MOSFET de canal p opera no modo de comutação, abrindo e fechando no tempo com os pulsos. No começo eu queria fazer uma retroiluminação (tipo Ambilight), para a qual construí um inversor CMOS em um par complementar de transistores (com certeza). Mas eu não gostei. Para um LED, um transistor é suficiente, você pode até usar o tipo pnp bc857. Usei mosfet de quadro aberto irlml6402 ou irlml6302.

arquivos

Fontes, arquivo hexadecimal, placas de circuito impresso, circuitos, circuito em proteus e fusível estão incluídos nesta imagem na forma de um arquivo. Não confio no armazenamento de arquivos, ainda não tenho meu próprio servidor, então, na minha opinião amadora, o local mais confiável para armazenamento seria o Habr. Os usuários do Windows podem acessar os arquivos abrindo uma imagem salva usando o WinRar.
Sim, esta é a imagem.

Vídeo

Conclusão

Você pode usar qualquer fonte de energia capaz de fornecer 5 volts a uma corrente de 70 mA. Uma porta USB é bastante adequada para isso. O principal é que a alimentação seja “limpa” e não ultrapasse 5 volts. Alimentando o relógio a partir de um conversor DC-DC do chip mc34063 com um nível de ruído de ~50 mV, notei falhas ao acertar a hora. Agora o dispositivo é alimentado por um interruptor pendurado nas proximidades. Ele produz estritamente 5 volts. O lado bom é que você também precisa fazer uma proteção infalível na forma de um diodo e algum tipo de estabilizador linear para 3,3 - 5 volts.
A ausência das funções de despertador e exibição de data no relógio é bastante justificada: ambas estão presentes no telefone, o que significa que com alto grau de probabilidade ninguém as utilizará em um relógio binário (obrigado ao tio Occam por esta conclusão) .

Por querer montar um relógio binário, nunca encontrei um design pronto aceitável na Internet. A maioria dos relógios tinha uma séria desvantagem - quando a energia era desligada, as configurações de hora eram perdidas. Por sorte, pouco antes disso, comecei a dominar a linguagem C e os microcontroladores AVR. Assim, optou-se por reforçar os conhecimentos adquiridos com a experiência prática, e ao mesmo tempo reinventar a roda. Eu também adoro os LEDs verdes piscando.



Esquema



RTC

O problema de salvar as configurações atuais é perfeitamente resolvido pelo relógio em tempo real (RTC). Minha escolha recaiu sobre o chip DS1307.

Segundo o fabricante, se a energia for desligada, ele pode salvar hora e data por 10 anos, consumindo a energia de apenas uma bateria de lítio CR2032. Ou seja, o relógio continua a funcionar, mantendo uma precisão aceitável. A hora não está perdida; quando ligamos novamente o relógio, obtemos a hora real no mostrador, e não a hora no momento de desligá-lo. O microcircuito se comunica com o microcontrolador através do “barramento quadrado” I 2 C, informando a hora exata e aceitando seus novos valores.

O coração do dispositivo

A escolha do microcontrolador Mega32a foi ditada pelos seguintes fatores:
Existem portas suficientes para evitar o uso de exibição dinâmica, da qual não gosto, principalmente porque irrita os olhos (de qualquer maneira, piscar em alta frequência não é natural). Conheci-o enquanto brincava com microcontroladores PIC na linguagem Proton PICBasic, e se for possível não usar um display dinâmico, prefiro fazê-lo.
Custo relativamente baixo de 130 rublos (Mega16a, por exemplo, custa o mesmo), e com desconto geralmente é de 104 rublos.
Pacote QPF-44 transparente, com pinagem conveniente


A porta “A” exibe os segundos, a porta “B” exibe os minutos e a porta “C” exibe as horas. É muito conveniente que você possa atribuir valores de tempo recebidos do DS1307 às portas sem nenhuma alteração. Os botões são conectados à porta “D” (pinos 3 – 7), os pinos 0 e 1 funcionam como linha de clock (SCL) e linha de dados serial (SDA), respectivamente. O chip RTC é configurado para produzir pulsos na frequência de 1 hertz em sua sétima perna. Esta perna está conectada ao 3º pino da porta “D”. Esta porta em si é configurada como uma entrada e, por precaução, estão incluídos pull-ups internos para a fonte de alimentação plus, duplicados com resistores SMD na parte externa. Tais ações protegem totalmente contra quaisquer surpresas.

LEDs


Escolhi LEDs em caixa fosca com baixa luminosidade. Primeiro, foram testados diodos brilhantes em uma caixa transparente, mas mesmo com uma corrente de 3 mA eles brilhavam muito e de forma irregular, o que novamente causou desconforto. Com uma queda de tensão no diodo de 2 volts, uma tensão de alimentação de 5 volts e um resistor de 1 kOhm, o valor da corrente que flui através do diodo será igual a (5 – 2)/1000 = 3 mA. Este valor foi selecionado empiricamente e o brilho do brilho é perfeito para uma sala escura. Se você planeja instalar o relógio sob luz solar direta, o valor dos resistores deve ser reduzido, até 200 ohms, para um brilho mais forte (obrigado Cap).

Botões

Em uma placa separada com botões, há um “fusível” (que nos protegerá de um tiro acidental na cabeça), na forma de outro botão Bt6. A hora pode ser editada mantendo-o pressionado primeiro.

Programas

O código é escrito no ambiente CodeVisionAvr.
O programa começa com a configuração dos periféricos do microcontrolador.
Configure as portas (A,B,C – saída, D – entrada)
Por precaução, é fornecida uma pausa de 300 ms para que o DS1307 tenha tempo de “recuperar o juízo”
Inicializando o “barramento quadrado”
Configuramos o chip RTC para que ele produza pulsos retangulares a cada segundo no pino SQW/OUT
Verificamos se o botão CLR está pressionado. Se sim, redefina todos os valores para 0
Habilitar interrupções globais
Sim, algumas palavras sobre eles. Usamos interrupções externas INT0 em PD2 na borda descendente, ou seja, a cada segundo o programa irá para o manipulador de interrupções, no qual lemos os valores de tempo do DS1307 e os exibimos nos indicadores LED.
Entramos em um loop infinito, onde pesquisamos os botões
Se o botão for pressionado, adicione (subtraia) uma hora (minuto) e envie o novo valor via I2C
Ao mesmo tempo, verificamos se os novos valores de tempo se enquadram nos intervalos de 24 horas e 60 minutos.

Placa de circuito impresso

A placa é feita usando a tecnologia Great Cosmic Laser-Ironing em um textolite unilateral. Na confecção do tabuleiro superior foi utilizado papel comum (experiência malsucedida).


Existem muitas variações desta tecnologia. Na minha opinião, este é o melhor:
1. Corte um pedaço de PCB no tamanho necessário.
2. Lixamos as pontas, eliminando rebarbas prejudiciais.
3. Lubrifique a futura placa com pó de limpeza ou pasta de dente e esfregue com o lado duro da esponja até brilhar.
4. Mergulhe nossa peça por algumas dezenas de segundos em uma solução fraca de cloreto férrico quente até que apareça uma superfície uniforme, fosca e marrom-vinho. Ao ser retirado da solução, o líquido deve molhar completamente a superfície.
5. Lave o cocô e seque com cuidado, sem tocar na superfície com os dedos ou qualquer outra coisa gordurosa. Coloque-o imediatamente sobre papel limpo com o lado cobre voltado para baixo para evitar poeira ou cabelos.
6. Imprima o desenho espelhado em papel fino(!) brilhante, você pode recortá-lo de uma revista, por exemplo. Não tocamos no desenho com as mãos. Recorte com cuidado e coloque o padrão para baixo.
7. Aplique-o no pedaço de PCB preparado, passe-o por 1-2 camadas de papel limpo, ajustando o ferro à temperatura máxima. 10 segundos devem ser suficientes, porque se você exagerar, as faixas ficarão planas e fluirão umas sobre as outras. O toner deve aderir completamente ao cobre.
8. Mergulhe em água morna corrente, você pode deixar na água por 10 minutos. Rasgue e raspe o papel com cuidado. Uma escova de dentes velha me ajuda nisso. Remova os pedaços restantes de papel com uma agulha. O toner permanece na PCB.
9. Aqueça uma solução forte de cloreto férrico em banho-maria, jogue nossa prancha nela e salpique por alguns minutos (de acordo com a regra de Van't Hoff, com um aumento de 10 graus na temperatura, a taxa de reação aumenta 2 vezes. O cobre desaparece bem diante de nossos olhos. Você não pode aquecer, mas terá que esperar mais.
10. Assim que todo o cobre desnecessário desaparecer, desligue o gás, retire (por exemplo, com uma pinça) a placa, tente lavar a placa e os dedos do cloreto férrico. Lavamos do tabuleiro com água corrente.
11. Pegue acetona (removedor de esmalte) e limpe o toner. Você pode tentar raspar com uma lixa ou uma esponja.
12. Faça furos.
13. Vamos trapacear. Eu uso LTI como fundente, e aconselho, porém, após estanhar e soldar, esse fundente deve ser lavado (com a mesma acetona, ou melhor ainda com uma mistura 1:1 de álcool e gasolina), pois LTIshka tem alguma condutividade.
Todo trabalho deve ser realizado em área ventilada, durante
muitos vapores nocivos são liberados.


As placas são conectadas entre si por meio de conectores PBS e PLD. Os primeiros são conectados à placa superior por meio de um fio de montagem fino, que pode ser retirado, por exemplo, de um cabo ou adaptador LPT antigo.


Os segundos são soldados na placa inferior e os pinos que levam ao teclado são dobrados (ver foto).

Placas de circuito impresso no formato SprintLayout5.0 estão incluídas. Existem alguns erros nas fotos, mas já foram corrigidos nos arquivos anexos.

Firmware do microcontrolador

Para tanto foi montado um programador USBasp, que pode ser visto na foto acima. É uma coisa muito bonita, fácil de usar e você pode carregá-la no bolso o ano todo (espero que ninguém faça isso). Para atualizar o firmware mega32 você terá que instalar o jumper “Slow SCK”.
Fusíveis:
Fusível baixo = 0xC4
Fusível alto = 0xD9
Nosso microcontrolador é sincronizado a partir de um oscilador RC interno com frequência de 8 MHz. Tive que desabilitar a interface JTAG na PortC, caso contrário alguns LEDs não acenderiam.
A placa possui um conector ISP10 para flash/depuração rápida.

Painel frontal

Fabricado em chapa de alumínio com 40 mm de largura e 1,5 mm de espessura. Possui 18 furos com diâmetro de 5 mm e 4 furos com diâmetro de 3 mm para fixação de racks.


Primeiro, o modelo foi impresso e colado na placa. Em seguida, foram feitos furos piloto com broca de 1,5 mm, após o que os furos principais foram feitos com brocas dos diâmetros necessários.


Por fim, a placa foi dobrada, lixada com lixa fina e polida com pasta GOI.
O modelo está incluído nos arquivos anexados como um arquivo layout5.0

LED vermelho no canto superior esquerdo

Repete os pulsos gerados pelo DS1307 na 7ª perna, ou seja, pisca a cada segundo. Um pequeno transistor MOSFET de canal p opera no modo de comutação, abrindo e fechando no tempo com os pulsos. No começo eu queria fazer uma retroiluminação (tipo Ambilight), para a qual construí um inversor CMOS em um par complementar de transistores (com certeza). Mas eu não gostei. Para um LED, um transistor é suficiente, você pode até usar o tipo pnp bc857. Usei mosfet de quadro aberto irlml6402 ou irlml6302.

arquivos

As fontes, arquivo hexadecimal, placas de circuito impresso, esquemas, circuito proteus e fusíveis estão incluídos nesta imagem como um arquivo. Não confio no armazenamento de arquivos, ainda não tenho meu próprio servidor, então, na minha opinião amadora, o local mais confiável para armazenamento seria o Habr. Os usuários do Windows podem acessar os arquivos abrindo uma imagem salva usando o WinRar.
Sim, esta é a imagem.

Vídeo

Conclusão

Você pode usar qualquer fonte de energia capaz de fornecer 5 volts a uma corrente de 70 mA. Uma porta USB é bastante adequada para isso. O principal é que a alimentação seja “limpa” e não ultrapasse 5 volts. Alimentando o relógio a partir de um conversor DC-DC do chip mc34063 com um nível de ruído de ~50 mV, notei falhas ao acertar a hora. Agora o dispositivo é alimentado por um interruptor pendurado nas proximidades. Ele produz estritamente 5 volts. O lado bom é que você também precisa fazer uma proteção infalível na forma de um diodo e algum tipo de estabilizador linear para 3,3 - 5 volts.
A ausência das funções de despertador e exibição de data no relógio é bastante justificada: ambas estão presentes no telefone, o que significa que com alto grau de probabilidade ninguém as utilizará em um relógio binário (obrigado ao tio Occam por esta conclusão) .