Etude d'une pendule à partir d'un phasemètre à Nixie




1. L'idée de départ

Parfois on récupère des appareils en espérant en faire quelque chose un jour ... mais parfois ces appareils sont très spécifiques ou ont une fonction qui ne semble pas très claire.
Dans ce cas, l'appareil est voué au démontage pour récupération de composants. Selon ce qu'on fait par ailleurs, on sera attiré par tel ou tel composant.
Moi quand je vois des Nixie, je récupère.
C'est le cas de cet appareil que j'ai démonté, dont voici ce qui reste de la face avant :



TORAN ... en fait, on trouve peu de doc sur le Net. C'est un système de radiopositionement hyperbolique pour les bateaux, certainement antérieur au LORAN .

Donc, aucun intérêt de conserver cette antiquité, d'autant que si on me l'a donné, c'est qu'il doit être en panne. Et pour s'en servir, encore faudrait-il que les émetteurs fonctionnent toujours !
Non, ce qui m'intéresse dans cet appareil, au point de vue des composants à récupérer, c'est principalement des pots ferrite (il y a pas mal de filtres de bande à 80 et 220Hz) et deux cartes d'affichage à Nixie :




Chacune comporte 6 digits, donc de quoi faire une pendule avec les heures, minutes et les secondes. (23:59:59) Voyons ça de plus près ...



2. Schéma

La carte marquée "phasemètre" comporte pas moins de 33 circuits intégrés TTL datant du milieu des années 70. La fine fleur de la logique combinatoire de l'époque, même pas la famille LS, non, la famille standard TTL, celle qui chauffait bien.
Toute ma jeunesse ...

Les initiés connaissent bien ces circuits TTL dédiés à l'affichage décimal sur Nixie : les décades 7490, les compteurs/décompteurs 74192, 74193 ..., les registres de mémoire 7475, les décodeurs BCD/Nixie 7441 et 74141 et toute la tripotée de fonctions logiques (AND, OR, NAND, NOR, XOR ...)
Seulement, je trouve que 33 circuits pour 6 digits, ça fait quand même beaucoup. Très certainement, il y a autre chose qu'un simple compteur, même latché (1 compteur, 1 latch, 1 décodeur par digit, ça ne ferait "que" 18 circuits, il y en a quand même 15 en trop ...)

Le plus simple, c'est de relever le schéma. Le faire sur une carte récente, ce n'est pas de la tarte avec les mutli-couches, mais là, cette carte est en double-face d'époque, donc toutes les connexions sont visibles (sauf celles sous les circuits, mais un bon ohmmètre permet de suivre les équipotentielles) et cela ne devrait pas être trop difficile, un peu long, c'est sûr.

Quelques heures plus tard, j'ai un brouillon :





Il y a du monde ...
Déjà, on peut voir qu'il y a deux fonctions distinctes, deux compteurs de conceptions différentes, l'un commandant les 4 Nixie de gauche, l'autre les 2 de droite. C'est d'ailleurs sûrement pour cette raison que les Nixie forment aussi 2 groupes, l'écart entre le 4° et le 5° étant un petit plus grand que les autres écarts.

Pour la suite, un schéma au propre s'impose ! Je l'ai découpé en 3 pages : une page par compteur et une autre page pour la commande des signaux (principalement utiles à l'un des compteurs) :


Compteur 2 (celui des 4 digits à gauche). Cliquez pour le PDF


Quelques explications :

Ce compteur est le plus simple des deux, du point de vue technique :
il comporte 4 étages "décade", identiques.

Il s'agit d'un compteur/décompteur, 2 entrées d'horloge permettent :
- soit de faire avancer le compteur (A9)
- soit de faire reculer le compteur (A10)
Un circuit, non figuré sur le schéma, permet de charger le compteur à la valeur 5000.

Chaque décade comporte :
- un circuit 74192, décade compteuse/décompteuse, préchargeable et resettable (raz)
- un décodeur BCD>>Nixie, 74141
- un afficheur Nixie
- un circuit de sortie du compte vers l'extérieur

Les Nixie sont alimentés en 170V
Les signaux importants sont entourés en rouge
Entourés en orange, j'ai repéré certaines sorties qui serviront plus tard ...
En vert, le +170V des Nixie. Les résistances sont des 15k.
Elles sont toutes reliées à une résistance de 3k3 (non figurée)

On retrouve là, un simple compteur/décompteur décimal, sans mémorisation du compte. Seule particularité : le préchargement à 5000.






Compteur 1 (celui des 2 digits à droite). Cliquez pour le PDF


Quelques explications :

Bien que ne comportant que 2 afficheurs, il est le plus complexe car c'est en fait une sorte de fréquencemètre automatique.

Regardons tout d'abord le schéma du comptage :
On remarque 2 parties semblables :
- une décade compteuse 7490
- un registre latch 7475
- un décodeur BCD>>Nixie 74141
- un circuit de recopie des sorties vers l'extérieur

La décade des unités comporte en plus un circuit combinatoire pour générer l'horloge de la décade des dizaines (A23.1 et A24.6). Ce qui est particulier ici car en général, on se contentait de prendre la sortie D pour la décade suivante ...

La décade des dizaines, en revanche comporte un certain nombre de circuits de combinaisons permettant de générer vers l'extérieur les signaux :
- compteur dizaines = 0
- compteur dizaines = 9 (très certainement pour détecter un dépassement)
- affichage dizaines = 0
- affichage dizaines =1, 3 ou 9 (utilité inconnue)
A noter que les 2 premiers signaux concernent les sorties de la décade 7490, alors que les 2 autres concernent les sorties du registre (donc ce qui est réellement affiché)
Ces signaux devaient servir à l'appareil pour prendre des décisions, par exemple allumer des alarmes ...

Les signaux de commande de compteur sont les suivants :
- entrée de comptage = H16
- RAZ = R2
- transfert dans les registres = H9 et H10






Circuit de gestion des signaux de contrôle. Cliquez pour le PDF


Quelques explications :

Ce circuit est constitué des fonctions suivantes :
- un décodeur d'adresse (A32.1, A32.2, A21.4 et A31.2) car l'appareil comportait 2 cartes identiques, donc 2 voies d'affichage. L'adresse de la carte est choisie par un inter à 2 positions.
- un circuit de validation du comptage (A31.1, A32.3, A32.4, A23.2 et A24.1)
- un circuit de fin de comptage (A29.1, A29.2, A30.2 et A30.3)
- un circuit de transfert des registres de comptage (A22.1, A22.2, A30.1, A15.4 et A15.5)
- un circuit prédiviseur par 10 (A33)
- un circuit de génération du préchargement du compteur2 (A21.3)

Voyons comment ces circuits fonctionnent...
Le circuit A32.1, A32.2 et le circuit RC de retard permet de générer l'horloge de A31.2 sur front montant de B18, et ce, pendant la constante de temps assez faible de RC. Comme les entrées JK de A31.2 sont à (01), lors du front montant de B18, Q31.2 passe à 0 Cependant, si B21 passe à 1, alors la bascule est presettée et donc Q31.2 passe à 1
A l'origine, une carte avait son inter sur Q, l'autre sur Qbarre de A31.2
Le circuit A23.2 pouvait donc être commndé sur son entrée 4 si :
- l'inter étant sur Q, lors du passage de B21 = 1
- l'inter étant sur Qbarre, lors du front montant de B18
Dans la suite, on supposera qu'on s'est arrangé pour que l'adresse soit la bonne et donc que le comptage peut être validé.

Le circuit de validation est constitué principalement de la bascule JK A31.1 câblée en toggle (JK=11). Donc le signal V_cpt a une fréquence moitié de h31.1 et par suite, V_cpt sera à 1 qu'un top de B18 sur 2.
A l'origine, on avait donc comptage d'une carte, puis comptage de l'autre ...

Le comptage s'effectue alors à partir de A25 : si les entrées 3 et 4 du A23.2 sont à 1, on retrouve le signal A25 sur l'entrée d'horloge de A33.
Il faut donc manifestement que la fréquence de A25 soit nettement supérieure à celle de B18 !

Lorsque V_cpt repasse à 0, la bascule A29.1 change d'état et la bascule A29.2 la suivra au coup d'horloge de A25 suivant. A ce moment, le circuit A30.3 va générer un signal de remise à zéro de A29.1 (A30.3). Ce signal, inversé, est envoyé en sortie (B17) et au circuit de transfert

Le circuit de transfert fonctionne de la même manière que celui de fin de comptage précédent.


Le fonctionnement mérite de se pencher sur les chronogrammes :


Chronogrammes du circuit de contrôle du compteur 1. Cliquez pour le PDF


Voyons en détail sur les chronogrammes :
J'ai pris pour A25 une fréquence très basse pour pouvoir y voir mieux, mais il est bien entendu que pour afficher "01", il faut que A25 ait une fréquence 20 fois supérieure à celle de B18
On suppose qu'à l'instant t=0, on débute un cycle.
1. B18 passe à 0 pendant un court instant, c'est son front montant qui va tout déclencher. Mais pendant qu'il est 0, R2 est à 1, le compteur1 est mis à 00 (A33 aussi)
2. Lors du front montant de B18, V_cpt passe à 1, le prédiviseur A33 peut compter les fronts descendants de A25
3. au prochain front montant de B18, V_cpt repasse à 0, le comptage est bloqué
4. la bascule Q29.1 passe à 1
5. au front descendant de A25 suivant, Q29.2 passe à 1
6. dès que A25 repasse à 1, la RAZ de Q29.1 s'effectue, B17 passe à 1, indiquant à l'extérieur que le comptage est fini
7. lorsque B17 passe à 0, Q22.1 bascule,
8. au front descendant de A25 suivant, Q22.2 bascule et le signal de transfert H9 et H10 est généré. En même temps la raz de la bascule Q22.1 est effectuée

On peut donc résumer ainsi le fonctionnement :
Le circuit compte le nombre de périodes de A25 présentes entre 2 tops de B18 (divisé par 10)
On peut donc imaginer qu'on a :
- un fréquencemètre sur A25 avec B18 comme référence de temps : par exemple si F(B18)=1Hz, on pourra mesurer la fréquence de A25 de moins de 10Hz (affichage 00) à plus de 990Hz (affichage 99)
- un périodemètre sur B18 avec A25 comme référence de temps : par exemple si F(A25)=10kHz, on pourra mesurer la période de B18 de moins de 1ms (affichage 00) à plus de 99ms (affichage 99)


J'espère que je n'ai pas été trop long dans mes explications, mais cela était nécessaire pour faire la suite, à savoir : commander cette carte sans trop la modifier pour en faire une pendule !
Je dis "sans trop la modifier" car il est bien évident qu'une solution aurait consisté à dessouder les Nixie et à refaire une carte complète, mais le jeu c'est ça : utiliser une carte existante, quitte à se compliquer la vie, mais pour en faire autre chose ... funny isn't it ?



3. Compteur 2 : vérification du bon fonctionnement de la carte

Avant de réfléchir sur "comment faire la pendule", il convient de vérifier qu'au moins une des 2 cartes fonctionne. Et on va commencer par vérifier le compteur le plus simple, le 2.
Pour cela j'ai soudé quelques fils sur le connecteur afin d'amener les alims et de quoi brancher un générateur BF sur les entrées du compteur :



On allume les alims, mais pas de générateur BF :



0000, déjà c'est pas mal, sauf qu'on devrait avoir 5000, mais bon il y a déjà les nixie de bons (et aussi certainement les 74141).
Essayons de compter en injectant un signal carré, TTL sur une des entrées du premier 74192 :


Cliquez pour la vidéo

Bon, ça compte bien ... voyons le décomptage :


Cliquez pour la vidéo

ça marche aussi. Sauf que ce n'est pas très visible, mais on dirait qu'un des Nixie "traine" un peu, il y a plusieurs chiffres d'allumés parfois :


Cliquez pour la vidéo

Dans ces cas là, on vérifie le décodeur 74141. Justement tous les 74141 sont sur support (alors que tous les autres circuits n'en ont pas) ....
Je retire le 4° 74141 de son support et là que vois-je :



Il manque des pattes ! D'ailleurs ce circuit a été dessoudé car il reste de l'étain sur ses pattes. Donc précédemment, un dépanneur a dessoudé les 74141 pour les remettre tels quels sur des supports. Bizarre, quand on fait ça c'est pour en remettre des neufs (encore faut-il en avoir)
Allez, j'enlève les 5 autres décodeurs de leur support :



Même chose ! En fait il n'y en a qu'un sur les 6 qui a encore toutes ses pattes. On se demande bien comment ça peut marcher ...

Le mieux dans ces cas là, c'est soit d'en remettre des neufs, soit de réparer ceux-là. J'opte pour la seconde solution car les 74141 sont des denrées rares, alors autant utiliser jusqu'au bout ceux qu'on a et qui fonctionnent, quitte à les réparer.
Voici comme je procède :


Le circuit aux pattes coupées est soudé sur un support intermédiaire

Une fois le premier 74141 réparé, je le remets en place et j'essaie sans les autres) :


Cliquez pour la vidéo

Parfait, les chiffres s'allument bien les uns après les autres, aucun ne "bave" !
Je fais pareil pour les 5 autres :


Cliquez pour la vidéo

Bon, je ne peux pas encore tester les 2 digits de droite, mais déjà les 4 de gauche, c'est ok. A part la mise à 5000 ?
J'essaie de nouveau, mais ce coup-ci en forçant le chargement en mettant à la masse le condo :




Bon, ça marche maintenant ! Tant mieux ..



4. Compteur 2 : ébauche de la pendule

Maintenant que le fonctionnement du compteur 2 est validé, on peut passer à l'étude de la carte de commande. Elle sera basée sur un PIC 16F690. J'ai trouvé sur Banggood des modules pré-câblés qui fonctionnent très bien, à condition de remplacer le quartz d'origine à 16MHz par un plus raisonnable à 8MHz (je pense qu'il doit y avoir un problème d'implantation de pistes du côté du quartz)



Le module CJCMU690


L'idée est de faire une pendule sans les secondes pour l'instant, donc de n'afficher que sur les 4 digits de gauche.
Pour cela, déjà, il faut vérifier que le compteur fonctionne bien avec des signaux générés par un PIC. Après tout, la carte est en TTL standard et que je sache les PIC sont compatible HC/LS mais pas forcément standard ... on verra bien.

Dans le principe, il y a un détail important qui fait qu'on doit "bricoler" le compteur. Non pas au fer à souder, mais les signaux de commande doivent être particulier. En effet, le compteur est décimal et on veut afficher les heurs et les minutes.
Que va-t-il arriver une minute après 00:59 par exemple ? Et bien le compteur affichera 00:60
De même, après 23:59, il affichera 23:60 et il faudra attendre 23:99 pour voir .... 24:00 !!

L'idée est simple : lorsque le chiffre des dizaines de minutes est "6", il suffira d'envoyer 40 impulsions supplémentaires, suffisament vite pour que notre oeil ne s'en aperçoive même pas.
De même, à 24:00, il suffira de décompter 2400 impulsions.
Autre chose : ce serait bien qu'à la mise sous tension, on affiche 12:00 au lieu de 50:00 ...

Pour ces raisons, j'ai du ajouter des portes ET en sortie du compteur 2 :



Les sorties de ces 3 portes ET permettent d'indiquer au PIC :
- que les dizaines de minutes valent 6
- que les heures valent 24
- et que les heures valent 12

Les entrées du compteur 2 sont reliées à 2 sorties du PIC :



Voici quelques photos :



La carte supportant le module 16F690 est montée sur 2 colonnettes





Les portes ET à diodes sont câblées directement sur le connecteur, seules leurs sorties sont reliées à la carte PIC




Vue des fils de liaison


Vérifions déjà le fonctionnement du compteur avec un programme qui commande uniquement les entrées de comptage :


A 1Hz.




A 200Hz environ

Ok. Il y a bien compatibilité PIC-TTL standard.

Voyons maintenant comment faire la mise à 12:00 à la mise sous tension. Il suffit d'utiliser le signal indiquant que les heures valent 12 et incrémenter le compteur jusqu'à obtenir ce signal vrai.


------> cliquez sur les photos suivantes pour lancer les vidéos correspondantes !



Raté ! 5200 au lieu de 1200 ...

Que se passe-t-il ? Tout bêtement, le compteur est préchargé à 5000 au départ et la première occurence pour laquelle le signal "H=12" est vrai, c'est pour justement 5200.
En effet, le décodage "H=12" n'est pas complet : si on écrit les 8 bits correspondants à 12h, on a : 0001-0010. La porte ET ne prend que le bit 1 et le bit 4. Donc pour les combinaisons contenant ces bits à 1, la sortie de la porte est 1.
Ce sont les combinaisons 12,13,16,17,32,33,36,37,52,53,56,57,72,73,76,77,92,93,96,97.
Il faut donc précharger le compteur à 0000 si on veut ne pas compliquer les combinaisons (je pourrais faire le décodage complet)

Le plus simple est donc de mettre les 2 entrées de chargement parallèle de A14 à 0 au lieu de 1 :



C'est le plus simple car il suffit de faire des ponts de soudure entre ces 2 entrées et la masse :


Modification de préchargement de A14 à 0000 au lieu de 5000

Puis j'ai modifié le soft du PIC pour qu'il envoie une incrémentation du compteur tant que le signal "H=12" est égal = 0. Et voici ce que ça donne (au début de la vidéo, on me voit enlever le court-circuit à la masse du condo pour simuler un reset):


Chargement automatique à 1200

On voit bien que le compteur est préchargé à 0000, puis s'incrémente rapidement jusqu'à 1200. C'est visible, mais en fait sans importance puisque cela ne se fait qu'à la mise sous tension. A la limite, ce n'est pas plus mal, ça ressemble à une sorte de test de la pendule !


Passons maintenant aux passages des heures, c'est-à-dire l'ajout de 40 impulsions lorsque les dizaines de minutes valent 6. Là, pas de souci, la première occurrence pour laquelle la sortie de la porte ET est 1 est bien 6 (la suivante c'est 7, mais on n'y passera jamais normalement).
J'ai donc fait la modification du soft du PIC, et pour aller plus vite, j'envoie une impulsion toutes les secondes (au lieu de toutes les minutes) et voici ce que ça donne :


Passage de 1259 à 1300 automatique




Passage de 1659 à 1700 automatique

Passons maintenant à la gestion de 24:00. Il s'agit lorsqu'on détecte H=24, de décrémenter le compteur de 2400 impulsions pour revenir à 0000. Et voilà le travail :


Raté !

Que se passe-t-il ? Juste une erreur de frappe dans l'assembleur, zut ... correction faite :


Retour automatique de 2400 à 0000

Ok, c'est bon. Maintenant que les passages fonctionnent, je remets une vitesse normale, c'est-à-dire que j'ai modifié le soft pour gérer les secondes (sauf qu'elles ne s'affichent pas pour l'instant, ce sera le compteur 1 qui s'en chargera).
J'ai également ajouté la partie soft pour gérer les 2 boutons de mise à l'heure. Celui de gauche incrémente les heures, celui de droite les minutes.
Voilà le passage en temps réel de 19:59 à 20:00 :



Puis une vidéo montrant la mise à l'heure :



C'est ok aussi pour la mise à l'heure. Lorsqu'on règle les minutes, on envoie une impulsion à la fois et lorsqu'on arrive à 60, on en envoie 40 de plus.
Quand on règle les heures, on envoie 100 impulsions à la fois (on voit bien les minutes aller très vite)
On peut se poser la question : que se passe-t-il si en incrémentant les heures, on passe au-delà de 24 ? Et bien j'ai prévu le coup : les 2400 impulsions décrémentent le compteur qui repasse à 00 pour les heures. La preuve :



Voilà, le compteur 2 des heures/minutes est opérationnel. Il faut maintenant s'occuper d'afficher les secondes ....



5. Compteur 1 : commande par le PIC

La modification logicielle n'est pas très compliquée. En revanche, il convient de respecter les chronogrammes des signaux de commandes du compteur :


Schéma du circuit de commande du compteur avec les liaisons au module PIC (cliquez pour le PDF)

L'idée est de générer autant de transitions sur A25 que l'on veut afficher, multipliées par 10, car il y a un prédiviseur devant le compteur !
D'autre part, pour que le transfert des compteurs vers les décodeurs se fassent, il faut générer 4 impulsions supplémentaires sur A25. Même pour afficher 00 secondes !

Voici quelques chronogrammes relévés :


A25 et B18 lorsque secondes = "00" : on voit bien les 4 impulsions en plus

Voici comment varie le nombre d'impulsions sur A25 en fonction de la valeur de secondes affichée :


A25 et B18 lorsque secondes = "01" : en tout, il n'y a que 14 transitions sur A25




A25 et B18 lorsque secondes = "05" : les impulsions sur A25 durent environ 1,5ms




A25 et B18 lorsque secondes = "20" : les impulsions sur A25 durent environ 6ms




A25 et B18 lorsque secondes = "55" : les impulsions sur A25 durent environ 16ms

Quelques petits "bugs" subsistent (cliquez pour les vidéos):




Il y a deux défauts : les minutes passent avant que les secondes n'affichent "00", et de temps en temps, "56" apparait.
Pour le premier défaut, il a suffit que je retarde l'incrémentation des minutes d'une demi-seconde.
Pour le second, il a été résolu de lui-même par la première correction : le compteur d'impulsion n'était pas mis à 0 au bon moment.



6. Compteur 1 : synchronisation externe

Il est temps maintenant de changer de base de temps. Jusqu'alors, c'était le timer interne du PIC qui générait la synchro toutes les demi-secondes. Seulement, la précision du quartz n'est pas suffisante. J'avais remarqué une avance de la pendule de 10s environ par heure. Cela est inadmissible !
La modification logicielle consiste à gérer un signal carré de fréquence 50Hz qui sera plus tard créé à partir du secteur.En attendant et pour valider le fonctionnement, j'ai injecté un signal carré de 250Hz, pour aller plus vite et voir d'éventuels problèmes :



Voici deux vidéos à 250Hz :




Comme prévu, la pendule va 5 fois plus vite, mais on voit bien que tout fonctionne correctement, même le passage à 00:00:00



7. Assemblage de la pendule définitive

Il n'y a plus qu'à rendre autonome la pendule, c'est-à-dire lui faire une alimentation sur le secteur. En effet, jusqu'à présent, elle fonctionnait sur alim de laboratire et générateur BF (pour la synchro)
J'avais mesuré les consommations sur :
- le +200V : environ 10 mA
- le +5V : environ 0,7A (et oui ça consomme la TTL standard !)

Pour le 5V, je vais utiliser un mini-module d'alim à découpage qui fournit 1A :



Pour le 200V, et bien je vais partir du 320V présent sur le condo de filtrage du primaire du module, même si cela veut dire que la pendule ne sera plus isolée du secteur. J'ai donc soudé 2 fils sur les 2 plots du condo :



Puis j'ai câblé sur un petit circuit, ce module de 5V et aussi le circuit de génération de la synchro :



Les raccordements se font par des borniers :




Ce circuit est installé sur la carte pendule à l'aide de colonnettes :



Des pieds sont ajoutés sous la carte pendule :



Voici une vue d'ensemble de la pendule :



Le câblage est très simple : 3 fils (marron, jaune, violet) vers le module PIC, un fil (rouge) vers le +200V et le câble secteur :





Voici le schéma de la partie commande :


Cliquez sur le schéma pour charger le PDF

En noir, entouré en pointillés : le module PIC16F690. En bleu, les connexions à la carte pendule et les composants nécessaires. En vert, l'alimentation et la synchro.



Et voici la pendule en fonctionnement :




Voilà, j'espère que cet article vous aura convaincu qu'on peut réhabiliter des vieilles cartes électroniques !