Un horloge à tubes Nixie
une façon nostalgique de lire l'heure actuelle
Introduction
Les tubes nixie ont été introduits dans le marché à partir des années cinquante du siècle dernier. Il s'agit en gros d'une lampe néon à décharge dans laquelle on retrouve une anode et plusieurs cathodes, ces derniers ayant la forme des chiffres à montrer. En polarisant l'anode et une des cathodes avec une tension supérieure à une centaine de volts, on obtiendra une décharge de couleur jaune/orange autour de la cathode sélectionnée.
En démontant un vieux multimètre numérique désormais hors service, j'ai réussi à récupérer quelque nixies de type TAF1317A et, avec un ami, on s'est mis à étudier une façon de les réutiliser. Sur Internet, on trouve beaucoup de matériel sur ce type d'afficheurs, qui sont caractérisé par un certain charme d'antan. Nous avons donc décidé de réaliser un horloge, qui utilisait ces afficheurs désormais insolites.
Si ce projet vous plaît, lisez aussi la page Un horloge à nixie, version 2.1 sur ce même site. Certains défauts de la première version y ont été corrigés et un circuit imprimé est proposé pour en faciliter la réalisation.
Pour simplifier le plus possible le projet et pour faire en sorte d'obtenir un circuit de dimensions réduites, j'ai décidé d'utiliser un microcontrôleur, et en particulier le vieux PIC16F84A. Même s'il est désormais obsolète, ce microcontrôleur peut être trouvé avec facilité et je l'utilise encore, car j'en dispose de plusieurs exemplaires dans mes tiroirs. A l'intérieur du multimètre numérique où j'ai trouvé les nixies, j'ai trouvé aussi des circuits pilotes du type 7441, qui vont permettre de simplifier encore plus le circuit.
A l'intérieur du circuit, on trouve un petit convertisseur DC/DC, capable d'obtenir la tension d'environ 170 V nécessaire à l'alimentation des afficheurs, en partant de l'alimentation en faible tension. Ce choix permet d'éviter l'utilisation d'un transformateur dédié et permet d'obtenir un circuit plus sûr par rapport aux réalisations visibles parfois, où les 170 V sont obtenus à partir de la tension secteur (en particulier, les 110 V aux Etats Unis). Il doit être clair que, bien que les courants et les puissances en jeu sont petits, ceci n'est pas un circuit pour débutants, car une décharge à 170 V peut être au moins très douloureuse. De même, le circuit présenté ici est un prototype : sentez-vous libre d'apporter des variations sur le thème ! La consommation totale de mon prototype est de l'ordre de 250 mA.
Le circuit
Le circuit utilisé est relativement simple, grâce au fait que toutes les fonctions les plus complexes sont effectuées à l'aide d'un microcontrôleur PIC16F84. Ce dernier s'occupe de l'heure, grâce à son oscillateur à quartz, ainsi que de l'affichage en multiplexage sur les afficheurs. Voici la première version du circuit, sur laquelle le code à charger sur le micro a été mis au point :
Le convertisseur est basé sur un oscillateur à relaxation construit autour d'une moitié d'un NE556 (un NE555 suffirait). Un transistor de puissance et un inducteur complètent l'affaire. Bien que les courants sont toujours inférieurs à 5 mA, il est très important de choisir une diode rapide dans le convertisseur, qui puisse supporter les tensions en jeu. Il ne faut absolument pas utiliser ici une diode de redressement, car elle serait inadaptée à travailler en haute fréquence. Les alimentations de PC sont une source bien sympathique de ce genre de composants. Dans mon cas, il a suffi d'utiliser trois diodes 1N4148 en série, pour arriver à supporter les tensions en jeu. Pour l'inducteur, j'ai utilisé un bobinage sur un toroide de filtre pour les triacs, bien que ce choix soit bien peu adaptée.
Le microcontrôleur gère les chiffres affichées sur les nixies avec le driver 7441 et les huit transistors NPN. Ces derniers sont utilisés pour l'alimentation des anodes des quatre nixies. La tâche du code chargé dans le PIC sera d'allumer une nixie à la fois, en synchronisant le code BCD à fournir au driver 7441 avec la chiffre à afficher sur la nixie sélectionnée. Le quartz utilisé pour l'horloge du PIC est à une fréquence de 3,2768 MHz. Cette valeur est avantageuse, car elle permet d'obtenir un signal de référence à 1 Hz avec des divisions relativement simples dans le code.
L'alimentation du microcontrôleur est effectuée à travers une diode redresseur, de façon à permettre la programmation "in circuit", sans que le programmateur branché sur le connecteur ICSP (In Circuit Serial Programming) se trouve à alimenter tout le circuit. Dans ma réalisation, un condensateur tampon de 1 F (oui, un farad...) est chargé par une résistance de 100 Ω et s'occupe de faire fonctionner le micro en cas de coupure d'alimentation générale du circuit. La durée de fonctionnement maximale du circuit en cette configuration est de l'ordre de quelques dizaines de minutes. Des condensateurs de ce type peuvent être trouvés sur certaines cartes mères d'ordinateurs.
Le connecteur ICSP est utilisé aussi pour connecteur deux boutons poussoir sur les lignes RB6 et RB7 qui permettent (grâce aux résistances de pull-up internes du PIC) de régler les heures et les minutes affichés, pour obtenir l'heure exacte.
Les lignes RA0, RA1, RA2 et RA3 sont utilisées pour piloter les transistors qui contrôlent les nixies. En réalité, dans mon prototype un petit accident m'a obligé à utiliser la ligne RA4 au lieu que la RA2 (qui ne marchait plus...). Ce type de modifications entraîne des petites ajustements du code, en particulier dans la routine activatedisplay. La version du firmware que peut être téléchargée depuis ces pages est néanmoins adaptée pour fonctionner sur la ligne RA2.
La version de Francesco Nardi
Le circuit sous la forme du premier prototype peut être sujet à plusieurs critiques. La première est le fait que le convertisseur DC-DC ne comporte aucune forme de contre-réaction. La tension de sortie est liée à celle en entrée, ainsi qu'à la consommation du circuit. La nécessité d'utiliser une tension stabilisée pour le convertisseur entraîne l'utilisation d'un régulateur, avec une possible perte d'efficacité du circuit. De plus, des phénomènes de dérive thermique, ainsi que le vieillissement des composants peuvent faire en sorte que la tension obtenue en sortie change dans le temps, en empêchant le bon fonctionnement du circuit. Francesco Nardi a réalisé une version de mon horloge, en utilisant par contre un meilleur convertisseur DC-DC. Voici donc le schéma électrique de l'horloge de Francesco, que je conseille d'utiliser et où plusieurs aspects ont été améliorés.
Dans le schéma de Francesco, le convertisseur a été amélioré avec l'adoption d'une contre-réaction, qui permet de maintenir constante à 170 V la tension d'alimentation des nixies. En plus, Francesco a utilisé une batterie rechargeable NiCd de 3,6 V, qui permet de maintenir l'heure à la place du condensateur de 1 F. Dans le circuit, les deux possibilités sont évoquées. Le fichier orologio_nixie_2_0.fcd contient le schéma électrique dessiné avec FidoCadJ, un logiciel écrit par moi et qui est téléchargeable et utilisable librement.
Le firmware
Le code chargé sur le microcontrôleur est plutôt simple, car tout ce qu'il doit faire est :
- s'occuper de la gestion des afficheurs en multiplexage
- diviser de façon correcte l'horloge pour obtenir un comptage en secondes, minutes, heures
- maintenir à jour la visualisation des minutes, des heures sur les nixies
- gérer une très simple interface avec l'utilisateur pour permettre de régler l'heure exacte, à l'aide de deux boutons poussoirs.
Les trois premières opérations sont effectuées à l'intérieur d'une interruption, qui est appelée de façon périodique à 200 Hz grâce au diviseur d'horloge, à l'intérieur du micro. A chaque appel, le programme s'occupe d'effectuer un rafraîchissement des chiffres montrées sur les nixies et mettre à jour les différents compteurs. Si la fréquence est suffisamment élevée, la persistance de la rétine fera en sorte que les quatre nixies apparaîtront allumées au même temps. Dans notre cas donc, un rafraîchissement complet des quatre nixies a lieu à une fréquence de 50 Hz.
J'ai adopté la même technique (bien que avec un circuit de gestion légèrement différent) dans la page horloge avec PIC16F84 et PCF8573, présent à l'intérieur de mon site.
La gestion des deux boutons est par contre effectuée dans le cycle principale. Très simplement, on demande que les boutons soient maintenus pressés pendant un certain temps, pour éviter de prendre en compte les rebondissements des contacts. Une fois que la pression a été détectée, il suffit simplement d'incrémenter les compteurs des heures et des minutes.
Télécharger ici le fichier source du logiciel, à compiler (avec gpasm, ou MPLAB).
Et voici le fichier hex compilé, prêt à charger sur le micro : NixieClock.hex
Autres réalisations
Francesco m'a aussi envoyé quelques photos de sa réalisation, que je publie ici avec beaucoup de plaisir.
Alex a par contre utilisé la photo d'ouverture de cet article pour réaliser un horloge virtuel fait en Flash. Voici donc un lien à sa page : http://www.alexoleron.com/alexoleron_services/horlogenixie.php
Conclusion
Le petit circuit que j'ai présenté (je parle de mon prototype) e été réalisé uniquement avec des composants récupérés. Pour cette raison, certains choix ne sont pas optimaux. Il faudrait faire attention au choix de l'inducteur, pour choisir un modèle adapté à fonctionner autour de 30 kHz en minimisant les pertes. En deuxième lieu, le microcontrôleur PIC16F84 est désormais obsolète et des modèles plus performants sont disponibles à prix plus convenants. Je pense que le circuit puisse s'adapter assez facilement à un PIC16F628. Certains de ces défauts ont été corrigés dans le circuit décrit dans la page Un horloge à nixie, version 2.1.
--------
Copyright (C) 2007-2008 Davide Bucci davbucciPleasenospamherE@tiscali.it
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.