Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

GPS sync1 disciplined oscillator

bobeer 07 Lut 2016 23:57 6399 6
  • GPS sync1 disciplined oscillator

    Pamiętam, gdy kupiłem swój pierwszy procesorowy miernik częstotliwości. Wyposażony pierwotnie w rezonator kwarcowy zapewniający dokładność około 10ppm. Było to całkiem zadowalające, biorąc pod uwagę rozdzielczość częstościomierza oraz możliwość dopasowania obliczeń do odchyłki wzorca. Po krótkim czasie rezonator został zastąpiony TCXO 15.36MHz. Generator ten posiadał wyprowadzony trymer, który umożliwiał dokładną regulację (ostatecznie z powodu „mułowatości" interfejsu miernika z MJMu, został powielony x3 na ICS502). Pozostałym problemem był brak wzorca częstotliwości do skalibrowania generatora. Jakiś czas później wpadłem na pomysł użycia sygnału krótkofalowej komercyjnej radiostacji (podobno posiadały dokładność nie gorszą od 1ppm, więc można było sobie taką „zdudnić” :) ). Podsumowując, uzyskanie bezwzględnie dokładnej, stabilnej częstotliwości na poziomie 1ppm w przedinternetowych czasach, nie było takie łatwe. ;)
    Dzisiaj dokładność 1ppb nie nastręcza większego problemu, czego dowodem jest m.in. ten projekt. Schematów przeróżnych wzorców jest „na pęczki”, a to za sprawą dostępności wzorca 1pps z odbiorników GPS. Idąc tą drogą, ja również postanowiłem zbudować kolejny *Disciplined Oscillator*, m.in. w celu sprawdzenia skalibrowanego 20 lat temu do KF-owej radiostacji częstościomierza. ;)

    Założenia
    Założeniem projektu było zbudowanie synchronizowanego impulsami 1pps generatora częstotliwości wzorcowej o możliwie jak najlepszych parametrach z wykorzystaniem AVRa oraz taniego generatora VCTXO.
    Dodatkowo, sprawdzona miała zostać możliwość użycia jednego przewodu: wspólnie do zasilania odbiornika GPS oraz przesyłania danych zarówno ramek NMEA, jak i sygnału PPS. Ułatwić to miało umieszczenie odbiornika w większej odległości oraz użycie taniego przewodu o nędznych parametrach.
    Jak zwykle w przypadku rzeźbionych przeze mnie programów, program mikroprocesora nie ogranicza się do prostej FLL, lecz posiada dodatkowy zestaw mniej lub bardziej przydatnych funkcjonalności.
    W związku z powyższym, oprócz synchronizacji częstotliwości generatora lokalnego urządzenie umożliwia dodatkowo ustawienie 8-bitowego dzielnika częstotliwości wyjściowej oraz powielacza PLL na ICS502.
    Na dokładkę, generowane są impulsy 1Hz 100us oraz 0.5Hz 50% zsynchronizowane w fazie z sygnałem wzorcowym. Opóźnienie względem impulsów wejściowych jest stałe i wynosi około 10.2ms (ważne narastające zbocze).




    Oprócz tych podstawowych funkcjonalności na terminalu wyświetlane są informacje pozwalające określić dokładność wzorca w czasie, problemy z odbiornikiem i ewentualne zmiany temperatury generatora (przekładające się na krótkoterminowe zachwiania częstotliwości wyjściowych).

    Generator posiada następujące wejścia/wyjścia sygnałów:

    Wejścia zasilania i sygnału GPS:
    Wejście zasilania +5V
    Wejście sygnału „composite” 1PPS + NMEA 115200baud

    Buforowane wyjścia sygnału wzorcowego o poziomie 3Vpp
    Wyjście częstotliwości wzorcowej 10MHz (możliwość ustawienia dzielnika 8bit)
    Wyjście częstotliwości wzorcowej powielonej (2x 2.5x 3x 3.33x 4x 5x)

    Niebuforowane wyjścia sygnału wzorcowego oraz lokalnych impulsów 1PPS (bezpośrednio z procesora dla użytej w projekcie obudowy niewyprowadzone na zewnątrz):
    Wyjście lokalnego sygnału 1pps synchronicznego w fazie z wzorcowym odbiornika GPS
    Wyjście lokalnego sygnału 0.5Hz o wypełnianiu 50% synchronicznego (zbocze co 1PPS)

    Komunikacja terminalowa
    Konfiguracja i odczyt parametrów odbywa się z użyciem modułu BT HC-06 oraz prędkością 115200b/s
    Podstawowe funkcjonalności w skrócie:
    1. Termostat z regulacją temperatury z rozdzielczością 1C
    2. Możliwość zmiany częstotliwości wzorcowej w granicach około +-50Hz
    3. Monitorowanie aktualnego stanu odbiornika GPS – najważniejsze parametry:
    Aktualna data i godzina (z ramki NMEA), położenie, szybkość, fix,
    ilość odbieranych nadajników z poziomami sygnału (GSGA)
    4. Rozbudowany dziennik w postaci tabeli wyświetlającej dobowe parametry pracy generatora z 10-minutową rozdzielczością.

    Algorytm regulacji częstotliwości
    Dostrajanie lokalnego generatora kwarcowego odbywa się na zasadzie porównywania ilości zliczeń jego cykli, w przedziale czasu wyznaczonym przez zewnętrzny wzorzec 1PPS.
    Program regulacji, po każdym ujemnym zboczu na wejściu ICP, uruchamia procedurę przerwania, w której na samym początku sprawdzana jest poprawność impulsu 1PPS.
    Jeżeli impuls ma długość powyżej 5us lub poniżej 4 takty zegara MCK, uznawany jest za zakłócenia lub ramkę szeregową i odrzucany. Jeżeli długość impulsu mieści się w przedziale 5us, program dokonuje synchronizacji czasu. Prócz testu długości, program filtruje impulsy na podstawie ich równego czasu między wystąpieniami. Jeżeli czas będzie się znacząco różnił od 1/5000s (dla wersji 12.8MHz wartość ta wynosi 1/6250s, można ustalić w programie większą tolerancję), to impuls taki zostanie odrzucony. Wyjątkiem jest wstępny okres synchronizacji po starcie programu, w którym czas „chwytania” jest odpowiednio większy oraz dodatkowo przesuwany w fazie celem szybkiego wychwycenia synchronizacji. Jednorazowy szeroki zakres „łapania” wynika z wymaganej stabilności generatora po zaniku impulsów 1PPS. W trybie tym generator lokalny nie może być przestrajany, w związku z tym nie ma możliwości zsynchronizowania go do impulsów 1PPS, które będą znacznie przesunięte w fazie. Ponowną synchronizację umożliwia reset lub ponowne zasilenie.
    Kolejnym etapem działania programu przerwania ICP jest proporcjonalna regulacja VCXO za pomocą odfiltrowanego napięcia PWM.
    Wpierw sprawdzany jest czas pomiędzy znaczącymi impulsami 1PPS i porównanymi z wartością ustawianą przez program czasu bramkowania. Jeśli odebrany impuls wystąpi po zadanym czasie, pobrana zostanie wartość licznika ICR oraz dodatkowych rejestrów stanowiących jego „przedłużenie” do 32bit (daje to możliwość czasu bramkowania 214 sekund dla zegara 20MHz.) Program umożliwia maksymalnie 250-sekundowe bramkowanie zależnie od wersji programu /częstotliwości użytego generatora.
    W przypadku utraty któregoś z impulsów 1PPS, program rejestruje takie zdarzenie w dzienniku. W przypadku, gdy utrata wystąpi w momencie spodziewanej synchronizacji, oczekiwany jest kolejny impuls, częstotliwość jednak nie jest korygowana, a czas bramkowania jest zmniejszany. Jeżeli utrata impulsów nastąpi w czasie, w którym nie następuje synchronizacja, licznik zdarzeń jest zwiększany o jeden dla każdej przerwy w impulsach (nie dla każdego zgubionego impulsu).
    Jeśli akceptacja impulsu przebiegnie pomyślnie oraz czas bramkowania wskaże na ważny impuls synchronizacji, sprawdzana jest odchyłka pomiędzy częstotliwością generatora lokalnego a spodziewaną wartością, obliczoną na podstawie czasu pomiędzy ważnymi impulsami 1PPS.
    W zależności od wielkości różnicy cykli zegara lokalnego, czas bramkowania może być zwiększony, zmniejszony lub pozostać niezmienny.
    Jeżeli odchyłka częstotliwości od wzorca <=1 czas bramkowania jest podwajany. Jeżeli odchyłka przekroczy wartość 2 cykli zegara, czas bramkowania jest dzielony przez 2.
    Dla odchyłki równej 2 cyklom, czas bramkowania pozostaje niezmieniony.
    Zależnie od obliczonej odchyłki ppm, wartość napięcia strojenia zmieniana jest w stopniu odpowiadającym tej odchyłce. W związku z różnicami w czułości generatorów na przestrajanie, w programie znajduje się odpowiednia stała „wzmocnienia napięcia regulacji”. Na PCB znajdują się rezystory dzielnika umożliwiające również korekcję tej wartości. Poniżej kilka przykładowych pomiarów dla różnych generatorów. Wartość 65535 odpowiada napięciu daca 3.3V.

    ECS VC-TXO-23SM 20MHz
    (dzielnik napięcia wyjściowego /4 symetryczny 1/2 VDD)
    20.000.100MHz -46530
    20.000.000MHz -23250
    20.000.050MHz -35013
    19.999.950MHz -11360
    35013-11360 = 23653/100Hz =236b/Hz

    CFPT-125 SMD TCVCXO 12.8MHz
    (brak dzielnika napięcia)
    12.800.000MHz -32978
    12.800.050MHz -41090
    12.799.950MHz -24885
    41090-24885=16205/100Hz =162b/Hz

    Termostat
    Płytka generatora wyposażona jest eksperymentalnie w prosty termostat, umożliwiający pewną kompensację wpływu zmian temperatury otoczenia na jego częstotliwość. Ze względu na uproszczoną, prototypową formę regulacja temperatury odbywa się w ograniczonym zakresie. Niedoskonałości związane są m.in. z umieszczeniem grzałki z generatorem na jednym PCB wraz z innymi układami generującymi ciepło oraz ze stosunkowo niską mocą (1W) elementów grzejnych. Testy wykazały, że zbytnie zwiększanie temperatury może spowodować niewielkie fluktuancje (wielkości 1ppb dla 180s czasu bramkowania) zmniejszające stabilność częstotliwości. Z tego względu, w przypadku podłączonego na stałe sygnału 1PPS, dla pracy w warunkach pokojowych, temperaturę wystarczy ustawiać na 30-40°C. Funkcjonalność termostatu w przypadku używania generatora przy podłączonym przez cały czas odbiorniku GPS oraz dobrej izolacji termicznej od otoczenia może pozostać w ogóle niewykorzystywana.

    Stabilność częstotliwości
    W prototypie, po zastosowaniu prostej izolacji termicznej oraz ustawieniu temperatury termostatu wyższej o 10 stopni od wygrzanej PCB z wyłączoną grzałką, stabilność częstotliwości ECS VC-TXO-23SM, dla czasu bramkowania 180s osiągała dokładność 1ppb. Podczas testów dał się zauważyć wpływ wewnętrznej kompensacji samego generatora, która powodowała opóźnienie stabilizacji częstotliwości względem warunków termicznych mierzonych termistorem. W drodze modernizacji, po dwukrotnym zwiększeniu mocy grzałki oraz poprawieniu sprzężenia termicznego (dioda w kierunku zaporowym łącząca pola masy grzałki i generatora) dla zadanej temperatury 50°C odchyłka ustaliła się na poziomie max. 1ppb.

    Odbiornik GPS
    Jako odbiornik GPS użyty został GTPA010 na chipsecie MT3339 zapewniającym niski pobór prądu oraz dobrą czułość radia. Moduł odbiornika przylutowany jest do płytki konwertera umożliwiającego odzyskanie zasilania oraz kluczowanie go ramkami NMEA. Oprócz danych, wysyłane są impulsy 1PPS skrócone do 1us w celu łatwego odróżnienia ich od danych występujących z dużym rozrzutem czasowym (ramka testowanych odbiorników GPS nigdy nie występowała w tym samym momencie co sygnał 1PPS). Przed użyciem GTPA010 wymaga on wgrania firmware dla pracy z prędkością 115.2kb/s. Domyślnie soft ten wysyła ramki GSA, RMC, GSV, VTG, GGA, z maksymalną zajętością pasma 4% dla okresu 1s. W celu obniżenia poboru energii i spadków napięcia, korzystne jest zminimalizowanie ilości transmitowanych ramek do niezbędnego minimum. Nieszczęśliwie GTPA010 traci ustawione programem miniGPS parametry z momentem zaniku zasilania.

    Generator VTCXO
    Zastosowany generator odgrywa kluczową rolę w otrzymaniu stabilnego, dobrej jakości sygnału wzorcowego. W celu uzyskania najlepszych efektów, należy używać wyłącznie generatorów skompensowanych termicznie. Podczas prób sprawdzane były również generatory niekompensowane, jednak ich zastosowanie wymagało: po pierwsze użycia „większego” dzielnika napięcia, po drugie zmiany parametru wzmocnienia napięcia przestrajającego. Różnice wynikały ze zmiany zakresu przestrajania, skutkującego zmniejszeniem ilości bitów przypadających na 1 ppm regulacji częstotliwości (spadek rozdzielczości przestrajania).
    Niektóre, gorszej jakości generatory skompensowane, również posiadały zbyt duży zakres strojenia powodujący pogorszenie warunków stabilizacji.
    Z krótkiej obserwacji wynikło, iż użyte w projekcie pracującym w warunkach pokojowych (niewielkie wahania temperatury 20-25°C) generatory bez kompensacji zapewniają stabilność nie gorszą jak 10-100ppb, kiepskie generatory skompensowane nie gorszą niż 10ppb, dobre nie gorszą jak 1ppb .

    Status LED
    Oprócz możliwości podglądu parametrów pracy na terminalu, urządzenie posiada jedną diodę LED, która umożliwia łatwe monitorowanie parametrów wzorca. W zależności od dokładności aktualnego dostrojenia (ostatni pomiar dokonany w okresach ustalonych czasem bramkowania), dioda mruga odpowiednią ilość razy. Brak sygnału 1PPS jest sygnalizowany w specjalny sposób. Ilości mignięć odpowiada kolor wartości ppm wyświetlany na konsoli.

    1 mignięcie 0-1 ppb (kolor niebieski tego parametru na terminalu)
    2 mignięcia 2-10 ppb kolor zielony
    3 mignięcia 11-100 ppb kolor żółty
    4 mignięcia >100 ppb kolor czerwony
    Dodatkowe przygaszanie diody co 2 sekundy oznacza brak sygnału 1pps.
    Zablokowanie przestrajania generatora powoduje negację stanu LED.


    Informacje na terminalu
    Wyjście terminala pracuje w 4 trybach:
    1-wyjście całkowicie wyłączone
    2-retransmitowane surowe dane wejściowe (w naszym przypadku ramki NMEA)
    3-wyświetlane są tylko dane związane z wzorcem czasu
    4- wyświetlane są dane wzorca czasu oraz informacje z ramek NMEA

    Wyboru trybu pracy dokonuje się klawiszem '?'.
    Tryb pierwszy nie wymaga wyjaśnień. ;)
    Drugi umożliwia użycie zewnętrznego programu do podglądu danych z odbiornika.
    W momencie wyboru trybu 3 w pierwszej linii wyświetlany jest zegar lokalny z dokładnym czasem, przemiennie z uptime pracy urządzenia. Następnie wyświetlany jest status impulsów synchronizacji 'PPS OK'. 'TIMING' wyświetla aktualnie ustawiony docelowy czas bramkowania. 'ACCURACY' wyświetla ostatni rzeczywisty czas bramkowania na zmianę z najkrótszym czasem od ostatniego logowania (co 10 minut). Jednostki z literką 'c' oznaczają odchyłkę w ilości cykli zegara, jednostki ppb to przeliczona odchyłka w bilionowych (dla miary krótkiej) częściach częstotliwości wzorca.
    W drugiej linii, znajduje się pasek postępu bramkowania pozwalający umilić czas oczekiwania na zdjęcie kolejnej wartości licznika.
    Trzecia linijka to zadana częstotliwość wzorcowa. Możliwa korekcja z dokładnością 1Hz. 'VTUNE' reprezentuje napięcie strojenia generatora, znak za wartością wskazuje kierunek ostatniej korekcji częstotliwości. Kolejne dwie wyświetlane częstotliwości 'F1' i 'F2' są związane z dzielnikiem i powielaczem umożliwiającymi uzyskanie różnych częstotliwości wyjściowych. Kolorowanie 'F2' związane jest z sygnalizacją pracy w obszarze niezapewniającym poprawnej synchronizacji pętli PLL powielacza. Kolejna linia to parametry związane z ADC.
    'TSET' temperatura zadana 'TEMP' temperatura zmierzona 'TSQ' aktualna odchyłka temperatury 'MIN' zapamiętana największa odchyłka temperatury. 'U1' napięcie zasilania +5V 'U2' napięcie zasilania na linii „COMPOSITE NMEA”
    Poniżej, znajduje się tabela, w której wyświetlane są zalogowane w czasie wartości różnych parametrów, normalnie wyświetlanych w czasie rzeczywistym na terminalu (z wyjątkiem utraconych impulsów synchronizacji, które są wyświetlane tylko w logu dobowym)
    Dla trybu 4 wyświetlane są dodatkowo informacje z odbiornika GPS. W pierwszej linii wyświetlany jest aktualny czas na przemian z datą. Należy zauważyć, że czas ten jest wyświetlany z opóźnieniem jednej sekundy, wynikającym z faktu, iż dane z ramki NMEA odbierane są z opóźnieniem względem impulsu 1PPS wyzwalającego wysyłanie „obrazu” na konsolę. Najpierw wysyłane są aktualne dane, później zapisywana jest nowa wartość czasu z GPS.
    'FIX 3D' wskazuje aktualny stan ustalania pozycji. Prawidłowy FIX dla GTPA010 jest związany z prawidłowym sygnałem z „satelitów” oraz pojawianiem się impulsów 1PPS. 'SIU' liczba używanych „satelit”. W dalszej kolejności znajdują się współrzędne położenia oraz prędkość w km/h.
    Wyświetlanie poziomu sygnału nie wymaga objaśnień.
    W każdym z ostatnich dwu trybów, na samym dole ekranu jest podpowiedź aktywnych klawiszy.

    Programowanie procesora
    Bardzo ważne, w przypadku użycia generatora z wyjściem sygnału o niskim poziomie amplitudy, jest ustawienie procesora na pracę z rezonatorem kwarcowym. Powoduje to włączenie bufora umożliwiającego wzmocnienie sygnału 1Vpp do wymaganego przez logikę 3.3V poziomu. Dla generatorów dających sygnał w standardzie HCMOS fusebity należy ustawić jak dla zwykłego zewnętrznego zegara.
    Druga ważna sprawa, to ustawienie BROWN-OUT na 2.7V. W przypadku innych ustawień, jest pewne w 100% uszkodzenie jakiejś komórki EEPROM podczas wyłączenia zasilania.
    W załącznikach dwie wersje programu, dla 10MHz oraz 12.8MHz. Dla „dwójkowego” generatora, na wyjściu układu można uzyskać bardziej okrągłe wartości za dzielnikiem.

    Zakończenie
    Wracając do starego MJM-owego miernika MC56, testy dostrojenia TCXO okazały się nadzwyczaj pomyślne, wskazując dla wzorcowych 9.999.998MHz, dokładnie 9.999.999MHz z wahaniem ostatniej cyfry +- 1 dla 7-znakowej skali, co wskazywało na dostrojenie z dokładnością nie gorszą od 0.2ppm. Trudno uwierzyć, że 20 lat temu, w tak prymitywny sposób udało mi się uzyskać taką dokładność częstotliwości używanego w mierniku generatora. :)

    W załącznikach schematy i PCB oraz wsady do procesora plus programy do GPSa.

    GPS sync1 disciplined oscillator GPS sync1 disciplined oscillator GPS sync1 disciplined oscillator GPS sync1 disciplined oscillator GPS sync1 disciplined oscillator GPS sync1 disciplined oscillator GPS sync1 disciplined oscillator GPS sync1 disciplined oscillator GPS sync1 disciplined oscillator GPS sync1 disciplined oscillator GPS sync1 disciplined oscillator


    Fajne!
  • #2 08 Lut 2016 08:57
    akajarz
    Poziom 22  

    Zawsze chciałem coś takiego zrobić, może w końcu się skuszę.
    Dlaczego nie dałeś gotowego chińskiego modułu GPS tylko sam rzeźbiłeś płytkę? Ma to jakieś uzasadnienie? Są przecież takie moduły na aliexpres z wyjściem PPS.

  • #4 08 Lut 2016 19:32
    bobeer
    Poziom 28  

    akajarz napisał:
    Zawsze chciałem coś takiego zrobić, może w końcu się skuszę.
    Dlaczego nie dałeś gotowego chińskiego modułu GPS tylko sam rzeźbiłeś płytkę? Ma to jakieś uzasadnienie? Są przecież takie moduły na aliexpres z wyjściem PPM.

    Nie wiem do końca co masz na myśli pod słowem "moduł", ale zakładam, że PCB pośredniczące pomiędzy odbiornikiem GPS w smd, a czymś co można podpiąć do arduino na goldpinach ;)
    Odpowiedź jest prosta. Żaden moduł nie posiadał wyjścia z poskładanym NMEA oraz PPS więc tak czy inaczej należało dorobić konwerter.
    Jeśli jednak miałeś na myśli cały odbiornik z wyjściem zegarowym, to sprawdzałem jeden moduł U-blox NEO-6M w którym można było programować częstotliwość wyjściową. Niestety ze względu na jitter zastosowania takiego sygnału były by ograniczone. Oprócz jitteru (z tego co pamiętam 10-50ns), czasem zdarzały się większe "dziury" w ciągłości fazy, co zdyskwalifikowało totalnie takie rozwiązanie jako źródła sygnału referencyjnego. Takim zegarem, to można by jedynie sterować bardzo wąskopasmową PLL.

    zgierzman napisał:
    Możesz zdradzić co to za terminal na telefonie? Jaki system, jaki program?


    Program to BlueTerm 2 na androida.
    Przy okazji testowania wyszły pewne kwiatki z tym programem (lub z czymś odpowiedzialnym za przesyłane danych po stronie telefonu) Mianowicie po kilku lub kilkunastu godzinach połączenia, niektóre bajty odbierane przez moduł były przekłamane (tak jakby bajt był przesunięty w lewo o jeden bit). Oczywiście ostatnim podejrzanym w śledztwie był telefon, a jednak połączenie z komputera było bez przekłamań ;)

  • #5 09 Lut 2016 11:31
    hajy
    Poziom 18  

    Witam

    Mam moduł z serii NEO, nie pamiętam teraz który dokładnie, jest w domu a jestem w pracy. I jak piszesz można tam ustawić sobie żądaną częstotliwość na wyjściu zegarowym, i zgadza się jest tam bardzo wysoki jitter, ale są częstotliwości dla których jitter jest bardzo mały. Wynika to ze sposobu podziału sygnału wzorcowego w module. Też zamierzam sobie zrobić generator stabilizowany GPS, moduł odbiorczy oraz OCXO Trimble już czeka na swoja kolej. Tylko brak czasu.
    A i Gratulacje z udanej konstrukcji.

    Pozdrawiam Romek

  • #6 09 Lut 2016 21:39
    Tommy82
    Poziom 39  

    A moduł GPS nie ma problemów pod dachem?

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME