Table des matières:

Horloge d'affichage mécanique à sept segments : 7 étapes (avec photos)
Horloge d'affichage mécanique à sept segments : 7 étapes (avec photos)

Vidéo: Horloge d'affichage mécanique à sept segments : 7 étapes (avec photos)

Vidéo: Horloge d'affichage mécanique à sept segments : 7 étapes (avec photos)
Vidéo: Horloge DIY 7 segments Arduino + DS3231+SAA1063 et WS2812B 2024, Novembre
Anonim
Horloge d'affichage mécanique à sept segments
Horloge d'affichage mécanique à sept segments
Horloge d'affichage mécanique à sept segments
Horloge d'affichage mécanique à sept segments

Il y a quelques mois, j'ai construit un affichage mécanique à 7 segments à deux chiffres que j'ai transformé en un compte à rebours. Cela s'est plutôt bien passé et un certain nombre de personnes ont suggéré de doubler l'affichage pour faire une horloge. Le problème était que je manquais déjà de PWM IO sur mon Arduino Mega et que je n'avais pas assez de disponible pour les deuxième ou troisième chiffres. On m'a ensuite dirigé vers ces pilotes PWM 16 canaux PCA9685 qui fonctionnent sur une interface I2C. Ceux-ci ont permis de piloter les 28 servos dont j'avais besoin, tous en utilisant les deux broches I2C sur un Arduino. Je me suis donc mis au travail pour construire une horloge qui utilise maintenant un module d'horloge temps réel DS1302 pour garder l'heure et deux servomoteurs à 16 canaux pour contrôler les 28 servos utilisés pour composer l'affichage, tous alimentés par un Arduino Uno.

Si vous aimez ce Instructable, veuillez envisager de voter pour lui dans le concours d'horloges

Fournitures:

Pour construire votre horloge, vous aurez besoin des fournitures suivantes en plus de quelques outils de base:

  • Arduino Uno - Achetez ici
  • Module d'horloge DS1302 - Achetez ici
  • 2 x servodrivers PCA9685 16Ch - Achetez ici
  • 28 x Micro Servos - Achetez ici
  • Câble ruban - Achetez ici
  • Bandes d'en-tête mâles - Achetez ici
  • Bandes d'en-tête femelles - Achetez ici
  • MDF 3 mm - Achetez ici
  • Peinture noire en aérosol - Achetez ici
  • Circuit d'élimination de batterie 5V 5A - Achetez ici
  • Alimentation 12V - Achetez ici

Pour ce projet, vous aurez également besoin de pièces imprimées en 3D. Si vous n'avez pas encore d'imprimante 3D et que vous aimez faire des choses, vous devriez certainement envisager d'en acheter une. La Creality Ender 3 Pro utilisée ici est abordable et produit des impressions de très bonne qualité pour son prix.

  • Imprimante 3D d'occasion - Achetez ici
  • Filament - Achetez ici

Étape 1: imprimer en 3D les composants en plastique

Imprimer en 3D les composants en plastique
Imprimer en 3D les composants en plastique
Imprimer en 3D les composants en plastique
Imprimer en 3D les composants en plastique
Imprimer en 3D les composants en plastique
Imprimer en 3D les composants en plastique

J'ai conçu les écrans à 7 segments pour qu'ils soient aussi simples que possible. Le servo est également le support pour maintenir le segment au-dessus. Il y a deux composants imprimés en 3D requis pour chaque segment, un bloc d'espacement pour soutenir le côté inférieur du servo et le segment d'affichage qui se colle directement sur le bras du servo.

Téléchargez les fichiers d'impression 3D - Fichiers d'impression 3D de l'horloge à affichage mécanique à 7 segments

Imprimez les segments et les points du servo à l'aide d'un PLA de couleur vive. J'ai utilisé du vert translucide, mais le rouge, l'orange ou le jaune devraient aussi bien fonctionner. J'ai utilisé du PLA noir pour les blocs d'espacement et les supports de points afin qu'ils ne soient pas visibles lorsque les segments sont tournés en position d'arrêt.

Si vous n'avez pas accès à une imprimante 3D, essayez l'un des services d'impression en ligne. Il existe un certain nombre de services abordables qui imprimeront les composants et les livreront à votre porte en quelques jours.

Étape 2: préparez vos cartes de contrôle et votre câblage

Préparez vos cartes de contrôle et votre câblage
Préparez vos cartes de contrôle et votre câblage
Préparez vos cartes de contrôle et votre câblage
Préparez vos cartes de contrôle et votre câblage
Préparez vos cartes de contrôle et votre câblage
Préparez vos cartes de contrôle et votre câblage
Préparez vos cartes de contrôle et votre câblage
Préparez vos cartes de contrôle et votre câblage

