Horloge à tubes nixie
Commandée par arduino uno et module RTC
Electronique
Root » Serveurs » ElectroNique » Arduino » Horloge nixie

Description de la réalisation d'une horloge à tubes nixie. La commande s'effectue par un arduino uno et il y a un module RTC qui garde l'heure même en cas de coupure de courant.
-

-


Tout premier de schéma de principe
avec indication du branchement des tubes nixie

Les tubes nixie ont été utilisés comme indicateurs numériques à partir des années 1950, jusqu'à l'apparition des indicateurs sous forme de diodes électro-luminescentes. Le look rétro de ces indicateurs font qu'ils sont souvent utilisés dans des montages d'horloges.

On trouve de nombreux schémas très simples qui utilisent la fréquence du réseau comme référence et qui indiquent le temps par une division. L'heure est perdue en cas de coupure de courant. Il n'y a pas de processeur et il n'est donc pas possible d'avoir une heure d'alarme. La mise à l'heure est peu précise et se fait par un bouton d'avance "rapide" et "lente". Tout est centré sur l'indicateur et il n'y a pas de fonctions supplémentaires.

Mon circuit doit avoir un processeur pour permettre un réglage aisé de toutes les fonctions, par exemple le clignotement des chiffres à haute intensité pendant l'alarme, la mise à l'heure et la programmation de l'alarme de façon simple en sélectionnant chiffre par chiffre,...

Le but est de réaliser l'horloge avec les composants que j'ai dans mes fonds de tiroir: si j'ai utilisé un tel composant au lieu d'un autre, c'est parfois parce que je l'avais sous la main.

  • Alimentation à découpage
    J'aurais pû utiliser un transfo secteur fournissant à la fois du 5V pour l'électronique de commande et du 170V pour les tubes, malheureusement ces transfos doivent être bobinés sur mesure! Je n'ai pas non plus de convertisseur qui transforme la basse tension de 5 ou 12V en haute tension. A première vue une alimentation à découpage en provenance d'un ancien lecteur de DVD n'est pas la solution idéale, et pourtant cela fonctionne à merveille (et le rendement est plus élevé qu'avec un transfo classique, ce qui est important en ces temps de pénurie électrique).

  • La commande des tubes nixie
    Si on veut commander chaque tube, il faut de nombreuses lignes. Or le processeur n'en a pas assez. Le système que j'utilise emploie trois mémoires de 8 bits (j'aurais aussi bien pu utiliser un régistre à entrée sérielle et sortie parallèle).

  • 74141 ou autres
    Ici on arrive au cœur du sujet, notament comment faire fonctionner ces tubes. Il ne s'agit pas à proprement parler de tubes de radio, mais plus précisément de tubes néon. Pour les faire fonctionner on a besoin d'une tension élevée. Le circuit intégré 74141 est traditionellement utilisé pour commander des tubes nixie. Mais il existe des alternatives qui tiennent compte du fait que le circuit intégré (très ancien) est limité à une tension de 70V.

  • CMOS et TTL
    L'horloge est réalisée avec des composants de récupération (à commencer par les tubes nixie). Pour la logique, j'ai utilisé des circuits CMOS, mais les circuits de commandes des tubes sont en technologie TTL. Est ce que cela joue un rôle? Et quelle est la différence entre les deux technologies?

  • La logique
    Il faut lire la position des boutons-poussoirs, lire l'heure de l'horloge externe et commande l'affichage des chiffres. Comment structurer le programme?

  • L'horloge RTC
    L'arduino uno n'a pas d'horloge RTC intégrée. L'heure se perd en cas de coupure de courant ou en cas de reset. Mais il est possible de connecter une horloge externe alimentée par une petite pile.

  • Le logiciel
    Le logiciel détaillé est décrit ici. Le code peut être repris tel quel.

  • Mesure de la température
    Au lieu d'indiquer l'heure, le circuit peut tout aussi bien indiquer la température ambiante (ou alternativement la température et l'heure). Et comme l'arduino dispose de suffisamment d'entrées analogiques, on peut également mesurer la température extérieure.

  • Mode d'emploi
    Avec la mesure de la température que nous venons d'ajouter, le fonctionnement devient si complexe qu'un mode d'emploi devient nécessaire.
Listing à droite:
La programmation de l'Arduino est plus ardue que prévue. L'Arduino est l'intelligence de toute l'horloge. C'est plutot du à la complexité de la tâche, pas au language de programmation.

Il faut définir une dixaine de variables qui indiquent le mode de fonctionnement actuel (indication de l'heure normale, de l'alarme, modification d'un chiffre, indication de la température,...)

La programmation est effectuée en C, un language encore très proche du language machine (contrairement à C++ et Java), mais c'est également un language très direct, sans interface inutile (pas de déclarations d'objets, de méthodes et de propriétés).

Dernière photo à droite:
La première plaquette d'interface entre le processeur et les circuits qui vont commander les tubes. Cette plaquette transforme les données sérielles issues du processeur en chiffres BCD qui sont envoyés à la puce correspondante pour commander un tube.

Il y a également une alimentation haute tension des tubes (qui est réglable). Trois transistors BF422 permettent de commander l'intensité de l'éclairage des tubes nixie et trois autres transistors 2N2905A permettent de commander l'éclairage de leds d'indication (alarme active, mode de programmation,...)

Une seconde plaquette est nécessaire pour générer les tensions sur les cathodes des tubes nixie et éventuellement une troisième (petite) plaquette pour l'interface analogique (boutons de commande et transformation de la température en tension).

Les pips de la BBC

Le "pips" est le signal horaire de la BBC qui était utilisé pour indiquer l'heure exacte. Le pips se compose de 6 impulsions d'une fréquence de 1kHz émis chaque heure à 59:55, 59:56, 59:57, 59:58, 59:59 et 00:00. Les 5 premiers tops ont une durée de 100ms, le dernier de 500ms. L'heure commence au début de la 6e impulsion.

D'autres pays utilisent un nombre différent de bips, mais c'est la BBC qui a lancé le système à partir de 1924.

Actuellement l'indication horaire n'est plus précise car le signal de la radio est numérisé. La numérisation, la correction d'erreur et l'entrelacement des données fait que le signal audio prend du retard par rapport au signal d'origine. L'indication horaire n'est plus précise et n'est pratiquement plus utilisée.

Le code arduino pour générer les bips:

void pips(int a)  {
  static int b;
  for (b = 0; b < a; b++) {
    digitalWrite(ALARMOUT, b % 2);
    delay(1);
  }
}

if (m == 59 && s > 54 && pp != s)      { pips(100);  pp = s; }
else if (m == 0 && s == 0 && pp != 0)  { pips(500);  pp = 0; }

Publicités - Reklame

-