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".
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).
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.