Electronique > Réalisations > Affichage / Mesure > Horloge 001b

Dernière mise à jour : 24/09/2017

Présentation

Cette horloge est du même tonneau que celle présentée en page Horloge 001 et repose elle aussi sur l'emploi d'un PIC 16F628A et de quatre afficheurs LED sept segments. Sauf qu'ici elle est plus compliquée. Mais avant de me frapper pour sorcellerie, laissez-moi vous expliquer. Quelqu'un m'a demandé si on pouvait utiliser l'horloge 001 pour piloter des tubes lumineux ou de grosses branches de LED pour faire une horloge géante. Avec des gros barreaux de LED oui, il suffit d'ajouter une interface de sortie pour disposer des tensions et courants requis (un simple ULN2803 peut suffire). Mais avec des tubes, pas évident à cause de la fréquence de balayage du multiplexage d'affichage. J'ai donc apporté une petite modification à l'horloge 001 pour qu'elle mette à disposition des valeurs "numériques" stables et modifiées une seule fois par seconde, sans aucun multiplexage. Bien entendu, le nombre de fils de liaison entre circuit horloge et circuit affichage augmente en conséquence, de 11 fils de liaison (4 communs afficheur + 7 segments) on passe à 28 fils de liaison (4 x 7 segments). La base de temps est stabilisée par un quartz "horloger" de 32,768 kHz, pas de raison de s'offusquer. Quoi que...

Schéma

La petite horloge 001 a doublé de volume, il fallait bien justifier le suffixe "b".

horloge_001b

Principe général
Toutes les secondes, une interruption est déclenchée et provoque l'incrémentation de compteurs chargés de stocker la valeur en cours des heures, minutes et secondes. A chaque changement de minute, les afficheurs recoivent de nouvelles données.

Base de temps
Lors de la conception de cette horloge en 2011, j'ai utilisé un quartz "horloger" de fréquence 32,768 kHz (un classique pour horloges et montres). A l'époque, je pensais que la base de temps serait exactement de 1 seconde, mais je m'étais trompé (je ne connaissais pas assez bien le fonctionnement du PIC). La base de temps était en fait de 1,000244140625 seconde et non pas de 1 seconde pile (valeur théorique bien évidement). Ce qui occasionnait un décalage de 21 secondes par jour (0,244 us * 60 * 60 * 24) et donc environ 2 minutes par semaine. Sûr qu'on peut faire mieux, surtout avec un quartz ! J'ai donc élaboré une nouvelle version avec une base de temps plus proche de la seconde, avec un quartz 1 MHz. Le code source livré permet de choisir entre les deux versions (pour tests), et les deux programmes compilés sont tous deux disponibles, vous avez donc le choix.

Affichage
La différence par raport à l'horloge 001 se situe à cet étage. Au lieu d'alimenter les quatre afficheurs un par un de façon séquentielle, on les alimente tous tout le temps. La consommation moyenne est donc en toute logique multipliée par quatre. Les quatre transistors et le décodeur BCD / 7 segments utilisés précédement (SN7447) ont été supprimés et remplacé par un quator de CD4094 qui sont des registres à décalage et servent ici de convertisseurs série / parallèle. Les chiffres à afficher sont mis à jour et stockés dans le PIC sous forme numérique 8 bits (1 octet), c'est à dire que pour "13h47" on dispose des quatres chiffres "1", "3", "4" et "7". Chacun de ces chiffres doit allumer les segments correspondant de l'afficheur sept segments qui lui correspond, ce qui veut dire qu'entre le PIC et les quatre afficheurs on a 28 informations binaires élémentaires à transmettre (7 bits utiles pour chaque afficheur). Comme les CD4094 recoivent les données sous forme série (bits transmis à la queue-leu-leu) il faut transmettre les bits correspondants à chaque chiffre les uns après les autres, c'est ce qui est fait sur la ligne notée Data sur le schéma. Notez que les chiffres tenant sur un octet et donc 8 bits, on transmet en fait 32 bits au total et non 28. Mais 4 bits ne sont pas exploités. Les 8 bits du premier chiffre à transmettre sont envoyés au premier circuit CD4094, mais ce dernier ne les garde pas et ils continuent leur chemin sur la ligne Data2 pour aboutir au second CD4094 lorsque les 8 bits du second chiffre à afficher sont transmis. Un peu comme dans un bus bondé dans lequel vous êtes entré en premier. Au début vous êtes proche du conducteur et petit à petit vous vous retrouvez au fond du bus, poussé par les gens qui montent derrière vous. Au final, c'est le quatrième afficheur qui reçoit les bits du premier chiffre transmis, qui doit donc correspondre aux unités des minutes. Les 8 bits du dernier chiffre transmis (le quatrième) s'arrêtent au premier CD4094 et correspondent au chiffre des dizaines de l'heure en cours. Pour résumer, les 8 bits de chaque chiffre se trouvent sous forme parallèle (un octet au format binaire) dans le PIC, sont transmis sous forme série sur la ligne Data (RA0 comme point de départ) après avoir subit une conversion de format (format binaire vers format sept segments) et retrouvent leur forme parallèle sur les sorties des CD4094.
Configuration pour afficheurs Anode commune (CA, Common Anode) : placer JP1 côté +5V et JP2 côté +5V
Configuration pour afficheurs Cathode commune (CC, Common Cathode) : placer JP1 côté 0V (masse) et JP2 côté 0V (masse)

Signe de vie
La broche RA4 du PIC se voit confier la douce tâche de changer d'état logique toutes les secondes, ce qui explique la présence de la petite flèche de sortie appelée Out_1Hz. Cette sortie n'a pas besoin d'être raccordée pour que l'horloge fonctionne. Mais si vous y branchez une LED avec sa petite résistance série de 330 ohms, alors vous saurez que l'horloge tourne si ladite LED clignote de façon régulière. Sans la LED, il vous faut attendre une minute pour voir le chiffre le plus à droite changer de valeur. Comment brancher la LED ? Comme indiqué ci-après (pour rappel, la sortie RA4 du PIC 16F628A est de type collecteur ouvert).

pic_tuto_base_activation_sortie_001d
Bases programmation PIC - Activation d'une sortie

Réglage heures / minutes
Les quatre boutons poussoir SW1 à SW4 sont toujours présents et servent à incrémenter ou décrémenter la valeur des heures et/ou des minutes après une première mise sous tension ou après une coupure secteur. L'appui sur une de ces quatre touches remet à zéro les secondes, ce qui permet de synchroniser facilement l'horloge sur une source sûre (horloge pilotée par signaux radio DCF77 par exemple).

Alimentation
Du fait que les segments des afficheurs sont allumés en même temps, la consommation globale est plus élevée qu'avec un affichage de type multiplexé. Le pire des cas serait celui où tous les afficheurs affichent la valeur 8, ce qui est rarement le cas sur une horloge. La consommation maximale est notées pour un affichage de type "08h08" où l'on a 26 segments sur les 28 allumés simultanément. Si on limite le courant à 3 mA par segment, cela nous mène à un courant global voisin de 90 mA. Si vous comptiez utiliser un régulateur de tension de type 78L05 en boitier plastique TO92 pour la totalité du montage, il faudra revoir votre copie et vous tourner vers un 7805 en boitier TO220. Mais au fait... l'intention de départ n'est-elle pas de piloter des afficheurs un peu spéciaux et non des afficheurs LED standards ? Dans ce cas l'interface qui va faire suite (après les CD4094) n'a sans doute pas besoin d'un fort courant de commande. Si j'ai mis des afficheurs sur mon schéma, c'est juste pour montrer que l'on a bien les valeurs sous forme "sept segments" en sorties des CD4094. Tout s'arrange, finalement !
Sauvegarde alim : pour sauvegarder l'heure sur absence secteur, voir méthode décrite à la page Horloge 001.

Logiciel du PIC

Fichier *.hex compilé prêt à l'usage disponible dans l'archive dont le lien suit, avec code source au format MikroPascal Pro V3.80.
Horloge 001b - 16F628A (23/09/2017)
- fichier electronique_horloge_001b_16f628_osc32k : pour usage avec quartz 32,768 kHz
- fichier electronique_horloge_001b_16f628_osc1M : pour usage avec quartz 1 MHz
Si vous souhaitez recevoir par la poste un PIC pré-programmé et prêt à utiliser, merci de consulter la page PIC - Sources.

Circuit imprimé

Non réalisé.

Historique

24/09/2017
- Correction bug logiciel PIC en mode CA (Common Anode), certains chiffres étaient mal affichés.
- Ajout précisions concernant les modes CA (Common Anode) et CC (Common Cathode) pour les afficheurs, suite à remarque d'Alain (mon texte ne mentionnait pas qu'on pouvait utiliser les deux types d'afficheurs.
- Correction du libellé des broches "commun" des afficheurs, qui étaient appelées "AC" et étaient branchées à la masse. Merci à Alain qui m'a signalé l'erreur.
- Ajout d'une version plus précise avec quartz 1 MHz. Voir texte pour détails.
03/04/2011
- Première mise à disposition.