Électrification d’une horloge comtoise
**********
Si l’utilisation d’un moteur électrique pour effectuer ce remontage automatique pouvait facilement s’imaginer, il y avait au moins un défit de taille à surmonter : la régulation du mécanisme.
En effet, il ne sert à rien d’effectuer une motorisation si on doit, de toute façon, retoucher l’horloge tous les 8 ou 15 jours ou au bout d’un ou deux mois pour la remettre à l’heure manuellement car une telle horloge, de par sa conception, ne possède pas une très grande précision.
Il est difficile d’effectuer un réglage du balancier pour faire en sorte de posséder une horloge qui reste parfaitement à l’heure. Le fait d’effectuer un remontage manuellement tous les 7 à 8 ou 10 jours permet ; quant à intervenir pour ce remontage, de repositionner la grande aiguille à cette occasion pour rattraper une légère avance ou un léger retard hebdomadaire d’un coup d’index.
Il est donc inconcevable de réaliser une motorisation sur une horloge qui va se mettre à avancer ou à retarder au moindre changement de température.
L’intérêt d’une telle motorisation ne peut donc se concevoir que si, en même temps, on réalise un système de régulation permettant de conserver une bonne précision de l’horloge avec une dérive qui ne dépasserait pas une minute par an.
Le but de cette réalisation se propose d’atteindre deux objectifs :
1°) Remontage automatique de l’horloge.
2°) Système de régulation pour une horloge toujours parfaitement à l’heure.
Jusqu’à ce jour, la meilleure précision d’une horloge ou d’une montre peut être obtenue facilement à l’aide d’une régulation à quartz.
Il suffit donc de réaliser une horloge électronique à quartz et de réguler la cadence du balancier par rapport à cette base de temps précise.
Pour se faire, on peut effectuer un réglage du balancier pour que l’horloge comtoise avance très légèrement et déclencher (ou non) toutes les heures un bocage du balancier pendant quelques secondes pour produire un retard qui va venir corriger cette avance. Un tel blocage du balancier peut s’effectuer facilement par un simple électro-aimant.
Nota :
Une base de temps très précise peut également être obtenue par l’intermédiaire d’un signal radio reçu d’un émetteur relié à une horloge atomique. Mais un tel dispositif est souvent mise en œuvre pour compléter une régulation à quartz. Une simple régulation par oscillateur à quartz est donc pour moi incontournable et amplement suffisante.
Dans un premier temps et avant la réalisation d’un système de remontage automatique, j’ai donc réalisé une carte électronique me permettant d’obtenir une base de temps précise à l’aide d’un quartz et me permettant de commander un électro-aimant pour effectuer un blocage du balancier.
Pour rappel, le réglage de la cadence du balancier se fait en resserrant ou en desserrant la vis de réglage en bas du balancier afin de monter ou descendre le centre de gravité de celui-ci. Le fait de remonter le centre de gravité du balancier créé une avance. Le fait de le descendre créé un retard. Pour un fonctionnement optimal, les angles de déplacement de chaque coté juste après l’échappement jusqu’à la position extrême du mouvement doivent être identiques. On atteint cet objectif en effectuant un calage latéral de l’horloge. Il faut soulever le côté droit (ou descendre le coté gauche) si l’angle défini ci-dessus est plus important à droite qu’à gauche. Et inversement, il faut soulever le côté gauche (ou descendre le coté droit) si l’angle est plus important à gauche qu’à droite et pour arriver à faire en sorte que ces deux angles soient de même amplitude.
SCHEMA ELECTRONIQUE :
L’électronique a été implantée sur une carte principale logée dans le mécanisme de l’horloge et sur une deuxième carte ne comportant uniquement que l’afficheur LCD et un clavier constitué de trois boutons-poussoirs. Cette deuxième carte a été installée sur la façade de l’horloge pour permettre de visualiser facilement l’afficheur LCD et d’avoir accès au clavier.
Le schéma est réalisé autour du microcontrôleur PIC 16F631 de MICROCHIP. La base de temps a été réalisée avec un quartz de 32768 Hz connecté sur les broches OSC1 et OSC2 du MC (microcontrôleur). Le TIMER1 du MC est utilisé pour le comptage des impulsions de l’oscillateur. Ce compteur fonctionne sur 16 bits et permet donc de compter de 0 à 65535. Avec une configuration adaptée, on peut ainsi obtenir un cadencement toutes les secondes. Et par un simple petit programme (dont le code est fourni d’ailleurs en exemple dans le datasheet du 16F88 à la page 79) on peut facilement réaliser une « horloge à quartz » qui affiche Heures, minutes, et secondes sur un afficheur LCD.
La régulation nécessite de déterminer la position verticale de la grande aiguille (position 12 heures). Pour cela une photocellule a été installée sur la « grande détente » de la sonnerie. Ce capteur est relié à l’entrée RB5 du microcontrôleur.
La carte principale est alimentée par une tension continue de 19 V (Récupération d’un bloc d’alimentation d’ordinateur portable). Pour éviter tout problème en cas de coupure du courant secteur, une alimentation sauvegardée par batterie a été implantée sur la carte. La batterie utilisée est une batterie Ni-MH de 13,2 V (soit 11 éléments AA 1,3 Ah). La recharge de cette batterie est obtenue par l’intermédiaire d’un circuit MAX712 et dont le rôle est également de maintenir la batterie chargée en y injectant en permanence un courant de maintien (trickle charge). En cas de coupure de courant (même pour quelques heures), le système continue de fonctionner alimenté par la batterie. Lors du retour du courant 230V, la batterie est rechargée et est maintenu en charge par le circuit MAX712. Un régulateur de tension MC7805 permet de fournir la tension de 5 V nécessaire au MC, à l’alimentation des cellules photo-électriques et à l’afficheur LCD.
La carte comporte également un circuit CD4001 destiné à la commande du moteur électrique pour le remontage de l’horloge. Le moteur électrique (24 V continu) est alimenté sous la tension de la batterie en 13,2 V. Le circuit CD4001 monté en bascule « RS » est commandé par un contact pour sa mise en route et par une photocellule de fin de course pour l’arrêt du moteur. Le moteur est commandé par l’intermédiaire du transistor Q3 et d’un relais 12V.
L’électro-aimant permettant le blocage du balancier est commandé par le transistor Q2 par l’intermédiaire de la broche RC0 du MC. Cet électro-aimant, a été récupéré sur une épave d’imprimante laser. Fonctionnant normalement en 24 V, il fonctionne très bien sous la tension de la batterie (13,2 v nominal). Cette tension est d’ailleurs de 15,5 V lorsque la batterie est complètement chargée. Cette tension réduite permet en même temps d’adoucir le choc du balancier contre la palette de l’E-A.
LE PROGRAMME :
Le programme principal fait appel à une douzaine de sous-programmes énumérés ci-dessous :
1°) – RTC :
Se charge de gérer les registres « HEURE », « MINUTE » et « SECONDE ». Il permet également d’effectuer la calibration de l’horloge à quartz.
(Voir le paragraphe suivant au sujet de la calibration)
Ce programme est exécuté par la routine d’interruption lors du débordement du compteur « TIMER1 ».
2°) – BLOCAGE :
Se charge d’effectuer le blocage du balancier et sa libération.
3°) – AFF_LIGNE1 :
Se charge d’effectuer l’affichage sur la 1ère ligne de l’afficheur LCD.
Sur cette 1ère ligne est affichée l’heure de l’horloge à quartz sous la forme : 6h45:23
4°) – AFF_LIGNE2 :
Se charge d’effectuer l’affichage sur la 2ème ligne de l’afficheur LCD.
Sur cette 2ème ligne est affiché :
A gauche : L’avance mesurée (en secondes) et affichée sous la forme : A05s.
A droite : Le retard mesurée (en secondes) et affichée sous la forme : R00s.
6°) – REGLAGEH :
Se charge de mettre à l’heure l’horloge à quartz à la mise sous tension ou lors de l’appui sur la touche « + ».
Au début de ce programme, toutes les interruptions sont invalidées. Ensuite, le réglage est effectué au niveau de l’heure et des minutes. A la sortie du programme le registre « SECONDE » est mis à zéro ainsi que les registres « AVANCE », et « RETARD ». Les interruptions sont à nouveau validées.
La mise à l’heure exacte peut être réalisée en utilisant une horloge de référence calée sur une horloge atomique (par exemple : Heuremondial.com ou Horlogeparlante.com) sur internet.
7°) – REGLAGEC :
Se charge d’effectuer un réglage de la calibration lors d’un appui sur la touche « – ». La valeur de réglage est sauvegardée en mémoire EEPROM. Lors de l’initialisation, cette valeur en EEPROM est chargée dans le registre « CALIBRE ». Cette valeur de calibration est utilisée chaque minute par la routine « RTC » pour effectuer la calibration de l’horloge. Une bonne valeur de ce paramètre lors de la mise au point permet d’obtenir ensuite une bonne précision de l’horloge lors de son fonctionnement. Si le réglage est bien effectué, la dérive ne devrait pas dépasser 30 secondes par an.
8°) – ROUTINE D’INTERRUPTION :
Le programme fait appelle à une routine d’interruption déclenchée par le débordement du TIMER1.
Le débordement du TIMER1 permet d’incrémenter les registres « SECONDE », « MINUTE » et « HEURE ».
9°) – LEC_EEPROM :
Permet la lecture en mémoire EEPROM de la valeur de la calibration
10°) – ECR_EEPROM :
Permet l’écriture en mémoire EEPROM de la valeur de la calibration
11°) – AFF_LIGNEC:
Permet l’affichage lors du paramétrage de la calibration.
12°) – DIVERS :
Le programme principal ou les différents sous-programmes font appel également à d’autres sous-programmes pour des temporisations (q4mhz.asm), la gestion de l’afficheur (LCD_4bits.asm) et l’utilisation de fonctions mathématiques (MATH.asm) ainsi qu’une panoplie de macros (MACRO.asm) par l’intermédiaire de fichiers « include ».
Le listing complet du programme est disponible dans le fichier PDF mis à disposition à la fin de cet exposé.
SYNOPTIQUE DU PROGRAMME :
CALIBRATION DE L’HORLOGE A QUARTZ :
Pour ceux qui n’ont jamais été confronté à ce problème, j’explique ici de quoi il s’agit. Un quartz de 32768 Hz n’oscille pas exactement à la fréquence de 32768 Hz mais à une valeur très approchée. La marge d’erreur donnée par les fabricants est souvent de +/- 20 ppm (soit +/- 0,655 Hz pour une fréquence de 32768 Hz). De plus, cette fréquence est tributaire de nombreux facteurs. Pour en citer quelques uns : la température, les vibrations subites par le quartz et son vieillissement. Pour ces raisons, l’horloge à quartz peut dériver de plusieurs secondes par jour pour atteindre plus d’une ½ heure sur 1 an.
Donc, il ne sert à rien de caler une horloge comtoise sur une horloge à quartz si celle là même accuse une erreur d’une demi-heure au bout d’un an.
Supposons une horloge qui avance d’une seconde toutes les 24h. Tout se passe donc comme si l’horloge avait compté 32768 impulsions en moins au bout de 24h. Pour compenser cette avance, il suffit donc d’introduire un comptage supplémentaire de 32768 impulsions toutes les 24h (soit 32768/1440 impulsions toutes les minutes). 1440 correspond au nombre de minutes dans une journée.
Soit « C » la valeur du nombre d’impulsions qu’il faut ajouter ou retrancher pour effectuer la calibration et « d » la dérive en secondes par jour :
On peut établir la formule suivante :
C = 32768 / 1440 * d soit après simplification : C = 1024 / 45 * d
Sans compensation, à chaque débordement du timer « TMR1 », celui-ci est repositionné à la valeur « 32768 » ; c’est-à-dire que le comptage s’effectue de 32768 à 65536.
La simple instruction qui effectue ce positionnement est : bsf TMR1H,7
Avec compensation, supposons une horloge à quartz qui avance de 3,5 secondes par jour sans être compensée.
La valeur de calibration est donc :
C = 1024 / 45 * 3,5 ; C = 79,64 soit 80 (arrondi à valeur entière la plus proche)
A chaque minute, le programme doit donc augmenter le comptage de 80 impulsions et donc introduire un retard qui va venir compenser l’avance prise par l’horloge.
Le compteur doit donc être positionné à : 65536 moins 32768 moins 80 = 32688
Soit en binaire : 0111 1111 1011 0000
Pour cela l’octet de poids fort : TMR1H est directement positionné avec la valeur : « 0111 1111 » avec les 2 instructions :
movlw 0x7F
movwf TMR1H
L’octet de poids faible : TMR1L prend la valeur : 1011 0000 ; ce qui correspond à 256 moins 80
(80 est la valeur de la calibration).
Lignes du programme :
comf CALIBRE,w
movwf TMR1L
« CALIBRE » est le registre qui contient la valeur de calibration.
L’instruction « comf » réalise la complémentation du registre et met le résultat dans « w » en laissant le registre « CALIBRE » inchangé. La complémentation correspond à l’opération : 256 moins 80 = 176. On retrouve bien en binaire : 1011 0000. La valeur de « w » est ensuite transférée dans TMR1L.
Le sous-programme « RTC » se charge d’effectuer ces 4 instructions toutes les 60 secondes (c’est-à-dire lorsque le registre « MINUTE » passe à zéro.
Pour effectuer facilement cette compensation et l’ajuster avec précision, une routine de programme a été réalisée pour modifier la valeur de calibration par le clavier. La valeur de calibration est sauvegardée en mémoire EEPROM. Ainsi, même après une coupure d’alimentation, le programme reprend la bonne valeur de calibration lors de la réinitialisation. Cette valeur peut donc facilement être affinée au cours du temps si on constate une légère dérive au bout d’un an, par exemple. La modification d’un point de la valeur de calibration permet de faire une correction par tranche de 16 secondes de dérive sur un an (durée d’une impulsion multipliée par 1440 minutes et multiplié par 365 jours). 16 s/an est la précision de l’horloge à quartz.
La valeur de calibration est paramétrable de 0 à 255. La compensation peut donc être réalisée pour une dérive pouvant aller jusqu’à 11,20s / jour (255*45/1024=11,20).
Si la dérive devait être supérieure à cette valeur, il faudrait remplacer le quartz car celui-ci serait vraisemblablement défectueux (hors limite de la tolérance fabriquant). Après 5 mois et demi de fonctionnement la dérive était de +17s. La valeur de la calibration a donc été réglée à 83 au lieu de 80. Et après un an de fonctionnement (avec une valeur de calibration de 83), on a pu constaté une dérive de seulement 3 secondes sur un an.
REMONTAGE AUTOMATIQUE :
Le système de remontage automatique est constitué d’un ensemble mécanique qui s’adapte sur l’horloge sans aucune modification de celle-ci en se fixant sur les 2 « piliers » avant à l’aide de 2 brides. Une coulisse guidée par roulements à billes se déplace transversalement et actionne 2 bras de manivelles fixés sur l’axe de chaque barillet. Cette coulisse est mue par une came entraînée elle-même par un moteur électrique à courant continu de 24 v par l’intermédiaire d’un ensemble de pignons d’engrenages. Chaque cycle de remontage correspond à une rotation de 15° des axes de barillet.
Chacun des 2 bras de manivelles, entraînés par la force du moteur, effectue une rotation de 15° dans le sens contraire de déplacement naturel des aiguilles pour permettre le remontage d’un cran du barillet. Pendant ce mouvement, la coulisse se déplace de gauche à droite entraînée par la came. La coulisse revient alors lentement sur le côté gauche sous l’action du mécanisme de l’horloge et l’action des poids. Lorsque la coulisse revient à sa position extrême gauche, un nouveau cycle de remontage est déclenché. Chaque mouvement de remontage ne dure que 1,5 seconde et est exécuté toutes les 45 mn environ et en moyenne.
Un ressort fixé sur la coulisse permet à celle-ci d’être en permanence en contact avec au moins un bras de barillet. Une masselotte fixée au bas du balancier permet le blocage du balancier par l’électro-aimant.
Un nouveau mécanisme de remontage automatique et un nouveau mode de régulation à été effectué quelques mois plus tard. Vous pouvez trouver cette réalisation sur ce site sous le titre « Horloge murale déco ».