Índice:

Relógio Mecânico de Exibição de Sete Segmentos: 7 Passos (com Imagens)
Relógio Mecânico de Exibição de Sete Segmentos: 7 Passos (com Imagens)

Vídeo: Relógio Mecânico de Exibição de Sete Segmentos: 7 Passos (com Imagens)

Vídeo: Relógio Mecânico de Exibição de Sete Segmentos: 7 Passos (com Imagens)
Vídeo: COMO UTILIZAR DISPLAY DE 7 SEGMENTOS E 4 DIGITOS COM ARDUINO [Vamos fazer um relógio digital] 2024, Novembro
Anonim
Relógio Mecânico de Exibição de Sete Segmentos
Relógio Mecânico de Exibição de Sete Segmentos
Relógio Mecânico de Exibição de Sete Segmentos
Relógio Mecânico de Exibição de Sete Segmentos

Alguns meses atrás, eu construí um display mecânico de 7 segmentos de dois dígitos, que transformei em um cronômetro de contagem regressiva. O resultado foi muito bom e várias pessoas sugeriram dobrar o display para fazer um relógio. O problema era que eu já estava ficando sem PWM IO no meu Arduino Mega e não tinha o suficiente disponível para o segundo ou terceiro dígito. Fui então apontado na direção desses drivers PWM de 16 canais PCA9685 que operam em uma interface I2C. Isso tornou possível acionar os 28 servos de que eu precisava, todos usando os dois pinos I2C em um Arduino. Então comecei a trabalhar construindo um relógio que agora usa um módulo de relógio de tempo real DS1302 para manter a hora e dois servo drivers de 16 canais para controlar os 28 servos usados para compor o display, todos alimentados por um Arduino Uno.

Se você gosta deste Instructable, considere votar nele no Concurso de Relógios

Suprimentos:

Para construir seu relógio, você precisará dos seguintes suprimentos, além de algumas ferramentas básicas:

  • Arduino Uno - Compre aqui
  • Módulo de relógio DS1302 - compre aqui
  • 2 x PCA9685 16Ch Servo Drivers - Compre Aqui
  • 28 x Micro Servos - Compre Aqui
  • Cabo fita - compre aqui
  • Tiras de cabeçalhos de alfinetes masculinos - compre aqui
  • Tiras de cabeçalhos de alfinetes femininos - compre aqui
  • 3mm MDF - Compre Aqui
  • Tinta spray preta - compre aqui
  • Circuito de Eliminação de Bateria 5V 5A - Compre Aqui
  • Fonte de alimentação 12V - compre aqui

Para este projeto, você também precisará de algumas peças impressas em 3D. Se você ainda não tem uma impressora 3D e gosta de fazer coisas, definitivamente deveria considerar a compra de uma. O Creality Ender 3 Pro usado aqui é acessível e produz impressões de qualidade muito boa por seu preço.

  • Impressora 3D usada - compre aqui
  • Filamento - Compre Aqui

Etapa 1: imprimir em 3D os componentes de plástico

Impressão 3D dos componentes de plástico
Impressão 3D dos componentes de plástico
Impressão 3D dos componentes de plástico
Impressão 3D dos componentes de plástico
Impressão 3D dos componentes de plástico
Impressão 3D dos componentes de plástico

Eu projetei os visores de 7 segmentos para serem o mais simples possível. O servo também é o suporte para segurar o segmento acima dele. Existem dois componentes impressos em 3D necessários para cada segmento, um bloco espaçador para apoiar a parte inferior do servo e o segmento da tela que se cola diretamente no braço do servo.

Baixe os arquivos de impressão 3D - Mechanical Display Clock de 7 segmentos Arquivos de impressão 3D

Imprima os segmentos servo e pontos usando um PLA de cor brilhante. Usei verde translúcido, mas vermelho, laranja ou amarelo também devem funcionar bem. Usei PLA preto para os blocos espaçadores e suportes de pontos para que eles não fiquem visíveis quando os segmentos são desligados.

Se você não tiver acesso a uma impressora 3D, experimente um dos serviços de impressão online. Existem vários serviços acessíveis disponíveis que imprimem os componentes e os entregam em sua porta em poucos dias.

Etapa 2: Prepare suas placas de controle e fiação

Prepare suas placas de controle e fiação
Prepare suas placas de controle e fiação
Prepare suas placas de controle e fiação
Prepare suas placas de controle e fiação
Prepare suas placas de controle e fiação
Prepare suas placas de controle e fiação
Prepare suas placas de controle e fiação
Prepare suas placas de controle e fiação

Você precisará usar dois drivers PWM de 16 canais PCA9685 para acionar seus servos de 28 clock. Separei os servos em dígitos de hora e minuto, com cada par de dígitos sendo conduzido por uma placa. Portanto, tenho uma placa controlando os servos para os dígitos de duas horas e a segunda controlando os servos para os dígitos de dois minutos.

Para encadear os dois, você precisará fazer um conector de cabo de fita de 6 fios e soldar uma segunda tira de cabeçalho na outra extremidade da primeira placa de controle servo. Você também precisará alterar o endereço I2C na segunda placa para que seja diferente da primeira e seja identificável de maneira única.

Você também precisará fazer o chicote de fiação para conectar as três placas (duas placas servo e o módulo de relógio) ao seu Arduino. Você precisará de 5V e GND para cada placa, bem como as conexões I2C para os pinos A4 e A5 do Arduino (I2C no Arduino Uno), e os pinos do módulo de relógio CLK, DAT e RST para os pinos 6, 7 e 8 em seu Arduino respectivamente.

A energia é fornecida ao Arduino diretamente da fonte de alimentação de 12 V e aos servos usando o 5V 5A BEC que é então conectado aos dois terminais na parte superior do driver PWM. Você só precisa conectar um servo driver à energia e ele irá alimentar o segundo por meio da conexão do cabo de fita de 6 fios.

Etapa 3: montar os servos

Monte os Servos
Monte os Servos
Monte os Servos
Monte os Servos
Monte os Servos
Monte os Servos

Depois de imprimir seus segmentos, você precisará borrifar o verso e as laterais em preto para que fiquem menos visíveis quando virados 90 graus para a posição desligada.

Em seguida, você precisa colar os segmentos nos braços do servo com cola quente derretida. Ajuda colá-los no servo com o braço já no servo, dessa forma você pode verificar se está colando-os em linha reta e nivelada.

Você também precisará colar um bloco espaçador na parte inferior de cada servo.

Monte os pontos colando uma pequena cavilha ou espeto na parte de trás dos pontos e, em seguida, nos blocos de base. Eu borrifei esses gravetos também de preto para que eles fiquem menos visíveis se vistos de um ângulo.

Etapa 4: configuração e teste

Configuração e teste
Configuração e teste
Configuração e teste
Configuração e teste

Numerei todos os servos e escrevi o número em cada pista para que fosse mais fácil controlá-los. Comecei com o segmento superior no dígito das unidades e trabalhei em torno do segmento do meio no dígito das dezenas. Esta também é a ordem em que os pluguei nas placas de servo controle, lembrando que os identificadores nas placas contam de 0 a 13 e não de 1 a 14.

Em seguida, coloquei os segmentos em uma mesa com espaço suficiente entre eles para teste, de modo que não se movessem entre um e outro enquanto configurava os limites de viagem e as direções. Se você tentar colocá-los próximos um do outro, provavelmente um ou dois tentarão se mover na direção errada ou ultrapassar o curso em algum estágio e atingir outro, o que pode danificar o segmento, braço do servo ou arrancar as engrenagens do servo.

Etapa 5: enviando o código

Carregando o código
Carregando o código
Carregando o código
Carregando o código
Carregando o código
Carregando o código

O código parece complicado à primeira vista, mas na verdade é relativamente simples graças às duas bibliotecas usadas. Também há muita repetição porque existem quatro visores de 7 segmentos diferentes que precisam ser atualizados.

Aqui está uma descrição resumida do código, dê uma olhada no guia completo para uma explicação mais detalhada e um link para fazer o download do código - Relógio mecânico de 7 segmentos

Começamos importando duas bibliotecas, virtuabotixRTC.h para o módulo de relógio e Adafruit_PWMServoDriver.h para os servo drivers. A biblioteca Adafruit pode ser baixada e instalada diretamente por meio do gerenciador de biblioteca no IDE.

Em seguida, criamos um objeto para cada placa de controle com o endereço relevante, um para os dígitos das horas e um para os dígitos dos minutos.

Temos então quatro matrizes para armazenar as posições ativada e desativada de cada servo. Você precisará fazer ajustes a esses números nas próximas etapas para se certificar de que seus servos estão na vertical quando ligados, virados 90 graus quando desligados e não viajam demais.

Uma matriz de dígitos armazena as posições de cada segmento para cada dígito a ser exibido.

Em seguida, configuramos o módulo de relógio e criamos variáveis para armazenar os dígitos individuais atuais e anteriores.

Na função de configuração, iniciamos e configuramos as placas de controle PWM, bem como atualizamos a hora do relógio, se necessário. Em seguida, executamos um loop para definir a exibição em 8 8: 8 8 para que saibamos a posição inicial de todos os servos. Isso também é usado para configurar os servos de modo que fiquem todos voltados para cima corretamente.

No loop principal, obtemos a hora atualizada do módulo de relógio, dividimos em quatro dígitos e, em seguida, verificamos se a hora mudou desde a última verificação. Se a hora mudou, atualizamos a exibição e, em seguida, atualizamos os dígitos anteriores.

Na função de atualização de exibição, primeiro movemos os segmentos do meio. Isso é feito primeiro porque há alguma lógica necessária para mover os dois segmentos superiores adjacentes ao segmento do meio para fora do caminho um pouco antes de mover o segmento do meio, caso contrário, ele colidirá com eles. Uma vez que os segmentos do meio são movidos, os segmentos restantes são movidos para as posições corretas.

Etapa 6: montagem do relógio na placa traseira

Montagem do relógio no quadro traseiro
Montagem do relógio no quadro traseiro
Montagem do relógio no quadro traseiro
Montagem do relógio no quadro traseiro
Montagem do relógio no quadro traseiro
Montagem do relógio no quadro traseiro

Assim que terminei os testes, montei os servos no painel traseiro usando o layout acima como guia.

A área branca é o tamanho geral da placa, o cinza mais claro é a área ao redor de cada dígito para onde os segmentos do servo se movem e o contorno na área cinza escuro é a linha central para os 6 segmentos externos de cada dígito.

Cortei o quadro, marquei o layout e colei os dígitos no lugar para compor o mostrador do relógio.

Em seguida, fiz furos perto de cada servo e alimentei os fios pela parte de trás da placa para que eles fiquem menos visíveis.

Montei a parte eletrônica na parte de trás do relógio com fita dupla-face.

Etapa 7: Configuração e operação finais

Configuração e operação finais
Configuração e operação finais
Configuração e operação finais
Configuração e operação finais
Configuração e operação finais
Configuração e operação finais
Configuração e operação finais
Configuração e operação finais

Uma vez que os servos estavam todos prontos, removi todos os braços do servo para os ajustes finais nas posições dos segmentos. Você deve ligar o Arduino neste estado para que 8 8: 8 8 seja exibido e, em seguida, desconecte a energia, isso centraliza novamente todos os seus servos para que você possa colocar os braços do servo de volta com os segmentos voltados o mais próximo possível da vertical que possível.

Em seguida, você precisará ligar sequencialmente o Arduino e fazer ajustes nas posições de ativação e desativação do segmento em seus quatro arrays para que os servos fiquem perfeitamente verticais quando ligados e giram 90 graus quando desligados, sem viajar demais. Esta etapa consome muito tempo e requer um pouco de paciência, mas o resultado final vale a pena!

O relógio pode ser deixado com energia usando a fonte de alimentação de 12 V e 5 V BEC conectado a ela. Se a energia cair, a bateria no módulo RTC manterá a hora para que, quando a energia for restaurada, o relógio volte automaticamente para a hora correta.

Se você gostou deste Instructable, vote nele no concurso Clock e me informe sobre quaisquer melhorias ou sugestões que você possa fazer na seção de comentários abaixo.

Concurso de Relógios
Concurso de Relógios
Concurso de Relógios
Concurso de Relógios

Segundo Prêmio no Concurso de Relógios

Recomendado: