Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Odbieranie wzorca czasu WWVB z wykorzystaniem układu CME6005

Kubald 23 Apr 2013 23:27 26988 8
Altium Designer Computer Controls
  • Odbieranie wzorca czasu WWVB z wykorzystaniem układu CME6005

    Opisany projekt jest raczej eksperymentem, mającym na celu sprawdzenie sposobu odbioru wzorca czasu WWVB i jego wykorzystania. Stacja nadawcza WWVB znajduje się w Fort Collins w stanie Kolorado i przekazuje sygnał wzorca czasu atomowego co każdą minutę, wykorzystując nośną o częstotliwości 60 kHz (tutaj można zobaczyć sposób kodowania). Moc i czytelność sygnału jest monitorowana - co można sprawdzić na stronie internetowej WWVB - w czterech miastach w USA zlokalizowanych w różnych strefach czasowych: PST, MST, CST, EST. Najbliższe autorowi miasto monitorujące sygnał (La Crosse, WI) oddalone było o około 200 mil, więc siła odbieranego przez zbudowane urządzenie sygnału była zbliżona do wartości podawanej na wzmiankowanej stronie. W obydwu przypadkach odbiorniki były jednakowo oddalone od Fort Collins (o około 750 mil).

    Część sprzętowa:

    Odbieranie wzorca czasu WWVB z wykorzystaniem układu CME6005 Odbieranie wzorca czasu WWVB z wykorzystaniem układu CME6005

    Schemat urządzenia jest bardzo prosty - bazuje ono na scalonym odbiorniku CME6005 produkowanym przez firmę C-MAX. Układ składa się z bardzo czułego obwodu odbiornika, kwarcowego filtru środkowoprzepustowego i komparatora w obwodzie wyjściowym sygnału. Użyta antena została nawinięta na 24-milimetrowym pręcie ferrytowym i jest także wytwarzana przez firmę C-MAX. Niestety, w porównaniu z innymi produkowanymi przez firmę C-MAX antenami odbiorczymi, użyty egzemplarz nie jest fabrycznie strojony, autor musiał więc samodzielnie dostroić antenę do 60 kHz używając kondensatorów rezonansowych. Okazało się, że do dostrojenia anteny wystarczą trzy połączone równolegle kondensatory: jeden o pojemności 6800 pF i dwa o pojemności 330 pF. Dłuższe anteny (60 mm i 100 mm) są już wyposażone w kondensatory rezonansowe, więc ich użycie jest nieco prostsze.

    Wyjście odbiornika połączone jest z mikroprocesorem, który przetwarza odebrany sygnał. Mikroprocesor został umieszczony fizycznie jak najdalej od odbiornika, aby zredukować jego wpływ na odbierany sygnał. Mikroprocesor mierzy czas trwania odbieranych impulsów, aby zakwalifikować je jako "0", "1", sygnał synchronizacji czy szum. Odebrane bity są zapisywane w rejestrze procesora i używane później do dekodowania czasu i daty. Układ scalony umieszczony w pobliżu odbiornika to wzmacniacz operacyjny, który służy jako bufor do monitorowania wyjścia odbiornika (wyprowadzenie 15), które steruje pracą automatycznej regulacji wzmocnienia. Napięcie na wyjściu odbiornika waha się od 0,43 do 0,48V. Autor chciał wykorzystać tę wartość do określenia siły odbieranego sygnału, ale odłożył te próby na później. Dlatego obwód ze wzmacniaczem operacyjnym nie jest pokazany na schemacie.

    Odbieranie wzorca czasu WWVB z wykorzystaniem układu CME6005

    Odbiornik montowany jest na niewielkiej płytce drukowanej, jak pokazano poniżej. Wszystkie kondensatory są w obudowach 0603, wykorzystano rezonator typu CM250S. Antena została przymocowana do płytki za pomocą koszulki termokurczliwej. Cewka anteny powinna być umieszczona centralnie na pręcie ferrytowy. Kondensatory 330 pF należy zamontować jeden na drugim. Można też wykorzystać płytkę dwustronną, warstwę miedzi z drugiej strony należy wtedy połączyć z potencjałem masy.

    Odebrany czas i data wyświetlane są na wyświetlaczu LCD z interfejsem szeregowym. Zielona i czerwona dioda LED sygnalizują odbiór danych. Zapalenie zielonej oznacza odebranie "0", czerwonej - odebranie "1". Zapalenie obu diod oznacza odebranie sygnału synchronizacji. Diody zapalają się na 0,1 s. po odebraniu każdego bitu danych. Zgodnie ze standardem WWVB pomiędzy impulsami danych występuje odstęp wynoszący co najmniej 0,2 s. W tym czasie odświeżane są także dane na wyświetlaczu. Pozwala to na ograniczenie zakłócania odbiornika przez pracujący mikrokontroler. Logiczne "0" na wyprowadzeniu 11. oznacza obniżenie poziomu sygnału nośnej do 10 dB, co czyni odbiornik szczególnie narażonym na zakłócenia. Okazało się też, że większość zakłóceń powodowana jest przez przewody prowadzące do wyświetlacza LCD. Odłączenie go i kontrolowanie odbioru za pomocą diod LED zamontowanych w urządzeniu znacznie poprawiło stabilność działania.

    Do pomiaru długości trwania impulsów generowanych przez odbiornik został wykorzystany timer TMR1 mikroprocesora. Timer pracuje z częstotliwością FOSC/4 i wykorzystuje dzielnik wejściowy 1:8. Ponieważ FOSC wynosi 2 MHz, przepełnienie timera następuje po 1,048 s., co jest wystarczające do pomiaru trwających 0,8 sekundy impulsów synchronizacji - najdłuższych impulsów w nadawanym sygnale WWVB. Impulsy z odbiornika podawane są na pin T1G i wywołują przerwanie dla każdej zmiany poziomu sygnału podawanego na to wyprowadzenie. Timer zlicza jedynie, jeśli stan na wejściu T1G jest niski, przerwania są wykorzystywane do przetwarzania sygnału, jak opisano to w następnej sekcji.
    Należy pamiętać, że odbiornik nie jest w stanie pracować stabilnie w niektórych momentach dnia. Poziom sygnału słabnie i wzrasta okresowo, są też momenty, kiedy wystarczająco silny poziom sygnału jest stabilny. Najlepszą porą na odbieranie sygnału jest noc, kiedy jest on najsilniejszy. Najsłabszy sygnał notowano podczas wschodu i zachodu słońca. W tych momentach obszary atmosfery, w których zachodzi odbicie określonych fal ulegają przemieszczeniu ze względu na zmiany temperatury i inne czynniki. Ponieważ w miejscu odbioru różnica czasu względem nadawanego sygnału wynosiła godzinę, słońce zachodziło też wcześniej, co powodowało zatrzymanie odbioru na około 1,5 godziny. W pozostałych momentach sygnał był silny i stabilny, z małymi wyjątkami.

    Oprogramowanie:
    Program mikrokontrolera został napisany w assemblerze i wykorzystuje automat skończony z trzema stanami. Po inicjalizacji rejestrów procesora program przechodzi do nieskończonej pętli, gdzie przetwarzanie sygnału jest całkowicie zapewnione przez procedurę obsługi przerwania. Istnieje tylko jedno możliwe źródło przerwań - zmiana sygnału na wejściu T1G procesora. Kiedy sygnał przechodzi z poziomu logicznej jedynki do zera generowane jest przerwanie. Timer uruchamia zliczanie automatycznie, w taki sposób mierząc czas trwania impulsu. W takim przypadku oznacza to, że zliczono kolejną sekundę czasu i jest ona uwzględniania w liczniku sekund. Poza tym jedna lub obie diody zostają w tym momencie zapalone na 100 ms, aby wskazać odebranie wcześniejszego impulsu.
    Kiedy sygnał na wejściu T1G zmienia poziom z logicznego zera na jedynkę, następuje koniec odbioru impulsu sygnału. Timer zakańcza pomiar długości czasu trwania impulsu. W razie jego przepełnienia odebrany impuls był błędny i nie będzie uwzględniany w przetwarzaniu danych. W przeciwnym razie sprawdzana jest długość impulsu w trzech zakresach (wartości w milisekundach): [150,250], [450,550] oraz [750,850], co jest odpowiednio czasem trwania impulsu "0", "1" oraz synchronizacji. Nominalne czasy trwania impulsów wynoszą odpowiednio 200, 500 i 800 ms, ale ze względu na taktowanie procesora wewnętrznym generatorem RC, została uwzględniona tolerancja pomiaru czasu trwania impulsu.
    Jeśli długość impulsu jest poprawna, przekazywana jest ona do funkcji processPulse(), która implementuje wzmiankowany automat stanowy. Stan 0 automatu jest przeznaczony na oczekiwania na sygnał synchronizacji (impuls o czasie trwania 800 ms). Kiedy zostanie on odebrany, automat przechodzi do stanu 1., który sprawdza czy następny odebrany impuls jest impulsem synchronizacji. Jeśli nie, to automat wraca do stanu 0. W przeciwnym razie, zgodnie z formatem sygnału WWVB, oznacza to nadawanie nowej ramki, więc automat przechodzi do stanu 2.

    Jest on przeznaczony do odebrania 6 bajtów danych z czasem i datą. Jeśli przyjrzeć się kodowaniu sygnału WWVB, każda ramka składa się z 6 części rozdzielonych impulsami synchronizacji P0-P6. Impulsy te nie niosą żadnej informacji i nie muszą być zapisywane. Dodatkowo, 5 bit odbieranych danych w każdej z 6 części ramki wynosi zawsze zero, więc też nie musi być przechowywany. Stąd, każda z 6 grup ramki danych zawiera do 8 bitów danych, więc informacja z każdej grupy może być zapisana w jednym bajcie. Numer kolejnego impulsu, zliczany od 10 w dół do zera, dla każdej grupy przechowywany jest w zmiennej pulseNo. Po odebraniu właściwego bitu w stanie 2. automatu jest on dopisywany do bajtu odbieranych danych. W momencie odebrania bitu synchronizacji i kiedy wartość zmiennej pulseNo wynosi 0 (czyli synchronizacja zaszła w oczekiwanym momencie) bajt odebranych danych jest przepisywany do zmiennej. W każdym innym przypadku otrzymane dane są ignorowane, a automat przechodzi do stanu 0.

    Przetwarzanie danych zawierających czas i datę może być dokonywane zaraz po odebraniu odpowiedniej części ramki. W tym celu osobna zmienna pozwala stwierdzić, którą część ramki odebrano. Przetwarzanie sygnału minut i godzin jest banalne. Należy jedynie pamiętać, że odbierany czas jest w standardzie UTC i musi być dopasowany do czasu lokalnego. W tym celu autor uwzględnił stałą tZone dodawaną do wartości godzin, która wynosi -6 dla czasu CST. Aby przekonwertować liczbę dni do formatu miesiąc/dzień potrzebnych jest nieco więcej kroków, które zostały zaimplementowane w obrębie funkcji computeDate. Najpierw liczba dni jest konwertowana z formatu BCD na dwójkowy. Należy pamiętać, że liczba dni jest również odniesiona do standardu UTC, więc należy ją dostosować do czasu lokalnego. Po odebraniu i konwersji danych przekazywane są one bezzwłocznie do wyświetlacza.

    Praca urządzenia na przeciągu kilku dni pozwoliła stwierdzić wysoką wydajność i niezawodność używanego algorytmu dekodowania sygnału czasu. Autor planuje wykorzystać odbiornik sygnału czasowego w swoim następnym projekcie - zegarku synchronizowanym radiowo.

    Źródło

    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    Kubald
    Level 15  
    Offline 
    Has specialization in: spektroskopia exafs/xanes, uc, it
    Kubald wrote 188 posts with rating 94, helped 0 times. Live in city Kraków. Been with us since 2004 year.
  • Altium Designer Computer Controls
  • #2
    Freddy
    Level 43  
    Niestety w Europie mało przydatne. W Europie działa od lat system DCF77 na częstotliwości 77,5kHz.
    Sygnał DCF77 nadawany jest z Mainflingen koło Frankfurtu nad Menem w Niemczech. Czas odmierzany przez zegar atomowy (cezowy) i wysyłany przez nadajnik o mocy około 50kW. Powinno to zapewnić poprawna pracę odbiorników w promieniu około 1500km.
    Szczegóły można poczytać na stronie np. na Wiki.
  • Altium Designer Computer Controls
  • #3
    Piotr Ziemowit
    Level 13  
    W celach edukacyjnych można się bawić, ale Europa jest opanowana przez DCF77 i do tego świetnie udokumentowana. Nawet w autkach stosują te odbiorniki.
  • #4
    komatssu
    Level 29  
    Nie zapominajcie, że tak samo dobry sygnał wzorcowy czasu dostarcza również odbiornik GPS, który działa globalnie. W samochodach stosowane są właśnie takie odbiorniki.
  • #5
    androot
    VIP Meritorious for electroda.pl
    Piotr Ziemowit wrote:
    W celach edukacyjnych można się bawić, ale Europa jest opanowana przez DCF77 i do tego świetnie udokumentowana. Nawet w autkach stosują te odbiorniki.


    W jakich?
    Odbiorniki radiowe korzystają z sygnału RDS, stacji na UKF.

    DCF77 to przeszłość. Do tego są niewygodne, bo wymagają dużych anten ferrytowych. Mało odporne na zakłócenia.
  • #6
    oj
    Level 42  
    DCF77 ma się bardzo dobrze i jest najtańszym źródłem sygnału wzorcowego a jak się korzysta z dobrych odbiorników, żadne zakłócenia nie wpływają na odbiornik; antena 10 cm.

    GPS/GLONASS/EGNOS/WAAS, też potrzebują odbiornika - anteny lub nieba.

    UTC potrzebuje internetu


    Obecnie można korzystać z pulsarów jak ktoś ma potrzebę większej dokładności
  • #8
    jarecki1989
    Level 24  
    androot wrote:
    W jakich?


    androot, np. w Audi A4 z 2000 roku.