Turinys:

GPSDO YT, disciplinuotas osciliatorius 10Mhz atskaitos dažnis. Žema kaina. Tikslus: 3 žingsniai
GPSDO YT, disciplinuotas osciliatorius 10Mhz atskaitos dažnis. Žema kaina. Tikslus: 3 žingsniai

Video: GPSDO YT, disciplinuotas osciliatorius 10Mhz atskaitos dažnis. Žema kaina. Tikslus: 3 žingsniai

Video: GPSDO YT, disciplinuotas osciliatorius 10Mhz atskaitos dažnis. Žema kaina. Tikslus: 3 žingsniai
Video: BG7TBL GPSDO (GPS Disciplined Oscillator) and 10 MHz Distribution Amplifier 2024, Liepa
Anonim
GPSDO YT, disciplinuotas osciliatorius 10Mhz atskaitos dažnis. Žema kaina. Tikslus
GPSDO YT, disciplinuotas osciliatorius 10Mhz atskaitos dažnis. Žema kaina. Tikslus
GPSDO YT, disciplinuotas osciliatorius 10Mhz atskaitos dažnis. Žema kaina. Tikslus
GPSDO YT, disciplinuotas osciliatorius 10Mhz atskaitos dažnis. Žema kaina. Tikslus
GPSDO YT, disciplinuotas osciliatorius 10Mhz atskaitos dažnis. Žema kaina. Tikslus
GPSDO YT, disciplinuotas osciliatorius 10Mhz atskaitos dažnis. Žema kaina. Tikslus

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

STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP

Tai pasenęs projektas.

Vietoj to patikrinkite mano naują 2x16 lcd ekrano versiją, kurią galite rasti čia:

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

Aš palikau seną versiją, kad galėčiau dokumentuoti.

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

Sveiki vaikinai, Kas yra GPSDO? GPSDO reiškia: GPS disciplinuotas osciliatorius. GPS pasaulinei padėties nustatymo sistemai. Visi GPS palydovai turi sinchronizuotą atominį laikrodį. GPS modulis priima šiuos signalus iš kelių palydovų. Ir pagal trikampį jis žino savo vietą. Bet čia mus domina modulio pulsas per sekundę. Naudodami šį tikslų impulsą (iš atominio laikrodžio), mes galime padaryti labai labai tikslų osciliatorių. Kam ? Kaip nuoroda, dažnio skaitikliui kalibruoti arba tiesiog pasilinksminimui, kad jis būtų jo laboratorijoje.

Internete jų yra daug schemų. Aš kai kuriuos išbandžiau. Kai kurie yra geri, vienas su mažu2313 buvo 5 hercai per lėtas. Bet mano yra pats paprasčiausias, naudingiausias ir patogiausias. Ir aš jums duodu.hex kodą. Jie nėra VCO ir nėra skirstytuvo. Grandinei su VCO sekasi gerai. Tačiau jo impulsinis signalas turi būti nuolatinis 10 kHz ar didesnis. Jei antena tampa per silpna, trūksta impulso arba jo nėra, osciliatorius (ocxo) veikia pats, o VFC (įtampos dažnio valdymas) nebėra tikslus. Norint išlaikyti VCO grįžtamąjį ryšį, reikia atskaitos dažnio. Jei ne, tai svyruoja nuo 1 iki 2 hercų! Be to, pigesnis GPS modulis neveikia šioje konfigūracijoje. Norėdami sukurti VCO, turime turėti bent 10 khz. Bandžiau su 1000 hercų. Atotrūkis buvo per didelis. Dažnis buvo skirtingas. Taigi su „ublox neo-6m“jūs negalite padaryti puikaus „vco gpsdo“, nes maksimalus išėjimo dažnis yra 1000 Hz. Turite nusipirkti neo-7m arba viršutinę.

Taip veikia mano GPSDO YT. Valdiklis nustatė, kad gerai sureguliuotas bet koks OCXO su vfc nuo 0 iki 5v. Jei prarandame šeimos gydytojo signalą, dažnis visiškai nejuda. Kai signalas vėl pasirodo, valdiklis ima paskutinę žinomą vertę ir tęsia kaip anksčiau. Taikymo sritis, su etaloniniu osciliatoriumi. Negalime pasakyti, kada signalas prarastas ir kada jis grįžo. Signalas tas pats.

Po kalibravimo, jei norite, galite naudoti gpsdo be antenos. Po kelių laikiklių turėsite labai nedidelį dreifą. Bet…. kiek didesnis? Atėjo laikas paaiškinti.

Štai keletas matematikos … Lengva matematika, sekite paskui mane tai lengva. Iki šiol algoritmas turi 6 fazes. Kiekviena fazė ima 1–1 000 sekundžių mėginį, rado gerą pwm koregavimą ir eina į daugumą ilgesnių mėginių, kad būtų tiksliau.

Tikslumas = ((((sekundės skaičius x 10E6) + 1)/sekundės skaičius) - 10E6

1 fazė, 1 sekundės mėginys 10 000 000 skaičiavimų +1 Hz tikslumui

2 fazė, 10 sekundžių mėginys 100 000 000 skaičiavimų +-0,1 Hz tikslumui

3 fazė, 60 sekundžių mėginys, skirtas 600 000, 000 skaičiavimams, siekiant tikslumo +-0,01666 Hz

4 fazė, 200 sekundžių Mėginys, skirtas 2 000 000 000 000 skaičiavimams +-0,005 Hz tikslumui

5 fazės 900 sekundžių mėginys, skirtas 9 000 000 000 000 skaičiavimams +-0,001111 Hz tikslumui

6 fazė, 1000 sekundžių mėginys 10 milijardų, o tikslumas +-0,001 Hz

Blogiausiu atveju. Kai gauname 6 fazę, šis skaičius gali šiek tiek pasikeisti kas 1000 sekundžių. kurį laiką jis bus 10 000, 000, 001 arba 9, 999, 999, 999 Taigi, +arba - 0, 000, 000.001 variacijos 1000s. Dabar mes turime žinoti vertę 1 sekundę.

10Mhz = 1 sekundė

1 sekundei = 10 000 000 000 001 skaičius/1000s = 10 000 000 0001 Hz (blogiausias atvejis 1 sekundei)

10 000 000 0001 - 10 000 000 = 0,001 Hz/s greičiau arba lėčiau

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

Taigi atminkite, kad 10Mhz yra 1 sekundė, 31536Hz X 1 / 10E6 = 0, 0031536 sekundė per metus

Kitas greitesnis skaičiavimo metodas. vienas praleidimas 10E9Mhz yra 1/10E9 = 1E-10

1E-10 x 60x60x24x365 = 0, 0031536 sekundės per metus.

Ar tai jums pakankamai tikslu?

tačiau jūs turite turėti gerą OXCO. Man labiau patinka dvigubos orkaitės 12v sinusinis išėjimas. Stabiliau, tyliau ir tiksliau. Bet aš turiu tą patį rezultatą su paprastu 5V. Pavyzdžiui, stp 2187 stabilumo trumpas laikas (allano nuokrypis) yra 2x10-12 = 0,000, 000, 000, 002 Hz stabilumo. Tuo pačiu metu, kai yra GPS impulsas, Avr visada ištaisys pwm (dažnį). UC visada skaičiuoja … visada. Tai reiškia, kad ekrane nematysite datos ir laiko. Kai uC ima 900 sek., Šis yra užimtas 900 sekundžių. Jis turi suskaičiuoti visą laikrodį. Problema ta, kad uC veikia 10Mhz. Kiekvienas laikrodis turi būti skaičiuojamas. Tai skaičiuoja pati. Jei trūksta tik vieno laikrodžio, mėginys nebus geras, o pwm koregavimas nebus teisingas. Negaliu atnaujinti ekrano kiekvieną sekundę.

Prasidėjus mėginių ėmimui. Uc pradeda skaičiuoti laikmatį0. Kiekvienas 256 laikrodis sukuria pertrauką. X registras padidinamas. kai visas Y registras padidinamas ir X atstatomas į 0 ir pan. Pabaigoje, kai paskutinis gps impulsas, skaičiavimas sustabdomas. Ir dabar ir tik dabar galiu atnaujinti ekraną ir atlikti tam tikrus matematinius skaičiavimus.

žinodamas, kad turiu tik 25, 6 mus (256 laikrodis prieš pertrauką) skaityti ir rodyti laiką ar kitą. Tai neįmanoma. Vieną pertrauką galima nušlifuoti, o ne 2. Galėčiau atnaujinti laiką po 1000 sekundžių … bet nebus praktiška matyti laiką su 15, 16 minučių intervalu. Turiu laikrodį, laikrodį, mobilųjį telefoną, kad žinotų laiką:) Aš darau 10Mhz nuorodą. Ne laikrodis.

Kita problema, kurią turėjau, kai kurios avr instrukcijos turi 2 ciklus. Įskaitant rjmp instrukciją. Tai reiškia, kad jei pirmasis ar paskutinis GPS impulsas atsirado vienu metu iš 2 ciklų instrukcijos, uC praleis laikrodį. Kadangi uC baigs instrukciją prieš pradedant pertrauką. Taigi skaitiklis pradės arba sustabdys vieną ciklą vėliau. Taigi aš negaliu atlikti laiko laukimo ciklo … Bet iš tikrųjų aš neturiu kito pasirinkimo. Man reikėjo kur nors užsukti !! Aš naudoju instrukciją rjmp ir nop (tai nieko nedaro). Nop yra vieno ciklo instrukcija. Aš įdėjau 400 nop instrukciją vienam rjmp ant atmega48. 2000 atmega88 ir atmega328p versijose. Taigi tikimybė yra mažesnė, kai pirmasis ar paskutinis impulsas ateina pagal rjmp instrukciją. Bet taip, tai įmanoma ir jei taip atsitiks, ši klaida bus ištaisyta kito mėginio ėmimo metu.

Ekranas pasirenkamas. Galite jungtis tik su uC, OCXO ir žemo dažnio filtru (rezistoriaus kondensatoriumi), įjunkite ir palaukite. Po 1 valandos turėsite priimtiną dažnį. Tačiau norint pasiekti 6 etapą, reikia poros valandų.

Pwm yra 16 bitų. 65535 žingsnis. 5v/65535 = 76, 295 uV

OCXO variacija yra 2Hz 1V. 1v/76, 295uV = 13107 žingsnis 2 hz. 2/13107 = 152,59uHz pwm žingsniu

5 fazė keičia pwm 3, 6 fazė yra 2 žingsnis … Kodėl 3? nes 3 keičia dažnį 0,000, 000,000, 4 15 minučių skalėje. ir 4 yra mano stebuklingas skaičius mano algoritme. Pavyzdžiui, jei pirmoje fazėje, pirmasis rastas dažnis yra 10 000, 003 MHz. Aš nusileidžiu 0 000 000 000 žingsniu.

Per didelis žingsnis gali pereiti nuo 10.000003 iki 10.000001 ir po 9, 999998Hz. Man trūksta tikslo.

Naudojant 0, 0000004. Tai greičiau nei 0, 1 ir esu labiau įsitikinęs, kad neaplenksiu skaičiaus. Ir taip toliau. Aš darau tą patį su 10 sekundžių, 60 sekundžių ir 200 sekundžių faze bei 900 sekundėmis. 1000s veikia režimu ir naudokite 2 pwm žingsnį

Atminkite, kad 5 etapas yra ilgesnis. Tarpas tarp 4 ir 5 yra didesnis. Bet tai padeda greičiau pereiti nuo 5 iki 6.

Kai 6 fazė suskaičiavo tiksliai 10 milijardų, pwm vertės išsaugomos „eeprom“. Dabar atėjo laikas veikti. Šis vienas skaičiuoja 1000 sekundžių mėginį, bet tik su 2 žingsnių pwm. Veikiant režimui, tikrasis dažnis rodomas ir atnaujinamas kas 1000 sekundžių. Jei signalas prarandamas veikiant režimui, jis praeina savarankiškai. Šiuo režimu pwm nesikeičia. Kai signalas grįžta, jis grįžta į 5 fazę ir vėl sinchronizuojamas.

Jei po eeprom išsaugojimo grandinė atjungiama. Tai prasidės 5 fazėje, kai įjungiamas eeprom pwm reikšmė.

Norėdami ištrinti „eeprom“vertę, paleisties metu tiesiog paspauskite mygtuką. Pwm 50% bus įkelta, o kalibravimas prasidės nuo 1 fazės.

Praleidžiu daug valandų išbandyti skirtingus dalykus, grandinės konfigūraciją. Aš padariau daug bandymų su OP stiprintuvu, buferiu ir kita mikroschema. Ir pabaigai … geriausiam mano gautam rezultatui to nereikia. Tiesiog geras stabilus maitinimo šaltinis ir filtravimo kondensatorius. Taigi aš laikau tai paprasta.

1 žingsnis: Pirkite dalis

Pirkite dalis
Pirkite dalis
Pirkite dalis
Pirkite dalis
Pirkite dalis
Pirkite dalis

Pirmas dalykas, kurį reikia padaryti, yra įsigyti dalių. Kadangi siuntimas dažnai būna labai ilgas.

GPS modulis: naudoju „ublox neo-6m“. Šį pirkau ebay. Atlikite paiešką, tai kainuoja apie 7–10 JAV dolerių.

Pagal numatytuosius nustatymus šiame imtuve yra įjungtas 1 pulsas per sekundę. Mums nieko nereikia daryti.

Galite naudoti bet kurį GPS modulį su 1 herco impulsų išvestimi. Jūs turite vieną. Naudok tai!

OCXO: Aš išbandžiau 2 generatorius. Dvigubos orkaitės stp2187 12v sinusinės bangos išėjimas. Ir ISOTEMP 131-100 5V, kvadratinių bangų išėjimas. Abi yra iš „ebay“radijo dalių16. Aš turėjau labai gerą aptarnavimą iš jų, o kaina buvo pigesnė.

AVR: kodas tinka mažai atmega48. Bet aš siūlau nusipirkti „atmega88“arba „atmega328p“. Tai beveik ta pati kaina. Pirkite tai „digikey“arba „ebay“. Aš naudoju dip versiją. Galite nusipirkti ant paviršiaus montuojamą versiją, tačiau atkreipkite dėmesį, kaiščiai nėra tokie patys kaip schema.

LCD ekranas: veiks bet koks su 4x20 HD44780 suderinamas ekranas. Atspėk, kur aš nusipirkau savo:) Taip prieš porą metų ebay. Dabar tai brangiau nei anksčiau. Bet galima įsigyti mažiau nei 20 USD.

Galbūt netolimoje ateityje padarysiu 2x16 ekrano kodą. Šie ekranai kainuoja tik 4 USD. Tarp jūsų ir man pakaktų dviejų eilučių ekrano.

Turite turėti AVR ISP programuotoją. AVR programavimas nėra panašus į „Arduino“. „Arduino“jau užprogramuotas bendrauti nuosekliajame prievade. Visiškai naujas avr turi būti užprogramuotas naudojant ISP arba lygiagretų aukštos įtampos programuotoją. Mes čia naudojame isp.

74hc04 arba 74ac0, voltų reguliatorius 7812 ir 7805, rezistoriai, kondensatorius…. digikey, ebay

2 veiksmas: čia yra schema ir „Gpsdo_YT_v1_0.hex“

Image
Image
Čia yra schema ir „Gpsdo_YT_v1_0.hex“
Čia yra schema ir „Gpsdo_YT_v1_0.hex“
Čia yra schema ir „Gpsdo_YT_v1_0.hex“
Čia yra schema ir „Gpsdo_YT_v1_0.hex“

Manau, kad schema yra viskas, ko jums reikia norint įgyvendinti šį projektą. Jei norite, galite naudoti variu dengtą plokštę su ėsdinimo metodu arba tiesiog perforuotą plokštę.

Galite naudoti bet kokią norimą dėžutę, bet aš siūlau metalinę dėžę. Arba tiesiog ant duonos lentos linksmybėms, kaip mano:)

Laukiu, kol antenos plėtinys ir bnc jungtis įdės mano projektą į dėžutę.

Turite pasirinkti tinkamą saugiklio antgalį. Įsitikinkite, kad pasirinktas išorinis osciliatorius. Jei kyla problemų naudojant išorinį osciliatorių, išbandykite „External Crystal“. O žemas.ckdiv8 laikrodis nepažymėtas. Žiūrėkite paveikslėlį. Atkreipkite dėmesį, kai išorinis laikrodis susilieja, turite pateikti išorinį laikrodį, kad galėtumėte programuoti ar paleisti kodą. Kitaip tariant, prijunkite osciliatorių prie xtal1 kaiščio.

Beje … tą patį kodą galite naudoti dažnio skaitikliui su 1 sekundės vartu atlikti. Tiesiog įveskite laikrodį, kurį norite išmatuoti xtal1 kaiščiu, ir turėsite +-1 Hz dažnio skaitiklį.

Aš atnaujinsiu projektą, kai tik turėsiu naujų dalykų.

Tuo tarpu, jei projektas jus domina, turite pakankamai medžiagos, kad galėtumėte ją pradėti ir net užbaigti prieš mane

Įkėliau 2 vaizdo įrašus, galite pamatyti pirmą ir paskutinį etapus.

Aš pasiruošęs bet kokiems klausimams ar pastaboms. Ačiū.

2017 m. Vasario 26 d. Galima 1.1 versija.

-atmega48 nebepalaikomas. Nepakankamai vietos.

-Pridėtas palydovų skaičius.

-Palaiko 2x16 lcd. Jei turite 4x20, jis taip pat veiks. Tačiau paskutinėje 2 eilutėje nieko nebus rodoma.

3 žingsnis: Prisijunkite prie „Eeprom“

Prisijungia prie „Eeprom“
Prisijungia prie „Eeprom“

Čia yra „eeprom“sąvartynas po poros valandų veikimo laiko. Aš paaiškinsiu, kaip tai perskaityti. Vėlgi, lengva:)

Adresu 00, 01 saugoma pwm vertė. Kai tik 5 fazė skaičiuoja 9 milijardus, pwm vertė atnaujinama kiekvieną kartą, kai skaitiklis pasiekia lygiai 10 milijardų.

Kai tik esame 5 fazėje, visi skaičiai saugomi eeprom po pwm vertės. Pradėkite nuo 02 adreso, po 03 ir pan.

Šis pavyzdys buvo iš mano 5 voltų ocxo. Mes galime perskaityti pwm reikšmę 0x9A73 = 39539 dešimtainis po 65536. = 60, 33% arba 3.0165 voltų.

Taigi adresas 00:01 yra 0x9A73

Toliau galite perskaityti 03. 9, 000, 000, 003 Pwm sumažinamas 3, nes mes dar 5 etape

00, kai lieka 10 000 000 000 000 pwm, lieka nepakitęs ir pereiname prie veikimo režimo (6 etapas)

02 už 10 000 000 0002 Tokiu atveju pwm vertė sumažinama nuo 2

01, kai 10 000 000 0001 pwm vertė sumažinama nuo 2

01, kai 10 000 000 0001 pwm vertė vėl sumažinama nuo 2

00 už 10 000 000 000 pwm buvimo yra neliečiamas

00 už 10 000 000 000 pwm buvimo yra neliečiamas

00 už 10 000 000 000 pwm buvimo yra neliečiamas

Dabar jūs žinote, kaip skaityti eepromą. Kas 1000 sekundžių eeprom parašoma nauja vertė. Kai „eeprom“yra pilnas, jis paleidžiamas iš naujo nuo 2 adreso.

FF reikšmė reiškia 9, 999, 999,999

Naudodami šį išmetimą galite sekti tikslumą be jokio LCD ekrano.

„Eeprom“failą galite išmesti naudodami ISP programuotoją.

Tikiuosi, kad suteikiau jums pakankamai informacijos. Jei ne, praneškite man. Patarimai, klaida, bet kas.

Yannick

Rekomenduojamas: