GPSDO Distant – Matériel
GPSDO = GPS Disciplined Oscillator
Sous cet acronyme on désigne un oscillateur à quartz dont on mesure la fréquence à l’aide d’une horloge très précise basée sur les signaux GPS et qui génére une ou plusieurs horloges en sortie de boucles à verrouillage de phase (PLL). Cette méthode permet d’optimiser les qualités de précision et de stabilité des horloges.
Avec un ‘ simple ‘ quartz on peut obtenir une précision de 1 x 10 -6 soit 10Hz pour 10 Mhz ou 10 Khz pour 10 Ghz , mais sujet à dérive lente selon la température et son vieillissement. C’est un niveau de précision insuffisant pour un transceiver travaillant en SSB dans les bandes hyperfréquences.
Le système proposé ici fourni 2 horloges dont la fréquence est programmable entre 25kHz et 200 MHz. On peut les utiliser par exemple pour piloter un LNB (Low Noise Block converter) d’une antenne parabolique et un émetteur / récepteur afin de garantir un parfait calage en fréquence. Les précisions auxquelles on arrive sont de l’ordre de 3 * 10 -8.
L’ensemble peut être piloté à distance avec un simple navigateur web afin de pouvoir le localiser au pied des antennes.
Principe de fonctionnement
Un GPS nous fournit une base de temps très précise avec une impulsion toutes les secondes. Un compteur va compter pendant 40 s une horloge issue du quartz de référence à 2.5 MHz. La mesure du nombre d’impulsions de l’horloge, en théorie 100 Million, au bout de 40s va nous permettre de corriger la fréquence du quartz de référence pour caler l’horloge exactement à 2.5 MHz. Deux autres horloges, synchrones de la première, fournissent les signaux pour piloter notre LNB ou transceiver.
Matériel
GPS
Le GPS Neo 8M est un modèle peu cher ( 5€ chez Aliexpress) qui fournit une impulsion d’horloge toutes les secondes et les données de localisation sur le bus série ou via le port micro USB au format NMEA. Pour plus de détails voir l’article https://f1atb.frconstruire-son-traceur-gps/.
En fait il est plus juste de parler de GNSS ( Global Navigation Satellite System) et non GPS, car ce récepteur traite les 4 systèmes de localisation ou constellations de satellites:
- le GPS historique d’origine US
- Galileo développé par l’Europe
- Glonass développé par la Russie
- Beidou développé par la Chine
Une LED rouge clignote au rythme des secondes une fois l’acquisition faite des satellites. Cela peut prendre du temps la première fois.
Si5351A
Le Si5351A est un générateur de 3 horloges jusqu’à 200 MHz synchrones d’un quartz à 25 MHz dont on peut corriger la fréquence si celle-ci dérive lentement.
Le Si5351 est programmé pour délivrer un signal de 2,5 MHz sur la broche de sortie CLK0. Cette broche est connectée à la broche D5 d’un Arduino Nano qui est l’entrée d’un compteur interne 16 bits avec un registre de débordement.
Les 2 autres horloges ont la fréquence et le niveau programmables par le bus I2C connecté à l’Arduino. On peut monter jusqu’à 200 MHz.
Pour information, on retrouve le circuit Si5351A dans le SDR HackRF traité dans d’autres articles.
Le module avec les connecteurs de sortie est disponible chez Aliexpress pour moins de 10€.
Arduino Nano
L’Arduino Nano, bien connu des amateurs d’objets programmés, dispose de fonctions très intéressantes de comptage. Ici, il compte le nombre N de périodes de 2,5 MHz reçues durant 40s en se basant sur l’horloge d’une seconde du GPS branchée en D2.
Si le résultat du comptage diffère des 108 = 40 * 2.5 *106 attendus . Le programme Arduino calcule un nouveau facteur d’étalonnage ou correction de la fréquence de référence 25 MHz et l’envoie au Si5351 par un bus I2C.
Orange PI Zero
Pour piloter l’ensemble et le surveiller à distance on utilise un nano ordinateur Orange PI Zero sous Armbian qui fait tourner un serveur Web Apache. Un Raspberry Pi 3 peut faire l’affaire, mais un Orange PI Zero avec ethernet, le wifi, le fait aussi pour une QSJ plus faible. Il communique avec l’Arduino et le GPS par USB, ce qui nécessite un mini-hub pour avoir 2 ports USB.
L’Orange PI est important au redémarrage en fournissant à l’Arduino et le Si5351A la dernière correction connue afin de lancer les oscillateurs au plus proche de la bonne fréquence même en l’absence d’acquisition des satellites.
La carte avec 512Mo de mémoire est disponible chez Aliexpress pour une vingtaine d’€.
Câblage
L’ensemble s’alimente en 5V, 3A max. Bien filtrer l’alimentation générale pour générer des signaux d’horloge propre. Comme l’alimentation du Si5351A peut se faire entre 3.3v et 5v une résistance de 47 ohm suivi d’un condensateur de 470uF filtre son alimentation.
Le Bus I2C pour piloter le module horloge se connecte à l’Arduino:
– SDA – A4
– SCL – A5
La Clk0 est envoyée sur la broche D5 de l’Arduino. Les 2 autres horloges sont disponibles directement sur les connecteurs SMA ou les broches. Ici une résistance de 50 ohm limite le courant max. Il faut adapter la sortie suivant l’utilisation souhaitée. A vide les sorties fournissent un signal carré 0 à 3.3v.
Le GPS fourni le signal 1pps ( 1 pulse per second) à connecter à D2 de l’Arduino. Une antenne se trouve directement sur la carte. Si elle est masquée pour acquérir les satellites, on peut brancher une antenne active externe.
Une LED sur la pin 23 via une résistance de 330 ohm s’allume si l’Orange PI a démarré et clignote si l’acquisition des satellites est faite.
Réalisation
L’ensemble est monté dans une boite d’électricien. Les oscillateurs sont dans une boite métallique avec 2 fiches SMA en surface pour les sorties d’horloges.
Logiciels
Sur l’Arduino Nano tourne le logiciel de comptage des impulsions et le calcul de la correction à appliquer au quartz de référence à 25 MHz.
Sur l’Orange Pi, une application en Python collecte les informations de l’Arduino et du GPS. Lors d’un appel client web à l’adresse IP du système, l’historique des acquisitions des satellites est renvoyé ainsi que les fréquences des 2 horloges. Tous les fichiers sont à mettre dans le dossier /var/www/html correspond à la configuration de base d’un serveur web Apache.
Les logiciels en version Bêta qui permettent une exploitation du GPSDO présenté sont téléchargeables ici. Il y a un dossier pour l’Arduino et un pour l’Orange Pi Zero.
Test Performances
Pour les GPSDO il est intéressant de tester la stabilité en fréquence et la pureté spectrale. Pour cela j’ai effectué un test en condition d’utilisation, en connectant le GPSDO à l’horloge externe d’un HackRF émettant sur 435.1 MHz.
Un simple analyseur de spectre basé sur une clé RTL-SDR et le logiciel SATAGEN sur PC permet d’observer la qualité du signal généré.
Pour la stabilité en fréquence, c’est parfait. Les écarts mesurés toutes les 40s par l’arduino ne dépasse pas les 5 impulsions sur un total de 100 Million. L’interface web de l’Orange Pi donne la courbe en temps réel.
Du côté su spectre, le résultat n’est malheureusement pas très bon. Des raies parasites apparaissent à – 40 dB / -50dB sous la raie principale à 432.1 MHz. Si l’on utilise l’oscillateur interne au HackRF ou un TCXO interne, ce phénomène n’apparait pas.
La position des raies dépend du coefficient de correction appliqué au PLL de référence du circuit Si5351.
Plus on compense la dérive du quartz du SI5351, plus les raies s’écartent en fréquence et montent en niveau.
Avec le design donné ici autour d’un circuit SI5351, on obtient un résultat acceptable pour générer une balise de faible puissance mais pas un émetteur devant fournir plusieurs watts. Ma conclusion est :
RÉSULTATS INSUFFISANTS
Spectre en sortie du GPSDO
Ci dessous 2 spectres autour de 50MHz de la sortie oscillateur sans et avec compensation de la dérive du quartz du SI5351. Dans les 2 cas des raies importantes dépendant du coefficient de compensation.
Si vous avez des idées pour améliorer. Je suis preneur.
F1ATB
André
Très intéressant!
73 qro
Patrick
Je travaille à présent sur le soft que je publierai sur ce site.
73
F1ATB
Hello André
Avez vous essayé d’alimenter sur batterie le montage?
73
Patrick
Non, mais j’ai essayé différentes alimentations.
En analysant la doc constructeur, il est un domaine à regarder, les rapports entiers de division des horloges.
. Integer Divide Values (FBx_INT)
« If a + b/c is an even integer, integer mode may be enabled for PLLA or PLLB by setting parameter FBA_INT or
FBB_INT respectively. In most cases setting this bit will improve jitter when using even integer divide values. »
Tres joli travail, du coup je suis en train de monter votre projet 😉
73’s F5PQL
Est il compatible avec un Raspberry ? et si oui, quels sont les modifs a appliquer dans les algo python ?
Merci par avance de votre aide
Oui, on peut le porter sur Raspberry. Cela ne devrait pas poser de problème.Je n’ai malheureusement pas de code à vous proposer.
73
André
Ok, C’est bon, proleme venant d’un blocage sous Chrome/Ubuntu
beau boulot
de mon coté je cherche a « faire vibrer » un SI5351 via PIC ou Arduino
sacré bestiole
puis je te suggerer de mettre les liens aussi bien pour la materiel
et aussi pour les « includes » style SI5351.H ou autre
question de « charlot » ou trouver les commandes a envoyer au SI5351
pour (par exemple) fixer telle ou telle frequence …
en bref avoir la bonne syntaxe et quelles sont les commandes possibles
merci d’avance
le chf
bonjours André
je suis intéressé par votre réalisation
est il possible de se passer de la carte orange pi zéro
cordialement 73 Didier
Oui mais il faut la remplacer par un autre micro ordinateur.
Cdlt