Taula de continguts:

GPSDO YT, oscil·lador disciplinat de 10 MHz freqüència de referència. Baix cost. Precís: 3 passos
GPSDO YT, oscil·lador disciplinat de 10 MHz freqüència de referència. Baix cost. Precís: 3 passos

Vídeo: GPSDO YT, oscil·lador disciplinat de 10 MHz freqüència de referència. Baix cost. Precís: 3 passos

Vídeo: GPSDO YT, oscil·lador disciplinat de 10 MHz freqüència de referència. Baix cost. Precís: 3 passos
Vídeo: GPS 10MHz GPSDO vs Neo-M8N and 10MHz OCXO 2024, Desembre
Anonim
GPSDO YT, oscil·lador disciplinat de 10 MHz freqüència de referència. Baix cost. Precís
GPSDO YT, oscil·lador disciplinat de 10 MHz freqüència de referència. Baix cost. Precís
GPSDO YT, oscil·lador disciplinat de 10 MHz freqüència de referència. Baix cost. Precís
GPSDO YT, oscil·lador disciplinat de 10 MHz freqüència de referència. Baix cost. Precís
GPSDO YT, oscil·lador disciplinat de 10 MHz freqüència de referència. Baix cost. Precís
GPSDO YT, oscil·lador disciplinat de 10 MHz freqüència de referència. Baix cost. Precís

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

STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP

Es tracta d’un projecte obsolet.

En lloc d'això, consulteu la meva nova versió de pantalla LCD 2x16 disponible aquí:

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

He deixat aquí la versió antiga per obtenir documentació.

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

Hola nois, Què és un GPSDO? GPSDO significa: oscil·lador disciplinat per GPS. GPS per al sistema de posicionament global. Tots els satèl·lits GPS estan equipats amb rellotge atòmic sincronitzat. El mòdul GPS rep aquests senyals de diversos satèl·lits. I per triangulació, coneix la seva ubicació. Però aquí el que ens interessa és el pols per segon que es troba al mòdul. Amb aquest pols precís (del rellotge atòmic), podem fer un oscil·lador molt precís. Per a què ? Com a referència, per calibrar el comptador de freqüències o simplement per divertir-se amb un al seu laboratori.

Hi ha molts esquemes a Internet. N'he provat alguns. Alguns són bons, un amb un tiny2313 feia 5 Hz massa lent. Però el meu és el més senzill, útil i convenient. I us dono el codi.hex. No són cap VCO ni cap divisor. Els circuits amb VCO van bé. Però ha de tenir un senyal de pols de 10 kHz o més contínuament. Si l’antena es fa massa feble, falta pols o no té cap pols, l’oscil·lador (ocxo) funciona sol i el VFC (Voltage Frequency Control) ja no és precís. Els comentaris VCO necessiten una freqüència de referència per mantenir-se. Si no, varia d’1 a 2 Hz. A més, el mòdul GPS més barat no funciona en aquesta configuració. Hem de tenir com a mínim 10 kHz per fer un VCO. Ho vaig provar amb 1000 Hz. La bretxa era massa gran. La freqüència variava. Així doncs, amb un ublox neo-6m no es pot fer un gran vco gpsdo perquè la freqüència màxima de sortida és de 1000Hz. Heu de comprar un neo-7m o superior.

Així funciona el meu GPSDO YT. El controlador ha trobat el bon ajust per a qualsevol OCXO amb vfc de 0 a 5v. Si perdem el senyal dels GP, la freqüència no es mou gens. Quan el senyal torna a aparèixer, el controlador pren el seu últim valor conegut i continua com abans. A l'abast, amb un oscil·lador de referència. No sabem quan es perd el senyal ni quan torna. El senyal és el mateix.

Després del calibratge, podeu utilitzar el GPS sense antena si voleu. Uns quants muntatges més endavant tindreu molt poca deriva. Però … quant més gran? És hora d’alguna explicació.

Aquí hi ha algunes matemàtiques … matemàtiques fàcils, segueix-me amb això, és fàcil. Fins ara l'algorisme té 6 fases. Cada fase pren una mostra d'1 a 1000 segons, ha trobat el bon ajust de pwm i passa a mostres més llargues per obtenir més precisió.