Vous aurez besoin d'utiliser deux pilotes PWM 16 canaux PCA9685 pour piloter vos 28 servos d'horloge. J'ai séparé les servos en chiffres des heures et des minutes, chaque paire de chiffres étant pilotée par une carte. J'ai donc une carte contrôlant les servos pour les chiffres des deux heures et la seconde contrôlant les servos pour les chiffres des deux minutes.

Pour enchaîner les deux ensemble, vous devrez créer un connecteur de câble plat à 6 fils et souder une deuxième bande d'en-tête à l'autre extrémité de la première carte de servocommande. Vous devrez également modifier l'adresse I2C sur la deuxième carte afin qu'elle soit différente de la première et identifiable de manière unique.

Vous devrez également constituer le faisceau de câbles pour connecter les trois cartes (deux cartes servo et le module d'horloge) à votre Arduino. Vous aurez besoin de 5V et GND sur chaque carte ainsi que des connexions I2C à vos broches Arduino A4 et A5 (I2C sur Arduino Uno), et les broches du module d'horloge CLK, DAT & RST aux broches 6, 7 et 8 sur votre Arduino respectivement.

L'alimentation est fournie à l'Arduino directement à partir de l'alimentation 12V et aux servos à l'aide du BEC 5V 5A qui est ensuite connecté aux deux bornes situées sur le dessus du pilote PWM. Il vous suffit de connecter un servomoteur à l'alimentation et il alimentera le second via la connexion du câble plat à 6 fils.

Étape 3: Assembler les servos

Assembler les servos
Assembler les servos
Assembler les servos
Assembler les servos
Assembler les servos
Assembler les servos

Une fois que vous avez imprimé vos segments, vous devrez vaporiser le dos et les côtés en noir afin qu'ils soient moins visibles lorsqu'ils sont tournés à 90 degrés vers la position d'arrêt.

Vous devez ensuite coller les segments sur vos bras de servo avec de la colle thermofusible. Il est utile de les coller sur le servo avec le bras déjà sur le servo, de cette façon vous pouvez vérifier que vous les collez bien droit et à niveau.

Vous aurez également besoin de coller un bloc d'espacement sur le bas de chaque servo.

Assemblez les points en collant un petit goujon ou un bâton de kebab à l'arrière des points, puis dans les blocs de base. J'ai également vaporisé ces bâtons en noir pour qu'ils soient moins visibles si on les regarde sous un angle.

Étape 4: configuration et test

Configuration et test
Configuration et test
Configuration et test
Configuration et test

J'ai numéroté tous les servos et écrit le numéro sur chaque fil afin qu'il soit plus facile de les suivre. J'ai commencé avec le segment supérieur sur le chiffre des unités et j'ai travaillé jusqu'au segment du milieu sur le chiffre des dizaines. C'est aussi l'ordre dans lequel je les ai branchés sur les cartes d'asservissement, en rappelant que les identifiants sur les cartes comptent de 0 à 13 et non de 1 à 14.

J'ai ensuite placé les segments sur une table avec suffisamment d'espace entre eux pour les tests afin qu'ils ne se déplacent pas l'un dans l'autre tout en définissant les limites de déplacement et les directions. Si vous essayez de les rapprocher l'un de l'autre, un ou deux essaieront probablement de se déplacer dans la mauvaise direction ou de dépasser la course à un moment donné et d'en heurter un autre, ce qui pourrait endommager le segment, le bras du servo ou dénuder les engrenages du servo.

Étape 5: Téléchargement du code

Téléchargement du code
Téléchargement du code
Téléchargement du code
Téléchargement du code
Téléchargement du code
Téléchargement du code

Le code a l'air compliqué à première vue, mais il est en fait relativement simple grâce aux deux bibliothèques utilisées. Il y a aussi beaucoup de répétitions car il y a quatre affichages différents à 7 segments qui doivent être mis à jour.

Voici une description sommaire du code, consultez le guide complet pour une explication plus détaillée et un lien pour télécharger le code - Horloge à affichage mécanique à 7 segments

Nous commençons par importer deux bibliothèques, virtuabotixRTC.h pour le module d'horloge et Adafruit_PWMServoDriver.h pour les servodrivers. La bibliothèque Adafruit peut être téléchargée et installée directement via le gestionnaire de bibliothèque dans l'IDE.

Nous créons ensuite un objet pour chaque tableau de commande avec l'adresse correspondante, un pour les chiffres des heures et un pour les chiffres des minutes.

Nous avons alors quatre tableaux pour stocker les positions d'activation et de désactivation de chaque servo. Vous devrez apporter des ajustements à ces chiffres au cours des prochaines étapes pour vous assurer que vos servos sont droits lorsqu'ils sont allumés, qu'ils sont tournés à 90 degrés lorsqu'ils sont éteints et qu'ils ne se déplacent pas trop.

Un tableau de chiffres stocke les positions de chaque segment pour chaque chiffre à afficher.

Nous configurons ensuite le module d'horloge et créons des variables pour stocker les chiffres individuels actuels et passés.

Dans la fonction de configuration, nous démarrons et configurons les cartes de commande PWM et mettons à jour l'heure de l'horloge si nécessaire. Nous parcourons ensuite une boucle pour régler l'affichage sur 8 8: 8 8 afin de connaître la position de départ de tous les servos. Ceci est également utilisé pour configurer les servos afin qu'ils soient tous correctement orientés vers le haut.

Dans la boucle principale, nous obtenons l'heure mise à jour du module d'horloge, l'avons renversée dans les quatre chiffres, puis vérifions si l'heure a changé depuis la dernière vérification. Si l'heure a changé, nous mettons à jour l'affichage, puis mettons à jour les chiffres précédents.

Dans la fonction d'affichage de mise à jour, nous déplaçons d'abord les segments du milieu. Ceci est fait en premier car une certaine logique est nécessaire pour déplacer un peu les deux segments supérieurs adjacents au segment central avant de déplacer le segment central, sinon il les heurtera. Une fois que les segments du milieu sont déplacés, les segments restants sont déplacés aux positions correctes.

Étape 6: Assemblage de l'horloge sur le panneau arrière

Assemblage de l'horloge sur le panneau arrière
Assemblage de l'horloge sur le panneau arrière
Assemblage de l'horloge sur le panneau arrière
Assemblage de l'horloge sur le panneau arrière
Assemblage de l'horloge sur le panneau arrière
Assemblage de l'horloge sur le panneau arrière

Une fois les tests terminés, j'ai assemblé les servos sur le panneau arrière en utilisant la disposition ci-dessus comme guide.

La zone blanche est la taille globale de la carte, le gris plus clair est la zone entourant chaque chiffre dans lequel les segments servo se déplacent et le contour de la zone gris foncé est la ligne centrale des 6 segments extérieurs pour chaque chiffre.

J'ai coupé le tableau, j'ai marqué la mise en page, puis j'ai collé les chiffres en place pour constituer le cadran de l'horloge.

J'ai ensuite percé des trous près de chaque servo et passé les fils à l'arrière de la carte afin qu'ils soient moins visibles.

J'ai monté l'électronique sur le dos de l'horloge avec du ruban adhésif double face.

Étape 7: Configuration finale et fonctionnement

Configuration finale et fonctionnement
Configuration finale et fonctionnement
Configuration finale et fonctionnement
Configuration finale et fonctionnement
Configuration finale et fonctionnement
Configuration finale et fonctionnement
Configuration finale et fonctionnement
Configuration finale et fonctionnement

Une fois que les servos étaient tous prêts, j'ai retiré tous les bras de servo pour les derniers ajustements aux positions des segments. Vous devez allumer l'Arduino dans cet état pour que 8 8: 8 8 s'affiche, puis débrancher l'alimentation, cela recentre tous vos servos afin que vous puissiez remettre les bras de servo avec les segments au plus près de la verticale que possible.

Vous devrez ensuite allumer séquentiellement votre Arduino et ajuster les positions d'activation et de désactivation de vos segments dans vos quatre matrices afin que les servos soient parfaitement verticaux lorsqu'ils sont allumés et tournent à 90 degrés lorsqu'ils sont éteints sans déplacement excessif. Cette étape est assez longue et demande un peu de patience mais le résultat final en vaut la peine !

L'horloge peut être laissée alimentée à l'aide de l'alimentation 12V et du BEC 5V qui y est connecté. Si l'alimentation tombe en panne, la batterie du module RTC conservera l'heure de sorte que lorsque l'alimentation est rétablie, l'horloge se réinitialise automatiquement à l'heure correcte.

Si vous avez apprécié cet Instructable, veuillez voter pour lui dans le concours d'horloge et faites-moi savoir des améliorations ou des suggestions que vous pouvez proposer dans la section commentaires ci-dessous.

Concours d'horloges
Concours d'horloges
Concours d'horloges
Concours d'horloges

Deuxième prix du concours d'horloges

Conseillé: