Table des matières:

GPSDO YT, fréquence de référence de l'oscillateur discipliné 10Mhz. À bas prix. Précis. : 3 étapes
GPSDO YT, fréquence de référence de l'oscillateur discipliné 10Mhz. À bas prix. Précis. : 3 étapes

Vidéo: GPSDO YT, fréquence de référence de l'oscillateur discipliné 10Mhz. À bas prix. Précis. : 3 étapes

Vidéo: GPSDO YT, fréquence de référence de l'oscillateur discipliné 10Mhz. À bas prix. Précis. : 3 étapes
Vidéo: Emettre vers le satellite Oscar 100 2024, Juillet
Anonim
GPSDO YT, fréquence de référence de l'oscillateur discipliné 10Mhz. À bas prix. Précis
GPSDO YT, fréquence de référence de l'oscillateur discipliné 10Mhz. À bas prix. Précis
GPSDO YT, fréquence de référence de l'oscillateur discipliné 10Mhz. À bas prix. Précis
GPSDO YT, fréquence de référence de l'oscillateur discipliné 10Mhz. À bas prix. Précis
GPSDO YT, fréquence de référence de l'oscillateur discipliné 10Mhz. À bas prix. Précis
GPSDO YT, fréquence de référence de l'oscillateur discipliné 10Mhz. À bas prix. Précis

*******************************************************************************

ARRÊT ARRÊT ARRÊT ARRÊT ARRÊT ARRÊT ARRÊT ARRÊT ARRÊT

C'est un projet obsolète.

Au lieu de cela, vérifiez ma nouvelle version d'affichage lcd 2x16 disponible ici:

www.instructables.com/id/GPSDO-YT-10-Mhz-L…

J'ai laissé l'ancienne version ici pour la documentation.

*******************************************************************************

Salut les gars, Qu'est-ce qu'un GPSDO ? GPSDO signifie: oscillateur discipliné GPS. GPS pour système de positionnement global. Tous les satellites GPS sont équipés d'une horloge atomique synchronisée. Le module GPS reçoit ces signaux de plusieurs satellites. Et par triangulation, il connaît son emplacement. Mais ici, ce qui nous intéresse, c'est le pouls par seconde que l'on retrouve sur le module. Avec cette impulsion précise (de l'horloge atomique), on peut faire un oscillateur très très précis. Pourquoi ? Pour référence, pour l'étalonnage du fréquencemètre ou juste pour le plaisir d'en avoir un dans son labo.

Ils sont nombreux schématiques sur internet. J'en ai essayé. Certains sont bons, un avec un minuscule 2313 était de 5 hertz trop lent. Mais le mien est le plus simple, utile et pratique. Et je vous donne le code.hex. Ils ne sont ni VCO ni diviseurs. Les circuits avec VCO se portent bien. Mais, il doit avoir un signal d'impulsion de 10 kHz ou plus en continu. Si l'antenne devient trop faible, manque d'impulsion ou pas d'impulsion du tout, l'oscillateur (ocxo) fonctionne tout seul et le VFC (Voltage Frequency Control) n'est plus précis. Le retour VCO a besoin d'une fréquence de référence pour rester. Sinon, ça varie de 1 à 2 Hertz ! De plus, le module GPS moins cher ne fonctionne pas dans cette configuration. Il faut avoir au moins 10khz pour faire un VCO. J'ai essayé avec 1000 hertz. L'écart était trop grand. La fréquence variait. Donc, avec un ublox neo-6m, vous ne pouvez pas faire un bon gpsdo vco car la fréquence de sortie maximale est de 1000 Hz. Vous devez acheter un néo-7m ou supérieur.

C'est ainsi que fonctionne mon GPSDO YT. Le contrôleur a trouvé le bon réglage pour tout OCXO avec vfc 0 à 5v. Si nous perdons le signal GPs, la fréquence ne bouge pas du tout. Lorsque le signal réapparaît, le contrôleur prend sa dernière bonne valeur connue et continue comme avant. Sur lunette, avec un oscillateur de référence. Nous ne pouvons pas dire quand le signal est perdu ou quand il est revenu. Le signal est le même.

Après calibrage, vous pouvez utiliser le gpsdo sans antenne si vous le souhaitez. Quelques montures plus tard vous aurez très peu de dérive. Mais…. combien plus grand ? Il est temps pour quelques explications.

Voici quelques maths… Maths faciles, suivez-moi avec ça c'est facile. Jusqu'à présent, l'algorithme a 6 phases. Chaque phase prend un échantillon de 1 à 1000 secondes, trouve le bon réglage pwm et passe à la plupart des échantillons plus longs pour plus de précision.

Précision = (((Nombre de seconde x 10E6) + 1)/nombre de seconde) - 10E6

Phase 1, 1 seconde d'échantillonnage pour 10 000 000 points pour une précision de +- 1 Hz

phase 2, échantillon de 10 secondes pour 100 000 000 comptes pour une précision de +-0,1 Hz

Phase 3, échantillon de 60 secondes pour 600 000 000 comptes pour une précision de +-0,01666 Hz

Phase 4, 200 secondes Échantillon pour 2 000 000 000 comptes pour une précision de +-0,005 Hz

Phase 5, échantillon de 900 secondes pour 9 000 000 000 comptes pour une précision de +-0,001111 Hz

Phase 6, échantillon de 1000 secondes pour 10 milliards de comptes pour une précision de +-0,001 Hz

Pire cas. Lorsque nous obtenons la phase 6. Ce nombre peut changer un peu toutes les 1000 secondes ou non. à un moment donné, ce sera 10 000 000, 001 ou 9, 999, 999, 999 Donc, + ou - 0, 000, 000.001 de variation pour des milliers. Maintenant, nous devons connaître la valeur pendant 1 seconde.

10Mhz = 1 seconde

Pour 1 seconde = 10 000 000 001 comptage/1000 s = 10 000 000,001 Hz (pire des cas pour 1 seconde)

10 000 000,001 - 10 000 000 = 0,001 Hz/s plus rapide ou plus lent

0,001 Hz X 60 X 60 X24 X365 = 31536 Hz/ans

Alors rappelez-vous, 10Mhz est 1 seconde, 31536Hz X 1 / 10E6 = 0, 0031536 seconde/an

Une autre méthode de calcul plus rapide. un raté pour 10E9Mhz est 1/10E9 = 1E-10

1E-10 x 60x60x24x365 = 0, 0031536 seconde/an.

Est-ce assez précis pour vous ?

cependant, vous devez avoir un bon OXCO. Je préfère la sortie Sinus Double Oven 12v. Plus stable, silencieux et précis. Mais j'ai le même résultat avec un simple 5V. Par exemple, un stp 2187 a une stabilité courte durée (déviation d'allan) de 2x10-12 = 0.000, 000, 000, 002 Hz de stabilité. Dans le même temps, lorsque l'impulsion GPS est disponible, Avr corrigera toujours le pwm (fréquence). L'uC compte toujours… toujours. Cela signifie que sur l'affichage, vous ne verrez pas la date et l'heure. Lorsque uC échantillonne 900s, celui-ci est occupé pendant 900 secondes. Il doit compter toute l'horloge. Le problème est que uC fonctionne à 10Mhz. Chaque horloge doit être comptée. Il se compte lui-même. S'il ne manque qu'une horloge, l'échantillon ne sera pas bon et l'ajustement pwm ne sera pas correct. Je ne peux pas actualiser l'affichage à chaque seconde.

Lorsque l'échantillonnage est lancé. Uc commence à compter timer0. Chaque horloge 256 génère une interruption. Le registre X est incrémenté. lorsqu'il est plein, le registre Y est incrémenté et X remis à 0 et ainsi de suite. A la fin, à la dernière impulsion GPS, le comptage est arrêté. Et maintenant et seulement maintenant, je peux mettre à jour l'affichage et faire des calculs pour le calcul pwm.

sachant cela, je n'ai que 25, 6 us (256 horloge avant interruption) pour lire et afficher l'heure ou autre. C'est impossible. Une interruption peut être buffée, pas 2. Je pourrais rafraîchir l'heure après 1000s… mais ce ne sera pas pratique de voir l'heure avec un intervalle de 15, 16 minutes. J'ai une montre, une horloge, un téléphone portable pour connaître l'heure:) Je fais une référence 10Mhz. Pas une horloge.

Un autre problème que j'ai eu, certaines instructions avr ont 2 cycles. Y compris l'instruction rjmp. Cela signifie que si la première ou la dernière impulsion GPS est arrivée en même temps qu'une instruction de 2 cycles, l'uC manquera une horloge. Parce que uC terminera l'instruction avant de commencer l'interruption. Ainsi, le compteur démarrera ou s'arrêtera un cycle plus tard. Donc je ne peux pas faire de boucle d'attente… Mais en fait, je n'ai pas d'autre choix. J'avais besoin de boucler quelque part !! J'utilise donc l'instruction rjmp et nop (cela ne fait rien). Nop est une instruction à un cycle. J'ai mis 400 instructions nop pour un rjmp sur atmega48. 2000 sur les versions atmega88 et atmega328p. Il y a donc moins de chances que la première ou la dernière impulsion arrive à l'instruction rjmp. Mais oui c'est possible et si cela arrive, cette erreur sera corrigée au prochain prélèvement.

L'affichage est facultatif. Vous pouvez faire un circuit avec uC, OCXO et filtre passe-bas (condensateur de résistance) uniquement, allumer et attendre. Après 1 heure vous aurez une fréquence acceptable. Mais pour atteindre la phase 6. Cela prend quelques heures.

PWM est de 16 bits. 65535 pas. 5v/65535 = 76, 295 uV

La variation OCXO est de 2 Hz par 1 V. 1v/76, 295uV = 13107 pas pour 2 hz. 2/13107 = 152,59uHz par pas de pwm

La phase 5, c'est changer pwm par 3, la phase 6 est 2. étape… Pourquoi 3 ? parce que 3 change de fréquence de 0,000, 000, 000, 4 à une échelle de 15 minutes. et 4 est mon nombre magique dans mon algorithme. Par exemple, si en phase un, la première fréquence trouvée est 10.000, 003Mhz. Je baisse de 0, 000, 000,4 pas.

Un pas trop grand peut passer de 10.000003 à 10.000001 et après 9, 999998Hz. Je rate la cible.

Avec 0, 000004. C'est plus rapide que 0, 1 et je suis plus sûr de ne pas contourner un nombre. Etc. Je fais la même chose avec 10 secondes, 60 secondes et 200s de phase et 900s. 1000s est en mode d'exécution et utilise un pas pwm de 2

A noter que la phase 5 est plus longue à réaliser. L'écart entre 4 et 5 est plus grand. Mais cela aide à passer de 5 à 6 plus rapidement.

Lorsque la phase 6 a compté exactement 10 milliards, les valeurs pwm sont enregistrées dans l'eeprom. Maintenant, il est temps pour le mode de fonctionnement. Celui-ci compte 1000 secondes d'échantillon mais avec 2 pas pwm seulement. En mode de fonctionnement, la fréquence réelle est affichée et mise à jour à un intervalle de 1000 secondes. Si le signal est perdu en mode de fonctionnement, il passe en fonctionnement automatique. Pas de changement de pwm dans ce mode. Lorsque le signal revient, il revient à la phase 5 pour la resynchronisation.

Si le circuit est débranché après l'enregistrement de l'eeprom. Celui-ci commencera à la phase 5 à la mise sous tension avec la valeur pwm de l'eeprom.

Pour effacer la valeur eeprom, appuyez simplement sur le bouton au démarrage. Pwm 50% sera chargé et l'étalonnage commencera à partir de la phase 1.

Je passe de nombreuses heures à essayer autre chose, configuration du circuit. J'ai fait de nombreux tests, avec ampli OP, buffer et autre puce. Et à la fin… le meilleur résultat que j'ai obtenu n'en a pas besoin. Juste une bonne alimentation stable et un condensateur de filtrage. Alors je reste simple.

Étape 1: acheter des pièces

Acheter des pièces
Acheter des pièces
Acheter des pièces
Acheter des pièces
Acheter des pièces
Acheter des pièces

La première chose à faire est d'acheter les pièces. Car souvent la livraison est très très longue.

Module GPS: j'utilise un ublox neo-6m. J'ai acheté celui-ci sur ebay. Faites une recherche, cela coûte environ 7 à 10 dollars américains.

Par défaut, ce récepteur a l'impulsion 1 par seconde activée. Nous n'avons rien à faire.

Vous pouvez utiliser n'importe quel module GPS avec une sortie d'impulsion de 1 Hertz. Tu en as un. Utiliser ça!

OCXO: J'ai essayé 2 oscillateurs. Un double four stp2187 sortie sinusoïdale 12v. Et une sortie à onde carrée ISOTEMP 131-100 5V. Les deux proviennent de radioparts16 sur ebay. J'ai eu un très bon service de leur part et le prix était moins cher.

AVR: Le code tient sur un petit atmega48. Mais je suggère d'acheter un atmega88 ou un atmega328p. C'est presque le même prix. Achetez ceci sur digikey ou ebay. J'utilise la version dip. Vous pouvez acheter une version à montage en surface, mais faites attention, les broches ne sont pas les mêmes que sur le schéma.

Écran LCD: tout écran compatible 4x20 HD44780 fonctionnera. Devinez où j'ai acheté le mien:) Oui sur ebay il y a quelques années. Maintenant c'est plus cher qu'avant. Mais disponible à moins de 20 $ US.

Peut-être que dans un futur proche, je ferai un code pour un affichage 2x16. Ces affichages ne coûtent que 4$. Et entre vous et moi, un affichage de 2 lignes serait suffisant.

Vous devez avoir un programmeur AVR ISP. La programmation d'un AVR n'est pas comme un Arduino. Arduino a déjà été programmé pour communiquer sur le port série. Un tout nouvel avr doit être programmé avec ISP ou Parallel High Voltage Programmer. Nous utilisons isp ici.

A 74hc04 ou 74ac0, régulateur de tension 7812 et 7805, résistances, condensateur…. clé numérique, ebay

Étape 2: Voici le schéma et Gpsdo_YT_v1_0.hex

Image
Image
Voici le schéma et Gpsdo_YT_v1_0.hex
Voici le schéma et Gpsdo_YT_v1_0.hex
Voici le schéma et Gpsdo_YT_v1_0.hex
Voici le schéma et Gpsdo_YT_v1_0.hex

Je pense que le schéma est tout ce dont vous avez besoin pour réaliser ce projet. Vous pouvez utiliser un panneau plaqué de cuivre avec une méthode de gravure ou simplement un panneau perforé si vous le souhaitez.

Vous pouvez utiliser n'importe quelle boîte, mais je suggère une boîte en métal. Ou juste sur une planche à pain pour s'amuser comme le mien:)

J'attends la rallonge d'antenne et le connecteur bnc pour mettre mon projet dans une boite.

Vous devez choisir le bon fusible. Assurez-vous que l'oscillateur externe est sélectionné. Si vous rencontrez des problèmes avec l'oscillateur externe, essayez le cristal externe. Et l'horloge low.ckdiv8 n'est pas cochée. Voir l'image. Faites attention, lorsque l'horloge externe fusionne bit, vous devez fournir une horloge externe pour programmer ou exécuter le code. En d'autres termes, connectez l'oscillateur à la broche xtal1.

Au fait… vous pouvez utiliser le même code pour faire un compteur de fréquence avec 1 seconde de porte. Entrez simplement l'horloge à mesurer dans la broche xtal1 et vous aurez un compteur de fréquence +-1 Hz.

Je mettrai à jour le projet dès que j'aurai du nouveau.

En attendant, si le projet vous intéresse, vous avez assez de matière pour le commencer et même le finir avant moi

J'ai mis en ligne 2 vidéos, vous pouvez voir la première phase et la dernière.

Je suis disponible pour toutes questions ou commentaires. Merci.

26 février 2017…. Version 1.1 disponible.

-atmega48 n'est plus supporté. Pas assez d'espace.

-Ajout du nombre de satellites verrouillés.

-Support 2x16 lcd. Si vous avez un 4x20, cela fonctionnera aussi. Mais 2 dernière ligne n'affichera rien.

Étape 3: Se connecter à l'Eeprom

Les journaux dans l'Eeprom
Les journaux dans l'Eeprom

Voici le vidage de l'eeprom après quelques heures de fonctionnement. Je vais vous expliquer comment lire ceci. Encore une fois, c'est facile:)

A l'adresse 00, 01 est stockée la valeur pwm. Dès que la phase 5 compte 9 milliards, la valeur pwm est mise à jour chaque fois que le compteur atteint exactement 10 milliards.

Dès que nous sommes à la phase 5. Tous les comptes sont stockés dans l'eeprom après la valeur pwm. Commencez à l'adresse 02, après 03 et ainsi de suite.

Cet exemple est venu de mon ocxo 5 volts. Nous pouvons lire la valeur pwm de 0x9A73 = 39539 décimal sur 65536. = 60, 33% ou 3.0165 Volt.

Donc l'adresse 00:01 est 0x9A73

Ensuite, vous pouvez lire 03. Pour 9, 000, 000, 003 Pwm est abaissé de 3 car nous sommes encore en phase 5

00 pour 10, 000, 000.000 pwm reste intouché et on passe en mode marche (phase 6)

02 pour 10, 000, 000.002 Dans ce cas, la valeur pwm est abaissée de 2

01 pour 10, 000, 000.001 la valeur pwm est abaissée de 2

01 pour 10, 000, 000.001 la valeur pwm est à nouveau abaissée de 2

00 pour 10 000 000 000 pwm séjour est intact

00 pour 10 000 000 000 pwm séjour est intact

00 pour 10 000 000 000 pwm séjour est intact

Vous savez maintenant lire l'eeprom. Toutes les 1000 secondes, une nouvelle valeur est écrite dans l'eeprom. Lorsque l'eeprom est pleine, elle redémarre à partir de l'adresse 2.

Valeur FF moyenne 9, 999, 999,999

Vous pouvez avec ce dump suivre la précision, sans aucun écran LCD.

Vous pouvez vider le fichier eeprom avec un programmeur FAI.

J'espère vous avoir donné assez d'informations. Si non, faites le moi savoir. Conseil, erreur, n'importe quoi.

Yannick

Conseillé: