Sisällysluettelo:

GPSDO YT, kurinalainen oskillaattori 10 MHz: n vertailutaajuus. Halpa. Tarkka: 3 vaihetta
GPSDO YT, kurinalainen oskillaattori 10 MHz: n vertailutaajuus. Halpa. Tarkka: 3 vaihetta

Video: GPSDO YT, kurinalainen oskillaattori 10 MHz: n vertailutaajuus. Halpa. Tarkka: 3 vaihetta

Video: GPSDO YT, kurinalainen oskillaattori 10 MHz: n vertailutaajuus. Halpa. Tarkka: 3 vaihetta
Video: IMG 1607 2024, Kesäkuu
Anonim
GPSDO YT, kurinalainen oskillaattori 10 MHz: n vertailutaajuus. Halpa. Tarkka
GPSDO YT, kurinalainen oskillaattori 10 MHz: n vertailutaajuus. Halpa. Tarkka
GPSDO YT, kurinalainen oskillaattori 10 MHz: n vertailutaajuus. Halpa. Tarkka
GPSDO YT, kurinalainen oskillaattori 10 MHz: n vertailutaajuus. Halpa. Tarkka
GPSDO YT, kurinalainen oskillaattori 10 MHz: n vertailutaajuus. Halpa. Tarkka
GPSDO YT, kurinalainen oskillaattori 10 MHz: n vertailutaajuus. Halpa. Tarkka

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

STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP

Tämä on vanhentunut projekti.

Tarkista sen sijaan uusi 2x16 lcd -näyttöversio, joka on saatavana täältä:

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

Jätin vanhan version tähän dokumentointia varten.

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

Hei kaverit, Mikä on GPSDO? GPSDO tarkoittaa: kurinalaista GPS -oskillaattoria. GPS maailmanlaajuiseen paikannusjärjestelmään. Kaikki GPS -satelliitit on varustettu synkronoidulla atomikellolla. GPS -moduuli vastaanottaa nämä signaalit useilta satelliiteilta. Ja kolmiomittauksella hän tietää sijaintinsa. Mutta tässä kiinnostaa meitä moduulin pulssi sekunnissa. Tällä tarkalla pulssilla (atomikellosta) voimme tehdä erittäin tarkan oskillaattorin. Mitä varten ? Viitteelliseksi, taajuuslaskurin kalibroimiseksi tai vain huvin vuoksi, että se on laboratoriossa.

Ne ovat monia kaavamaisia Internetissä. Olen kokeillut joitakin. Jotkut ovat hyviä, yksi pienellä2313 oli 5 hertsiä liian hidas. Mutta minun on yksinkertaisin, hyödyllinen ja kätevä. Ja annan sinulle.hex -koodin. He eivät ole VCO eivätkä jakajat. Piiri VCO: n kanssa toimii hyvin. Mutta sen pulssisignaalin on oltava vähintään 10 khz tai enemmän jatkuvasti. Jos antenni menee liian heikoksi, pulssi puuttuu tai sitä ei ole lainkaan, oskillaattori (ocxo) toimii itsestään ja VFC (jännitteen taajuuden ohjaus) ei ole enää tarkka. VCO -palaute tarvitsee referenssitaajuuden pysyäkseen kiinni. Jos ei, se vaihtelee yhdestä kahteen hertsiin! Myös halvempi gps -moduuli ei toimi tässä kokoonpanossa. Meillä on oltava vähintään 10 khz, jotta voimme tehdä VCO: n. Kokeilin 1000 hertsillä. Ero oli liian suuri, taajuus vaihteli. Joten ublox neo-6m: n kanssa et voi tehdä suurta vco gpsdo: ta, koska suurin lähtötaajuus on 1000 Hz. Sinun on ostettava neo-7m tai ylempi.

Näin GPSDO YT toimii. Ohjain löysi hyvän säädön kaikille OCXO -laitteille, joiden vfc oli 0–5 V. Jos kadotamme GP -signaalin, taajuus ei liiku lainkaan. Kun signaali ilmestyy uudelleen, ohjain ottaa viimeisen tunnetun arvon ja jatkaa kuten ennenkin. Soveltamisalalla, vertailuoskillaattorilla. Emme voi sanoa, milloin signaali katoaa tai milloin se tuli takaisin. Signaali on sama.

