Qu'est-ce qu'une horloge binaire ? Horloge binaire simple sur un microcontrôleur

Ayant voulu assembler une horloge binaire, je n'ai jamais trouvé de modèle prêt à l'emploi acceptable sur Internet. La plupart des montres présentaient un sérieux inconvénient : lorsque l'alimentation était coupée, les réglages de l'heure étaient perdus. Par chance, peu de temps avant cela, j'ai commencé à maîtriser le langage C et les microcontrôleurs AVR. Il a donc été décidé de renforcer les connaissances acquises par l'expérience pratique, tout en réinventant la roue. J'aime aussi beaucoup les LED vertes clignotantes.



Schème



RTC

Le problème de la sauvegarde des paramètres actuels est parfaitement résolu par l'horloge en temps réel (RTC). Mon choix s'est porté sur la puce DS1307.

Selon le fabricant, si l'alimentation est coupée, l'heure et la date peuvent être enregistrées pendant 10 ans, en consommant uniquement l'énergie d'une pile au lithium CR2032. Autrement dit, l’horloge continue de tourner, en maintenant une précision acceptable. Le temps ne s'égare pas, en rallumant l'horloge, on obtient temps réel sur le cadran, et non l'heure au moment de l'arrêt. Le microcircuit communique avec le microcontrôleur via le « bus carré » I 2 C, rapportant heure exacte et accepter ses nouvelles significations.

Le cœur de l'appareil

Le choix du microcontrôleur Mega32a a été dicté par les facteurs suivants :
Suffisamment de ports pour éviter d'utiliser l'affichage dynamique, que je n'aime pas, notamment parce qu'il irrite les yeux (clignotement avec haute fréquence en tout cas contre nature). Je m'en suis familiarisé en jouant avec les microcontrôleurs PIC dans le langage Proton PICBasic, et s'il est possible de ne pas utiliser d'affichage dynamique, je préférerais le faire.
Coût relativement bas de 130 roubles (le Mega16a, par exemple, coûte le même prix), et avec une remise, il s'agit généralement de 104 roubles.
Boîtier QPF-44 transparent, avec brochage pratique


Le port « A » affiche les secondes, le port « B » affiche les minutes et le port « C » affiche les heures. Il est très pratique que vous puissiez attribuer des valeurs de temps extraites du DS1307 aux ports sans aucune modification. Les boutons sont connectés au port « D » (broches 3 à 7), les broches 0 et 1 fonctionnent respectivement comme une ligne d'horloge (SCL) et une ligne de données série (SDA). La puce RTC est configurée pour produire des impulsions d'une fréquence de 1 hertz sur sa septième branche. Cette patte est connectée à la 3ème broche du port « D ». Ce port lui-même est configuré comme une entrée, et juste au cas où, des pull-ups internes vers l'alimentation plus sont inclus, dupliqués avec des résistances SMD à l'extérieur. De telles actions protègent pleinement contre toute surprise.

LED


J'ai choisi des LED dans un boîtier mat à faible luminosité. Tout d'abord, des diodes lumineuses dans un boîtier transparent ont été testées, mais même avec un courant de 3 mA, elles brillaient trop fort et de manière inégale, ce qui provoquait encore une fois un inconfort. Avec une chute de tension aux bornes de la diode de 2 volts, une tension d'alimentation de 5 volts et une résistance de 1 kOhm, la valeur du courant circulant dans la diode sera égale à (5 – 2)/1000 = 3 mA. Cette valeur a été sélectionnée de manière empirique et la luminosité de la lueur est parfaite pour une pièce sombre. Si vous envisagez de régler l'horloge directement lumière du soleil, alors la valeur de la résistance doit être réduite, jusqu'à 200 ohms, pour une lueur plus brillante (merci le capuchon).

Boutons

Sur une carte séparée avec des boutons, il y a un « fusible » (il nous protégera d'un coup accidentel dans la tête), sous la forme d'un autre bouton Bt6. L'heure peut être modifiée en la maintenant enfoncée.

Logiciel

Le code est écrit dans l'environnement CodeVisionAvr.
Le programme commence par la configuration des périphériques du microcontrôleur.
Configurer les ports (A,B,C – sortie, D – entrée)
Au cas où, une pause de 300 ms est prévue pour que le DS1307 ait le temps de « reprendre ses esprits »
Initialisation du « bus carré »
Nous configurons la puce RTC pour qu'elle produise des impulsions rectangulaires chaque seconde sur la broche SQW/OUT
Nous vérifions si le bouton CLR est enfoncé. Si oui, réinitialisez toutes les valeurs à 0
Activer les interruptions globales
Oui, quelques mots à leur sujet. Nous utilisons des interruptions externes INT0 sur PD2 sur front descendant, c'est-à-dire chaque seconde, le programme ira au gestionnaire d'interruption, dans lequel nous lisons les valeurs de temps du DS1307 et les affichons sur les indicateurs LED.
On entre dans une boucle sans fin, où on interroge les boutons
Si le bouton est enfoncé, ajoutez (soustrayez) une heure (minute) et envoyez la nouvelle valeur via I2C
Dans le même temps, nous vérifions si les nouvelles valeurs horaires s'inscrivent dans les plages de 24 heures et de 60 minutes.

Circuit imprimé

La planche est fabriquée à l’aide de la technologie Great Cosmic Laser-Ironing sur une textolite unilatérale. Lors de la fabrication du plateau supérieur, du papier ordinaire a été utilisé (expérience infructueuse).


Il existe de nombreuses variantes de cette technologie. À mon avis, celui-ci est le meilleur :
1. Découpez un morceau de PCB à la taille requise.
2. Nous ponceons les extrémités, éliminant ainsi les bavures nocives.
3. Lubrifiez la future planche avec de la poudre nettoyante ou du dentifrice et frottez-la avec le côté dur de l'éponge jusqu'à ce qu'elle brille.
4. Trempez notre pièce pendant quelques dizaines de secondes dans une solution faible de chlorure ferrique tiède jusqu'à ce qu'une surface uniforme et mate de couleur bordeaux apparaisse. Une fois retiré de la solution, le liquide doit mouiller complètement la surface.
5. Lavez les crottes et séchez-les soigneusement, sans toucher la surface avec vos doigts ou quoi que ce soit d'autre de gras. Placez-le immédiatement sur du papier propre avec la face cuivrée vers le bas pour éviter la poussière ou les cheveux.
6. Imprimez le dessin en miroir sur du papier fin (!) brillant, vous pouvez le découper dans un magazine par exemple. Nous ne touchons pas le dessin avec nos mains. Découpez soigneusement et placez le motif vers le bas.
7. Appliquez-le sur le morceau de PCB préparé, repassez-le sur 1 à 2 couches de papier propre, en réglant le fer à température maximale. 10 secondes devraient suffire, car si vous en faites trop, les pistes s'aplatiront et couleront les unes sur les autres. Le toner doit adhérer complètement au cuivre.
8. Trempez-le sous l'eau tiède courante, vous pouvez le laisser dans l'eau pendant 10 minutes. Déchirez et grattez soigneusement le papier. L'ancien m'aide avec ça Brosse à dents. Retirez les morceaux de papier restants avec une aiguille. Le toner reste sur le PCB.
9. Chauffez une solution forte de chlorure ferrique dans un bain-marie, jetez-y notre planche et éclaboussez pendant plusieurs minutes (selon la règle de Van't Hoff, avec une augmentation de la température de 10 degrés, la vitesse de réaction augmente 2 fois. Le cuivre disparaît sous nos yeux, vous ne pouvez pas chauffer, mais il faudra attendre plus longtemps.
10. Dès que tout le cuivre inutile a disparu, coupez le gaz, retirez (par exemple avec une pince à épiler) la planche, essayez de laver la plaque et les doigts du chlorure ferrique. Nous le lavons de la planche à l'eau courante.
11. Prenez de l'acétone (dissolvant pour vernis à ongles) et essuyez le toner. Vous pouvez essayer de le gratter avec du papier de verre ou une éponge.
12. Percez des trous.
13. Trichons. J'utilise le LTI comme flux, et je vous conseille cependant, après étamage et brasage, de laver ce flux (avec la même acétone, ou mieux encore avec un mélange 1:1 d'alcool et d'essence), car LTIshka a une certaine conductivité.
Tous les travaux doivent être effectués dans un endroit aéré, pendant
de nombreuses vapeurs nocives sont dégagées.


Les cartes sont connectées entre elles à l'aide de connecteurs PBS et PLD. Les premiers sont connectés à la carte supérieure à l'aide d'un fil de montage fin ; il peut être retiré, par exemple, d'un ancien câble ou adaptateur LPT.


Les seconds sont soudés à la carte inférieure et les broches menant au clavier sont pliées (voir photo).

Des circuits imprimés au format SprintLayout5.0 sont inclus. Il y a quelques erreurs dans les photos, mais elles ont déjà été corrigées dans les fichiers joints.

Micrologiciel du microcontrôleur

À cette fin, un programmeur USBasp a été assemblé, comme le montre la photo ci-dessus. C’est une chose plutôt sympa, facile à utiliser et vous pouvez l’emporter avec vous dans votre poche toute l’année (j’espère que personne ne fera ça). Pour flasher le firmware du mega32, vous devrez installer le cavalier « Slow SCK ».
Fusibles :
Fusible bas = 0xC4
Fusible haut = 0xD9
Notre microcontrôleur est cadencé à partir d'un oscillateur RC interne d'une fréquence de 8 MHz. J'ai dû désactiver l'interface JTAG sur PortC, sinon certaines LED ne s'allumeraient pas.
La carte dispose d'un connecteur ISP10 pour un clignotement/débogage rapide.

Panneau avant

Fabriqué en plaque d'aluminium de 40 mm de large et 1,5 mm d'épaisseur. Il comporte 18 trous percés d'un diamètre de 5 mm et 4 trous d'un diamètre de 3 mm pour la fixation des racks.


Tout d’abord, le modèle a été imprimé et collé sur la plaque. Ensuite, des trous pilotes ont été percés avec un foret de 1,5 mm, après quoi les trous principaux ont été percés avec des forets des diamètres requis.


Enfin, la plaque a été pliée, poncée avec du papier de verre fin et polie avec de la pâte GOI.
Le modèle est inclus avec les fichiers joints sous forme de fichier layout5.0

LED rouge dans le coin supérieur gauche

Répète les impulsions générées par le DS1307 sur la 7ème étape, c'est-à-dire clignote toutes les secondes. Un petit transistor MOSFET à canal P fonctionne en mode de commutation, s'ouvrant et se fermant au rythme des impulsions. Au début je voulais faire un rétroéclairage (comme Ambilight), pour lequel j'ai construit un inverseur CMOS sur une paire de transistors complémentaire (pour être sûr). Mais je n'ai pas aimé ça. Pour une LED, un transistor suffit, vous pouvez même utiliser du pnp de type bc857. J'ai utilisé un mosfet à cadre ouvert irlml6402 ou irlml6302.

Des dossiers

Les sources, le fichier hexadécimal, les cartes de circuits imprimés, les schémas, le circuit Proteus et les fusibles sont inclus dans cette image en tant qu'archive. Je ne fais pas confiance au stockage de fichiers, je n'ai pas encore mon propre serveur, donc, à mon avis, l'endroit le plus fiable pour le stockage serait Habr. Les utilisateurs Windows peuvent accéder aux fichiers en ouvrant une image enregistrée à l'aide de WinRar.
Oui, c'est la photo.

Vidéo

Conclusion

Vous pouvez utiliser n'importe quelle source d'alimentation capable de fournir 5 volts avec un courant de 70 mA. Un port USB convient tout à fait pour cela. L'essentiel est que l'alimentation soit « propre » et ne dépasse pas 5 volts. En alimentant l'horloge à partir d'un convertisseur DC-DC de la puce mc34063 avec un niveau de bruit d'environ 50 mV, j'ai remarqué des problèmes lors du réglage de l'heure. Désormais, l'appareil est alimenté par un interrupteur suspendu à proximité. Il produit strictement 5 volts. Du bon côté, vous devez également créer une protection infaillible sous la forme d'une diode et une sorte de stabilisateur linéaire pour 3,3 à 5 volts.
L'absence de fonctions réveil et affichage de la date dans la montre est tout à fait justifiée : les deux sont présentes dans le téléphone, ce qui signifie qu'avec une forte probabilité personne ne les utilisera dans une montre binaire (merci à Oncle Occam pour cette conclusion) .

L'idée d'utiliser un système binaire pour représenter le temps est apparue avec l'avènement des ordinateurs électroniques. Des exemples individuels d'horloges binaires faites maison étaient souvent créés par des passionnés d'électronique. Cependant, les horloges binaires étaient rarement utilisées en raison du manque de production en usine et de leur poids élevé.

En 2008, la société britannique Anelace a lancé pour la première fois une montre-bracelet binaire avec écran LED. Cet événement a trouvé une forte résonance parmi les jeunes. Aujourd'hui, les montres binaires sont produites non seulement par des fabricants de matériel informatique, mais aussi par des usines de bijouterie.

Comment choisir

Il existe des modèles de montres binaires avec différents nombres de « cadrans ». Sur certains, vous pouvez remplacer le rétroéclairage LED. Les horloges binaires peuvent être divisées en deux grandes catégories : groupe lumineux et indicateur lumineux à touche. Dans le premier, vous devez additionner des puissances de deux, dans le second, vous devez convertir un nombre binaire en nombre décimal. La première méthode est préférable pour les personnes qui souhaitent attirer l'attention, la seconde pour les programmeurs et les personnes qui souhaitent connaître l'heure le plus rapidement possible. Pour plus de facilité d'utilisation, vous pouvez acheter des horloges binaires avec des diodes étiquetées (1, 2, 4, 8, etc.).

Où puis je acheter

Il existe de nombreuses applications rentables pour acheter des montres binaires dans les magasins en ligne. Sur les services de trading spécialisés, vous pouvez sélectionner des modèles exclusifs parmi différents matériaux. eBay est le site de commerce électronique le plus fréquenté au monde. Sur le site eBay, dans la section « Accessoires », il existe des milliers d'options pour les montres binaires. Pour les payer, vous aurez besoin de la monnaie électronique PayPal.

Comment utiliser

Pour utiliser les horloges binaires dans la vie de tous les jours, vous devez convertir rapidement les nombres et les additionner les uns aux autres. Lisez la notice de votre montre, découvrez quelle rangée de diodes est responsable des heures et laquelle des minutes. S'il n'y a pas d'instructions, essayez de le déterminer expérimentalement - les lectures de l'échelle des minutes changeront plus rapidement que l'échelle des heures. Temps total se compose des lectures de l’échelle des heures et des minutes. Disons que les première et cinquième diodes sont allumées sur l’échelle des heures, et les troisième et quatrième sur l’échelle des minutes. Cela signifie que l'échelle des heures affiche 2 à la puissance zéro et 2 à la puissance quatrième, soit 1 + 16 = 17 heures. Somme des minutes : 2 au carré plus 2 au cube : 12 minutes. Ainsi, l'horloge binaire indique 17h12.

Avantages des horloges binaires

Les horloges binaires ont un effet positif sur les capacités mathématiques - après tout, chaque fois que vous aurez besoin de connaître l'heure, vous devrez effectuer des opérations arithmétiques simples. Ils contribuent également au développement des compétences en programmation - après tout, la tâche de codage des nombres binaires s'applique pleinement.

Ils attirent l’attention, beaucoup de gens admireront vos « compétences arithmétiques ». De plus, les montres binaires représentent le design et véhiculent un « style technologique du futur ». Les horloges binaires murales (de bureau) peuvent faire partie de votre intérieur.

Cette montre de poche insolite peut devenir un cadeau original. L'indicateur de temps qu'ils contiennent est construit sur seulement six LED simples. Le secret est que le nombre d'heures et le nombre de minutes de l'heure actuelle sont affichés par eux sous forme de nombres binaires et uniquement lorsque les boutons correspondants sont enfoncés ; le reste du temps le microcontrôleur de l'horloge « dort » et l'indicateur est éteint, ce qui réduit considérablement le courant consommé par la batterie au lithium.

Pour comprendre ce qu’est le système de nombres binaires, exécutons celui existant sur l’ordinateur. système opérateur Programme Windows"Calculatrice". Depuis dans différentes versions systèmes, ces programmes diffèrent, nous considérerons ici celui qui est inclus dans Windows XP. Après avoir lancé le programme, recherchez dans sa fenêtre et cliquez sur le bouton d'écran « Affichage » avec la souris, puis sélectionnez « Ingénierie » dans la liste déroulante liste. Après cela, de nombreuses autres fonctions s'ajouteront aux fonctions simples précédentes de la calculatrice, vous permettant d'effectuer des calculs complexes. Un commutateur de système numérique apparaîtra à gauche sous l'indicateur : « Hex » (hexadécimal), « Dec » (décimal), « Oct » (octal) et « Bin » (binaire). Immédiatement après le démarrage du programme, il est en position "Dec". Cela signifie que toutes les données initiales des calculs et leurs résultats seront présentés dans le système de nombres décimaux qui nous est familier.

Par exemple, composez le numéro 58 en appuyant sur les touches numériques correspondantes. Si vous déplacez maintenant le commutateur sur la position « Bin » en cliquant sur l'étiquette correspondante, alors dans la fenêtre de résultats, les nombres 58 deviendront 111010. Il s'agit du même nombre représenté dans le système de nombres binaires. Pour le vérifier, vous pouvez utiliser un tableau expliquant le principe de formation des nombres binaires et décimaux. Les chiffres binaires, contrairement aux chiffres décimaux, ne peuvent prendre que deux valeurs - 0 et 1. Les poids des chiffres binaires augmentent d'un facteur deux de droite à gauche, et non de 10 fois, comme dans le système décimal.

Le système de nombres binaires est largement utilisé dans les appareils numériques car il permet d'utiliser des nombres simples éléments logiques, en distinguant seulement deux valeurs - 0 et 1. Aujourd'hui, de nombreuses entreprises produisent de telles montres. Pour le vérifier, recherchez simplement sur Internet l’expression « horloge binaire ».

Mais pour un radioamateur, il est bien plus intéressant de ne pas acheter, mais de fabriquer une horloge binaire de ses propres mains. Le design proposé ne comporte que trois boutons de commande : allumage de l'indication de l'heure actuelle, des minutes et de la correction de l'heure - réglage précis du moment du début de l'heure. La montre est protégée contre les pannes causées par une pression accidentelle sur le bouton de correction. Ils sont construits sur des éléments largement connus et souvent utilisés par les radioamateurs.

Le diagramme de l'horloge est présenté sur la Fig. 1. Le temps est compté et affiché sur les LED par le microcontrôleur DD1. Sa fréquence d'horloge de 32768 Hz est stabilisée par un résonateur à quartz « horloge » basse fréquence ZQ1. L'appareil est alimenté par une pile au lithium G1 de 3 V. Comme on le sait, ces éléments se caractérisent par une autodécharge minimale et la capacité de fonctionner à basse température. Le condensateur C1 supprime les impulsions haute fréquence. En raison de la faible fréquence d'horloge, le microcontrôleur consomme peu de courant, ce qui permet de faire fonctionner la montre longtemps sans remplacer la pile.

Les LED HL1—HL7 sont connectées aux sorties du microcontrôleur RA0—RA4, RB5, RB6 via les résistances de limitation R1—R7. Six d'entre eux (HL2 - HL7) affichent l'heure, ils peuvent afficher des chiffres de 0 (tout éteint) à 63 (tout allumé). Celui-ci permet d'afficher tour à tour le nombre d'heures de 0 à 23 et de minutes de 0 à 59. Les poids des chiffres binaires auxquels ils correspondent sont indiqués à côté des LED.

L'indication de l'heure ou des minutes est activée à l'aide respectivement des boutons SB1 et SB2 connectés aux entrées RB0 et RB1 du microcontrôleur. Comme l'indication ne s'allume que quelques secondes, pendant lesquelles le bouton est maintenu enfoncé, l'énergie de la batterie est consommée avec parcimonie, elle sert longue durée. Le bouton SB3 connecté à l'entrée RB7 du microcontrôleur permet de régler l'heure. Cela ne doit être fait qu'au début de l'heure suivante, car pendant le processus de réglage, les compteurs des minutes et des secondes sont remis à zéro.

La LED HL1 clignote toutes les secondes lorsque le bouton SB1 ou SB2 est enfoncé. Il sert d'indicateur de l'activité de l'appareil et vous permet de vérifier son fonctionnement à zéro heure ou minute. Si ça n'existait pas, il y aurait situation désagréable, lorsque lorsque l'on appuie sur le bouton, aucune des LED ne montre de « signes de vie ».

La broche 4 du microcontrôleur, servant généralement d'entrée de réinitialisation MCLR, est dans ce cas configurée comme une entrée discrète régulière RA5. La configuration initiale à la mise sous tension est effectuée en interne par le microcontrôleur. Pour éliminer les interférences aléatoires, l'entrée RA5 est connectée à un fil commun. Le programme configure les lignes restantes du port A comme sorties.

Il configure les lignes RB0, RB1, RB7 du port B comme entrées et y connecte des résistances internes qui maintiennent un niveau logique élevé au niveau de ces entrées (lorsque les boutons sont relâchés). Les lignes restantes du port B sont configurées comme sorties. A la fin de la procédure d'initialisation, le programme allume chaque LED tour à tour pendant une seconde. Cela vous permet d'évaluer l'exactitude de l'installation et de vérifier la fonctionnalité du programme.

La minuterie intégrée T1 garde une trace du temps dans le microcontrôleur DD1. Le programme le configure pour qu'il génère une demande d'interruption chaque seconde. Le sous-programme du gestionnaire d'interruption génère mémoire vive microcontrôleur la valeur de l'heure actuelle - secondes, minutes et heures.

A chaque appel, le gestionnaire d'interruption vérifie également les niveaux logiques aux entrées RB0, RB1 et RB7, en fonction de l'état des boutons SB1-SB3. À des niveaux bas aux entrées RB0 ou ​​RB1, l'indication des heures ou des minutes est activée, respectivement. Lorsque le niveau à l'entrée RB7 est faible, indiquant que le bouton SB3 est enfoncé, et en même temps que le niveau est faible à l'une des entrées RB0 ou ​​RB1, le temps est ajusté. Ceci est fait pour réduire le risque que l'horloge ne fonctionne pas suite à une pression accidentelle sur le bouton SB3.

Le programme du microcontrôleur est de petite taille et simple. Sans aucune modification, il peut fonctionner sur les microcontrôleurs PIC16F628A et PIC16F628. Le texte source du programme, joint à l'article, est accompagné de commentaires détaillés qui permettent de comprendre l'algorithme de fonctionnement et même d'améliorer le programme. Par exemple, entrez dans l'indication des secondes ou dans le mode chronomètre. Pour ce faire, il n'est pas nécessaire de changer le circuit de l'horloge, puisque vous pouvez activer ces fonctions en appuyant simultanément sur les boutons SB1 et SB2.

Le réglage de l'heure s'effectue à l'aide du bouton SB3. Une fois exécuté, les minutes et les secondes sont remises à zéro. Si les minutes étaient inférieures à 30, le nombre d'heures ne change pas, sinon il augmente d'une unité. Si le bouton SB3 est maintenu enfoncé, alors une heure sur deux sera ajoutée au nombre d'heures. Cela peut être nécessaire lors du réglage initial de l'heure actuelle après la mise sous tension, ainsi que lors des transitions de l'heure d'été à l'heure d'hiver et inversement.

Pour indiquer les secondes dans le programme, vous devez trouver l'endroit où l'état des boutons est traité, et y ajouter une sortie pour afficher la valeur stockée dans le registre du compteur des secondes. Pour passer en mode chronomètre, vous devrez utiliser un registre supplémentaire. Lorsque deux boutons sont enfoncés, son contenu doit être augmenté d'un chaque seconde et affiché. Le texte du programme modifié doit être traduit dans l'environnement MPLAB et le fichier HEX résultant doit être chargé dans la mémoire du microcontrôleur.

L'horloge est assemblée sur un fragment d'une maquette, comme le montre la Fig. 2. Résistances (montage en surface) montées sur face arrière frais. Les LED FYL-3014SRC peuvent être remplacées par d'autres. Pour vérifier l'adéquation de la LED, connectez-la à une source de tension de 3 V via une résistance de 390 Ohm et évaluez la luminosité de la lueur.

Condensateurs, résistances, boutons – tous petits. Il est souhaitable que le bouton SB3 ait un poussoir raccourci. Son extrémité ne doit pas dépasser la surface du boîtier de la montre et même être en retrait de sorte qu'elle ne puisse être pressée qu'avec un objet pointu. Cette solution de conception sert de protection supplémentaire contre l'appui accidentel sur le bouton en plus du logiciel.