V radioamatérské praxi velmi často potřebujeme přesně měřit kmitočet. Časem zjistíme že ani kvalitní krystalem řízený oscilátor zdaleka nestačí pro požadovanou přesnost. Krystaly stárnou a ani krátkodobá přesnost pro měření na VKV pásmech není dostačující. Proto jsem se rozhodl pro konstrukci kmitočtového normálu který jako zdroj přesného kmitočtu využívá GPS přijímač.
Druhým impulsem pro mě byl neúspěšný nákup rubidiového normálu vloni na burze v Holicích. Normál byl zdánlivě funkční ale byla vadná rubídíová lampa takže normál pouze volně kmital na kmitočtu v okolí 10MHz. Protože jsem již nechtěl být odkázán na řešení jehož funkci nejsem schopen ovlivnít či opravit rozhodl jsem se pro normál s GPS přijímačem.
Na internetu jsou dostupné různé typy konstrukcí. Nakonec jsem se rozhodl pro konstrukci podle VE2ZAZ, která je poměrně populární. VE2ZAZ má normál na svých stránkách velmi dobře zdokumentovaný, nechybí ani ovládací program pro procesor a program GPS_montrol pro PC kterým lze z PC kontrolovat funkce normálu a měnit jeho nastavení. Ve své verzi zařízení jsem v podstatě bez úprav použil původní zapojení podle VE2ZAZ, které jsem doplnil o převodník komunikačních kanálů na RS232 a o výstupní filtry, které dva výstupní kanály 10MHz tvarují na čistý sinusový signál.
Základem celého přístroje je procesor PIC18F2220. V něm jsou naprogramované veškeré důležité funkce přístroje. Detailní popis funkce přístroje není předmětem tohoto popisu. Podstata je taková, že procesor porovnává kmitočet z TCXO 10MHz se signálem 1PPS z GPS přijímače a v 16ti sekundovém intervalu dolaďuje kmitočet TCXO přesně na 10MHz. Celá funkce je podrobně popsána v původní dokumentaci a do češtiny volně přeložena zde.
Signál 10MHz z TXCO je na vstupu přístroje tvarován vstupním obvodem LTC1485. Nevím co autora vedlo k použití právě tohoto obvodu. Kmitočet 10MHz je zřejmě na samé hranici kmitočtového rozsahu tohoto obvodu a výstupní signál se obdélníkům podobá jen velmi vzdáleně. To ostatně platí prakticky o všech obvodech, které do zpracování kmitočtu 10MHz vstupují. Dnes bych tento obvod řešil radši diskrétním provedením. Na vstupu obvodu LTC1485 je odpor, který vytváří zátěž pro výstup TCXO. Hodnota tohoto odporu by měla odpovídat jmenovité výstupní impedanci TCXO. To ovšem může být problém. Například u mnou použitého OCXO jsem se výstupní impedanci nedozvěděl. Po několika pokusech jsem použil odpor 1kΩ. Na výstupu 1 LTC1485 je přibližně obdélníkový signál odpovídající TTL úrovním potřebným pro další zpracování.
10MHz signál je dále rozdělen do tří následujících větví:
Jako výstupní obvod je použit obvod MC3487. To je podle mého názoru hlavní slabina předkládané konstrukce. Tento obvod je určen jako linkový driver. Vhodnost jeho použití ale končí někde okolo 1MHz. Při kmitočtu 10MHz jsou ale na náběžné hraně signálu hluboké zákmity. Navíc při takto vysokém kmitočtu obvod silně hřeje. Kdybych normál navrhoval znovu, použil bych zde jiné obvody. Jednotlivé výstupy mají impedanci 50Ω. K výstupům 12 a 13 jsem navíc doplnil strmé dolní propusti se zlomem okolo 11MHz které tvarují výstupní signál na sinus. Cívky v propustech jsou navinuty na toroidních jádrech. Propust jsem pro kontrolu simuloval v programu RFsim99
Simulace výstupních dolních propustí 10MHz:
Nasimulovaná výstupní charakteristika:
Výstupní signál z obvodu MC3487 může být zapnut nebo vypnut z pinu 12 procesoru IC6. Ovládání tohoto signálu je dáno konfigurací procesoru. V základním nastavení je výstup trvale zapnutý. Zapnutí nebo vypnutí výstupního napětí je signalizováno LED diodou D2.
Signál 1PPS do obvodu vstupuje konektorem JP10. Následuje převodník z 3,3V logiky na TTL realizovaný tranzistory T1 a T2. TTL signál pak vstupuje do PINu 13 procesoru. Na místě tranzistorů T1 a T2 je vhodné použít typy s nízkým šumem a vysokým zesílením abychom si zbytečně nezvyšovali jitter (chvění) náběžné hrany 1s impulsů. Signál 1PPS je realizován impulsy dlouhými přibližně 1µs s odstupem hran přesně 1s. Tento signál je na běžném analogovém osciloskopu jen obtížně zjistitelný. Podařilo se mi impulsy najít až digitálním osciloskopem s dopředným čtením při spouštění.
Dvoubarevná dioda D1 signalizuje status FLL smyčky.
Na Pinech 17 a 18 procesoru jsou komunikační linky TX a RX. Ty jsou obvodem MAX232 převáděny na úrovně RS232 potřebné pro komunikaci s PC. VE2ZAZ pro normál napsal obslužný program pro PC kterým je možné sledovat stav zavěšení FLL a všech důležitých funkcí a stavů implementovaných v procesoru a je jím také možné měnit konfiguraci důležitých nastavení uvnitř procesoru.
Posledním obvodem je výstupní zesilovač odchylky, který dolaďuje OCXO. Na výstupu 24 je PWM signál který je nutné vyfiltrovat a podle potřeby zesílit nebo invertovat napětí tak jak je potřeba pro námi použité OCXO. VE2ZAZ tento obvod navrhl tak aby byl co nejvíce přizpůsobitelný potřebným ladícím napětím různých typů OCXO se kterými bychom se mohli setkat. Já jsem po určitém váhání koupil na e-bay OCXO 10MHz s napájecím i ladícím napětím 5V. Tak jsem mohl OZ v zesilovači odchylky zapojit jako dva sledovače a nemusel jsem se starat o přivádění potřebných napětí při jiné konfiguraci OCXO. Mnou použité OCXO má výstupní kmitočet 10MHz při ladícím napětí přibližně 2,5V. Přeladění je možné v rozsahu asi +- 5Hz.
Pokud máme OCXO pro jiné ladící napětí jumper JP8 nám umožňuje zvolit napájení OZ buď ze stabilizátoru napětí +5V nebo z externího napětí v případě že potřebujeme vyšší výstupní napětí. Jumper JP8 nám umožňuje spojit záporný pól napájení OZ se zemí nebo pokud ho ponecháme rozpojený můžeme přivést záporné napětí. To lze použít pokud nepoužijeme OZ typu Rail to Rail nebo pokud budeme potřebovat výstupní napětí invertovat. Jumper JP6 nám pak dovolí určit polaritu výstupního napětí. Odpory R7 a R8 určují zisk IC4B a tím rozkmit ladícího napětí pro TCXO.
RC články R4 + C6 a R5 + C7 tvoří filtr výstupního napětí s velmi dlouhou časovou konstantou. Pro správnou funkci musí být vstupy OZ IC4 typu J-FET aby byl zajištěn vysoký vstupní odpor. Já jsem místo již nesehnatelného "prý" zastaralého OPA2705 použil OZ LMC662 který se nalézal v mém šuplíku. Tento obvod nepatří mezi precizní OZ ale potřebné parametry splňuje. Odpor R18 chrání OZ proti případnému zkratu na výstupu.
Při konstrukci normálu jsem se rozhodl pro použití standardních součástek s drátovými vývody. Vzhledem k počtu a velikosti výstupních BNC konektoru nemělo smysl se snažit o miniaturizaci použitím SMD součástek. Normál je osazen na jednostranné DPS velikosti 140x68mm.
Na vlastní desce jsou osazeny 4 výstupní BNC konektory (2x 10MHz TTL, 1x 10MHz sinus a 1x 5/1MHz TTL). Tyto konektory jsou umístěny na čelním panelu. Zbylé 4 výstupní konektory jsou vyvedené na zadním panelu přístroje. Na čelním panelu jsou rovněž umístěny obě LED diody signalizující funkce přístroje a přepínač 1/5 MHz a konektory RS232 z Normálu i z GPS přijímače.
Celý přístroj je umístěn v celokovové krabičce. Tím je vyřešeno stínění přístroje kreré je u mě nutné aby nedocházelo k ovlivňování jeho funkce při vysílání z radioamatérské stanice. Čelní i zadní panely jsou vyrobeny z kuprextitu. Polep je na vnitřní straně a je spojen se skříňkou přístroje. K polepu jsou rovněž připájeny distanční sloupky připevňující přepínač 1/5MHz a destičku se zadními konektory k panelům. Vyhnul jsem se potřebě připevňovacích šroubků na čelním a zadním panelu.
Oživení přístroje je docela jednoduché. Pokud při osazování neuděláme chybu mělo by vše pracovat na první zapojení. Přesto doporučuji postupovat při osazování po jednotlivých blocích a ověřovat postupně jejich funkci.
Já jsem nejprve oživil Výstupní dolní propusti 10MHz. Vzhledem k tomu že mám k dispozici VNA bylo oživení
propustí jednoduché. Vypočítané obvody byly v pořádku a po výměně vadných kondenzátorů které jsem použil byla
na VNA charakteristika blízká k vypočítané:
Po ověření vlastností propustí pokračujeme osazením stabilizátoru IC7 a zkontrolujeme napětí 5V na jeho výstupu. Následně osadíme obvody IC2, IC1 a IC3. Zapneme napájení a va vstup IC2 přivedeme z generátoru signál 10MHz o amplitudě okolo 1V. Zkontrolujeme osciloskopem tvar signálu na výstupu 1 IC2. Nelekněte se signál by měl být obdélníkový ale je značně zkreslený. Dále zkontrolujeme signály na výstupu 13 IC1 v poloze přepínače JP1 na 5 i 1 MHz. Měli bychom vidět oba kmitočty.
V dalším kroku osadíme procesor, OZ IC4 a převodník MAX232 IC5. Přivedeme napájecí napětí. Měla by svítit zelená dioda D2. Dioda D4 nás zatím nezajímá. Opět připojíme na vstup IC2 signál 10MHz. Teď bychom měli vidět na jednotlivých výstupech IC3 Výstupní signály. Měly by se blížit TTL obdélníkům. U mě tam ale jsou značné zákmity na vzestupné hraně. Je to dáno nevhodností obvodu MC3487 pro tak vysoký kmitočet. Zkuste tam pustit 100kHz a na výstupu jsou perfektní obdélníky.
V dalším kroku prověřte komunikaci procesoru s PC. Připojte RS232 kabel od PC na konektor JP11 nebo JP12. Na PC spusťte program Montrol_GPS a v monitoru byste měli vidět každých 16s odeslané informace kterými procesor "krmí" PC. Do konektoru 1PPS připojte uvedený signál z GPS přijímače. V probíhající komunikaci byste měli vidět jak procesor začne počítat vzorky 10MHz signálu (generátor máme stále připojený). Po chvíli by měla začít LED FLL Status D4 začít blikat v jednovteřinových impulsech. Tak je signalizována přítomnost 1PPS signálu. Já mám ještě na další LED vyveden i signál o stavu GPS přímo z GPS přijímače. Výstupní řídící napětí na JP2 by mělo být přibližně 2,5V (za předpokladu že používáte OCXO s 5V laděním).
Pokud je vše v pořádku připojte OCXO. V programu GPS_montrol můžete sledovat jak se procesor pomalu pokouší měnit ladící napětí a dostat se do zavěšeného stavu. Celý tento proces po prvním zapnutí probíhá velmi pomalu. U mě trvalo několik hodin než se ladící napětí změnilo o nějakých 100mV a závěs se chytil. Zachycení závěsu můžete sledovat v ovládacím programu a signalizuje ho i FLL LED. Procesor si pamatuje poslední validní stav a použije ho při příštím zapnutí jako výchozí. Při příštím zapnutí normálu proto již trvá náběh do zavěšení nějakých 10 minut. Záleží to na tom jak rychle se OCXO vyhřeje na pracovní teplotu aby se kmitočet dostal do pracovního rozpětí. Pokud vše proběhlo správně podle mého popisu můžete začít GPS normál používat. Nezapomínejte, že pro dosažení plné přesnosti musí být normál několik hodin zapnutý a teprve pak je možné ho začít používat.
Jako základ GPS přijímače jsem použil GPS modul AarLogic GPS 3M. Jde o miniaturní hybridní modul v SMD provedení velikosti 15x13mm. Podařilo se mi ho získat za velmi příznivou cenu a proto jsem ho použil. Modul obsahuje kompletní GPS přijímač, ke kterému je již potřeba přidat pouze stabilizátor na napájecí napětí 3,3V a převodník na RS323 pro komunikaci s PC.
Modul jsem použil v podstatě v katalogovém zapojení. Napájím ho napětím 3,3V které mi poskytuje stabilizátor 78M33 v SMD provedení. Tímto napětím je napájen modul i převodník na RS323. Protože jsem dopředu nevěděl jaká anténa bude k přijímači použita, umožnil jsem použití pasivní i aktivní antény. Anténa se připojuje do vstupního SMA konektoru a je přivedena na pin 21 GPS modulu. Pokud chceme použít pasivní anténu, není nic dalšího potřeba. Pokud ale budeme chtít použít aktivní anténu přivedeme na živý vodič napájecí napětí propojením jumperů JP5. Máme možnost tímto jumperem zvolit napájecí napětí 3,3V ze stabilizátoru nebo můžeme použít napětí 2,85V z vnitřního stabilizátoru GPS modulu které je právě pro napájení aktivních antén určeno. Aktivní antény obvykle mívají široký rozsah napájecích napětí od 2,7 do 5V. Pro takovou anténu bych doporučil jumper přepnout na napětí 3,3V ze stabilizátoru. Z datasheetu GPS modulu totiž není zřejmá proudová zatížitelnost tohoto výstupu.
Napájecí napětí 3,3V je přivedeno na pin 13. Na pinu 12 má být původně připojena zálohovací baterie pro GPS modul. Při použití pro GPS normál nás použití zálohování příliš nezajímá a proto jsem na tento vývod připojil jen elektrolytický kondenzátor, který pokryje případné krátkodobé výpadky napájení. Na vývodu 3 je vyveden signál 1PPS který využíváme pro synchronizaci GPS normálu. Tento signál představuje přibližně 1µs dlouhý impuls každou 1s. Tak krátký impuls s tak dlouhou mezerou je klasickým analogovým osciloskopem prakticky nezjistitelný. Mě se ho podařilo najít až použitím digitálního osciloskopu s vhodným spouštěním synchronizace. Proto se příliš nelekejte pokud tento signál na běžném osciloskopu vůbec neuvidíte. Signál je v 3,3V logice, takže v GPS normálu musíme provést konverzi na TTL úrovně.
Pro rozpoznání stavu v jakém se GPS modul nachází máme k dispozici signál GPIO0 na vývodu 8. Pokud je modul v nezasynchronizovaném stavu nalezneme zde obdélníkový signál se střídou 1:1 a periodou přibližně 100ms. Pokud je modul zasynchronizovaný na GPS družice je na tomto vývodu 50ms impuls každou 1s. Takže podle tohoto signálu snadno poznáme v jakém stavu modul je. Na tento signál je vhodné připojit signalizační LED abychom měli při pokusech stále rychlou informaci o stavu modulu. Podle DS je proudová zatížitelnost tohoto výstupu 2mA. To by sice pro nízkopřikonovou LED stačilo ale já jsem radši použil oddělení spínacím tranzistorem aby při náhodném zkratu nedošlo k zničení GPS modulu.
A na závěr na vývodech 4 a 5 máme signály RX a TX pro komunikaci s externími zařízeními. Pokud bychom chtěli GPS modul používat pouze pro normál tyto výstupy bychom vůbec nepotřebovali. Mě se ale zdálo výhodné vyvést z GPS přijímače signál RS232 pro komunikaci s externím PC. Zařízení se tak stává univerzálnějším a můžeme jej použít i jako běžnou GPS připojenou k PC. Protože jsou signály RX a TX v logických úrovních 3,3V musel jsem je na RS232 převést obvodem MAX3232. Při běžícím GPS přijímači tak můžeme pozorovat např. v okně hyperterminálu jak modul periodicky odesílá údaje o aktuální poloze a svém stavu. Tato data můžeme buď ručně analyzovat nebo můžeme použít některý z programu pro práci s GPS přijímačem pracujícím v kódu NMEA.
Oživení je velmi snadné. Po zapnutí přijímače by měla periodicky blikat LED Dioda D2 se střídou 1:1. Po připojení antény by po nějaké době měla tato dioda začít krátce blikat v 1s intervalu. Pokud se tak ani po několika minutách po připojení antény nestane je někde chyba. Pravděpodobně nemáme dost silný signál aby se GPS modul mohl zasynchronizovat na družice. Já při prvních pokusech použil kousek drátu zasunutý do anténního konektoru přijímače. Přijímač ale neměl dostatečný signál a nezasynchronizoval se. Pak jsem zkusil připojit vnější anénu pro 144MHz. Modul se během chvilky zasynchronizoval a začal fungovat. Samozřejmě optimální patrně bude použít nějakou aktivní GPS anténu. Tyto antény prodává kdekdo. U nás ale bohužel za poměrně vysoké ceny. Proto jsem si nakonec tuto anénu objednal z obchodu DealExtreme kde mě tato anténa vyšla v přepočtu na 127kč. Při takové ceně patrně nemá smysl snažit se nějakou anténu vyrábět. Po měsíci anténa přišla a funguje bez problému. Samozřejmně musí mít volný výhled na nebe. Uvnitř místnosti se nechytá. Proto jsem ji umístil na balkón. Výhled směrem na sever je stíněn domem a na jih částečně stíněn velkým stromem. Přesto vše bez problémů funguje.
Dále můžeme GPS připojit k PC pomocí RS232 rozhraní a otestovat funkčnost například hyperterminálem. Komunikační rozhraní je třeba nastavit na 9600 bps, 8 data bitů, bez parity, 1 stop bit. Pokud takto nastavíme hyperterminál měli bychom uvidět běžící data která přijímač posílá. Rovněž můžeme spustit nějaký SW pro GPS a můžeme se podívat se kde právě jsme. Já jsem použil free program Visual GPS.
Mnou použitý obvod je levný a miniaturní. Přesto normál který je jím osazený dosahuje dobrých parametrů. Kdo by přesto požadoval vyšší přesnost musí použít lepší modul s přesným signálem 1PPM. Problém je ve chvění (Jitteru) hrany signálu 1PPM kterou spouštíme čítání period z OCXO 10MHz. V ovládacím programu normálu je vidět jak procesor načítá počty vzorků s rozdílem až +- 3bity od správného počtu. V dlouhodobém průměru se to samozřejmě vyrovná, a při průměrování spuštěném řadu hodin postupně dosáhne přesnosti v řádu cca 10-12. Nižší přesnost může být dále způsobena počátečním nastavením parametrů FLL. Při nastavení na dlouhé průměrování dosahujeme lepší přesnosti. Mě se nejlépe osvědšilo nastavení parametru (S) na 32. Prodloužení na 64 už nepřinášelo pozorovatelný efekt.
Mechanická konstrukce je velmi jednoduchá. Celý přijímač je umístěn na jedné malé DPS která je za anténní SMA konektor přišroubována k zadnímu panelu kmitočtového normálu. DPS je s vyjímkou konektorů osazena SMD součástkami. Vyrobena je z oboustranného kuprextitu. Na jedné straně je vyleptán motiv spojů, na druhé je ponechaná fólie v celé ploše a je použita jako zemní plocha.
Původně jsem chtěl použít OCXO z vadného rubídiového normálu. To sice fungovalo ale bylo dost veliké a vyžadovalo napájení 24V/1,5A a ladící napětí do 24V. To dále přineslo potřebu většího napájecího zdroje a nutnosti vysokého napájecího napětí pro výstupní OZ v normálu. Celá konstrukce pak vycházela neúměrně veliká.
Proto jsem nakonec na E-bay koupil precizní OCXO 10MHz PTOC32227. Jeho cena v přepočtu cca 500kč je mi zdála docela snesitelná. U nás stojí OCXO podobných vlastností přibližně desetinásobek. OCXO je napájené napětím 5V a ladící napětí je rovněž 5 V. V DS píší že spotřeba je při topení až 600mA. Já ale nikdy nenaměřil víc jak 350mA. Po vytopení termostatu se sníží asi na 120 až 130mA. OCXO je vyráběno v pouzdru podobném jako jsou běžné oscilátorové „rakvičky“ ale je asi 2x větší. Díky použití tohoto oscilátoru vyšel celý přístroj podstatně menší než při použití původně uvažovaného OCXO z rubídiového normálu.
Zapojení oscilátoru je velmi jednoduché. Napájení 5V je přímo u pouzdra blokováno sadou kondenzátorů a pro jistotu jsem použil ještě odrušovací tlumivku zabraňující rušení z venku. Rovněž ladící napětí je blokováno sadou kondenzátoru a odděleno odporem 10k. Prodloužení časové konstanty ladění nám nevadí protože ladění z normálu má časové konstanty velmi dlouhé. Normál jsem osadil na malou DPS. Z jedné strany je osazen normál, z druhé ostatní součástky v SMD provedení. Jen tlumivka je ve vývodovém provedení a je osazena ze strany OCXO.
Pokud tak jako já použijete nové OCXO je nutné ho nejprve nechat nějaké 2 až 3 měsíce běžet než vystárne a jeho kmitočet přestane ujíždět. U takto přesného normálu se i nepatrné kmitočtotové změny okamžitě odrazí na zhoršení dosazené přesnosti přístroje. V mém případě trvalo necelé 2 měsíce, než normál začal vykazovat očekávanou přesnost.
Pro napájení přístroje potřebujeme nestabilizované napětí přibližně 12V/400mA a stabilizované 5V/0,6A pro OCXO. Použitý transformátor pochází z adaptéru 12V/1A. Je proto velmi měkký. Naprázdno je výstupní napětí asi 16V, při odběru 1A se sníží na 12V. Proto je nutné dimenzovat použité kondenzátory na 25V. Taky chladič stabilizátoru 7805 je poněkud předimenzován. Původně jsem počítal s odběrem 600mA ale nakonec se ukázalo že OCXO v maximu odebírá přibližně polovinu.
jinak o zdroji není třeba dlouze hovořit, není na něm nic neobvuklého.
Z počátku jsem byl docela zklamaný. Kmitočet normálu seděl s přesností nějakých 2x10-9. To bylo o nějaké 2 řády horší než jsem očekával. Po zkušenostech s TCXO 24MHz pro čitač kterému trvalo asi 14 dní než se usadil a přestal ujíždět jsem zkusil nechat normál zapnutý a čekal jsem zda se usadí OCXO a přesnost normálu se zlepší. Asi měsíc se nic nic nedělo ale pak se kmitočet začal postupně zpřesňovat a asi po 2 měsících se drží trvale s přenosti v řádu 10-12. Občas tam problikne i hodnota v řádu 10-13 někdy to spadne do řádu 10-11 ale v průměru se přesnost pohybuje v řádu 10-12. Je vidět jak se přesnost mění při prudkých změnách teploty. Použitý OCXO není žádná špička a jeho termostat tyto změny nestíhá pokrýt. Pokud bychom chtěli špičkové zařízení musíme použít podstatně kvalitnější OCXO. Stejně tak mají na přesnost vliv změny počasí. Ty patrně způsobují změny podmínek šíření signálů GPS. Vliv na sílu signálu má patrně i namočená omítka domu a mokrý strom který odstíní družice z jihu. I přes uvedené vlivy ale normál drží přesnost v uvedém řádu 10-12. Jen stačilo počkat si 2 měsíce než vystárlo a kmitočtově se usadilo OCXO.