Satura rādītājs:

GPSDO YT, disciplinēts oscilators 10Mhz atskaites frekvence. Lēts. Precīzs: 3 soļi
GPSDO YT, disciplinēts oscilators 10Mhz atskaites frekvence. Lēts. Precīzs: 3 soļi

Video: GPSDO YT, disciplinēts oscilators 10Mhz atskaites frekvence. Lēts. Precīzs: 3 soļi

Video: GPSDO YT, disciplinēts oscilators 10Mhz atskaites frekvence. Lēts. Precīzs: 3 soļi
Video: GPS Disciplined Oscillator (GPSDO) | Leo Bodnar Electronics | Expert Electronics SunSDR2 DX 2024, Jūlijs
Anonim
GPSDO YT, disciplinēts oscilators 10Mhz atskaites frekvence. Lēts. Precīzs
GPSDO YT, disciplinēts oscilators 10Mhz atskaites frekvence. Lēts. Precīzs
GPSDO YT, disciplinēts oscilators 10Mhz atskaites frekvence. Lēts. Precīzs
GPSDO YT, disciplinēts oscilators 10Mhz atskaites frekvence. Lēts. Precīzs
GPSDO YT, disciplinēts oscilators 10Mhz atskaites frekvence. Lēts. Precīzs
GPSDO YT, disciplinēts oscilators 10Mhz atskaites frekvence. Lēts. Precīzs

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

STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP

Šis ir novecojis projekts.

Tā vietā pārbaudiet manu jauno 2x16 lcd displeja versiju, kas pieejama šeit:

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

Es atstāju šeit veco versiju dokumentācijai.

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

Sveiki puiši, Kas ir GPSDO? GPSDO nozīmē: GPS disciplinēts oscilators. GPS globālajai pozicionēšanas sistēmai. Visi GPS satelīti ir aprīkoti ar sinhronizētu atomu pulksteni. GPS modulis saņem šos signālus no vairākiem satelītiem. Un, izmantojot triangulāciju, viņš zina savu atrašanās vietu. Bet šeit mūs interesē impulss sekundē, kas atrodams modulī. Ar šo precīzo impulsu (no atomu pulksteņa) mēs varam veikt ļoti ļoti precīzu oscilatoru. Priekš kam ? Atsaucei, frekvences skaitītāja kalibrēšanai vai vienkārši izklaidei, lai tas būtu viņa laboratorijā.

Internetā tie ir daudz shematiski. Dažus esmu mēģinājis. Daži ir labi, viens ar tiny2313 bija par 5 herciem pārāk lēns. Bet mans ir visvienkāršākais, noderīgākais un ērtākais. Un es jums dodu.hex kodu. Tie nav nekādi VCO un nav dalītāji. Ķēde ar VCO darbojas labi. Bet tam nepārtraukti jābūt impulsa signālam 10 khz vai vairāk. Ja antena kļūst pārāk vāja, trūkst impulsa vai vispār nav impulsa, oscilators (ocxo) darbojas pats un VFC (sprieguma frekvences kontrole) vairs nav precīzs. Lai saglabātu VCO atgriezenisko saiti, ir nepieciešama atsauces frekvence. Ja nē, tas svārstās no 1 līdz 2 herciem! Arī lētāks GPS modulis šajā konfigurācijā nedarbojas. Mums ir jābūt vismaz 10 khz, lai izveidotu VCO. Es mēģināju ar 1000 herciem. Plaisa bija pārāk liela. Biežums bija atšķirīgs. Tātad ar ublox neo-6m jūs nevarat paveikt lielisku vco gpsdo, jo maksimālā izejas frekvence ir 1000 Hz. Jums ir jāpērk neo-7m vai augšējais.

Šādi darbojas mans GPSDO YT. Kontrolieris atrada labu regulējumu jebkuram OCXO ar vfc 0 līdz 5v. Ja mēs zaudējam ģimenes ārstu signālu, frekvence vispār nekustas. Kad signāls atkal parādās, kontrolieris ņem savu pēdējo zināmo labo vērtību un turpina kā iepriekš. Par darbības jomu, ar atsauces oscilatoru. Mēs nevaram pateikt, kad signāls ir pazudis vai kad tas atgriezās. Signāls ir vienāds.

Pēc kalibrēšanas, ja vēlaties, varat izmantot gpsdo bez antenas. Dažus stiprinājumus vēlāk jums būs ļoti neliels dreifs. Bet…. cik lielāks? Ir pienācis laiks kaut kādam skaidrojumam.

Šeit ir dažas matemātikas … Viegla matemātika, sekojiet man ar šo, tas ir viegli. Līdz šim algoritmam ir 6 fāzes. Katrā fāzē tiek ņemts paraugs no 1 līdz 1000 sekundēm, atrasta laba pwm korekcija un lielākajai daļai paraugu, lai iegūtu lielāku precizitāti.

Precizitāte = ((((sekundes skaits x 10E6) + 1)/sekundes skaits) - 10E6

1. fāze, 1 otrais paraugs 10 000 000 skaitīšanai ar precizitāti +- 1 Hz

2. fāze, 10 sekunžu paraugs 100 000 000 skaitīšanai ar precizitāti +-0,1 Hz

3. fāze, 60 sekunžu paraugs 600 000 000 skaitīšanai ar precizitāti +-0,01666 Hz

4. fāze, 200 sekundes Paraugs 2 000, 000 000 skaitīšanai ar precizitāti +-0,005 Hz

5. fāzes 900 sekunžu paraugs 9 000, 000 000 skaitīšanai, lai precizitāte būtu +-0,001111 Hz

6. fāze, 1000 sekunžu paraugs 10 miljardiem skaitās ar precizitāti +-0,001 Hz

Sliktākajā gadījumā. Kad mēs iegūstam 6. fāzi. Šis skaitlis var nedaudz mainīties ik pēc 1000 sekundēm. kādu laiku tas būs 10, 000, 000, 001 vai 9, 999, 999, 999 Tātad, +vai - 0 000 000 0001 variācija 1000s. Tagad mums jāzina vērtība 1 sekundi.

10Mhz = 1 sekunde

1 sekunde = 10 000 000 000 001 skaits/1000s = 10 000 000 0001 Hz (sliktākais gadījums 1 sekundē)

10 000 000 0001 - 10 000 000 = 0,001 Hz/s ātrāk vai lēnāk

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

Tāpēc atcerieties, ka 10Mhz ir 1 sekunde, 31536Hz X 1 / 10E6 = 0, 0031536 sekunde / gadā

Vēl viena ātrāka aprēķina metode. viens garums 10E9Mhz ir 1/10E9 = 1E-10

1E-10 x 60x60x24x365 = 0, 0031536 sekundē/gadā.

Vai tas jums ir pietiekami precīzs?

tomēr jums ir jābūt labai OXCO. Es dodu priekšroku dubultās krāsns 12v Sinus izejai. Stabilāks, klusāks un precīzāks. Bet man ir tāds pats rezultāts ar vienkāršu 5V. Piemēram, stp 2187 stabilitātes īss laiks (allan novirze) ir 2x10-12 = 0,000, 000, 000, 002 Hz stabilitātes. Tajā pašā laikā, kad ir pieejams GPS impulss, Avr vienmēr izlabos pwm (frekvenci). UC vienmēr skaitās … vienmēr. Tas nozīmē, ka displejā neredzēsiet datumu un laiku. Kad uC ņem paraugus no 900, šis ir aizņemts 900 sekundes. Tam jāskaita viss pulkstenis. Problēma ir tā, ka uC darbojas ar ātrumu 10 MHz. Katrs pulkstenis ir jāskaita. Tā skaitās pati. Ja trūkst tikai viena pulksteņa, paraugs nebūs labs, un pwm pielāgošana nebūs pareiza. Nevaru atsvaidzināt displeju katru sekundi.

Kad sākas paraugu ņemšana. Uc sāk skaitīt taimeri0. Katrs 256 pulkstenis rada pārtraukumu. X reģistrs tiek palielināts. kad Y reģistrs ir pilns un X tiek atiestatīts uz 0 un tā tālāk. Beigās, kad viņš pēdējo vienu gps impulsu, skaitīšana tiek pārtraukta. Un tagad un tikai tagad es varu atjaunināt displeju un veikt matemātisku aprēķinu pwm aprēķināšanai.

zinot to, man ir tikai 25, 6 mums (256 pulkstenis pirms pārtraukuma), lai lasītu un parādītu laiku vai citu. Tas ir neiespējami. Var pārtraukt vienu pārtraukumu, nevis 2. Es varētu atsvaidzināt laiku pēc 1000 sekundēm … bet nebūs praktiski redzēt laiku ar 15, 16 minūšu intervālu. Man ir pulkstenis, pulkstenis, mobilais telefons, lai zinātu laiku:) Es daru 10Mhz atsauci. Nav pulkstenis.

Vēl viena problēma, kas man bija, dažiem avr norādījumiem ir 2 cikli. Ieskaitot rjmp instrukciju. Tas nozīmē, ka, ja pirmais vai pēdējais GPS impulss parādījās vienlaikus ar 2 ciklu instrukciju, uC nokavēs pulksteni. Tā kā uC pabeigs instrukciju pirms pārtraukuma sākuma. Tātad skaitītājs sāksies vai apstāsies vienu ciklu vēlāk. Tāpēc es nevaru veikt laika gaidīšanas ciklu … Bet patiesībā man nav citas izvēles. Man vajadzēja kaut kur iegriezties !! Es Tāpēc es izmantoju instrukciju rjmp un nop (tas neko nedara). Nop ir viena cikla instrukcija. Esmu ievietojis 400 nop instrukciju vienam rjmp uz atmega48. 2000 versijā atmega88 un atmega328p. Tātad izredzes ir mazākas līdz pirmajam vai pēdējam impulsam pēc rjmp instrukcijas. Bet jā, tas ir iespējams, un, ja tas notiks, šī kļūda tiks novērsta nākamajā paraugu ņemšanā.

Displejs nav obligāts. Jūs varat izveidot ķēdi tikai ar, uC, OCXO un zemas caurlaidības filtru (rezistora kondensatoru), ieslēdziet un pagaidiet. Pēc 1 stundas jums būs pieņemama frekvence. Bet, lai sasniegtu 6. fāzi. Tas aizņem pāris stundas.

Pwm ir 16 biti. 65535 solis. 5v/65535 = 76, 295 uV

OCXO variācija ir 2 Hz līdz 1 V. 1v/76, 295uV = 13107 solis 2 hz. 2/13107 = 152,59uHz ar pwm soli

5. fāze maina pwm par 3, 6. fāze ir 2. solis … Kāpēc 3? jo 3 mainās frekvence par 0,000, 000, 000, 4 15 minūšu skalā. un 4 ir mans burvju skaitlis manā algoritmā. Piemēram, pirmajā fāzē pirmā atrastā frekvence ir 10 000, 003 MHz. Es pazeminu par 0 000 000 000 soli.

Pārāk liels solis var pāriet no 10.000003 līdz 10.000001 un pēc 9, 999998Hz. Man pietrūkst mērķa.

Ar 0, 0000004. Tas ir ātrāk nekā 0, 1, un es esmu pārliecināts, ka nenovirzīšu skaitli. Un tā tālāk. Es daru to pašu ar 10 sekundēm, 60 sekundēm un 200. fāzi un 900. 1000s darbojas režīmā un izmantojiet pwm soli 2

Lūdzu, ņemiet vērā, ka 5. posms ir ilgāks. Plaisa starp 4 un 5 ir lielāka. Bet tas palīdz pāriet no 5 līdz 6 ātrāk.

Kad 6. fāze ir saskaitījusi tieši 10 miljardus, pwm vērtības tiek saglabātas eeprom. Tagad ir pienācis laiks skriešanas režīmam. Šis viens paraugs skaitīs 1000 sekundes, bet tikai ar 2 pakāpju pwm. Darbības režīmā tiek parādīta un atjaunināta reālā frekvence ar 1000 sekunžu intervālu. Ja signāls tiek pazaudēts skriešanas režīmā, tas pāriet patstāvīgi darbojoties. Šajā režīmā nemainās pwm. Kad signāls atgriežas, tas atgriežas 5. fāzē, lai veiktu atkārtotu sinhronizāciju.

Ja ķēde tiek atvienota pēc eeprom saglabāšanas. Tas sāksies 5. fāzē, ieslēdzot ar eeprom pwm vērtību.

Lai dzēstu eeprom vērtību, startēšanas laikā vienkārši nospiediet pogu. Pwm 50% tiks ielādēts, un kalibrēšana sāksies no 1. fāzes.

Es pavadu daudzas stundas, lai izmēģinātu dažādas lietas, ķēdes konfigurāciju. Es veicu daudzus testus, izmantojot OP pastiprinātāju, buferi un citu mikroshēmu. Un galu galā… labākajam rezultātam, ko esmu ieguvis, tas nav vajadzīgs. Vienkārši labs stabils barošanas avots un daži filtrēšanas kondensatori. Tāpēc es turpinu šo vienkāršo.

1. darbība: iegādājieties detaļas

Pērciet detaļas
Pērciet detaļas
Pērciet detaļas
Pērciet detaļas
Pērciet detaļas
Pērciet detaļas

Pirmais, kas jādara, ir iegādāties detaļas. Tā kā piegāde bieži ir ļoti gara.

GPS modulis: es izmantoju ublox neo-6m. Šo nopirku ebay. Veiciet meklēšanu, tas maksā apmēram 7 līdz 10 ASV dolārus.

Pēc noklusējuma šim uztvērējam ir iespējots 1 impulss sekundē. Mums nekas nav jādara.

Jūs varat izmantot jebkuru GPS moduli ar 1 herca impulsa izeju. Jums ir viens. Izmantojiet to!

OCXO: Es izmēģināju 2 oscilatorus. Dubultā cepeškrāsns STP2187 12V sinusa viļņu izeja. Un ISOTEMP 131-100 5V, kvadrātveida viļņu izeja. Abi nāk no radioparts16 ebay. Man bija ļoti labs serviss no viņiem, un cena bija lētāka.

AVR: kods atbilst mazam atmega48. Bet es iesaku iegādāties atmega88 vai atmega328p. Tā ir gandrīz tāda pati cena. Pērciet to digikey vai ebay. Es izmantoju dip versiju. Jūs varat iegādāties virsmas montāžas versiju, taču pievērsiet uzmanību, ka tapas nav vienādas ar shēmu.

LCD displejs: darbosies jebkurš ar 4x20 HD44780 saderīgs displejs. Uzminiet, kur es nopirku savējo:) Jā, pirms pāris gadiem ebay. Tagad tas ir dārgāk nekā agrāk. Bet pieejams zem 20 ASV dolāriem.

Varbūt tuvākajā laikā es izveidošu kodu 2x16 displejam. Šie displeji maksā tikai 4 USD. Un starp jums un mani pietiktu ar 2 rindu displeju.

Jums ir jābūt AVR ISP programmētājam. AVR programmēšana nav līdzīga Arduino. Arduino jau ir ieprogrammēts saziņai seriālajā portā. Pavisam jaunam avr jābūt ieprogrammētam ar ISP vai paralēlo augstsprieguma programmētāju. Mēs šeit izmantojam ISP.

74hc04 vai 74ac0, voltu regulators 7812 un 7805, rezistori, kondensators…. digikey, ebay

2. darbība. Šeit ir shematisks un Gpsdo_YT_v1_0.hex

Image
Image
Šeit ir shematisks un Gpsdo_YT_v1_0.hex
Šeit ir shematisks un Gpsdo_YT_v1_0.hex
Šeit ir shematisks un Gpsdo_YT_v1_0.hex
Šeit ir shematisks un Gpsdo_YT_v1_0.hex

Es domāju, ka shematisks ir viss, kas jums nepieciešams, lai realizētu šo projektu. Ja vēlaties, varat izmantot vara pārklājumu ar kodināšanas metodi vai vienkārši perforētu plāksni.

Jūs varat izmantot jebkuru vēlamo kasti, bet es iesaku metāla kastīti. Vai vienkārši uz maizes dēļa izklaidei kā manējais:)

