DCF 77
L'heure est diffusée par radio de manière très simple, 1 bit par seconde, la totalité des infos tenant sur (moins de) 59 bits.
Et ça marche comme l'ancienne horloge parlante et son quatrième top : l'heure qui est diffusée est celle qu'on aura lorsque le premier signal du prochain cycle arrive ─juste à l'instant où la porteuse réduit son signal en début de trame─. Cela permet de préparer l'affichage de l'heure pendant la dernière seconde, la 59, où il n'y a rien.
Modulation d'amplitude
- Fréquence radio : 77.5 kHz soit 3 868 m
- C'est de la modulation d'amplitude : l'émetteur émet à 100% en permanence, sauf un créneau où le signal diminue à 15% du signal normal. Cela arrive une fois par seconde.
- Un bit est codé dans la durée de ce créneau : 100 ms pour un 0, 200 ms pour un 1.
- Le premier bit (le bit 00) marque le "top" de l'heure qui vient d'être diffusée
- Il n'y a pas de bit codé dans la dernière seconde (le bit 59 n'existe pas), ce qui permet de repérer le début de trame
- Accessoirement, il existait aussi une baisse de modulation à 25% pour intercaler l'identification de l'émetteur, une modulation à 250 Hz entre les secondes 20 et 32 pour coder en morse DCF77 aux minutes 19, 39 and 59.
On notera que le signal est très précis, alors du point de vue filtrage, on peut théoriquement réaliser des filtres permettant de reconnaitre les deux cas, et rejeter le reste... mais ça, c'est facile à dire.
Modulation de phase
Il existe également une modulation de phase qui permet de se synchroniser de manière nettement plus précise, C'est l'application du papier de 1988 Time dissemination.
C'est une modulation de phase basée sur un algorithme pseudo-aléatoire, autrement dit cette modulation parait aléatoire et ne perturbe pas la modulation d'amplitude, mais elle n'est pas aléatoire, ce qui permet d'incorporer de l'information.
- [2017] Décodage logiciel du signal de transfert de temps par DCF77 : introduction à la radio définie par logiciel au moyen d’une carte son.
- DCF77 Receiver resources page propose l'extraction des bits à partir de la modulation de phase pseudo-aléatoire, ce qui a dû être proposé dans Elektor en 2012.
L'utilisation de cette modulation de phase est "overkill" pour ce que nous voulons faire une simple horloge toujours à l'heure, aussi je n'irais pas plus loin.
Codage de l'heure
| 0 | Toujours zéro |
| 1-14 | réservé météo (ne sert pas) |
| 15 | 1 ⇒ émetteur de réserve |
| 16 | 1 ⇒ annonce le passage été/hiver |
| 17-18 | 01 CET (Central European Time) = UTC + 1h
10 CEST (Central European Summer Time) = UTC + 2h |
| 19 | 1 ⇒ une seconde va être supprimée |
| 20 | Toujours à 1 |
| 21-27 | Minute [00-59] *1, *2, *4, *8, *10, *20, *40 |
| 28 | Bit de parité paire (bits 21 à 27) |
| 29-34 | Heure [00-23] *1, *2, *4, *8, *10, *20 |
| 35 | Bit de parité paire (bits 29 à 34) |
| 36-41 | Jour du mois [01-31] *1, *2, *4, *8, *10, *20 |
| 42-44 | Jour de la semaine [1-7] * 1, *2, *4 (Lundi 1) |
| 45-49 | Mois [01-12] *1, *2, *4, *8, *10 |
| 50-57 | Année [00-99] *1, *2, *4, *8, *10, *20, *40, *80 |
| 58 | Bit de parité paire (bits 36 à 57) |
| 59 | * aucun bit * |
Les bits de poids faible sont en tête.
Le bit de parité est le bit de poids faible de la somme des bits concernés. Cela permet de vérifier qu'un bit n'a pas été retourné par erreur, mais on ne verra rien si deux bits sont retournés simultanément.
Codage BCD
Remarquez le codage en BCD et non en binaire pur : cela permet d'avoir directement les chiffres à afficher. Par exemple, 39 est codé ainsi :
- 1001 = 1*8 + 0*4 + 0*2 + 1*1 = 9
- 011 = 0*40 + 1*20 + 1*10 = 30 soit 3 si on oublie les dizaines
Pour l'année, il n'y a que deux chiffres, le siècle étant assez évident, mais on peut le déduire avec le jour de la semaine, avec une ambiguïté de 400 ans. Ce qui est largement acceptable.
Le codage BCD permet de réaliser une horloge très simple, sans processeur, en affichant directement le code BCD sur un 7 segments :
On va voir que le signal n'est pas toujours nickel, dépendant de la distance à l'émetteur, et du récepteur.