Obsah:

GPSDO YT, disciplinovaný oscilátor 10 MHz referenční frekvence. Nízké náklady. Přesné: 3 kroky
GPSDO YT, disciplinovaný oscilátor 10 MHz referenční frekvence. Nízké náklady. Přesné: 3 kroky

Video: GPSDO YT, disciplinovaný oscilátor 10 MHz referenční frekvence. Nízké náklady. Přesné: 3 kroky

Video: GPSDO YT, disciplinovaný oscilátor 10 MHz referenční frekvence. Nízké náklady. Přesné: 3 kroky
Video: BG7TBL GPSDO (GPS Disciplined Oscillator) and 10 MHz Distribution Amplifier 2024, Červenec
Anonim
GPSDO YT, disciplinovaný oscilátor 10 MHz referenční frekvence. Nízké náklady. Přesný
GPSDO YT, disciplinovaný oscilátor 10 MHz referenční frekvence. Nízké náklady. Přesný
GPSDO YT, disciplinovaný oscilátor 10 MHz referenční frekvence. Nízké náklady. Přesný
GPSDO YT, disciplinovaný oscilátor 10 MHz referenční frekvence. Nízké náklady. Přesný
GPSDO YT, disciplinovaný oscilátor 10 MHz referenční frekvence. Nízké náklady. Přesný
GPSDO YT, disciplinovaný oscilátor 10 MHz referenční frekvence. Nízké náklady. Přesný

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

STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP

Jedná se o zastaralý projekt.

Místo toho zkontrolujte moji novou verzi displeje LCD s 2x16, která je k dispozici zde:

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

Starou verzi jsem zde nechal pro dokumentaci.

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

Ahoj kluci, Co je to GPSDO? GPSDO znamená: GPS disciplinovaný oscilátor. GPS pro globální polohovací systém. Všechny satelity GPS jsou vybaveny synchronizovanými atomovými hodinami. GPS modul přijímá tyto signály z několika satelitů. A díky triangulaci zná svou polohu. Ale tady nás zajímá puls za sekundu, který se nachází v modulu. S tímto přesným pulsem (z atomových hodin) můžeme udělat velmi velmi přesný oscilátor. K čemu? Pro informaci, pro kalibraci čítače kmitočtů nebo jen tak pro zábavu mít jeden v jeho laboratoři.

Na internetu je mnoho schémat. Některé jsem vyzkoušel. Některé jsou dobré, jedna s tiny2313 byla o 5 hertzů příliš pomalá. Ale moje je nejjednodušší, nejužitečnější a nejpohodlnější. A dávám vám.hex kód. Nejsou žádnými VCO ani rozdělovači. Obvodu s VCO se daří dobře. Musí však mít pulzní signál 10 khz nebo více nepřetržitě. Pokud je anténa příliš slabá, chybí puls nebo vůbec žádný, oscilátor (ocxo) běží sám a VFC (Voltage Frequency Control) již není přesné. Zpětná vazba VCO potřebuje referenční frekvenci, aby se udržela. Pokud ne, pohybuje se od 1 do 2 Hertzů! V této konfiguraci také nefunguje levnější modul GPS. K vytvoření VCO musíme mít alespoň 10 khz. Zkusil jsem to s 1000 hertzy. Mezera byla příliš velká. Frekvence se měnila. Takže s ublox neo-6m nemůžete udělat skvělý vco gpsdo, protože maximální výstupní frekvence je 1000 Hz. Musíte si koupit neo-7m nebo svršek.

Takto funguje můj GPSDO YT. Řadič našel dobré nastavení pro jakýkoli OCXO s vfc 0 až 5v. Pokud ztratíme signál praktických lékařů, frekvence se vůbec nepohybuje. Když se signál znovu objeví, ovladač vezme svou poslední známou dobrou hodnotu a pokračuje jako dříve. Na rozsah, s referenčním oscilátorem. Nemůžeme říci, kdy je signál ztracen nebo kdy se vrátil. Signál je stejný.

Po kalibraci můžete gpsdo použít bez antény, pokud chcete. O několik úchytů později budete mít velmi malý drift. Ale…. o kolik větší? Je čas na nějaké vysvětlení.

Tady je nějaká matematika … Snadná matematika, následujte mě s tím, je to snadné. Algoritmus má zatím 6 fází. Každá fáze trvá vzorek 1 až 1 000 sekund, nalezla dobré nastavení PWM a přejde na většinu delších vzorků pro větší přesnost.

Přesnost = (((počet sekund x 10E6) + 1)/počet sekund) - 10E6

Fáze 1, 1 sekundový vzorek pro 10 000 000 počítání s přesností +- 1 Hz

fáze 2, 10 sekundový vzorek pro 100 000 000 počítání s přesností +-0,1 Hz

Fáze 3, 60 sekundový vzorek pro 600 000 000 počítání s přesností +-0,01666 Hz

Fáze 4, 200 sekund Ukázka pro 2 000 000 000 000 počítání s přesností +-0,005 Hz

Vzorek fáze 5, 900 sekund pro počty 9 000 000 000 000 s přesností +-0,001111 Hz

Fáze 6, vzorek 1000 sekund pro 10 miliard počítání s přesností +-0,001 Hz

Nejhorší případ. Když dostaneme fázi 6. Toto číslo se může každých 1000 sekund trochu změnit nebo ne. někdy to bude 10 000 000 000, 001 nebo 9, 999, 999, 999 variací, tedy +nebo - 0, 000, 000,001 za 1000 s. Nyní musíme znát hodnotu po dobu 1 sekundy.

10 MHz = 1 sekunda

Na 1 sekundu = 10 000 000 000, 001 počet/1000 s = 10 000 000 000,001 Hz (nejhorší případ na 1 sekundu)

10 000 000 000,001 - 10 000 000 000 = 0,001 Hz/s rychlejší nebo pomalejší

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

Pamatujte tedy, že 10 MHz je 1 sekunda, 31536 Hz X 1 / 10E6 = 0, 0031536 sekundy / rok

Další rychlejší metoda pro výpočet. jedna chyba 10E9Mhz je 1/10E9 = 1E-10

1E-10 x 60x60x24x365 = 0, 0031536 sekund/rok.

Je to pro vás dostatečně přesné?

musíte však mít dobré OXCO. Dávám přednost výstupu Double Oven 12v Sinus. Stabilnější, tichý a přesný. Ale mám stejný výsledek s jednoduchým 5V. Například stp 2187 má krátký čas stability (alanová odchylka) 2x10-12 = 0,000, 000, 000, 002 Hz stability. Ve stejné době, kdy je k dispozici puls GPS, Avr vždy opraví pwm (frekvenci). UC se vždy počítá … vždy. To znamená, že na displeji neuvidíte datum a čas. Když uC vzorkuje 900 s, tento je zaneprázdněn 900 sekundami. Musí počítat všechny hodiny. Problém je, že uC běží na 10 MHz. Každé hodiny se musí počítat. Počítá se to samo. Pokud chybí pouze jedny hodiny, vzorek nebude dobrý a nastavení pwm nebude správné. Nemohu obnovit zobrazení každou sekundu.

Když je zahájeno vzorkování. Uc začít počítat časovač0. Každých 256 hodin generuje přerušení. X registr se zvyšuje. když je plný, registr Y se zvýší a X se resetuje na 0 atd. Na konci, když má poslední puls GPS, se počítání zastaví. A teď a jen teď mohu aktualizovat zobrazení a provést nějakou matematiku pro výpočet PWM.

s vědomím, že mám jen 25, 6 us (256 hodin před přerušením) na čtení a zobrazení času nebo jiného. To je nemožné. Lze přerušit jedno přerušení, ne 2. Čas bych mohl obnovit po 1000 s … ale nebude praktické vidět čas s 15, 16 minutovým intervalem. Mám hodinky, hodiny, mobil, abych poznal čas:) Dělám 10Mhz referenci. Ne hodiny.

Další problém, který jsem měl, některé instrukce AVR mají 2 cykly. Včetně instrukce rjmp. To znamená, že pokud první nebo poslední impulz GPS přišel současně s instrukcí 2 cyklů, uC zmešká hodiny. Protože uC dokončí instrukci před zahájením přerušení. Počítadlo se tedy spustí nebo zastaví o jeden cyklus později. Nemohu tedy provést smyčku časového čekání … Ale ve skutečnosti nemám jinou možnost. Potřeboval jsem se někde zacyklit !! I Takže používám instrukce rjmp a nop (to nic nedělá). Nop je instrukce jednoho cyklu. Dal jsem instrukci 400 nop pro jeden rjmp na atmega48. 2000 na verzích atmega88 a atmega328p. Takže šance na první nebo poslední puls přijde na instrukci rjmp. Ale ano, je to možné, a pokud k tomu dojde, bude tato chyba opravena při příštím vzorkování.

Displej je volitelný. Obvod můžete provádět pouze s, uC, OCXO a low-pass filtrem (odporovým kondenzátorem), zapnout a čekat. Po 1 hodině budete mít přijatelnou frekvenci. Ale dosáhnout fáze 6. Trvá to pár hodin.

Pwm je 16 bitů. Krok 65535. 5v/65535 = 76, 295 uV

Variace OCXO jsou 2 Hz x 1 V. 1v/76, 295uV = 13107 krok po 2 hz. 2/13107 = 152,59uHz po krocích pwm

Fáze 5 se mění pwm o 3, fáze 6 je 2. krok … Proč 3? protože 3 mění frekvenci o 0,000, 000, 000, 4 v 15minutovém měřítku. a 4 je moje magické číslo v mém algoritmu. Například v první fázi je první nalezená frekvence 10 000 003 MHz. Snižuji o 0 000 000 000,4 kroku.

Příliš velký krok může projít od 10.000003 do 10.000001 a po 9, 999998Hz. Chybí mi cíl.

S 0, 0000004. Je to rychlejší než 0, 1 a jsem si jistější, že neobejdu číslo. A tak dále. Dělám to samé s fázemi 10 sekund, 60 sekund a 200 s a 900 s. 1000s je spuštěný režim a použijte krok 2 po 2

Vezměte prosím na vědomí, že dosažení fáze 5 je delší. Rozdíl mezi 4 a 5 je větší. Pomáhá však přejít z 5 na 6 rychleji.

Když fáze 6 napočítá přesně 10 miliard, hodnoty pwm se uloží do eeprom. Nyní je čas na běžící režim. Tenhle počítá 1000 sekundový vzorek, ale pouze se 2 kroky pwm. V provozním režimu se skutečná frekvence zobrazuje a aktualizuje v intervalu 1000 sekund. Pokud je signál v provozním režimu ztracen, přejde v samočinném chodu. V tomto režimu nedochází ke změně PWM. Když se signál vrátí, vrátí se do fáze 5 k resynchronizaci.

Pokud je obvod odpojen po uložení eeprom. Toto začne ve fázi 5 při zapnutí s hodnotou eeprom pwm.

Chcete-li vymazat hodnotu eeprom, stačí při spuštění stisknout tlačítko. Pwm 50% se načte a kalibrace začne od fáze 1.

Trávím mnoho hodin zkoušením různých věcí, konfigurací obvodu. Udělal jsem mnoho testů s OP zesilovačem, pufrem a dalším čipem. A na konci… nejlepší výsledek, kterého jsem dosáhl, nepotřebuje. Jen dobrý stabilní zdroj napájení a nějaký filtrační kondenzátor. Takže to držím jednoduše.

Krok 1: Kupte si díly

Kupte si díly
Kupte si díly
Kupte si díly
Kupte si díly
Kupte si díly
Kupte si díly

První věc, kterou musíte udělat, je koupit díly. Protože doprava je často velmi dlouhá.

GPS modul: Používám ublox neo-6m. Koupil jsem tento na ebay. Zkuste hledat, stojí to asi 7 až 10 amerických dolarů.

Ve výchozím nastavení má tento přijímač zapnutý 1 puls za sekundu. Nemusíme nic dělat.

Můžete použít jakýkoli modul GPS s pulzním výstupem 1 Hertz. Ty máš jeden. Použijte to!

OCXO: Zkoušel jsem 2 oscilátory. Dvojitá trouba stp2187 12v sinusový výstup. A ISOTEMP 131-100 5V, výstup se čtvercovými vlnami. Oba pocházejí z radioparts16 na ebay. Měl jsem od nich velmi dobrou službu a cena byla levnější.

AVR: Kód zapadl do malého atmega48. Ale doporučuji koupit atmega88 nebo atmega328p. Je to téměř stejná cena. Kupte si to na digikey nebo ebay. Používám dip verzi. Můžete si koupit verzi pro povrchovou montáž, ale dávejte pozor, kolíky nejsou stejné jako u schématu.

LCD displej: Bude fungovat jakýkoli displej kompatibilní s 4x20 HD44780. Hádejte, kde jsem koupil ten svůj:) Ano na ebay před pár lety. Nyní je to dražší než dříve. Ale k dispozici pod 20 USD.

Možná v blízké budoucnosti udělám kód pro displej 2x16. Tyto displeje jsou pouze 4 $. A mezi vámi a mnou by stačil 2řádkový displej.

Musíte mít programátor AVR ISP. Programování AVR není jako Arduino. Arduino již bylo naprogramováno pro komunikaci na sériovém portu. Zcela nový průměr musí být naprogramován pomocí ISP nebo paralelního vysokonapěťového programátoru. Zde používáme ISP.

A 74hc04 nebo 74ac0, voltový regulátor 7812 a 7805, odpory, kondenzátor…. digikey, ebay

Krok 2: Zde je schéma a Gpsdo_YT_v1_0.hex

Image
Image
Zde je schéma a Gpsdo_YT_v1_0.hex
Zde je schéma a Gpsdo_YT_v1_0.hex
Zde je schéma a Gpsdo_YT_v1_0.hex
Zde je schéma a Gpsdo_YT_v1_0.hex

Myslím, že schéma je vše, co potřebujete k realizaci tohoto projektu. Můžete použít měděnou desku s metodou leptání nebo jen perforovanou desku, pokud chcete.

Můžete použít libovolný box, ale já doporučuji kovový. Nebo jen tak na prkénku pro zábavu jako já:)

Čekám na prodloužení antény a bnc konektor, abych dal svůj projekt do krabice.

Musíte zvolit správný pojistkový bit. Ujistěte se, že je vybrán externí oscilátor. Pokud máte potíže s externím oscilátorem, zkuste externí krystal. A hodiny low.ckdiv8 jsou nezaškrtnuté. Viz obrázek. Dávejte pozor, když se externí hodiny pojistky bit, musíte zadat externí hodiny pro programování nebo spuštění kódu. Jinými slovy, připojte oscilátor na pin xtal1.

Mimochodem … stejný kód můžete použít k vytvoření čítače frekvence s 1sekundovou bránou. Stačí zadat hodiny, které se mají měřit na kolíku xtal1, a budete mít čítač kmitočtu +-1 Hz.

Budu aktualizovat projekt, jakmile budu mít nové věci.

Pokud vás projekt mezitím zaujme, máte dostatek materiálu, který můžete začít a dokonce ho dokončit přede mnou

Nahrál jsem 2 videa, můžete vidět první a poslední fázi.

Jsem k dispozici pro jakékoli dotazy nebo komentáře. Děkuji.

26. února 2017 … K dispozici je verze 1.1.

-atmega48 již není podporován. Nedostatek prostoru.

-Přidán počet satelitů uzamčen.

-Podpora 2x16 lcd. Pokud máte 4x20, bude také fungovat. Ale 2 poslední řádek nic nezobrazí.

Krok 3: Přihlásí se do Eepromu

Přihlásí se do Eepromu
Přihlásí se do Eepromu

Zde je výpis eeprom po několika hodinách provozu. Vysvětlím, jak to číst. Opět je to snadné:)

Na adrese 00, 01 je uložena hodnota pwm. Jakmile fáze 5 čítá 9 miliard, hodnota pwm se aktualizuje pokaždé, když čítač dosáhne přesně 10 miliard.

Jakmile jsme ve fázi 5. Všechny počty jsou uloženy v eeprom po hodnotě pwm. Začněte na adrese 02, po 03 a tak dále.

Tento příklad pochází z mých 5 voltů ocxo. Můžeme číst hodnotu pwm 0x9A73 = 39539 desítkově na 65536. = 60, 33% nebo 3,0165 voltů.

Adresa 00:01 je tedy 0x9A73

Dále můžete číst 03. Pro 9 000 000 000 003 Pwm se sníží o 3, protože jsme zatím ve fázi 5

00 pro 10 000 000 000 000 pwm pobyt je nedotknutý a přecházíme do provozního režimu (fáze 6)

02 za 10 000 000 000,002 V takovém případě se hodnota pwm sníží z 2

01 pro 10 000 000 0001 pwm hodnota se sníží z 2

01 pro 10 000 000 0001 pwm hodnota se sníží z 2 znovu

00 za 10 000 000 000 000 pwm pobyt je nedotknutý

00 za pobyt 10 000 000 000 000 pwm je nedotknutelný

00 za 10 000 000 000 000 pwm pobyt je nedotknutý

Nyní víte, jak číst eeprom. Každých 1000 sekund se do eeprom zapíše nová hodnota. Když je eeprom plný, restartuje se z adresy 2.

Průměrná hodnota FF 9, 999, 999,999

S touto skládkou můžete sledovat přesnost bez jakéhokoli LCD displeje.

Soubor eeprom můžete vypsat pomocí programátoru ISP.

Doufám, že jsem vám poskytl dostatek informací. Pokud ne, dejte mi vědět. Rady, chyby, cokoli.

Yannick

Doporučuje: