Ressusciter une vieille horloge

Ressusciter une vieille horloge

Quelque part au milieu de l'Allemagne profonde, il y a une vieille maison avec une horloge en façade, qui sonnait jadis les heures. C'est une vieille horloge mécanique fatiguée, qui n'a probablement jamais été très précise, et qui maintenant s'arrête parfois. Comme il n'y a pas moyen de la remettre manuellement à l'heure (elle n'a pas de système de roue libre), elle était condamnée à l'arrêt. Jusqu'à la semaine dernière, quand, à l'aide de quelques modules Yoctopuce, nous lui avons confectionné un pacemaker...


Une horloge qui sonnait les heures il y a 250 ans...
Une horloge qui sonnait les heures il y a 250 ans...



Cette horloge utilise un mécanisme primitif d'échappement à balancier, très proche de celui décrit dans cet article d'une revue Américaine de 1886 sur les horloges primitives. Il ne comporte même pas de rouage pour une aiguille des minutes: au XVIIIe siècle, dans les campagnes, vouloir donner l'heure à la minute près à tout instant devait sembler bien futile...

Ce mécanisme est bien moins raffiné et surtout moins précis que ceux qu'on trouve de nos jours dans une pendule de salon. Nous avons donc commencé par doter notre horloge de quelques instruments de mesure afin de pouvoir surveiller et mesurer son fonctionnement.

La face cachée de l'horloge
La face cachée de l'horloge



A l'aide d'un Yocto-Knob et d'une barrière lumineuse à réflexion disposée derrière le balancier, nous avons obtenu un compteur de balancements autonome. En effet, le Yocto-Knob est capable de compter tout seul les impulsions mesurées. Grâce à la mesure précise du début et de la fin de la dernière impulsion, on obtient une assez bonne estimation de la fréquence instantanée.


  
La barrière lumineuse détecte le passage du balancier



Nous avons rajouté un Yocto-4-20mA-Rx et un capteur angulaire sur un des axes de roue qui était accessible, pour avoir une mesure absolue de l'avancement de la pendule, insensible à des irrégularités de battement qui pourraient ne pas se voir sur le balancement.

Le capteur angulaire disposé en bout d'axe
Le capteur angulaire disposé en bout d'axe



Comme l'horloge se trouve tout en haut du grenier, très loin de tout ordinateur, nous avons connecté ces capteurs à un YoctoHub-Wireless, avec une rallonge d'antenne de 3m et une antenne 8dBi placée à un endroit favorable afin de pouvoir joindre le point d'accès WiFi situé deux étages plus bas. Pour faciliter les réglages, nous avons aussi ajouté un Yocto-Display permettant l'affichage des mesures directement à côté de l'horloge. Le tout est contrôlé par un petit script PHP, que le YoctoHub-Wireless déclenche toutes les quelques secondes environ à l'aide d'un callback HTTP.

Les modules Yoctopuce sont fixés au pied du mécanisme, avec les moyens du bord...
Les modules Yoctopuce sont fixés au pied du mécanisme, avec les moyens du bord...



Après deux jours de mesures, nous avons pu régler l'horloge de sorte à ce qu'elle fonctionne assez régulièrement, et gagne en moyenne deux petites minutes par heure. Nous avons fait ce choix car, comme il n'est pas possible de la faire avancer manuellement, la seule manière de la maintenir bien à l'heure est de la faire avancer très légèrement, et de l'arrêter quelques secondes par heure pour appliquer une correction éventuelle. Comme cette horloge n'a pas d'aiguille des minutes, deux minutes d'avance à la fin de chaque heure passent totalement inaperçues si elles sont régulièrement compensées.

C'est alors que nous avons pu mettre en place la fonction "pacemaker". Il suffit d'un Yocto-Servo et d'un servo-moteur de modélisme pour pousser un peu le balancier et le relancer dans le cas où il s'arrête inopinément. Ainsi, lorsque le hub signale au script PHP qu'aucun battement n'a été mesuré dans la période et que le capteur rotatif n'a pas avancé, on déclenche une impulsion en douceur sur le Yocto-Servo et l'horloge repart toute seule. Voyez plutôt:

  



En positionnant la tige du servo-moteur en diagonale, on arrive même à arrêter en douceur le balancier à la position de repos, pour pouvoir le relancer au moment désiré. Ainsi il est possible de maintenir l'horloge à l'heure sans dérive, en l'arrêtant quand elle se prépare à sonner si elle est un peu en avance, et en la relançant quelques instants plus tard. Pour détecter le moment où elle s'apprête à sonner, on a utilisé un simple contact souple fixé sur la tige métallique qui libère le mécanisme de sonnerie.

Un contact souple (à gauche) détecte quand la tige qui libère la sonnerie monte
Un contact souple (à gauche) détecte quand la tige qui libère la sonnerie monte



Et c'est ainsi que notre vénérable horloge génère désormais un fichier de log horodaté, sur un serveur à 700Km de chez elle. En voici un petit extrait:

14:00:12 Clock has announced 2h 14:15:02 776 tics (25.7/m) 155.5deg (18.8/m) 14:30:00 762 tics (25.2/m) 73.5deg (18.4/m) 14:45:06 788 tics (26/m) 354.1deg (18.5/m) 14:50:55 Bell bar is high 14:51:20 The bell is about to ring 14:51:20 Hold clock until 14:53:00 14:53:05 Clock can now be released 14:53:05 Wake-up needed ! 14:59:58 Bell bar is low 15:00:04 658 tics (21.8/m) 244.7deg (16.6/m) 15:00:11 Clock has announced 3h


On a encore ajouté un petit bonus: comme personne ne tient à ce que cette horloge sonne pendant la nuit, notre système de contrôle arrête l'horloge en fin de journée et la libère 12h plus tard le matin. Cela permet de doubler l'autonomie de l'horloge, qui atteint donc deux jours. On bat des records d'autonomie pour une "smart watch" connectée :-)

Commenter aucun commentaire Retour au blog












Yoctopuce, get your stuff connected.