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.