Zegar sterowany sygnałem DCF-77 Wykonał: Damian Gajewski Elektronika i Telekomunikacja Grupa MiEPU, 2004/2005 Prowadzący: dr inż. H. Batycki © Politechnika Poznańska 2005 1. Część sprzętowa a) moduł odbiornika sygnału DCF-77 Układ odbiornika sygnału DCF-77 służy do odbioru i dekodowania informacji niesionej w sygnale atomowego wzorca czasu nadawanego z miejscowości MainFlingen (50°01’N, 09°00’ E), położonej około 30 km na południowy zachód od Frankfurtu nad Menem. Transmisja odbywa się na falach o częstotliwości 77,5 kHz, a więc bardzo długich. Teoretyczny zasięg nadajnika to 2500 km, co daje pokrycie radiowe dla całej Europy. Do odbioru fal w tym zakresie częstotliwości wykorzystano antenę ferrytową z uszkodzonego odbiornika radiofonicznego. Częstotliwość rezonansową obwodu anteny dostrojono do 77,5 kHz poprzez zmianę położenia cewki na pręcie anteny i dobór pojemności kondensatora. Antena współpracuje z kompletnym dekoderem sygnału DCF-77 UE2125. Aplikacja układu stosuje rezonator 77,5 kHz zapewniający odpowiednią selektywność. Wyjście układu steruje tranzystorem w układzie wspólnego emitera. Na wyjściu modułu, przy prawidłowym sygnale, otrzymuje się ciąg impulsów prostokątnych o poziomach zgodnych z TTL i będących sygnałem wejściowym dla modułu zegara. Moduł odbiornika zasilany jest napięciem 5 V z modułu zegara. Układ LM317 wraz z elementami R3, R7 tworzą stabilizator napięcia 1,5 V potrzebnego do zasilania układu UE2125. Na płytce drukowanej znajdują się dwie diody LED. Dioda zielona sygnalizuje obecność napięcia zasilania. Dioda czerwona świeci się, gdy poziom sygnału na wyjściu modułu jest niski. W czasie prawidłowej pracy (bezbłędny odbiór sygnału z czasem wzorcowym) czerwona dioda powinna świecić się i w jednosekundowych odcinkach czasu gasnąc na chwilę (100 lub 200 ms). Co minutę (59 bit) występuję szczelina synchronizacyjna w czasie której sygnał nie jest nadawany - w czasie trwania 59 bitu dioda powinna świecić się cały czas. Poprawny odbiór sygnału DCF-77 zależy od lokalnych warunków. Fale w tym zakresie częstotliwości są podatne za zakłócenia i układ nie będzie prawidłowo działał w pobliżu silnych źródeł zakłóceń takich jak telewizory, monitory, silniki elektryczne. Moduł odbiornika powinien być umieszczony w zachodniej części budynku, najlepiej w oknie, anteną ferrytową ustawioną prostopadle do kierunku zachodniego. Propagacja fal długich nie wymaga wyniesienia anteny na dużą wysokość. Schemat ideowy modułu odbiornika sygnału DCF-77 przedstawiono na rys. 1. Rozmieszczenie elementów na płytce drukowanej przedstawiają rysunki 2. i 3. Płytka ma wymiary 78*56 mm i jest jednostronna. Układ UE2125 lutowany jest po stronie połączeń (obudowa SMD). Projekt części sprzętowej wykonano w programie Eagle 4.09 firmy CadSoft. Dla dwóch elementów (układ UE2125 i wyświetlacz siedmiosegmentowy) wykonano biblioteki zawierające symbole i odpowiadające im obudowy. Pliki utworzonych bibliotek załączono do projektu. Obwody drukowane wykonano z wykorzystaniem metody z papierem kredowym. rys. 1. schemat ideowy modułu odbiornika sygnału DCF-77 Rozmieszczenie elementów na płytce drukowanej modułu odbiornika: rys. 2. strona elementów rys. 3. strona połączeń b) moduł zegara Moduł ten składa się z części bazowej i płytki wyświetlaczy oraz przycisków. Obie płytki są połączone tak, aby zapewnić dużą funkcjonalność układu - moduł zegara przystosowany jest do zamknięcia w obudowie, gdzie wyświetlacz i przyciski będą znajdować się na panelu przednim, natomiast gniazda zasilania i sygnału wejściowego z tyłu. Schemat ideowy modułu zegara przedstawiono na rys. 4. Sercem układu jest mikrokontroler z rodziny 51 AT89C2051. Współpracuje on z kwarcem o wartości 12 MHz ułatwiającej odmierzanie jednosekundowych odcinków czasu. Mikrokontroler steruje pracą 4 wyświetlaczy siedmiosegmentowych o wspólnej anodzie. Wyświetlacze są połączone tak, aby sterować nimi sekwencyjnie. Sterowanie wyświetlaniem zajmuje 12 linii kontrolera. Układ wyposażono w 4 przyciski sterujące. Obsługa przycisków jest wykonywana wraz z obsługą wyświetlaczy, dzięki czemu na podpięcie przycisków do kontrolera wykorzystano tylko jedną linię. Jedna linia jest wejściem sygnału z modułu DCF-77 (linia INT0). Ostatnia wolna linia posłużyła jako wyjście do ewentualnego „zagospodarowania”, np. jako wyjście budzika (sterowanie piszczykiem piezo) lub wyjście sterujące przekaźnikiem. Cztery tranzystory sterują wyborem anod wyświetlaczy - dołączają je do VCC. Poszczególne segmenty wyświetlaczy są załączane przez mikrokontroler bezpośrednio. Przyjęty prąd pojedynczego segmentu wynosi około 10 mA i nie przekracza dopuszczalnego prądu wpuszczanego do wyjścia układu AT89C2051 w stanie niskim. Moduł zegara wyposażono w stabilizator napięcia 5 V oparty na układzie 7805. W okolicach stabilizatora oraz w pobliżu mikrokontrolera znajdują się kondensatory filtrujące napięcie zasilania. Na wejściu zasilania zastosowano diodę D1 zabezpieczającą układ przed skutkami odwrotnego podłączenia napięcia zasilania. Moduł bazowy to płytka jednostronna o wymiarach 96 * 50 mm. Rozmieszczenie elementów na tej płytce przedstawia rys. 5. Moduł wyświetlaczy ma wymiary 96 * 32 mm. Położenie wyświetlaczy i przycisków przedstawia rys. 6. rys. 4. schemat ideowy modułu zegara Moduł zegara składa się z dwóch płytek drukowanych połączonych ze sobą przy pomocy prostokątnych pól lutowniczych znajdujących się na krawędziach płytek; płytka wyświetlaczy jest ustawiona pionowo i jest prostopadła do płytki modułu bazowego. Wytrzymałość mechaniczną zapewnia dodatkowy wspornik. rys. 5. strona elementów modułu bazowego rys. 6. strona elementów modułu wyświetlaczy Moduł zegara jest połączony z modułem odbiornika za pomocą trójprzewodowej taśmy. Całość należy zasilać z niestabilizowanego źródła napięcia 7-16 V. Można zastosować popularny zasilacz typu „wtyczkowego”. 2. Część programowalna (software) Mikrokontroler AT89C2051 zawiera 2 kB pamięci programu (flash) i 128 B pamięci RAM. Kod programu napisano w asemblerze. Powstało ponad 700 linii kodu, które po kompilacji zajęły ponad 850 bajtów pamięci flash. Główna pętla programu zawiera jedynie obsługę nastaw zegara. Wszystkie podstawowe operacje wykonywane są w przerwaniach. TIMER0 pracuje jako 16-bitowy timer (tryb 1) i zgłoszenie przerwania od tego timera służy do odmierzania odcinków czasu o długości 40 ms. Zliczanie tych odcinków pozwala uzyskać odstęp 1 sekundy będącej podstawą aktualizacji czasu. TIMER1 również pracuje jako 16-bitowy timer i jest podstawą multipleksu wyświetlaczy. Co około 2 ms TIMER1 zgłasza przerwanie którego obsługa zmienia aktywny wyświetlacz i przegląda związany z nim przycisk. Oba te przerwania służą także do analizy aktualnego stanu na linii INT0 będącej wejściem sygnału z odbiornika DCF-77. Przerwanie od T0 odlicza czas trwania stanu niskiego na wejściu INT0. Stan niski jest analizowany w celu znalezienia szczeliny synchronizującej - ostatniej sekundy ramki DCF-77, podczas której sygnał nie jest nadawany. Pomiędzy bitami 0 a 58 stan niski trwa 800 lub 900 ms. W ostatniej sekundzie nie ma impulsu, więc stan niski pomiędzy bitem 58 a 0 trwa 1800 lub 1900 ms; pozwala to na wykrycie początku transmisji całej ramki i poprawną analizę przesyłanych bitów. Bity przesyłane są jako impulsy o czasie trwania 100 ms (logiczne zero) lub 200 ms (logiczna jedynka). Wartości te w przypadku linii INT0 dotyczą czasów trwania stanu wysokiego. Długość czasu stanu wysokiego odmierzana jest w przerwaniu od T1. Dodatkowo każde zbocze opadające na linii INT0 wywołuje procedurę obsługi przerwania, w której zawarto cały algorytm dekodowania sygnału DCF-77. Przyjęto odpowiednie tolerancje podanych czasów ze względu na charakter rozchodzenia się fal radiowych. Uwzględniono także występowanie w sygnale krótkotrwałych zakłóceń impulsowych. Ramka DCF-77 zawiera następujące bity: 0 1-14 15 16 17-18 19 20 21-24 25-27 28 29-32 33-34 35 36-39 40-41 42-44 45-48 49 50-53 54-57 58 59 początek transmisji. Zawsze = 0, przerwa, bez znaczenia - wszystkie zera, 0- antena normalna; 1- antena pomocnicza, 0-normalnie; 1- zapowiedz zmiany czasu godzinę przed, 10-czas zimowy; 01-czas letni. Bit 18 = MSB, 0-normalnie; 1-zapowiedz dodatkowej sekundy, start informacji czasowej. Zawsze = 1, jednostki minut w BCD. Bit 24 = MSB, dziesiątki minut w BCD. Bit 27 = MSB, bit parzystości dla bitów 21-27, jednostki godzin w BCD, dziesiątki godzin w BCD, bit parzystości dla bitów 29-34, jednostki dni miesiąca w BCD, dziesiątki dni miesiąca w BCD, dni tygodnia w BCD, jednostki miesiąca w BCD, dziesiątki miesiąca w BCD, jednostki lat w BCD, dziesiątki lat w BCD, bit parzystości dla bitów 36-57, brak impulsu. Jak widać transmisja odbywa się w kolejności od bitu najmniej znaczącego (LSB) do bitu MSB. Na potrzeby zegara analizowane są bity o numerach: 0, 20 ( kontrolne), 21-27 (minuty BCD), 28 (bit parzystości), 29-34 (godziny BCD), 35 (bit parzystości). Tylko poprawny odbiór wszystkich wymienionych wyżej bitów i ustawione zezwolenie na korekcję lokalnego czasu zegara sygnałem DCF-77 (dCF1 - patrz obsługa zegara) spowoduje aktualizację wyświetlanego czasu i włączenie wskaźnika synchronizacji czasu ze wzorcem. 3. Obsługa zegara Po włączeniu zasilania zegar zaczyna odliczać czas począwszy od godziny 12:00. Domyślnie zezwolenie na korekcję lokalnego czasu zegara sygnałem DCF-77 jest włączone (dCF1). Funkcje przycisków są następujące: S2 (lewy górny) - na wyświetlaczu pojawia się czas w formacie GODZINA . MINUTY. Liczby rozdzielone są kropką dziesiętną wskazującą odliczanie sekund, zmieniającą stan co 1 sekundę, S4 (prawy górny) - na wyświetlaczu pojawia się czas w formacie MINUTY SEKUNDY, S1 (lewy dolny) - na wyświetlaczu pojawia się „analizator” odbieranych bitów z odbiornika DCF-77. Jeżeli sygnał nie jest obecny, jest słaby lub bardzo zakłócony to wszystkie wyświetlacze pokazują „-„ (zapalony środkowy segment każdego z wyświetlaczy). Każdy prawidłowo odebrany bit jest sygnalizowany cyfrą „0” lub „1” na wyświetlaczu DIS1. Po udanej synchronizacji wyświetlacze DIS4 i DIS3 pokazują numer aktualnego bitu (z zakresu 00 - 58), S3 (prawy dolny) - wejście w tryb nastaw zegara. Wejście w tryb nastaw blokuje działanie przycisków S1 i S2. Pierwszą nastawą jest zezwolenie na korekcję lokalnego czasu zegara sygnałem DCF-77. Przyciskiem S4 można to zezwolenie wyłączać (dCF0) i włączać (dCF1). Wyłączenie zezwolenia spowoduje, że ustawiony ręcznie czas nie będzie w żadnych warunkach korygowany, tzn. informacje uzyskane z sygnału DCF-77 zostaną zignorowane. Kolejne nastawy dotyczą czasu kolejno godzin, minut i sekund. Przyciskiem S4 można zwiększać aktualnie nastawianą wartość. Wyświetlacz DIS4 wskazuje co aktualnie podlega nastawie: godziny („H”), minuty („Π”) czy sekundy („S”). Piąte naciśnięcie przycisku S3 spowoduje wyjście z trybu nastaw i pracę w trybie wskazywania czasu GODZINA . MINUTY. Przejście przez tryb nastaw zegara bez zmiany którejkolwiek z wartości nie wpływa w żaden sposób na pracę zegara. Zmiana wartości godzin lub minut nie wpływa na aktualną wartość sekund. Odmierzanie czasu nie zostaje zatrzymane i jest kontynuowane płynnie ze zmienioną wartością godzin i/lub minut. Zmiana wartości sekund zatrzymuje odliczanie czasu. Pozwala to na spokojne wykonanie nastawy. Odmierzanie czasu od wprowadzonej wartości rozpocznie się z chwilą wyjścia z trybu nastaw. Poprawny odbiór bitów sygnału DCF-77 i ustawione zezwolenie na korekcję lokalnego czasu zegara sygnałem DCF-77 (dCF1) spowoduje aktualizację wyświetlanego czasu i włączenie wskaźnika synchronizacji czasu ze wzorcem. Wskaźnikiem tym jest kropka dziesiętna wyświetlacza DIS1. Świecenie tego punktu oznacza synchronizację z czasem wzorca; wskazywany czas uwzględnia zimowe/letnie przesunięcie.