Kalibroinnin jälkeen voit halutessasi käyttää gpsdo -laitetta ilman antennia. Muutamaa kiinnitystä myöhemmin sinulla on hyvin pieni ajelehtiminen. Mutta…. kuinka paljon isompi? On aika selittää.

Tässä on muutama matematiikka … Helppo matematiikka, seuraa minua tämän kanssa, se on helppoa. Tähän mennessä algoritmissa on 6 vaihetta. Jokainen vaihe kestää 1–1 000 sekunnin näytteen, löysi hyvän pwm -säädön ja siirry useimpiin pidempiin näytteisiin saadaksesi tarkkuutta.

Tarkkuus = ((((sekuntien määrä x 10E6) + 1)/sekuntien lukumäärä) - 10E6

Vaihe 1, 1 sekunnin näyte 10 000 000 lukemalla +- 1 Hz: n tarkkuudella

vaihe 2, 10 sekunnin näyte 100 000, 000 lukua varten +-0,1 Hz: n tarkkuudella

Vaihe 3, 60 sekunnin näyte 600 000, 000 lukua varten +-0,01666 Hz tarkkuudella

Vaihe 4, 200 sekuntia Näyte 2 000, 000 000 lukemaa +-0,005 Hz: n tarkkuudella

Vaihe 5, 900 sekunnin näyte 9 000, 000 000 lukemalla +-0,001111 Hz: n tarkkuudella

Vaihe 6, 1000 sekunnin näyte 10 miljardille laskulle +-0,001 Hz: n tarkkuudella

Pahimmassa tapauksessa. Kun saamme vaiheen 6. Tämä luku voi muuttua hieman 1000 sekunnin välein tai ei. jonkin aikaa se on 10 000, 000, 001 tai 9, 999, 999, 999 Joten, +tai - 0, 000, 000.001 vaihtelua 1000s. Nyt meidän on tiedettävä arvo 1 sekunnin ajan.

10Mhz = 1 sekunti

1 sekunti = 10 000 000, 001 lukumäärä/1000 s = 10 000 000 0001 Hz (pahin 1 sekunnin ajan)

10 000, 000,001 - 10 000, 000 = 0,001 Hz/s nopeampi tai hitaampi

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

Muista siis, että 10Mhz on 1 sekunti, 31536Hz X 1 / 10E6 = 0, 0031536 sekunti / vuosi

Toinen nopeampi laskentamenetelmä. yksi 10E9Mhz-virhe on 1/10E9 = 1E-10

1E-10 x 60x60x24x365 = 0, 0031536 toinen/vuosi.

Onko se tarpeeksi tarkka sinulle?

sinulla on kuitenkin oltava hyvä OXCO. Pidän parempana kaksoiuunin 12v -sinilähtöä. Vakaa, hiljainen ja tarkka. Mutta minulla on sama tulos yksinkertaisella 5V: lla. Esimerkiksi stp 2187: n stabiilisuus lyhyellä aikavälillä (allan-poikkeama) on 2x10-12 = 0,000, 000, 000, 002 Hz vakautta. Samaan aikaan, kun gps -pulssi on käytettävissä, Avr korjaa aina pwm (taajuus). UC laskee aina… aina. Tämä tarkoittaa, että näytössä et näe päivämäärää ja aikaa. Kun uC ottaa näytteitä 900 sekunnista, tämä on varattu 900 sekuntia. Sen on laskettava koko kello. Ongelma on, että uC toimii 10 MHz: n taajuudella. Jokainen kello on laskettava. Se laskee itseään. Jos vain yksi kello puuttuu, näyte ei ole hyvä eikä pwm -säätö ole oikea. En voi päivittää näyttöä joka sekunti.

Kun näytteenotto aloitetaan. Uc alkaa laskea ajastinta0. Jokainen 256 kello tuottaa keskeytyksen. X -rekisteriä lisätään. kun Y -rekisteri on täynnä, X kasvatetaan ja X nollataan 0 ja niin edelleen. Lopuksi lasku pysähtyy viimeisen gps -pulssin aikana. Ja nyt ja vasta nyt voin päivittää näytön ja tehdä matematiikkaa pwm -laskentaa varten.

tietäen, että minulla on vain 25, 6 meitä (256 kello ennen keskeytystä) lukea ja näyttää aikaa tai muuta. Se on mahdotonta. Yksi keskeytys voidaan hioa, ei 2. Voisin päivittää ajan 1000s: n jälkeen … mutta ei ole käytännöllistä nähdä aikaa 15, 16 minuutin välein. Minulla on kello, kello, kännykkä tunteakseni ajan:) Teen 10Mhz -viitettä. Ei kello.

Toinen ongelma minulla oli, jotkut avr -ohjeet ovat 2 sykliä. Sisältää rjmp -ohjeen. Tämä tarkoittaa sitä, että jos ensimmäinen tai viimeinen gps -pulssi nousi samaan aikaan 2 syklin käskyn kanssa, uC: stä puuttuu kello. Koska uC päättää ohjeen ennen keskeytyksen aloittamista. Joten laskuri käynnistyy tai pysähtyy yhden syklin myöhemmin. En siis voi tehdä aikayksikköä … Mutta itse asiassa minulla ei ole muuta vaihtoehtoa. Minun oli pakko kiertää jonnekin !! I Joten käytän rjmp- ja nop (tämä ei tee mitään) -ohjeita. Nop on yhden jakson ohje. Olen laittanut 400 nop -käskyä yhdelle rjmp: lle atmega48: ssa. 2000 atmega88- ja atmega328p -versioissa. Joten mahdollisuudet ovat pienemmät ensimmäiselle tai viimeiselle pulssille rjmp -ohjeessa. Mutta kyllä se on mahdollista ja jos näin tapahtuu, tämä virhe korjataan seuraavassa näytteenotossa.

Näyttö on valinnainen. Voit tehdä piirin vain, uC, OCXO ja alipäästösuodatin (vastuskondensaattori), kytke päälle ja odota. 1 tunnin kuluttua sinulla on hyväksyttävä taajuus. Mutta vaiheeseen 6 pääseminen kestää pari tuntia.

Pwm on 16 bittiä. 65535 askel. 5v/65535 = 76, 295 uV

OCXO -vaihtelu on 2Hz 1V. 1v/76, 295uV = 13107 askel 2 Hz: n ajan. 2/13107 = 152,59uHz vaiheittain pwm

Vaihe 5, muuttaa pwm 3, vaihe 6 on 2. vaihe… Miksi 3? koska 3 muuttaa taajuutta 0,000, 000, 000, 4 15 minuutin asteikolla. ja 4 on taikuusnumeroni algoritmissani. Esimerkiksi jos ensimmäinen vaihe, ensimmäinen havaittu taajuus on 10.000, 003 MHz. Lasken alas 0 000 000 000 askeleella.

Liian suuri askel voi siirtyä välillä 10.000003 - 10.000001 ja 9, 999998 Hz: n jälkeen. Kaipaan kohdetta.

0, 0000004. Se on nopeampi kuin 0, 1, ja olen varma, että en ohita numeroa. Ja niin edelleen. Teen samaa 10 sekunnin, 60 sekunnin ja 200 sekunnin vaiheen ja 900 sekunnin ajan. 1000s on käynnissä ja käytä pwm -askelta 2

Huomaa, että vaihe 5 on pidempi. Ero 4 ja 5 välillä on suurempi. Mutta se auttaa siirtymään viidestä kuuteen nopeammin.

Kun vaihe 6 on laskenut täsmälleen 10 miljardia, pwm -arvot tallennetaan eepromiin. Nyt on aika käynnissä. Tämä yksi laskee 1000 sekunnin näytteen, mutta vain 2 askeleen pwm. Käyntitilassa todellinen taajuus näytetään ja päivitetään 1000 sekunnin välein. Jos signaali katoaa käynnissä, se kulkee itse käynnissä. Ei muutosta pwm tässä tilassa. Kun signaali palaa, se palaa vaiheeseen 5 synkronointia varten.

Jos piiri irrotetaan pistorasiasta eeprom -tallennuksen jälkeen. Tämä alkaa vaiheessa 5 käynnistettäessä eeprom pwm -arvolla.

Voit poistaa eeprom-arvon painamalla painiketta käynnistyksen yhteydessä. Pwm 50% latautuu ja kalibrointi alkaa vaiheesta 1.

Menen monta tuntia kokeilemaan eri asioita, piirin kokoonpanoa. Tein monia testejä OP -vahvistimella, puskurilla ja muilla siruilla. Ja lopuksi… paras tulos, joka minulla on, ei sitä tarvitse. Vain hyvä vakaa virtalähde ja suodatuskondensaattori. Joten pidän tämän yksinkertaisena.

Vaihe 1: Osien ostaminen

Osta Osat
Osta Osat
Osta Osat
Osta Osat
Osta Osat
Osta Osat

Ensimmäinen asia on ostaa osat. Koska toimitusaika on usein erittäin pitkä.

GPS-moduuli: Käytän ublox neo-6m -laitetta. Ostin tämän ebaystä. Tee haku, se maksaa noin 7-10 dollaria.

Oletusarvoisesti tällä vastaanottimella on 1 pulssi sekunnissa käytössä. Meidän ei tarvitse tehdä mitään.

Voit käyttää mitä tahansa gps -moduulia, jossa on 1 hertsin pulssilähtö. Sinulla on yksi. Käytä sitä!

OCXO: Kokeilin 2 oskillaattoria. Kaksinkertainen uuni stp2187 12v siniaalto. Ja ISOTEMP 131-100 5V, neliöaalto. Molemmat tulevat ebayn radio -osista16. Sain heiltä erittäin hyvää palvelua ja hinta oli halvempi.

AVR: Koodi sopii pienelle atmega48: lle. Mutta suosittelen ostamaan atmega88 tai atmega328p. Se on melkein sama hinta. Osta tämä digikeysta tai ebaysta. Käytän dip -versiota. Voit ostaa pinta -asennettavan version, mutta kiinnitä huomiota siihen, että nastat eivät ole samat kuin kaaviossa.

LCD -näyttö: Mikä tahansa 4x20 HD44780 -yhteensopiva näyttö toimii. Arvatkaa mistä ostin omani:) Kyllä, ebaystä pari vuotta sitten. Nyt se on kalliimpaa kuin ennen. Mutta saatavilla alle 20 dollaria.

Ehkä lähitulevaisuudessa teen koodin 2x16 -näytölle. Näiden näyttöjen hinta on vain 4 dollaria. Ja sinun ja minun välillä riittää 2 -rivinen näyttö.

Sinulla on oltava AVR ISP -ohjelmoija. AVR: n ohjelmointi ei ole kuin Arduino. Arduino on jo ohjelmoitu kommunikoimaan sarjaportilla. Upouusi avr on ohjelmoitava ISP: llä tai Parallel High Voltage Programmerilla. Käytämme isp: tä täällä.

74hc04 tai 74ac0, jännitesäädin 7812 ja 7805, vastukset, kondensaattori…. digikey, ebay

Vaihe 2: Tässä on kaavio ja Gpsdo_YT_v1_0.hex

Image
Image
Tässä on kaavio ja Gpsdo_YT_v1_0.hex
Tässä on kaavio ja Gpsdo_YT_v1_0.hex
Tässä on kaavio ja Gpsdo_YT_v1_0.hex
Tässä on kaavio ja Gpsdo_YT_v1_0.hex

Mielestäni kaavamainen on kaikki mitä tarvitset tämän projektin toteuttamiseen. Voit halutessasi käyttää kuparipinnoitettua levyä etsausmenetelmällä tai vain rei'itettyä levyä.

Voit käyttää mitä tahansa laatikkoa, mutta ehdotan metallilaatikkoa. Tai vain leipäpöydälle huvikseni kuten minä:)

Odotan, että antennin laajennus ja bnc -liitin laittavat projektini laatikkoon.

Sinun on valittava oikea sulakekanta. Varmista, että ulkoinen oskillaattori on valittu. Jos sinulla on ongelmia ulkoisen oskillaattorin kanssa, kokeile ulkoista kristallia. Ja low.ckdiv8 -kelloa ei ole valittu. Katso kuva. Huomaa, että kun ulkoinen kello sulautuu, sinun on annettava ulkoinen kello koodin ohjelmoimiseksi tai suorittamiseksi. Toisin sanoen liitä oskillaattori xtal1 -nastaan.

Muuten … voit käyttää samaa koodia taajuuslaskurin tekemiseen 1 sekunnin portilla. Syötä kello mitattavaksi xtal1-nastassa ja sinulla on +-1 Hz: n taajuuslaskuri.

Päivitän projektia heti, kun minulla on uusia juttuja.

Sillä välin, jos projekti kiinnostaa sinua, sinulla on tarpeeksi materiaalia aloittaaksesi ja jopa lopettaa se ennen minua

Latasin kaksi videota, näet ensimmäisen ja viimeisen vaiheen.

Olen käytettävissä kaikkiin kysymyksiin tai kommentteihin. Kiitos.

26. helmikuuta 2017…. Versio 1.1 saatavilla.

-atmega48 ei enää ole tuettu. Ei tarpeeksi tilaa.

-Lisätty lukumäärä satelliitteja lukittuna

-Tuki 2x16 lcd. Jos sinulla on 4x20, se toimii myös. Mutta 2 viimeisellä rivillä ei näy mitään.

Vaihe 3: Kirjaudu Eepromiin

Kirjautuu Eepromiin
Kirjautuu Eepromiin

Tässä on eeprom -kaatopaikka parin tunnin uf -ajon jälkeen. Selitän, miten tämä luetaan. Taas on helppoa:)

Osoitteeseen 00 01 tallennetaan pwm -arvo. Kun vaihe 5 laskee 9 miljardia, pwm -arvo päivitetään aina, kun laskuri saavuttaa täsmälleen 10 miljardia.

Heti kun olemme vaiheessa 5. Kaikki laskut tallennetaan eepromiin pwm -arvon jälkeen. Aloita osoitteesta 02, 03 jälkeen ja niin edelleen.

Tämä esimerkki tuli 5 voltin ocxostani. Voimme lukea pwm -arvon 0x9A73 = 39539 desimaalia 65536. = 60, 33% tai 3,0165 volttia.

Osoite 00:01 on siis 0x9A73

Seuraavaksi voit lukea numeron 03. 9 000, 000, 003 Pwm pienenee 3: lla, koska olemme vielä vaiheessa 5

00 10 000 000 000 000 pwm: n oleskeluun on koskematon ja siirrymme toimintatilaan (vaihe 6)

02 10, 000, 000.002 Tällöin pwm -arvoa lasketaan 2: sta

01 10, 000, 000.001 pwm -arvoa lasketaan 2: sta

01 10, 000, 000.001 pwm -arvoa lasketaan jälleen arvosta 2

00 10 000 000 000 000 pwm: n oleskeluun on koskematon

00 10 000 000 000 000 pwm: n oleskeluun on koskematon

00 10 000 000 000 000 pwm: n oleskeluun on koskematon

Nyt tiedät kuinka lukea eeprom. Jokainen 1000 sekunnin uusi arvo kirjoitetaan eepromiin. Kun eeprom on täynnä, se käynnistyy uudelleen osoitteesta 2.

FF -arvo tarkoittaa 9, 999, 999,999

Tämän dump -toiminnon avulla voit seurata tarkkuutta ilman LCD -näyttöä.

Voit tyhjentää eeprom -tiedoston isp -ohjelmoijalla.

Toivottavasti annoin sinulle tarpeeksi tietoa. Jos ei, kerro minulle. Neuvoja, virheitä, mitä tahansa.

Yannick

Suositeltava: