Electronique > Réalisations > Affichage / Mesure > Horloge 005 - Pro

Dernière mise à jour : 08/03/2026

Présentation

Non, cette horloge n'a pas de chiffre. Et non, malgré son grand cercle de 60 points lumineux, ce n'est pas une Gorgy...

horloge_005_scr_001a  horloge_005_scr_001b  horloge_005_scr_001c  horloge_005_scr_001d  horloge_005_scr_001e  

Je dois reconnaître que ce projet est le fruit d'une pensée rapide, incongrue, inattendue et sans doute un poil surnaturelle, en tout cas peu adapté à l'apprentissage de l'heure aux jeunes enfants. Contrairement à la célèbre Gorgy qui équipe nombre de studios d'enregistrement, hopitaux, gares ou écoles (mais pas que), on ne trouve pas dans mon horloge 005 les 12 LED marquant les heures associées aux 60 LED indiquant les minutes. Bizarre non ? Alors comment indiquer les heures ? Tout simplement par un changement de couleur et de luminosité des LED ! Le petit plus ? L'utilisateur peut choisir l'apparence générale : mode point (point), mode ruban (bar) ou mode plein (full), avec ou sans marquage des 12 divisions horaires et avec ou sans marquage des secondes. Choix également de la manière dont apparaîssent les points lumineux pour les secondes, les minutes et les heures... Envie d'en savoir plus ?

   

Avertissement

Ce projet a fait l'objet d'un dépôt de paternité auprès de Copyright France.

   

Principe de fonctionnement

Avant de foncer tête baissée sur le schéma, essayons de "visualiser" la manière dont fonctionne cette horloge. Chacune des soixante LED peut prendre plusieurs couleurs (mais une seule à la fois s'il vous plaît, c'est déjà assez compliqué comme ça) :
Nota 1 : la durée de coincidence heures/minutes étant longue (1 minute) la LED qui affiche en même temps l'heure et les minutes peut (au choix de l'utilisateur) rester fixe avec une couleur particulière, ou clignoter alternativement entre "couleur heures" et "couleur minutes".

Quatre modes d'affichage sont possibles :

Pour un affichage en mode "nuit", il est possible de désactiver le mouvement des secondes. Le mode nuit peut être activé manuellement avec un interrupteur ou de manière automatique avec une LDR (résistance dont la valeur ohmique dépend de la luminosité qui la frappe).

   

Schéma

Le circuit est piloté par un "petit" PIC 8 bits de type 18F26K22, bon rapport qualité/prix et même un poil luxueux dans cette application. Mais je l'aime bien ce circuit, et puis il faut bien utiliser mon stock... de 1 pièce.

electronique_horloge_005


Choix des LED
J'ai fait le choix d'utiliser 60 LED programmables WS2812 au détriment de LED tricolores. Pour ces dernières, il m'aurait fallu ajouter de nombreux registres à décalage ou expandeurs de ports. Gérer 180 sorties individuelles (avec tous les fils que cela impliquait) me fatiguait d'avance ! Avec les LED programmables, 3 fils suffisent entre le circuit de commande et le panneau de LED. Enfin... 4 fils en fait, car j'ai rencontré quelques problèmes pour piloter la chaîne de 60 LED intelligentes en une seule passe et j'ai du me résoudre à piloter de manière séparée 2 groupes de 30 LED. Cela est d'autant plus étrange que le fabricant des WS2812 précise dans son document technique (datasheet) qu'on peut chaîner jusqu'à 512 voire 1024 LED et que je pense avoir respecté les délais du protocole (vérifications faite à l'oscilloscope numérique). Serais-je tombé sur une mauvaise série de LED ? Qu'importe, le surplus de travail que m'a imposé la gestion d'une seconde sortie de commande était supportable (pour preuve, je suis encore en mesure de vous écrire).
   
Transmission des données aux LED WS2812

Les LED "intelligentes" WS2812 ne requièrent qu'un seul fil pour la transmission des données. En l'absence d'un fil supplémentaire pour la synchronisation des données, il n'existe qu'une seule possibilité pour permettre de faire la distinction entre bits 0 et 1 : jouer sur la durée des niveaux logiques haut (1) et bas (0). Avec cette LED WS2812, la distinction se fait ainsi :

bit "0" : durée niveau haut entre 0,20 us (200 ns) et 0,50 us (500 ns), durée niveau bas entre 0,65 ms (650 ns) et 0,95 ms (950 ns)
bit "1" : durée niveau haut entre 0,55 us (550 ns) et 0,85 us (850 ns), durée niveau bas entre 0,45 ms (450 ns) et 0,75 ms (750 ns)

En prenant les valeurs extrêmes, nous avons une durée totale pour un bit :

durée minimale bit "0" = 0,20 us (200 ns) + 0,65 ms (650 ns) = 0,85 ms (850 ns)
durée maximale bit "0" = 0,50 us (500 ns) + 0,95 ms (950 ns) = 1,45 ms (1450 ns)
durée minimale bit "1" = 0,55 us (550 ns) + 0,45 ms (450 ns) = 1,00 ms (1000 ns)
durée maximale bit "1" = 0,85 us (850 ns) + 0,75 ms (750 ns) = 1,60 ms (1600 ns)

Le bon sens impose d'utiliser une durée médiane entre valeurs minimum et maximum spécifiées par le fabricant, j'ai pour cette raison adopté les valeurs suivantes :

- T0H = première partie du bit "0" à l'état haut : durée 0,35 us (±150 ns, soit 200 ns min et 500 ns max) - valeur effective 0,375 us / 375 ns
- T0L = seconde partie du bit "0" à l'état bas : durée 0,80 us (±150 ns, soit 650 ns min et 950 ns max) - valeur effective 0,812 us / 812 ns
- T0 = durée totale du bit "0" = 0,35 us (350 ns) + 0,80 us (800 ns) = 1,15 us (1150 ns) 
- T1H = première partie du bit "1" à l'état haut : durée 0,70 us (±150 ns, soit 550 ns min et 850 ns max) - valeur effective 0,688 us / 688 ns
- T1L = seconde partie du bit "1" à l'état bas : durée 0,60 us (±150 ns, soit 450 ns min et 750 ns max) - valeur effective 0,562 us / 562 ns
- T1 = durée totale du bit "1" = 0,70 us (700 ns) + 0,60 us (600 ns) = 1,30 us (1300 ns)

Remarque : les valeurs effectives sont celles pouvant être obtenues dans la pratique. Pour une fréquence d'horloge Fosc de 64 MHz (période d'horloge Tosc de 15,625 ns). Le temps minimal d'une instruction (nop) est en effet de 62,5 ns (Tosc * 4) et pour cette raison, il est impossible d'obtenir une précision temporelle inférieure à 62 ns.

Sur mon prototype, le temps requis pour transmettre les données aux 60 LED (soit 60 * 24 bits) est de 1,7 ms. L'opération de mise à jour complète des 60 LED étant effectuée toutes les secondes et nécessitant moins de 2 ms, le temps restant pour gérer sans stress les autres tâches confiées au microcontrôleur (environ 998 ms) est très amplement suffisant.
   
Sauvegarde de l'heure en cas d'absence secteur

Le circuit consommant une intensité de courant trop élevée (principalement à cause des LED intelligentes) on peut difficilement envisager une alimentation par pile, raison pour laquelle une alimentation secteur a été prévue. Le problème est celui qu'on connait bien avec tous les radio-réveils de base sans pile de sauvegarde (ou pile présente, mais usée) : quand le secteur disparaît, l'heure en cours disparaît aussi et on doit la régler à nouveau quand le secteur revient.

Pour contrer ce problème et éviter une reconfiguration manuelle, il existe plusieurs solutions :

- sauvegarder l'heure dans une horloge temps réel (RTC = Real Time Clock) externe ou interne au PIC
- récupérer l'heure par Internet (protocole NTP, Network Time Protocol)

Ici, la première solution a été retenue, avec une horloge RTC externe de type PCF8583 avec alimentation de sauvegarde individuelle (pile bouton CR2032). Cette option résulte du choix du PIC 18F, qui ne possède pas de module RTC interne ni assez de ressources mémoire pour y intégrer une couche réseau. Une version avec couche réseau et NTP pourrait apparaître dans un futur proche (horloge 005b ?).

   
Réglages / configuration

