Pro Hodinárium v Děčíně stavíme jako exponát polofunkční model atomových hodin. Základem exponátu bude starší rubidiový oscilátor PRS10, který poskytuje výstupní frekvenci 10MHz s teoretickou přesností 10-11. Této přesnosti pro stáří oscilátoru nebude dosaženo. I další použité levné technologie budou spíše jen simulovat skutečné funkce atomových hodin.
K oscilátoru bude připojen vlastní monitor chodu na bázi vývojové platformy WEMOS D1. Modul bude komunikovat s PRS10 prostřednictvím rozhraní RS-232 a stavové informace následně pošle na web, kde mohou být zobrazeny naším programem PRS2.php. Ze zobrazených chybových stavů je zřejmé, že použitá PRS10 již není schopen nastartovat exitační proces a nebude tedy rubidium disciplined. Frekvence teplotně stabilizovaného oscilátoru bude dostatečná pro výstavní účely.
Přestože v oscilátoru je použit radioaktivní izotop Rubidia, je jeho použití bezpečné. Radioaktivní záření není principem atomových hodin. Základem je přechodová frekvence 6,834,682,612,8 GHz přeskoku elektronu na nižší oběžnou hladinu. Výrobce uvádí, že radioaktivita jednotky PRS10 je nižší než radioaktivita banánu.
Přesný
oscilátor Rubidiem disciplinovaný je základem
každých rubidiových atomových hodin. Oscilátor
je ovšem jen zdroj přesné frekvence. Čas musí být
získán z jiného zdroje, nejlépe od jiných atomových hodin na
palubě družic GPS.
Abychom přesto demonstrovali zobrazení času, budou součástí exponátu
poměrně přesné hodiny postavené na platformě Arduino UNO, kde čas
bude získáván z GPS s využitím signálu PPS.
K PRS10 je připojen poměrně levný digitální mini osciloskop DSO-510, který orientačně zobrazuje výstup sinusové frekvence z rubidiového oscilátoru 10 MHz Výhodou tohoto osciloskopu je i to, že digitálně zobrazuje okamžitou frekvenci. Nelze asi předpokládat vysokou přesnost tohoto osciloskopu, tak nepřekvapuje, že měřená frekvence na displeji kolísá mezi 9.98 MHz a 10.00 MHz.
Jako další je připojena jednotka Hodiny1000, která by měla fungovat s přesností minimálně milisekund. Zobrazuje UTC čas ve formátu HH:MM:SS.ds (sekundy na dvě desetinná místa). Čas je získán z GPS NEO-6M. Okamžik začátku nové sekundy je odvozen od signálu PPS, který odesílá modul GPS, pokud je fixován, tedy je schopen určit svou polohu ze čtyř družic.
Jaká je přesnost těchto hodin je však při používání levných modulů poněkud diskutabilní. Základem je příjem signálu PPS GPS modulem NEO-6M. Ten poskytuje PPS signál s přesností kolem 30–100 µs vůči UTC. Další zpracování v Arduino UNO přesnost ještě sníží. Mohli bychom snad předpokládat, že přesnost času je na úrovni milisekund.
Při nekvalitním GPS signálu je modulem nejprve poskytován odhad času získaný z vnitřního RTC modulu. Tento odhad času se může i několik sekund lišit. V našem případě se předcházel o 3 sekundy. Teprve po dosažení příjmu z více družic modul přejde na synchronizovaný čas. Kdy se tak stane nelze předpovědět ani tuto zprávu nelze z modulu přímo získat. Předpokládalo by se, že to nastane po zafixování polohy minimálně ze tří družic. To však neplatí. Ani podle kvalitu příjmu podle velikosti HDOP (Horizontal Dilution of Precision in GPS) nedostaneme okamžik, kdy čas je zafixován. Odhadovaný čas je obvykle (v našich podmínkách) vyšší než čas synchronizovaný. O zjištění okamžiku synchronizace času se můžeme pokusit speciálním algoritmem, který bude zjišťovat okamžik snížení času. Dále budeme předpokládat, že synchronizace vydrží i po krátkodobém zhoršení signálu. V konkrétním zkoumaném přílpadě došlo k synchronizaci času při 7 družicích a dosažení HDOP = 1.98.
Pro účely lepšího zobrazení před synchronizací, budu tento čas upravovat nějakou konstantou. Empiricky jsem zvolil konstantu -3 sec. Po synchronizaci času program tuto úpravu zruší. Je třeba se ještě vypořádat se situací, kdy dojde k restartu programu aniž bylo přerušeno napájení modulu GPS. V tomto případě program zařadí empirické snížení zobrazeného času, ačkoliv je čas již synchronizován. Zde je možné pouze použít nouzové řešení, kdy po uplynutí stanoveného času (např. 30 minut) a splnění dalších podmínek, jako je dostatečný počet družic a validní poloha, prohlásit čas za synchronizovaný.
Komunikátor je postaven na vývojové platformě WEMOS D1 R1 s připojeným modulem RS232-TTL v MALE provedení, aby připojovací kabel byl kompatibilní s počítačovým portem COM. Reálný výstup monitory v následujícím okně. Druhým připojeným modulem je GPS NEO-6M, který v tomto případě pouze zajišťuje příjem PPS pro PRS10. Tento modul pouze využívá napájení z desky WEMOS D1 R1.
Rubidiový
oscilátor PRS10 na rozhraní RS-232 může přijímat řadu povelů
a předávat požadované hodnoty.
Většina povelů slouží k nastavení parametrů a k výpisu aktuálních
stavových a měřených hodnot. Všechny povely jsou popsány v
manuálu s tím, že některé jsou povolené jen pro autorizovanou
osobu. Monitor
všechny přečtené hodnoty vystavuje na webu s lehkým komentářem. Některé
hodnoty označuje modře jako podlimitní a červeně
jako nadlimitní.