GPSO pcbMa précédente référence de fréquence 10 MHz étant tombée en panne, se posait la question de la réparer ou de passer à autre chose.
Après réflexion, j'ai décidé de me doter d'une référence 10 MHz disciplinée par GPS (GPSDO) afin d'obtenir la meilleure précision possible.
Après quelques recherches sur Internet, j'ai trouvé des produits tout faits à des prix abordables et quelques descriptions de réalisations amateurs.

J'ai retenu l'option de réaliser la version proposée par DL4ZAO/DL7UKM. D'une part parce qu'il existe une description détaillée (en allemand) et que l'auteur proposait le circuit imprimé à un prix correct, et d'autre part pour apprendre d'après la formule "Build and learn".
Le montage s'articule autour d'un Arduino Nano et un logiciel est proposé par Michael DL7UKM. Raison de plus pour mon choix, ayant maintenant une bonne connaissance de cette plateforme.

Principe de fonctionnement :
Le montage comporte :

  • Un OCXO 10 MHz
  • Un récepteur GPS
  • Une chaîne de diviseurs
  • Un comparateur de phase (PLL)
  • Un convertisseur DAC (convertisseur numérique/analogique)
  • Un micro-contrôleur
  • Un afficheur LCD

 GPSDO principe

L'OCXO a déjà une stabilité excellente du fait de sa stabilisation interne en température. Cette stabilité et la précision sont améliorées par le PLL qui compare la sortie 10 MHz divisée, avec la sortie horloge du GPS et envoie une tension de correction à l'OCXO.

Si la réception GPS disparait, un relais bascule et applique à l'OCXO la tension issue du DAC qui est équivalente à celle issue du comparateur afin de continuer à obtenir la meilleure précision.

Le micro-contrôleur contrôle tout le montage et prend les décisions nécessaires et affiche les informations à l'écran.

Avant de se procurer les composants, il est nécessaire de déterminer la fréquence d'horloge souhaitée à la sortie du GPS.
Le choix est à faire en fonction d'un compromis entre rapidité de synchronisation, stabilité court et long terme.
1 kHz permet une meilleure stabilité à long terme mais nécessite beaucoup plus de temps pour synchroniser. A l'inverse, 100 kHz synchronise plus rapidement au prix d'une légère perte de stabilité qui reste cependant excellente et LARGEMENT suffisante !
Mon choix s'est porté sur 100 kHz, je prévoyais de n'utiliser le montage que de temps en temps et ne souhaitais pas de le laisser sous tension en permanence. Ce choix est le seul à paramétrer dans mon logiciel.

Une fois les composants rassemblés et le montage réalisé, j'ai chargé le logiciel dans l'Arduino Nano.
Le montage a fonctionné du premier coup et après la réception de 4 satellites, le montage indiquait qu'il avait synchronisé.

Après avoir échangé à de nombreuses reprises avec les auteurs afin de comprendre le fonctionnement du montage et du logiciel, j'ai eu envie de réaliser mon propre logiciel en reprenant les parties qui me convenaient et en écrivant celles que je souhaitais. Le logiciel d'origine ayant à mon goût certaines lacunes...
Au final, mon logiciel permet des fonctionnalités nouvelles et une automatisation de certaines fonctions qui nécessitent un réglage manuel avec le logiciel d'origine.

Fonctionnement du logiciel

Les fonctionnalités sont les suivantes :

  • Modes de fonctionnement normal, Holdover et Forced Holdover.
  • Détermination adaptative de la tension nominale de contrôle en mode HOLD.
  • Sauvegarde des paramètres dans l'EEProm de l'Arduino.
  • Possibilité d'utiliser une sonde de température.
  • Deux écrans d'affichage des principales données sur un afficheur LCD 4 lignes.
  • LED de visualisation de l'état de synchronisation.
  • Rétro-éclairage M/A commandé par bouton poussoir

Au démarrage, le logiciel vérifie si des données ont déjà été stockées en EEPROM. Si non, il attribue la valeur par défaut de 2,500 V au DAC.

Le logiciel vérifie à chaque boucle (paramétrée à 1s), si le PLL est verrouillé, le nombre de satellites reçus, et l'état de la géolocalisation.
Si ces 3 conditions sont remplies, l'état LOCKED est validé.
Le relais passe alors en position LOCKED et applique la tension de sortie du comparateur PLL à l'entrée de contrôle de l'OCXO.
La boucle de verrouillage s’établit alors et au bout d'un certain temps, se stabilise lorsque l'OCXO est arrivé à température et stabilité maximum..

Si toutes les conditions au verrouillage ne sont pas réunies, le relais est mis en position HOLD et l'entrée de l'OCXO se voit appliquer la tension de sortie du DAC (qui à terme une fois le logiciel ayant fait son travail, est identique à la tension de stabilisation de la boucle).

Toutes les 10 minutes, le logiciel compare la tension appliquée à l'OCXO à celle mesurée 10 minutes plus tôt.
Si les 2 tensions sont identiques, un drapeau est incrémenté.
Au bout des 30 minutes (drapeau à 3), on estime que la boucle de verrouillage est stabilisée et le logiciel compare alors la tension de sortie du DAC à celle appliquée à l'OCXO. Si elle est différente, il adapte la valeur du DAC afin que les tensions soient identiques et la sauvegarde en EEPROM pour le prochain démarrage.

Dans le cas contraire, le drapeau est remis à zéro, et le processus recommence. Ce principe est le même à chaque passage en mode HOLD. (perte satellites, M/A, etc...)

 Pour test ou toute autre raison, on peut forcer l'application de la sortie DAC à l'OCXO. C'est le mode FORCED HOLD MODE, accessible après un appui long sur le bouton.

La LED de contrôle a trois états:

  • Etat fixe = mode LOCKED
  • Clignotement lent = mode HOLD, ou mode LOCKED de moins de 10 min
  • clignotement rapide = mode FORCED HOLD OVER

J'ai utilisé les librairies standard de l'Arduino à l'exclusion de :

NMEAGPS.h pour la gestion des modules GPS de Ublox (NEO6, 7, 8)
avdweb_Switch.h pour gérer le bouton-poussoir

Utilisation

Il y a nécessité de paramétrer le fichier GPSDO_settings.h si on souhaite le maximum de précision dans l'affichage des tensions, il faut mesurer la tension d'alimentation 5V appliquée à l'Arduino Nano sur la pin 5V et saisir cette valeur dans le fichier GPSDO_settings.h et recompiler le croquis. Ceci est cependant facultatif !
Dans ce fichier se paramètrent également la vitesse du port série, par défaut 115200 Bauds et la fréquence de sortie du GPS, par défaut 100 kHz.

Il faut alors bien sûr recompiler le croquis.

Au démarrage, l'afficheur affiche la version du logiciel et la valeur du DAC stockée en EEprom.

Un bouton-poussoir permet :

  • Par appui long de basculer en mode FORCED HOLD MODE
  • Par appui court de changer d'affichage.
  • Par double appui d'allumer ou éteindre le rétro-éclairage

En fonctionnement normal, l'écran LCD affiche les infos suivantes :
GPSDO LCD1

Après un appui sur le bouton-poussoir, un 2ème écran affiche les informations suivantes :

GPSDO LCD2

Le logiciel est bien sûr modifiable pour afficher ce que l'on veut, mais il est alors nécessaire de modifier les fonctions displayInfo() ou displayLatLong() dans le croquis et le recompiler.

Après quelques minutes de fonctionnement, un nombre suffisant de satellites doivent avoir été captés et la géolocalisation faite.
L'écran doit alors afficher l'heure et le QRA locator et les indicateurs de verrouillage afficher LL.
Au fur et à mesure du temps de fonctionnement du montage, la tension notée Uc doit se stabiliser autour d'une certaine valeur prouvant que l'OCXO a atteint sa température de fonctionnement normale et que la boucle est stabilisée.
30 min plus tard au maximum, la tension Uh doit être égale ou très proche de Uc. Le montage est alors stabilisé et la valeur du DAC pour la tension Uh est stockée en EEprom pour le prochain démarrage.

 Le logiciel étant encore en évolution, merci de me contacter pour en obtenir une copie.