Čítač s GPS normálem – 2. HW zpracování

Při konstrukci čítače FC-1300 jsme zcela přešli od návrhového programu Eagle Cadsoft k open-source návrhovému systému KiCad EDA. Nutno podotknout, že KiCad je nástrojem nejen srovnatelným, ale dle našeho názoru výrazně lepším než zmíněný Eagle. Jeho “nulová” pořizovací cena je už jen bonbonkem na dortu. Nulová píšu v uvozovkách proto, neboť je třeba se s programem naučit a investovat tak svůj čas. Výsledek ale vážně stojí za to.
V KiCadu vše funguje spolehlivě, stojí za ním velká komunita vývojářů. Má řadu pokročilých funkcí. Velmi užitečný je například adaptivní routing, kdy při tažení cesty na desce plošných spojů mohou ostatní cesty nebo prokovy “uhýbat” nově vedené cestě.

Stojí rovněž za zmínku, že KiCad je hojně používán a vlastně vzešel z prostředí evropské organizace pro jaderný výzkum – CERN

3D simulace výsledné desky:

Navrženou prototypovou desku jsem nechal vyrobit v PragoBoard (kusová cena v pool servisu 1200,-kč za 1ks), desky další necháme vyrobit v čínském Allpcb.

Popis napájecího zdroje:

Modul desky čítače je navržen pro vstupní napětí 12V, tímto napětím je přímo napájen OCXO, externí periferie na vstupním modulu, silový DC-DC měnič U2 s LM2596.
Zbytek desky pak pracuje na napěťových úrovních:
+5VA – pro analogové vstupní OZ a děličku, z 12V pomocí lineárního stabilizátoru U9 LM7805
-5VA – pro analogové vstupní OZ, z +5VD větve pomocí DC-DC měniče MC34063
+5VD – pro silové napájení LED displeje U2 – LM2596
+3,3V – pro zbytek logiky a CPU, z +5VD pomocí AMS1117-3,3

Schéma:

Vstupní obvody:

Dlouze předlouze jsem hledal vhodný čítač na vstup. Nejrychlejší obvody řady 74VHC393 jdou “pouze” do 170MHz, pak už by bylo třeba použít děličku a zbytečně ztrácet rozlišení. Po několikatýdenním hledání vhodného obvodu jsem narazil na obvod MC100EP016A. To je synchonní čítač s ECL logikou pracující dle datasheet až do kouzelných 1,4GHz. V našem zapojení pracuje skutečně až do 1380MHz.
Potřebuje však diferenciální buzení, to by asi šlo nahradit jednoduchým buzením s umělou zemí na druhém dif. vstupu, ale riziko, že to vnese další možnou chybu, popřípadě nebude fungovat vůbec, jsme nechtěli podstupovat. Takže jsem musel najít vhodný budič na vstup, který potřebný diferenciální signál “Clock” vyrobí. Využil jsem velmi rychlý komparátor MAX 9601. Tento obvod dovede zpracovávat/generovat periodický signál s maximální frekvencí odpovídající 4Gbps, takže bychom měli využít celý rozsah vstupního čítače. Měřený signál X přivádíme na neinvertující vstup (pin 11) diff. OZ MAX9601. Na invertující vstup přivedeme ss napětí “Trigger” potřebné velikosti, toto napětí generujeme 12bit DA převodníkem v CPU.
Hystereze operačního zesilovače odpovídá rezistoru R19 (12k), ta je nastavitelná v intervalu 2-65mV (12k odpovídá hysterezi 20mV).
OZ má rozdělené napájení, symetrické Vcc/Vee pro vlastní OZ a Vcco pro napájení výstupních budičů. Budiče výstupů Q a /Q jsou v zapojení s otevřeným emitorem, takže potřebují pull-down resistory (R14+R16 a R29+R30).
V datasheet k MC100EP016A jsou nakreslené pull-up, což je chyba.
Co nejblíže pouzdra OZ jsou filtrační/blokovací kondenzátory. 1μF jako BULK a pak 100nF+1nF jako blokovací pro vykrývání krátkodobých proudových špiček.

Druhý operační zesilovač U5A zajišťuje dostatečné přesné/strmé spínání signálu GATE, po který čítač čítá. Výstupem Q (pin 1) spíná LE vstup operačníko zesilovače U5B a /CE vstup asynch. 8 bit čítače MC100EP016A.