Es gaidu, kad antenas pagarinājums un bnc savienotājs ievietos manu projektu kastē.

Jums jāizvēlas pareizais drošinātāja uzgalis. Pārliecinieties, ka ir izvēlēts ārējais oscilators. Ja jums ir problēmas ar ārējo oscilatoru, izmēģiniet ārējo kristālu. Un pulkstenis low.ckdiv8 nav atzīmēts. Skatīt attēlu. Pievērsiet uzmanību, kad ārējais pulkstenis saplūst mazliet, jums ir jānodrošina ārējs pulkstenis, lai ieprogrammētu vai palaistu kodu. Citiem vārdiem sakot, pievienojiet oscilatoru xtal1 tapā.

Starp citu … jūs varat izmantot to pašu kodu, lai veiktu frekvences skaitītāju ar 1 sekundes vārtiem. Vienkārši ievadiet mērāmo pulksteni xtal1 tapā, un jums būs +-1 Hz frekvences skaitītājs.

Es atjaunināšu projektu, tiklīdz man būs jaunas lietas.

Tikmēr, ja projekts jūs interesē, jums ir pietiekami daudz materiālu, lai to sāktu un pat pabeigtu pirms manis

Es augšupielādēju 2 videoklipus, jūs varat redzēt pirmo un pēdējo fāzi.

Esmu pieejams visiem jautājumiem vai komentāriem. Paldies.

2017. gada 26. februāris…. Pieejama versija 1.1.

-atmega48 vairs netiek atbalstīts. Nepietiek vietas.

-Pievienots bloķēts satelītu skaits.

-Atbalsts 2x16 lcd. Ja jums ir 4x20, tas arī darbosies. Bet 2 pēdējā rindā nekas netiks parādīts.

3. darbība: piesakieties Eeprom

Reģistrējas Eeprom
Reģistrējas Eeprom

Šeit ir eeprom izgāztuve pēc pāris stundām uf darbības laika. Es paskaidrošu, kā to izlasīt. Atkal, tas ir viegli:)

Pēc adreses 00, 01 tiek saglabāta pwm vērtība. Tiklīdz 5. fāze saskaita 9 miljardus, pwm vērtība tiek atjaunināta katru reizi, kad skaitītājs sasniedz tieši 10 miljardus.

Tiklīdz mēs esam 5. fāzē. Visi skaitļi tiek saglabāti eeprom pēc pwm vērtības. Sāciet ar adresi 02, pēc 03 un tā tālāk.

Šis piemērs nāca no mana 5 voltu ocxo. Mēs varam nolasīt pwm vērtību 0x9A73 = 39539 decimāldaļa uz 65536. = 60, 33% vai 3.0165 volti.

Tātad adrese 00:01 ir 0x9A73

Tālāk jūs varat izlasīt 03. Par 9 000 000 000 003 Pwm tiek samazināts par 3, jo mēs vēl esam 5. fāzē

00 uz 10 000 000 000 pwm uzturēšanās ir neskarta, un mēs pārietam uz darbības režīmu (6. fāze)

02 par 10 000 000 0002 Tādā gadījumā pwm vērtība tiek samazināta no 2

01 uz 10 000 000 0001 pwm vērtība tiek samazināta no 2

01 uz 10 000 000 0001 pwm vērtība atkal tiek samazināta no 2

00 par 10 000 000 000 pwm uzturēšanās ir neskarta

00 par 10 000 000 000 pwm uzturēšanās ir neskarta

00 par 10 000 000 000 pwm uzturēšanās ir neskarta

Tagad jūs zināt, kā lasīt eepromu. Katras 1000 sekundes jauna vērtība tiek ierakstīta eeprom. Kad eeprom ir pilns, tas tiek restartēts no 2. adreses.

FF vērtība ir 9, 999, 999,999

Ar šo izgāztuvi jūs varat izsekot precizitātei bez LCD displeja.

Jūs varat izmest eeprom failu ar ISP programmētāju.

Es ceru, ka es jums sniedzu pietiekami daudz informācijas. Ja nē, dariet man zināmu. Padoms, kļūda, jebkas.

Yannick

Ieteicams: