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

Dernière mise à jour : 14/06/2015

Présentation

Ce circuit est une sorte d'amusement, je l'ai réalisé sans en avoir une quelconque utilité. Il repose sur l'emploi d'un PIC 16F628A et de quelques afficheurs LED sept segments fonctionnant en mode multiplexé. C'est en quelque sorte un petit montage d'initiation, qui ne fait pas spécialement mieux que les horloges numériques du commerce. L'affichage se fait au format "24h", je n'ai pas prévu le mode "12h" (13h30 est donc affiché 13h30 et non 1h30). La base de temps est stabilisée par un quartz de 8 MHz (et non de 32,768 kHz comme dans l'horloge 001b), la précision dépend donc majoritairement de sa stabilité. Si le mode d'affichage multiplexé vous file des boutons, ou plus sérieusement s'il ne peut convenir pour une application bien précise, merci de vous téléporter vers la page Horloge 001b.

Schéma

J'ai déjà vu un schéma similaire sur ce site, mais où... Peut-être le compteur 005 ?

horloge_001

Principe général
Une partie du code logiciel du PIC est cadencé à une vitesse de 1 Hz et donc une seconde, ce qui est bien pratique pour une horloge. Pour obtenir cette base de temps de 1 Hz, on utilise un quartz de 8 MHz et on met en oeuvre une interruption du timer T1 à la fréquence de 1 kHz (période 1 ms), et avec cette interruption on incrémente un compteur jusqu'à 1000. Tous les 1000 coups, on dispose de l'info "une seconde écoulée" et cela provoque l'incrémentation de compteurs chargés de stocker la valeur en cours des heures, minutes et secondes. On pourrait aussi utiliser un quartz "horloger" de 32,768 kHz et diviser plusieurs fois par deux cette fréquence pour aboutir au rythme de la seconde (1 Hz). Cela est fait ailleurs sur mon site...

Affichage
La valeur des compteurs heures et minutes est affichée de façon alternée et à une vitesse suffisement grande pour que l'oeil ne se rende pas compte qu'un seul afficheur est allumé à un instant donné. Principe de la persistance rétinienne et de l'affichage multiplexé. Parce que le PIC utilisé dispose d'un nombre limité de broches d'entrée / sortie et parce que je tenais à conserver mes quatre boutons poussoirs de réglage (voir paragraphe suivant), j'ai du utiliser quatre broches pour la commande des sept segments des afficheurs, imposant l'ajout d'un décodeur BCD (4 fils) vers 7 segments (7 fils). Le décodeur utilisé est de type TTL SN7447 et possède une capacité en courant de sortie suffisante pour attaquer directement les segments des afficheurs. Mais en contrepartie, il n'affiche pas la queue des chiffres 6 et 9, ce qui à mon goût fait un peu moins joli. Simple question d'esthétique.
Remarque : la version précédente du logiciel, datée de mars 2011, présentait un scintillement trop visible au niveau de l'affichage, car je n'arrivais pas à avoir une vitesse de balayage suffisante avec le quartz qui était alors de 32,768 kHz. On voyait très bien l'heure, mais ce n'était pas très agréable.

Réglage de l'heure
A moins d'allumer cette horloge pile à 12h00 (valeur par défaut à la mise sous tension), il faut la mettre à l'heure. Ce qui explique la présence des boutons poussoirs reliés aux broches RB4 à RB7 et qui permettent d'incrémenter ou de décrémenter les heures et les minutes de façon individuelle. J'aurais très bien pu n'utiliser qu'une seule broche du PIC pour le réglage de l'heure et des minutes, mais cette façon de faire qu'on retrouve sur certains radio-réveils m'énerve trop. Donc non, je laisse comme ça, mais rien ne vous empêche de modifier ce mode de fonctionnement.

Suppression du zéro non significatif ?
Jean-Jacques me demande s'il est possible de modifier le logiciel du PIC pour effacer (ne pas afficher) le zéro des dizaines d'heures, afin de voir "9h07" au lieu de "09h07". Cela n'est pas possible côté logiciel car la valeur "0" est décodée par le SN7447 comme les autres chiffres. En revanche cela est possible côté matériel en ajoutant des circuits logiques externes qui décodent l'allumage du premier digit et activent le 7447 seulement si la valeur de ses lignes d'entrées [ABCD] est différent de [0000]. Une autre solution, bien plus élégante, pourrait consister à utiliser la ligne RA4 actuellement utilisée pour délivrer un signal d'horloge (clignotement secondes). Malheureusement on ne dispose là d'aucune autre ligne de libre sur le PIC qui permettrait d'ajouter cette fonction de suppression de zéro non significatif, sans en supprimer une autre.

Sauvegarde de l'heure lors d'une coupure d'alimentation

Si l'ensemble est alimenté par une source provenant du secteur EDF - ce qui est conseillé pour un usage permanent, la valeur de l'heure en cours est perdue dès que se produit une coupure d'alimentation secteur. C'est le cas de toute horloge alimentée par le secteur. Pour éviter cela, il convient de prévoir une sauvegarde par pile qui prend la relève uniquement en cas d'absence secteur. Pour une autonomie maximale de la pile de sauvegarde, on ne doit alimenter que le PIC et laisser les afficheurs éteints quand le secteur est absent. Cela est très facile à faire avec des diodes, comme le montre le schéma suivant.

horloge_001_alim

Dans bien des réalisations commerciales, il n'y a qu'un seul régulateur de tension (parfois une simple diode zener avec une résistance de limitation de courant), les afficheurs étant alimenté par une source de tension filtrée mais non régulée. C'est une façon de faire. Pour plus de détails concernant le fonctionnement de ce type d'alim secourue, merci de vous reporter à la page Alimentation secourue par batterie 002.

Prototypes

A ce jour au moins trois prototypes réalisés pour cette horloge, une en version "afficheurs standards", une avec quelques LED par segments, et une avec des afficheurs géants.

Mon prototype
Réalisé avec ma platine de développement EasyPic, une plaque sans soudure pour poser le SN7447 et les quatre transistors, et le petit module de quatre afficheurs à LED sept segments décrit à la page Affisssseur 7 segments 003 (scusez-moi, zai un seuveu sur la langue).

horloge_001_proto_001a horloge_001_proto_001b horloge_001_proto_001c

La fréquence de raffraichissement de cette nouvelle version de février 2013 permet un rendu nettement meilleur que celui qu'on devait subir avec la version de mars 2011. Que voulez-vous, j'étais tellement fier avec mon petit quartz d'horloger 32,768 kHz. Il a fallu que je prenne sur moi, vous n'imaginez pas comme c'est dur de mettre son égo de côté. Tiens, allez, une petite vidéo (YouTube) pour montrer que je ne rigole pas avec les blagues.

video_electronique_horloge_001_proto_001

Le montage à continué de fonctionner même après la brêve surtension qui m'a chatouillé les doigts. L'appareil photo, lui...

Prototype de Julien
Qui vaut un paragraphe à lui seul...

horloge_001_proto_jj_001a horloge_001_proto_jj_001b

Alors, quoi de beau à raconter sur ce proto ? De beaux et longs échanges par mail...
Julien m'a demandé conseil pour son prototype qui ne voulait pas fonctionner correctement. Affichage erratique, parfois fonctionnement semi-correct pendand quelques secondes... Recherche des causes possibles, essai des afficheurs un à un, etc... Lors des derniers essais, l'ajout d'un condensateur de très forte valeur (100 uF) sur les broches d'alim du PIC montrait que l'horloge fonctionnait bien pendant une trentaine de secondes, et après, pouf, plus rien. Certains chiffres ne voulaient jamais s'afficher (chiffres 0, 1, 2 et 3 OK, mais rien à faire pour les suivants). Le fait que l'horloge fonctionne correctement pendant un certain temps avec un gros condensateur de découplage m'a fait penser à un problème au niveau de la source d'alimentation. Et c'était bien là le problème. La source de tension, une pile 9 V suivie d'un régulateur de tension 5 V, n'était pas assez "costaud" (résistance interne trop forte) pour assurer un fonctionnement normal du PIC. Le gros condensateur de découplage ajouté après coup (il y avait déjà le 100 nF sur le PIC), qui abaissait la résistance interne de la source de tension permettait un petit mieux, mais ce n'était pas suffisant. Avec une alim secteur adéquate (9 V / 1 A), tout allait bien mieux ! Je voulais parler de cette petite aventure car durant tous nos échanges, nous n'avions pas mentionné que la source de tension était une petite pile. Si j'avais pensé à le demander dès le départ, le diagnostic aurait été plus rapide. D'autant que là ma responsabilité était fortement engagée, je n'avais pas mentionné la consommation maxi du montage dans mon article (elle est de l'ordre de 140 mA, ce qui correspond à 7 segments allumés en même temps - pour le chiffre "8" bien sûr).

Prototype de Edouard C.
Merci à Edouard pour les retours et photos de sa réalisation maison, c'est très impressionnant !

horloge_001c_proto_ec_001a horloge_001c_proto_ec_001b

Cette version a fait l'objet d'une adaptation sur commande du schéma d'origine et du logiciel du PIC. Elle appartient donc à Edouard et ne peut être librement diffusée ici (me contacter pour détails, si besoin).

Prototype des élèves de 5ème aidés de Thierry A.
Encore une horloge géante absolument géniale, réalisée par des élèves motivés et qui peuvent être fiers de leur travail !

horloge_001_proto_ta_001a horloge_001_proto_ta_001b horloge_001_proto_ta_001c

Prototype de Jean-Jacques
Jean-Jacque lui aussi a été séduit par cette horloge, en remplacement de celle de sa salle de bain qui a rendu l'âme en chutant.

horloge_001_proto_jj_001a horloge_001_proto_jj_001b


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 V5.60.
Horloge 001 - 16F628A (03/02/2013)
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

14/06/2015
- Ajout commentaire suppression zéro non significatif.
- Ajout photos prototype de Jean-Jacques.
- Ajout photos prototype réalisé par des élèves de cinquième.
09/03/2014
- Ajout photos du prototype d'Edouard (version avec afficheur géant).
24/02/2013
- Ajout photos du prototype de Julien, avec commentaire associé.
03/02/2013
- Amélioration de l'affichage (scintillement moindre) et meilleur comportement lors de l'appui sur les boutons de réglage (mise à jour en temps réel). Pour cela, remplacement du quartz 32,768 kHz par un de 8 MHz (il est certain que pour le multiplexage, l'augmentation de la vitesse de cadencement générale facilite bien des choses).
- Ajout photos et vidéo de mon prototype.
27/03/2011
- Première mise à disposition.