Výstupem z čítače U7 je 8mi bitový signál, kde bit D0 má nejnižší váhu (LSB) a vstupní signál CLK dělí dvěma. D7 má pak největší váhu (MSB) a dělí CLK 256-ti. To znamená, že při vstupním kmitočtu 1380MHz je na D7 kmitočet f/256, tedy cca 5,4MHz, což už spolehlivě zvládne klasická logika. Tou je 8-mi bitový čítač 74HC393D, jeho výstup již jde přímo do CPU, kde navazují čítače další. Celkem takto získáme binární čítač až do  XXX bitů.
Jednotlivé výstupy z čítačů U7 a IC8 vedou do multiplexerů 74HC151 IC15+IC16. Takto můžeme přečíst bitový stav po skončení měření (GATE).

Časová základna

Srdcem časové základny je dvojitě vyhřívaný krystalový oscilátor (OCXO) Trimble 34310. Jeho výstup kmitá na 10MHz a pomocí ladícího pinu ho lze rozlaďovat o cca ± 2Hz, napěťová závislost je cca 1,5Hz/V. Těchto 10MHz natvarujeme v IC2. Poté ho vydělíme 10-ti pomocí IC4A(74HC390D) a takto získaný 1MHz signál spolu s 1MHz výstupem generovaným pomocí GPS přivedeme na vstupy XOR hradla. Takto můžeme srovnávat jejich fázi a velmi přesně “doladit” náš místní krystalový oscilátor. Tímto dokážeme využít krátkodobou přesnost GPS (Cesiové hodiny) a vynikající dlouhodobou přesnost OCXO Trimble oscilátoru. Celková přesnost 10MHz signálu časové základny může dosahovat stability až 2×10-12 Hz (0,002 PPB). 1MHz časové základny se v kaskádách dále dělí opět vždy 10ti. Takto získáme signály o kmitočtu 100Hz, 10Hz, 1Hz, 100mHz, 10mHz, 1mHz, ze kterých uděláme pulzy se střídou 1/10 pomocí NAND hradel (IC14 + IC19). Ty jsou vyvedeny do multiplexeru časové základny.  Výstupní pulz je tedy v 90% času v log 1 (doba měření – GATE) a 10% času v log 0, kdy se přečtou a vynulují všechny čítače pomocí CPU. V další měřící periodě se pak vše opakuje.

Následující video ukazuje zavěšení PLL. Konkrétně ve studeném stavu OCXO,  takže celá stabilizace trvá cca 30s, protože se nahřívá a tím pádem rozlaďuje krystal. Na displeji voltmetru jde vidět zesílené ladící napětí (na C6) z výstupu integračního článku R18+C24. To se mění v rozsahu 2-7,5V, kde osciluje v závislosti na střídě výstupu IC3B.

V nahřátém stavu trva zavěšení cca 2s, ladící napětí pak kolísá v intervalu cca 5mV. To odpovídá rozladění OCXO o cca 0,0075Hz ∼ 8mHz.

GPS Přijímač:

GPS přijímač slouží především ke generování přesného taktovacího signálu 1MHz,  který bude synchronizovat OCXO časové základny. Dále z něj budeme prostřednictvím seriové linky vyčítat další potřebné informace jako je přesný čas, zeměpisnou polohu pro výpočet lokátoru, počet přijímaných satelitů a v případě spuštění přerušení i velmi přesnou časovou značku události.

Modul displeje, modul vstupního obvodu (transformace impedancí), programování a celkové HW zpracování budeme prezentovat v následujících článcích.

14 Replies to “Čítač s GPS normálem – 2. HW zpracování”

  1. Velmi zajímavé řešení. Škoda, že to nepokračuje. Zajímé mě řešení kmitočtového normálu. Nemůžete mi poradit? Našel jsem sice odkazy, ale neni mi jasný důvod U4 – OPA228 a IC2a. Je to z důvodu, že OCXO má malé výstupní napští? Když mám OCXO s výstupem 5V tak to tam asi nemusím mít. Je to správná úvaha? Děkuji za odpověď. K.

    • Dobrý den,
      v prvé řadě moc děkuji za komentář. Stavba samozřejmě dál pokračuje, Pouze tempo je teď z nedostatku čadu pomalejší. Mám v plánu vydat další díl článku do konce roku. V něm budu popisovat oživování, měření stability a vývoj vstupního mudulu.
      Co se týče obvodu operačního zesilovače U4, je to skutečně pouze zesilovač, pokud dává OCXO dostatečné napětí, nemusí být osazen. Záleží na použitém typu a stáří každého OCXO.

  2. Děkuji za vysvětlení. Ten čítač je přímo nádherný. Budu s napětím čekat na další pokračování. Jste zřejmě “mistr” v oboru. Promiňte, že ještě otravuji. Mám prosbu. Potřeboval bych vysvětlit (k mému cíli – kmitočtový normál 10 MHz), proč je nutný ten PLL závěs, když na Vašem videu je vidět krásných 10 MHz přímo z příjmače GPS. Nejsem ve Vašem oboru moc znalý, ale pro kontrolu nastavení atd., kdy potřebuji porovnat kmitočty mě stačí 10 minut přesného signálu. Pro čítač je to samozřejmě něco jiného. Ale proč všichni autoři na webu, kteří publikují “kmitočtový normál zavěšený na GPS” používají tento závěs. Dále se chci zeptat, jaký příjmač GPS používate ve svém čítači. Který by jste doporučil? Je dostačující poměrně levný NEO-7M? Je také nabízen NEO-M8N. Můžete mě něco doporučit? Děkuji.

    • Zdravím,
      určitě bych se neoznačil za “mistra v oboru”:) Naopak, právě při vývoji a stavbě jsme teprve poznali, jak málo toho víme.
      K Vaší otázce, proč je použit PLL závěs. Signál z GPS má skutečně velmi přesný kmitočet, problém je ale v tom, že je zatížen fázovým šumem. To znamená, že se fáze hodinového signálu “náhodně” posouvá, ne moc ale ano. Osciluje kolem “nulového bodu – uzlu” v intervalu asi 22ns, při délce periody 1MHz signálu 1us je to vlastně 2,2% chyba. Fáze tedy “šumí” kolem “nuly”. Naproti tomu krystalový oscilátor který je v OCXO má velmi malý fázový šum, jeho kmitočet však nebude tak přesný jako signál z GPS. V tomto zapojení tedy kombinujeme vynikající dlouhodobopu stabilitu GPS signálu s vynikající krátkodobou stabilitou OCXO oscilátoru.
      Velikost fázového šumu lze dále redukovat použitím vhodného GPS přijímače. Jak jste zmiňoval NEO-7M je relativně levný, má vyšší fázovou chybu. Existují tzv. “časovací” modely GPS přijímačů s označením “T” které mají fázový šum menší.
      V následujcím článku tuto problematiku více popíšu.

  3. Děkuji moc za vysvětlení. Ten Váš kmitočtový normál pro čítač bude používat GPS příjmač “T” generace? Rád (ač netrpělivě) počkám na Váš článek, ale přesto bych Vás prosil o informaci (v předstihu na článek), zda se dá takový příjmač koupit na e-Bay, jaké má označení a zda má také softwarem ovlivnitelný výstup “Timepulse” – 1 MHz . A hlavně, zda bude možné získat program pro toto “překódování” příjmače. Je jeho cena přijatelná? Prosím z těch důvodů, že bych si ten příjmač objednal už “v předstihu” (znáte dodací lhůty na e-Bay).
    Ještě bych Vás prosil o názor na řešení pomocí ARDUINA – viz: https://www.mongi.cz/index.php/konstrukce/mereni/25-kmitoctovy-normal-10mhz-synchronizovany-gps
    Promiňte, že stále otravuji. Už dám pokoj. Díky. K

    • Zdravím,
      GPS přijímač zatím používáme v “klasické” verzi jak je zmíněna v předchozích článcích. Možnost “survey in” režimu má i NEO-7M, avšak při testech se mi nepodařilo snížit fázovou chybu. Po tom co jsem problematiku studoval více se zdá, že možnost kvantifikovat a redukovat fázovou chybu lze pouze v případě, když budeme na TIMEPULSE výstupu generovat pouze 1Hz/1PPS signál. To je pro nás bohužel nepoužitelné.
      Vámi odkazovaný článek samozřejmě znám a také jsem ho studoval, autor používá v integračním článku rezistor 100k a kondenzátor 100nF – zde je dle mého názoru moc malá časová konstanta. Lepší řešení integračního článku je myslím zde:
      http://radio.ok1cjb.cz/index.php/mereni/185-01430
      Pokud se spokojíte se stabilitou cca 6×10-10 Hz, tedy chyba měření při 1GHz je pak ±0,3Hz další úpravy nejsou třeba.

  4. Promiňte mě moje otravování, ale vím, že jste opravdu odborník a znáte “proč to tak musí být”, tak se na Vás obracím s prosbou o poučení ve věci, která mě “vrtá hlavou”. Autor OK1DXD píše ve svém článku o vhodnosti kmitočtu pro závěs PLL. Doporučuje 1 MHz z důvodů, které uvádí. Ale proč se nedá použít rovnou těch 10MHz? Ale co je to celočíselný podíl v tomto případě, jak uvádí autor? To musí být tak “krásný – čistý” obdélník z GPS (1 MHz), jak uvádí na svém obrázku? Při svých pokusech se zavěšením jsem vůbec nepozoroval vliv čistoty na kvalitě závěsu. Co je v tom za “kulišárnu”? Že by měnící se překmity na hranách “nečistého” obdélníku způsobovalo zvětšení “jitter” neboli nejistoty zavěšení – zvětšení šumu? Nebo snad vadí parametry obvodu XX86? (Dal by se použít jiný obvod pro PLL – např. 74HC7046, který “chodí” do desítek MHz.). Prováděl jsem pokusy se zavěšením, kdy jsem signál z GPS nahradil obdélníkem z generátoru (RIGOL DG4162 – nastavitelný až na 15 míst) a OCXO CORNING OCO100-67 (5V – dostav.napětí) a zjistil jsem, že se to zavěsí (do 56 sek.) i když tam dám pulzy, sinus, velmi zkreslený obdélník – no téměř na vše. Prosím o Vaše vysvětlení. Pátrám vždy po zdůvodnění. Moc děkuji. K.

    • Opět Vás poprosím o trpělivost, tyhle věci mám formulované v dalším článku, předpokládám že do týdne jej vydám. Rád bych pokračoval v diskuzi i pod novým článkem, jistě narazíme na další možné otázky a nejasnosti.
      V krátkosti ale odpovím, “vhodný” kmitočet je volen menšínež je možných 10MHz kvůli strmosti hran. Při 10MHz signálu již hrany nejsou tak strmé a zvětšuje se dále fázová chyba. Proto OK1DXD volil kmitočet nižší. Já dosahuji ve své verzi GPSDO lepších výsledků dokonce s PLL kmitočtem 100kHz. Je to stabilnější a napětí tolik neosciluje kolem střední hodnoty. Celočíselný podíl je čistě kvůli konstrukční jednoduchosti…dekadický dělič je velmi jednoduchý.
      Jak jsem již ale zmínil, tyhle “nedokonalosti” co řešíme se projevují až na řádech 10-10 Hz tj. 0,0001PPM / 0,1PPB. Nebo chcete-li při kmitočtu f=1GHz chyba 0,1Hz.

  5. Děkuji za odpověď a budu čekat. Nemám v okolí nikoho s kým bych mohl diskutovat o těchto věcech. A to znám “hejno” inženýrů elektro, programátorů a dalších, kdo by to měl znát, ale do hloubky to nedovedou vysvětlit.. Děkuji za pochopení a prosím, nezapomeňte v tom připravovaném článku se také zmínit, jak se můžeme přesvědčit o svých výsledcích. Chci-li ověřit přesnost krejčovského metru, tak musím použít pro porovnání aspoň železný metr, který je aspoň o jeden řád přesnější. Tak se těším. Jen abych to na webu našel (ten článek). Dík. K.

    • Zdravím,
      čím víc jdete do hloubky, tím více nových problémů se objevuje…jak říká klasik “Ďábel se skrývá v detailech”.
      Jsem velmi rád za zpětnou vazbu v komentářích. Článek bude na webu normálně viditelný, zatím je pod heslem, předpokládám do víkendu, pak vše zveřejním.

  6. Zdraví Vás učící se žák a zase mě něco vrtá hlavou a chtěl bych znát Váš názor na pokus, který chci provést. Týká se to těch “podílů kmitočtů”. Chci použít 12 MHz OCXO, tento kmitočet dělit dvěma – dostanu 6 MHz a tento kmitočet bych v PLL porovnával s kmitočtem z příjmače GPS přeprogramovaného na kmitočet rovněž 6 MHz. (Nedá se některý příjmač GPS přeprogramovat rovnou na 12 MHz a tento kmitočet zformovat v 74F00 na řádné obdélníky pro PLL?) Pak splním podmínku celistvého podílu 48 : 6 = 8. Důvodem je nedůvěra k děličkám, které také kmitají kolem hranice “překlápění” vnitřních obvodů. Sám uvádíte, že nejlepší by byl závěs na 1 Hz, což je nerealizovatelné a tak bych tu “úlohu dělení” přenechal tomu příjmači GPS a OCXO bych dělil dvěma, což je snadnější úloha. Je to blbost? Až budete mít čas, tak prosím o názor.
    Přeji krásné vánoční svátky s mnoha krásnými nápady. K.

    • Zdravím,
      GPS modul NEO-7M dokáže generovat maximálně 10MHz, ale hrany již nejsou dostatečně kolmé. Proto používáme kmitočet menší, tedy 100kHz. Lze použít i kmitočet 1MHz. Váš signál z OCXO jistě půjde dělit dvěma nebo deseti…Nekomplikoval bych to provozem PLL na tak vysokém kmitočtu.
      Jen nechápu Vaší otázku s celočíselým podílem ” Pak splním podmínku celistvého podílu 48 : 6 = 8.”
      Jde hlavně o to abychom měli dva kmitočtově stejné signály a ty mezi sebou srovnávali (v mém případě XOR hradlem).

  7. Podmínku “celistvého podílu” vysvětluje autor článku “GPS jako zdroj přesného kmitočtu –
    OK1DXD” v popisu nastavení software. Píše:
    “Zde je možné nastavit frekvenci pro stav, kdy modul nemá identifikovaný dostatečný GPS signál: zde nastavíme 1Hz se střídou 10% – tedy krátké pulsy. Pro stav, kdy je modul již zavěšený na GPS: zde nastavme potřených 1MHz se střídou 50%. Tento kmitočet je dostatečně vysoký pro rychlé a stabilní zavěšení PPL smyčky a přitom ještě dostatečně kvalitní. Po uložení nastavení a zachycení GPS signálu byste měli osciloskopem vidět pěkné obdélníky s přesnou frekvencí 1MHz, případně pro kontrolu použijeme čítač. Interní oscilátor modulu kmitá na frekvenci 48MHz a kmitočty odvozené na jiných než celočíselných podílech nedávají kvalitní signál. Pozor na tuto skutečnost, pokud budete s modulu chtít používat jiné kmitočty.”
    Nevím, jak to ten příjmač NEO-7M dělá, že najednou na výstupu “Timepulze” má místo 1 Hz naprogramovaný 1 MHz (nebo jiný kmitočet – dle volby). Asi také nějaký příjmaný kmitočet dělí. Jak je to zde s fázovými posuvy – to vědí jen bozi. Myslím si, že na tom 3 pinu “Timepulze” by měl být kompromis mezi co nejvyšším kmitočtem a ještě dobrou nástupní (sestupní) hranou. Proto ten pokus s 6 MHz. K.

    • Timepulse vývod může poskytovat dva druhy signálů, podle toho jestli je GPS přijímač “zavěšen”, tedy má signál z dostatečného počtu GPS satelitů, nebo ne.
      Takže podle druhu signálu okamžitě poznáme jak na tom je GPS příjem. Popravdě jsem nezkoušel generovat signály jiné než 10MHz,1MHz,100kHz,10kHz,1Hz. V každém případě na kmitočtech >1MHz nejsou již hrany signálu dostatečně strmé.
      S fázovými posuvy je to složitější, je tam složených více jevů. Atmosfericý model vnáší chybu 5-50ns, příjmový šum způsobený vícecestným šířením 1-20ns.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.