# DCF77

DCF77 est un système allemand de transmission de l'heure légale par ondes radio, sur une large zone de couverture. Il a été mis en service le 1er janvier 1959 par la Physikalisch-Technische Bundesanstalt (PTB), à l'initiative du Gouvernement allemand. Son émetteur est situé à Mainflingen, près de Francfort-sur-le-Main. Il possède une horloge atomique au césium et donne donc le temps atomique avec une incertitude d'une seconde en un million d'années. Les deux antennes sont soutenues par des câbles horizontaux, eux-mêmes maintenus en hauteur par plusieurs pylônes, à environ 200 m de hauteur.
L'information est émise en grandes ondes par un émetteur à semi-conducteurs de 50 kW de puissance isotrope rayonnée équivalente (PIRE) d'environ 30 à 35 kW dont la portée minimale est de 1 500 km et donc largement recevable dans plusieurs pays ouest-européens, dont la France métropolitaine, l'Allemagne et l'Italie.

## Principe général

La fréquence porteuse est de 77,5 kHz (désignée aussi par sa longueur d'onde de 3 868 m). Le seul défaut de cette fréquence est d'être couverte par les parasites. Il faut donc vérifier la cohérence des données reçues (d'où l'utilisation de bits de parité). On le remarque notamment avec l'augmentation de la portée à 2 000 km la nuit (car il y a alors beaucoup moins de parasites que le jour et l'ionosphère devient réfléchissante pour cette fréquence).
Le protocole permet aussi de remettre automatiquement à l'heure les horloges par radio (d'où l'appellation radio-piloté). L'émetteur peut avertir du passage de l’heure normale à l’heure d’été et inversement ou de l'ajout d'une seconde intercalaire à la fin de l'heure courante pour compenser l'écart entre le temps atomique et UTC causé par le ralentissement constant de la rotation terrestre.
Il n'est pas possible de faire fonctionner entièrement une horloge avec ce signal radio, car la réception du signal peut être interrompue (orage, distance, bâtiments, déplacements, etc.). C'est pour cela que les horloges radio-pilotées ont un système classique de régulation (à quartz), une mise à l'heure ainsi qu'une correction éventuelle à l'aide du signal radio.
Le délai de codage de l'heure atomique et de sa transmission radio empêche inévitablement d'atteindre l'heure « atomique » côté récepteur. En revanche, se caler sur le signal reçu permet de très fortement limiter les déviations qu'aurait sur le long terme un dispositif courant, une montre à quartz par exemple. L'erreur totale est donc très limitée et la précision obtenue excellente.
Chaque utilisateur peut très simplement connaître l'heure légale et également passer automatiquement à l'heure d'été/d'hiver (sous condition de réception du signal évidemment).
Sa réception est bien plus aisée et économique que d'utiliser l'heure GPS.

## Qualité de signal

La qualité du signal varie en fonction de la distance de l’émetteur selon les lois de propagation des ondes radio. Celle-ci est en particulier influencée par le double chemin emprunté : d'une part les ondes suivant le sol, d'autre part les ondes réfléchies sur la couche D de l’ionosphère, en particulier lors de l’interférence de deux ondes radio.
* À une distance inférieure à 500 kilomètres, une onde de sol de 1 mV/m peut être attendue.
* À une distance entre 600 et 1 100 kilomètres, les deux chemins peuvent conduire les deux ondes à s’annuler ou s’affaiblir.
* À une distance comprise entre 1100 et 2 000 kilomètres, l’onde de sol est très faible, mais l’onde réfléchie reste d'une puissance constante au cours de la journée. Un signal d’une puissance de l’ordre de 100 µV/m peut être attendu.
Toutefois, les conditions de la propagation ionosphérique dépendent de plusieurs facteurs tels le cycle solaire, l’heure et les saisons.

## Détails sur le protocole

Des informations sont transmises sous forme binaire à raison d'un bit à chaque seconde exactement. Les informations sont codées en BCD (décimal codé en binaire), leur décodage fournit au récepteur les autres éléments comme la date et l'heure.
L'impulsion émise au début de chaque seconde dure 100 ms pour un '0' logique et 200 ms pour un '1', il s'agit d'une modulation d'amplitude (abaissement de l'amplitude à 15 % du maximum lors des impulsions, en phase avec la porteuse). Seule la 60e seconde n'est pas modulée et permet d'annoncer le début d'une nouvelle trame (voir ci-dessous). On remarque que c'est la durée de l'impulsion qui transporte l'information et non l'amplitude (il serait sinon à ces basses fréquences quasi impossible d'espérer une certaine fiabilité).
La synchronisation des récepteurs se fait sur le premier bit (bit n$^o$ 0). L'apparition de la première modulation marque alors le début d'une nouvelle minute. Les informations transmises pendant une minute correspondent à l'heure qu'il sera au moment du prochain 'top départ' (« ... au prochain top il sera ... »).
Conformément aux textes légaux, un émetteur international doit indiquer son identité. L'identifiant "DCF77" a été retenu et est émis en morse trois fois chaque heure (19e, 39e et 59e minutes ; secondes 20 à 32 ; entre deux tops ; par abaissement d'amplitude de 25 % au rythme de 250 Hz ; sans interrompre le signal normal).
De plus, puisqu'il existe une imprécision de quelques millisecondes sur la durée séparant l'émission et la réception, une légère modulation de phase (pseudo-aléatoire) permet de se synchroniser si nécessaire avec plus de précision. Bien que peu de récepteurs grand public exploitent cette fonctionnalité, le gain sur la précision est significatif grâce à la bande passante accrue du signal ainsi modulé. Une application de ce gain de résolution porte sur la mesure du délai de propagation du signal basse fréquence de DCF-77 par rapport au signal de référence issu du GPS (1 PPS) : ce délai est représentatif des conditions ionosphériques permettant le guidage du signal basse fréquence sur de longues portées. Le décodage du signal pseudo-aléatoire qui module la phase de la porteuse s'implémente trivialement sur microcontrôleur par intercorrélation.

### Codage des informations

DCF77 time code :
| Bit | Poids | Signification | Bit | Poids | Signification | Bit | Poids | Signification |
| :00 | 1 | Début de minute, toujours 0. | :20 | S | Début du codage du temps, toujours 1. | :40 | 10 | Jour du mois (suite) |
| :01 | 1 | Témoins d'alerte civile fournis par le Bundesamt für Bevölkerungsschutz und Katastrophenwarnung. Peut contenir également des données de prévision météo | :21 | 1 | Minutes 00–59 | :41 | 20 | Jour du mois (suite) |
| :02 | 1 | Témoins d'alerte civile fournis par le Bundesamt für Bevölkerungsschutz und Katastrophenwarnung. Peut contenir également des données de prévision météo | :22 | 2 | Minutes 00–59 | :42 | 1 | Jour de la semaine Lundi=1, Dimanche=7 |
| :03 | 1 | Témoins d'alerte civile fournis par le Bundesamt für Bevölkerungsschutz und Katastrophenwarnung. Peut contenir également des données de prévision météo | :23 | 4 | Minutes 00–59 | :43 | 2 | Jour de la semaine Lundi=1, Dimanche=7 |
| :04 | 1 | Témoins d'alerte civile fournis par le Bundesamt für Bevölkerungsschutz und Katastrophenwarnung. Peut contenir également des données de prévision météo | :24 | 8 | Minutes 00–59 | :44 | 4 | Jour de la semaine Lundi=1, Dimanche=7 |
| :05 | 1 | Témoins d'alerte civile fournis par le Bundesamt für Bevölkerungsschutz und Katastrophenwarnung. Peut contenir également des données de prévision météo | :25 | 10 | Minutes 00–59 | :45 | 1 | N° du mois 01–12 |
| :06 | 1 | Témoins d'alerte civile fournis par le Bundesamt für Bevölkerungsschutz und Katastrophenwarnung. Peut contenir également des données de prévision météo | :26 | 20 | Minutes 00–59 | :46 | 2 | N° du mois 01–12 |
| :07 | 1 | Témoins d'alerte civile fournis par le Bundesamt für Bevölkerungsschutz und Katastrophenwarnung. Peut contenir également des données de prévision météo | :27 | 40 | Minutes 00–59 | :47 | 4 | N° du mois 01–12 |
| :08 | 1 | Témoins d'alerte civile fournis par le Bundesamt für Bevölkerungsschutz und Katastrophenwarnung. Peut contenir également des données de prévision météo | :28 | p. 1 | Bit de parité paire sur les bits 21–27. | :48 | 8 | N° du mois 01–12 |
| :09 | 1 | Témoins d'alerte civile fournis par le Bundesamt für Bevölkerungsschutz und Katastrophenwarnung. Peut contenir également des données de prévision météo | :29 | 1 | Heure 0–23 | :49 | 10 | N° du mois 01–12 |
| :10 | 0 | Témoins d'alerte civile fournis par le Bundesamt für Bevölkerungsschutz und Katastrophenwarnung. Peut contenir également des données de prévision météo | :30 | 2 | Heure 0–23 | :50 | 1 | Année dans le siècle 00–99 |
| :11 | 0 | Témoins d'alerte civile fournis par le Bundesamt für Bevölkerungsschutz und Katastrophenwarnung. Peut contenir également des données de prévision météo | :31 | 4 | Heure 0–23 | :51 | 2 | Année dans le siècle 00–99 |
| :12 | 0 | Témoins d'alerte civile fournis par le Bundesamt für Bevölkerungsschutz und Katastrophenwarnung. Peut contenir également des données de prévision météo | :32 | 8 | Heure 0–23 | :52 | 4 | Année dans le siècle 00–99 |
| :13 | 0 | Témoins d'alerte civile fournis par le Bundesamt für Bevölkerungsschutz und Katastrophenwarnung. Peut contenir également des données de prévision météo | :33 | 10 | Heure 0–23 | :53 | 8 | Année dans le siècle 00–99 |
| :14 | 0 | Témoins d'alerte civile fournis par le Bundesamt für Bevölkerungsschutz und Katastrophenwarnung. Peut contenir également des données de prévision météo | :34 | 20 | Heure 0–23 | :54 | 10 | Année dans le siècle 00–99 |
| :15 | R | Bit d'appel, permet d'alerter les employés de PTB à Brunswick, responsables du DCF77, ou Émetteur de réserve | :35 | p. 2 | Bit de parité paire sur les bits 29–34. | :55 | 20 | Année dans le siècle 00–99 |
| :16 | A1 | 1 = Annonce (pendant 1h) un basculement heure d'été/hiver au début de la prochaine heure | :36 | 1 | Jour du mois. 01–31 | :56 | 40 | Année dans le siècle 00–99 |
| :17 | Z1 | Z1 et Z2 indiquent le décalage horaire de l'heure émise par rapport au temps UTC. | :37 | 2 | Jour du mois. 01–31 | :57 | 80 | Année dans le siècle 00–99 |
| :18 | Z2 | si Z1Z2 = 01 : UTC+1h = CET = heure d'hiver si Z1Z2 = 10 : UTC+2h = CEST = heure d'été | :38 | 4 | Jour du mois. 01–31 | :58 | p. 3 | Bit de parité paire sur les bits 36–57. |
| :19 | A2 | 1 = Annonce (pendant 1h) l'ajout d'une seconde intercalaire à la fin de l'heure (il y aura une 60e impulsion supplémentaire. Le silence est reporté à la 61e et dernière seconde. Puis, débute l'heure suivante.) | :39 | 8 | Jour du mois. 01–31 | :59 | 0 | Marque de la minute : aucune modulation. |

### Exemple

pour 22h29 :
* 21 est à 1 : Étant de poids 1, on ajoute 1 au nombre de minutes
* 22 est à 0
* 23 est à 0
* 24 est à 1 : Étant de poids 8, on ajoute 8 au nombre de minutes (ce qui fait 1+8=9)
* 25 est à 0
* 26 est à 1 : Étant de poids 20, on ajoute 20 au nombre de minutes (ce qui fait 1+8+20=29)
* 27 est à 0
* 28 est à 1 : Cela veut dire que les bits de 21 à 27 sont impairs, ayant 3 bits à 1 (21, 24 et 26), nous avons reçu la bonne valeur
* 29 est à 0
* 30 est à 1 : Étant de poids 2, on ajoute 2 au nombre des heures
* 31 est à 0
* 32 est à 0
* 33 est à 0
* 34 est à 1 : Étant de poids 20, on ajoute 20 au nombre des heures (ce qui fait 2+20=22)
* 35 est à 0 : Cela veut dire que les bits de 29 à 34 sont pairs, ayant 2 bits à 1 (30 et 34), nous avons reçu la bonne valeur
La parité est très utile pour vérifier s'il n'y a pas eu d'erreur pendant la réception et pour ne pas afficher une valeur incorrecte. Il est aussi recommandé de vérifier le bit 20 à 1 (si la synchro arrive au mauvais endroit).
L'année est envoyée sur deux chiffres, il est donc commode de vérifier que la date ne dépasse pas 99, en cas de problème de réception, il est fréquent de se retrouver avec des dates supérieures à 99 (exemple: se retrouver le 45/25/2165 à 45h85, ce qui arrive si tous les bits reçus sont à 1).

## Applications

On retrouve bien sûr ce système sur les réveils et montres en tout genre, évitant le réglage de l'heure, et le réglage été/hiver. Les applications peuvent être très diverses.
Un module de réception du signal DCF77 est de conception relativement simple. Les fabricants de composants électroniques proposent des modules intégrés permettant de recevoir et de démoduler le signal. Ils sont composés d'une antenne et d'un récepteur ; le signal sort directement sur une des broches et il ne reste plus qu'à le décoder.
Enfin, il existe également quelques modules périphériques en kit, à connecter à un ordinateur pour le synchroniser. Néanmoins, s'il est possible de se connecter à Internet, on peut s'éviter ce genre de frais via des logiciels de mise à l'heure : voir le protocole NTP.