Cette horloge offre de multiples réglages, comme indiqué ci-après :

- réglage initial de l'heure - c'est la moindre des choses !
- mode d'affichage : point, ruban ou plein
- affichage ou non des marqueurs (toutes les 5 minutes)
- affichage ou non du mouvement des secondes
- choix des couleurs pour chaque mode d'affichage (3 x 9 couleurs)
- activation/désactivation du mode Nuit

Pour choisir un paramètre à modifier, presser le bouton SetNext ou SetPrev autant de fois que nécessaire jusqu'à l'affichage du paramètre en question. Presser ensuite la touche Up ou la touche Down pour modifier la valeur du paramère sélectionné. Après modification de la valeur d'un paramètre, sa sauvegarde est automatique si on presse le bouton SetNext. Pour annuler une modification et rappeler la précédente valeur, presser le bouton SetPrev.

   

Réglage date / heure (Date / Time)
La date n'est affichée que sur l'écran LCD, qui reste optionnel.

005_lcd_setdate_day 005_lcd_setdate_mth 005_lcd_setdate_yer
horloge_005_lcd_settime_hrs horloge_005_lcd_settime_min horloge_005_lcd_settime_sec 
   
Réglage du mode d'affichage

horloge_005_lcd_setdispmode_point horloge_005_lcd_setdispmode_bar1 horloge_005_lcd_setdispmode_bar2 horloge_005_lcd_setdispmode_full
horloge_005_scr_002a horloge_005_scr_002b horloge_005_scr_002c horloge_005_scr_002d 

Réglage des couleurs de LED
Ajustable individuellement pour chaque mode d'affichage. Les copies d'écran qui suivent se réfèrent au mode d'affichage "Point".
h = heures ; m = minutes ; s = secondes ; hm = heures/minutes coincidentes ; hs = heures/secondes coincidentes ;
ms = minutes/secondes coincidentes ; bg = inactivité ; mk = marqueur
   
horloge_005_lcd_setcolor_point_bg horloge_005_lcd_setcolor_point_h horloge_005_lcd_setcolor_point_m horloge_005_lcd_setcolor_point_s
horloge_005_lcd_setcolor_point_mk horloge_005_lcd_setcolor_point_hm horloge_005_lcd_setcolor_point_hs horloge_005_lcd_setcolor_point_ms 
   
En cas de coincidence heures/minutes (par exemple 01h05, 03h15 ou encore 07h35), la couleur de la LED concernée peut être d'une couleur différente ou alterner entre couleur heures et couleur minutes. Si la couleur choisie est le noir (RVB = 000-000-000), alors le mode alternance est automatiquement activé pendant toute la durée de la minute en cours. Si la couleur choisie est différente du noir (RVB <> 000-000-000) alors l'affichage se fait avec la couleur sélectionnée pendant toute la durée de la minute en cours.

D'une manière générale, la couleur de la LED coincidence heures / secondes sera la même que celle adoptée pour les secondes. Il en sera de même pour la couleur de la LED coincidence minutes / secondes. Le fait de pouvoir choisir une couleur différente durant une seconde est une forme de luxe qu'on peut se permettre. Par les temps qui courent, cela peut faire du bien.

   

Ecran LCD : visible ou caché ?
Dans la mesure où l'écran LCD permet la configuration de l'horloge, on imagine mal pouvoir s'en passer. Mais cet écran peut très bien être caché et ne servir à rien d'autre qu'à la configuration générale. En d'autres termes, à vous de décider si cet écran doit ou non être placé au centre des 60 LED.

   

Prototype

En cours de réalisation, avec utilisation de 4 quarts de cercles équipés de LED WS2812.
   
horloge_005_proto_rm_001a horloge_005_proto_rm_001b
   
Les quatre quarts de cercles disposent de points de connexion à l'arrière, entrée des données d'un côté et sortie des données de l'autre :
   
horloge_005_proto_rm_001c horloge_005_proto_rm_001c2 horloge_005_proto_rm_001c3 
   

   

Circuit imprimé

Pas encore réalisé.

   

Logiciel du PIC

Pro - Version complète non disponible en libre service.
Free - Une version allégée (LE) sera prochainement mise à disposition en libre service.

  

Historique

08/03/2026
- Première mise à disposition