Precisió = ((((Nombre de segon x 10E6) + 1) / nombre de segon) - 10E6

Fase 1, mostra de 1 segon per a 10, 000, 000 recomptes per a una precisió de + - 1 Hz

fase 2, mostra de 10 segons per a 100, 000, 000 recomptes per a una precisió de + -0,1 Hz

Fase 3, mostra de 60 segons per a 600, 000, 000 recomptes per a una precisió de + -0,01666 Hz

Fase 4, 200 segons Mostra per a 2, 000, 000, 000 recomptes per a una precisió de + -0,005 Hz

Fase 5, mostra de 900 segons per a 9, 000, 000, 000 recomptes per a una precisió de + -0,001111 Hz

Fase 6, mostra de 1000 segons durant 10 mil milions de comptes per a una precisió de + -0,001 Hz

Pitjor dels casos. Quan arribem a la fase 6. Aquest nombre pot canviar una mica cada 1000 segons o no. algun temps serà de 10, 000, 000, 001 o 9, 999, 999, 999 Així, + o - 0, 000, 000.001 variació per a 1000. Ara hem de conèixer el valor durant 1 segon.

10Mhz = 1 segon

Per 1 segon = 10, 000, 000, 001 recompte / 1000s = 10, 000, 000,001 Hz (pitjor dels casos per 1 segon)

10, 000, 000,001 - 10, 000, 000 = 0,001 Hz / s més ràpid o més lent

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

Recordeu, doncs, que 10Mhz són 1 segon, 31536Hz X 1 / 10E6 = 0, 0031536 segon / any

Un altre mètode més ràpid per al càlcul. una falta per a 10E9Mhz és 1 / 10E9 = 1E-10

1E-10 x 60x60x24x365 = 0, 0031536 segon / any.

És suficient per a vosaltres?

no obstant això, heu de tenir un bon OXCO. Prefereixo la sortida Sinus Double Oven 12v. Més estable, tranquil i precís. Però tinc el mateix resultat amb 5V senzills. Per exemple, un stp 2187 té un temps d'estabilitat curt (desviació total) de 2x10-12 = 0,000, 000, 000, 002 Hz d'estabilitat. Al mateix temps, quan el pols GPS està disponible, Avr sempre corregirà pwm (freqüència). La UC sempre compta … sempre. Això significa que a la pantalla no veureu la data i l'hora. Quan l'UC mostra mostres de 900, aquest està ocupat durant 900 segons. Ha de comptar tot el rellotge. El problema és que l’UC està funcionant a 10 MHz. Cal comptar cada rellotge. S’està comptant. Si només falta un rellotge, la mostra no serà bona i l'ajust de pwm no serà correcte. No puc actualitzar la pantalla cada segon.

Quan s’inicia el mostreig. Uc comença a comptar el temporitzador0. Cada rellotge de 256 genera una interrupció. S'incrementa el registre X. quan està complet, s'incrementa el registre Y i es restableix X a 0, etc. Al final, al darrer pols gps, es deté el recompte. I ara i ara només puc actualitzar la pantalla i fer algunes matemàtiques per al càlcul de pwm.

sabent això, només tinc 25, 6 us (256 rellotges abans de la interrupció) per llegir i mostrar l'hora o una altra. És impossible. Es pot esborrar una interrupció, no 2. Podria actualitzar el temps després de 1000 … però no serà pràctic veure el temps amb un interval de 15 i 16 minuts. Tinc un rellotge, un rellotge, un telèfon mòbil per saber l’hora:) Estic fent una referència de 10Mhz. Ni un rellotge.

Un altre problema que vaig tenir, algunes instruccions AVR tenen 2 cicles. Incloent la instrucció rjmp. Això significa que si el primer o darrer pols GPS va aparèixer al mateix temps d'una instrucció de 2 cicles, l'UC perdrà un rellotge. Com que uC acabarà la instrucció abans de començar la interrupció. Així, el comptador s’iniciarà o s’aturarà un cicle més tard. Així que no puc fer un temps d'espera … Però, de fet, no tinc altra opció. Necessitava fer un bucle en algun lloc !! I Així que estic fent servir instruccions rjmp i nop (això no fa res). Nop és una instrucció d’un cicle. He posat 400 instruccions nop per a un rjmp a atmega48. 2000 a la versió atmega88 i atmega328p. Així doncs, les possibilitats són menors que el primer o darrer pols arribi a la instrucció rjmp. Però sí, és possible i, si passa això, aquest error es corregirà al següent mostreig.

La pantalla és opcional. Podeu fer circuit només amb uC, OCXO i amb filtre de pas baix (condensador de resistència), engegar-lo i esperar. Després d'una hora tindreu una freqüència acceptable. Però per arribar a la fase 6. Es triga un parell d’hores.

Pwm té 16 bits. 65535 pas. 5v / 65535 = 76, 295 uV

La variació OCXO és de 2Hz per 1V. 1v / 76, 295uV = 13107 pas per 2 hz. 2/13107 = 152,59uHz per pas de pwm

La fase 5, canvia pwm per 3, la fase 6 és 2. pas … Per què 3? perquè 3 canvia la freqüència en 0,000, 000, 000, 4 a una escala de 15 minuts. i el 4 és el meu número màgic en el meu algorisme. Per exemple, si es troba a la primera fase, la primera freqüència trobada és de 10.000, 003Mhz. Baixo 0, 000, 000,4 pas.

Un pas massa gran pot passar de 10.000003 a 10.000001 i després de 9, 999998Hz. Trobo a faltar l’objectiu.

Amb 0, 0000004. És més ràpid que 0, 1 i estic més segur de no passar per alt un número. Etcètera. Estic fent el mateix amb 10 segons, 60 segons i 200s de fase i 900s. 1000s està en mode d’execució i utilitzeu un pas pwm de 2

Tingueu en compte que la fase 5 és més llarga per assolir. La diferència entre 4 i 5 és més gran. Però ajuda a passar de 5 a 6 més ràpidament.

Quan la fase 6 ha comptabilitzat exactament 10 mil milions, els valors de pwm es guarden a eeprom. Ara és el moment del mode d’execució. Aquest compta una mostra de 1000 segons, però només amb 2 passos pwm. En mode d'execució, la freqüència real es mostra i s'actualitza a l'interval de 1000 segons. Si es perd el senyal en mode d'execució, passa en autocorrent. No hi ha cap canvi de pwm en aquest mode. Quan el senyal torna, torna a la fase 5 a la resincronització.

Si el circuit es desconnecta després de desar eeprom. Aquest començarà a la fase 5 a l’encesa amb el valor eeprom pwm.

Per esborrar el valor d'eeprom, només cal que premeu el botó a l'inici. El 50% de Pwm es carregarà i el calibratge començarà a partir de la fase 1.

Passo moltes hores per provar coses diferents, la configuració del circuit. Vaig fer moltes proves, amb amplificador OP, memòria intermèdia i altres xips. I al final … el millor resultat que tinc no el necessita. Només una bona font d'alimentació estable i una mica de condensador de filtratge. Així que ho mantinc tan senzill.

Pas 1: comprar peces

Comprar peces
Comprar peces
Comprar peces
Comprar peces
Comprar peces
Comprar peces

El primer que cal fer és comprar les peces. Perquè sovint l’enviament és molt llarg.

Mòdul GPS: utilitzo un ublox neo-6m. Vaig comprar aquest a ebay. Feu una cerca, té un cost d’entre 7 i 10 dòlars americans.

Per defecte, aquest receptor té activat el pols 1 per segon. No necessitem fer res.

Podeu utilitzar qualsevol mòdul GPS amb una sortida d'impulsos d'1 Hz. En tens un. Feu servir això!

OCXO: He provat 2 oscil·ladors. Una sortida d'ona sinusoïdal de 12v stp2187 de doble forn. I un ISOTEMP 131-100 5V, sortida d’ona quadrada. Tots dos provenen de radioparts16 a ebay. Vaig tenir un servei molt bo i el preu era més barat.

AVR: el codi s’adapta a una mica d’atmosfera48. Però suggereixo comprar un atmega88 o atmega328p. És gairebé el mateix preu. Compreu-ho a digikey o ebay. Estic fent servir la versió dip. Podeu comprar la versió de muntatge superficial, però parar atenció, els pins no són el mateix que l’esquema.

Pantalla LCD: qualsevol pantalla compatible amb 4x20 HD44780 funcionarà. Endevina on he comprat el meu:) Sí a eBay fa un parell d'anys. Ara és més car que abans. Però disponible a menys de 20 dòlars EUA.

Potser en un futur proper faré un codi per a una pantalla 2x16. Aquestes pantalles són només de 4 $. I entre vosaltres i jo, n'hi hauria prou amb una pantalla de 2 línies.

Heu de tenir un programador ISP AVR. Programar un AVR no és com un Arduino. Arduino ja està programat per comunicar-se al port sèrie. Cal programar un nou AVR amb ISP o Parallel High Voltage Programer. Estem fent servir isp aquí.

Un 74hc04 o 74ac0, regulador de voltatge 7812 i 7805, resistències, condensador … digikey, ebay

Pas 2: Aquí teniu l’esquema i Gpsdo_YT_v1_0.hex

Image
Image
Aquí hi ha un esquema i Gpsdo_YT_v1_0.hex
Aquí hi ha un esquema i Gpsdo_YT_v1_0.hex
Aquí hi ha un esquema i Gpsdo_YT_v1_0.hex
Aquí hi ha un esquema i Gpsdo_YT_v1_0.hex

Crec que l’esquema és tot el que necessiteu per realitzar aquest projecte. Si voleu, podeu utilitzar un tauler revestit de coure amb mètode de gravat o simplement un tauler perforat.

Podeu utilitzar qualsevol caixa que vulgueu, però us proposo una caixa de metall. O simplement en un taulell per divertir-se com el meu:)

Estic esperant l’extensió de l’antena i el connector BNC per posar el meu projecte en una caixa.

Heu de triar el bit de fusible adequat. Assegureu-vos que s’ha seleccionat l’oscil·lador extern. Si teniu problemes amb l'oscil·lador extern, proveu External Crystal. I el rellotge low.ckdiv8 no està marcat. Veure imatge. Presteu atenció, quan el rellotge extern es fusiona, heu de proporcionar un rellotge extern per programar o executar el codi. Dit d’una altra manera, connecteu l’oscil·lador al pin xtal1.

Per cert … podeu utilitzar el mateix codi per fer un comptador de freqüències amb una porta d’1 segon. Només cal que introduïu el rellotge per mesurar-lo en pin xtal1 i tindreu un comptador de freqüències de + -1 Hz.

Actualitzaré el projecte tan bon punt tingui coses noves.

Mentrestant, si el projecte us interessa, teniu prou material per començar i fins i tot acabar-lo abans que jo

Vaig penjar 2 vídeos, es pot veure la primera fase i l’última.

Estic disponible per a qualsevol pregunta o comentari. Gràcies.

26 de febrer de 2017 …. Disponible la versió 1.1.

-atmega48 ja no és compatible. No hi ha prou espai.

-Afegit nombre de satèl·lit bloquejat.

-Suport 2x16 lcd. Si teniu un 4x20, també funcionarà. Però la darrera línia no mostrarà res.

Pas 3: inicieu la sessió a Eeprom

Inicia sessió a Eeprom
Inicia sessió a Eeprom

Aquí teniu l’abocador de eeprom després d’un parell d’hores de durada. Us explicaré com llegir-ho. De nou, és fàcil:)

A l'adreça 00, 01 s'emmagatzema el valor pwm. Tan aviat com la fase 5 compti 9.000 milions, el valor de pwm s'actualitza cada vegada que el comptador arriba exactament a 10.000 milions.

Tan aviat com estem a la fase 5. Tots els recomptes s’emmagatzemen a eeprom després del valor pwm. Comenceu a l'adreça 02, després del 03 i així successivament.

Aquest exemple prové del meu ocxo de 5 volts. Podem llegir el valor pwm de 0x9A73 = 39539 decimal a 65536. = 60, 33% o 3.0165 volts.

Per tant, l’adreça 00:01 és 0x9A73

A continuació, podeu llegir 03. Per a 9, 000, 000, 003 Pwm es redueix en 3 perquè encara estem a la fase 5

00 per a 10, 000, 000.000 pwm l'estada és intacta i passem al mode d'execució (fase 6)

02 per a 10.000, 000.002 En aquest cas, el valor pwm es redueix de 2

01 per a 10.000, 000.001 El valor de pwm es redueix de 2

01 per 10, 000, 000.001 El valor de pwm es redueix de 2 de nou

00 per a una estada de 10.000.000.000.000 pwm és intacte

00 per a una estada de 10.000.000.000.000 pwm és intacte

00 per a una estada de 10.000.000.000.000 pwm és intacte

Ara ja saps llegir l'eeprom. Cada 1000 segons s'escriu un nou valor a eeprom. Quan eeprom està ple, es reinicia des de l'adreça 2.

Valor FF mitjà 9, 999, 999,999

Amb aquest bolcat podeu fer un seguiment de la precisió, sense cap pantalla LCD.

Podeu bolcar el fitxer eeprom amb un programador isp.

Espero que us hagi donat prou informació. Si no, feu-m’ho saber. Consells, errors, qualsevol cosa.

Yannick

Recomanat: