Zegar ustawiany za pomocą GPS

Zegar ustawiany za pomocą GPS
Pobierz PDF Download icon
Zwykle zadaniem zegara jest jak najdokładniejsze wskazywanie bieżącej godziny. Najlepiej, aby - używając terminu zegarmistrzowskiego - chód zegara był jak najdokładniejszy, ponieważ to zegar ma nam wskazywać godzinę, a nie my jemu poprzez korygowanie wskazań. Ale nawet, jeśli zegar jest dokładny, to i tak wymaga korekty ze względu na czas letni, zimowy, a gdy ma wbudowany kalendarz, to należy uwzględnić lata przestępne. Popularną metodą synchronizacji czasu jest zastosowanie odbiornika DCF77. Jest to system sprawdzony, ale podatny na zakłócenia, a ponadto widok odbiornika DCF z dużą anteną ferrytową przywodzi na myśl stary radioodbiornik i współcześnie raczej zniechęca. Opisywany zegar bazuje na rozwiązaniu dużo bardziej nowoczesnym, jako wzorzec czasu wykorzystując system GPS, dzięki czemu można powiedzieć, że ma "kosmiczną dokładność". Rekomendacje: doskonały zegar do zainstalowania w różnych miejscach publicznych: poczekalniach dworcowych, na budynkach użyteczności publicznej, szkołach itp.

Podstawowym założeniem dla tego projektu było wyeliminowanie potrzeby ingerencji użytkownika, dlatego współpracując z odbiornikiem GPS zegar automatycznie ustawia się. Większość takich odbiorników wysyła dane w formacie NMEA0183.

Tabela 1. Parametry zawarte w ramce RMC

Ten standard opisuje kilkadziesiąt ramek zawierających wiele parametrów. Oprogramowanie zegara wyszukuje ramkę w formacie RMC (recommended minimum gps data) przesyłaną przez większość odbiorników. Przykładowe ramka ma postać:

$GPRMC,220516,A,5133.82,N,00042.2 4,W,173.8,231.8,130694,004.2,W*70

Opis jej parametrów składowych umieszczono w tabeli 1.

Dla potrzeb zegara najistotniejszy jest aktualny czas UTC. Oznacza on wzorcowy czas uniwersalny ustalany na podstawie TAI (International Atomic Time) uwzględniający nieregularność ruchu obrotowego Ziemi i koordynowany względem czasu słonecznego.

Należy jednak zwrócić uwagę, że jest to czas właściwy dla południka zerowego, za który przyjęto południk przechodzący przez obserwatorium astronomiczne w miejscowości Greenwich, a więc jest czasem strefowym pierwszej strefy czasowej, od którego liczy się czas pozostałych stref.

Czas właściwy dla danego obszaru zależy od długości geograficznej, a dokładniej od państwa, na którego terenie się znajdujemy. Na przykład, Hiszpania i Francja znajdują się w strefie UTC+1, choć położone są na długości geograficznej odpowiadających strefie UTC+0.

Aby zegar wskazywał właściwy czas należy ustawić obwiązującą strefę czasową. Polska znajduje się w strefie czasowej UTC+1, czyli czas jest przesunięty o godzinę do przodu względem czasu uniwersalnego i takie jest domyślne ustawienie zegara.

Czas uniwersalny nie uwzględnia zmian czasu na zimowy i letni. Zmiana czasu na letni, czyli o godzinę do przodu, odbywa się w ostatnią niedzielę marca, natomiast zmiana na czas zimowy, czyli o godzinę do tylu, odbywa się w ostatnią niedzielę października. Nie są to stale daty, ponieważ każdego roku wypadają w inny dzień miesiąca.

Informację o obowiązywaniu czasu letniego/zimowego można uzyskać analizując datę, a informacja o aktualnej dacie jest dostępna w zdaniu RMC (parametr 11 w tab. 1). Do obliczeń nie wystarczy tylko informacja o dniu miesiąca, miesiącu i roku, potrzebny jest jeszcze jeden parametr - dzień tygodnia.

Jest on określany przez oprogramowanie, w którym zapisano, że 1-go stycznia 2000 roku była sobota, więc znając aktualną datę można obliczyć liczbę dni, które upłynęły od tej daty i wyznaczyć aktualny dzień tygodnia. Dysponując tymi danymi można określić czy obowiązuje czas zimowy, czy letni.

Dodawanie i odejmowanie godzin względem czasu uniwersalnego, związane ze strefami czasowymi i zmianami czasu bardzo komplikuje utrzymanie integralności struktury clock, która zawiera informacje o dacie i godzinie podzielone na podstawowe elementy (rok, miesiąc, dzień, godzina, minuta, sekunda).

Lepszą metodą okazał się zapis czasu w postaci liczby sekund. Zmienna time.digital określa liczbę sekund, która upłynęła od 1 stycznia 2000 r. Wartość ta będzie dalej nazywana czasem względnym. Zmienna ma rozmiar 32 bitów i jej zakres w zupełności wystarczy do zliczenia sekund do roku 2100.

Po tej dacie należałoby wprowadzić małą zmianę w programie. Po każdej sekundzie następuje zwiększenie czasu względnego o jeden. Następnie czas względny zostanie zwiększony lub pomniejszony o wartość wynikającą z ustawionej strefy czasowej (od -14 do +14 godzin).

Na podstawie czasu względnego jest tworzona struktura clock oraz obliczany dzień tygodnia. W kolejnym etapie, program sprawdza czy obowiązuje czas letni i jeśli tak to do czasu względnego dodawane jest 3600 sekund (1 godzina) a wynik ponownie przekształcony zostaje na strukturę clock. Dopiero wtedy otrzymywany jest prawidłowy, aktualna godzina oraz data, zsynchronizowane z czasem UTC i uwzględniające strefę czasową oraz zmiany czasu.

Czas jest synchronizowany sygnałem GPS po włączeniu zasilania, a potem okresowo co 3 godziny. Urządzenie oczekuje wtedy na właściwą ramkę RMC. Jeśli w ciągu 30 sekund ramka nie zostanie odebrana, to jest to traktowane jako praca bez synchronizacji i sygnalizowane krótkim miganiem dwukropka na wyświetlaczu (ok 1/3 s).

Jeśli prawidłowa ramka zostanie odebrana, to urządzenie zaktualizuje wskazanie czasu oraz czas zegara RTC i zasygnalizuje to długim miganiem dwukropka na wyświetlaczu (ok 2/3 s).

Wykaz elementów

Płytka główna

Rezystory:
R1...R3, R5, R6, R8, R10, R27: 3 kΩ
R9, R15...R24, R26: 100 Ω
R7, R11...R14, R15*, R16*, R25: 1 Ω

Kondensatory:
C1, C7, C9...C11, C14, C15: 100 nF
C2, C5, C6, C8, C12, C13: 100 µF/25 V
C3, C4: 22 pF

Półprzewodniki:
D1...D3: 1N5817
IC1: ATmega8 (zaprogramowany)
IC2: MCP7940
IC3: ULN2803
IC4: UDN2981 lub np. TD62783
IC5: 7805
IC6*: 7809
TERM: DS18B20

Inne:
X1: kwarc zegarkowy 32768 Hz
B1: bateria 3 V do druku, pionowa
CON1: nie montować
DISP: goldpin kątowy 1×20, gniazdo goldpin
POW: ARK2/500
SW, TERM, SIG: ARK3/500

Wyświetlacz standardowy:

R1: 1 kΩ
S1, S2: przycisk
FOTO: fotorezystor GL5616 (1M)
LED1...LED4: wyświetlacz LED-AS8012
LED5, LED6: wyświetlacz LED-AD5624
LED6, LED7: dioda LED 3 mm
DISP: goldpin kątowy 1×20

Wyświetlacz opcjonalny:

R1, R2: 220 Ω
FOTO: fotorezystor GL5616 (1M)
LED1...LED6: wyświetlacz LED-AS23011
LED7...LED10: dioda LED 5 mm

Budowa

Rysunek 1. Schemat ideowy płytki głównej zegara

Schemat ideowy zegara pokazano na rysunku 1, natomiast wyświetlaczy - na rysunkach 2 (mniejszy, podstawowy) i 5 (duży, opcjonalny). Pracą urządzenia steruje mikrokontroler ATmega8. Pomiędzy punktami synchronizacji czasu urządzenie odmierza czas za pomocą wyspecjalizowanego układu zegara RTC typu MCP7940.

Pracuje on w takiej konfiguracji, że na wyprowadzeniu MFP jest generowany przebieg prostokątny o częstotliwości dokładnie 1 Hz. Wyprowadzenie MFP jest połączone z wejściem INT0 procesora i każde zbocze opadające powoduje wygenerowanie przerwania. Sygnał 1 Hz z zegara RTC nie jest synchronizowany z czasem UTC, więc wskazania zegara mogą być spóźnione o maksymalnie 1 sekundę.

Zasilanie wyświetlaczy od strony katod realizuje ośmiokrotny driver ujemnej szyny zasilania ULN2803. Anody zasilane są poprzez podobny driver, ale sterujący dodatnim biegunem zasilania UDN2981. Dwa stabilizatory dostarczają oddzielne napięcie zasilania +5 V dla mikrokontrolera i jego peryferiów oraz oddzielne +9 V dla wyświetlaczy w wersji podstawowej (fotografia 4).

Rysunek 2. Schemat ideowy wyświetlacza standardowego

Zegar zbudowano w sposób pozwalający na dołączenie dużo większych wyświetlaczy, niż te zastosowane w modelu (fotografia 5). Wymaga to doprowadzenia wyższego napięcia zasilającego anody, więc stabilizator IC6 należy zastąpić zworą (połączyć skrajne wyprowadzenia) i zasilić urządzenie odpowiednim napięciem (maksymalnie +24 V). Prąd pojedynczego segmentu wyświetlacza nie może przekraczać 100 mA.

Rysunek 3. Schemat ideowy wyświetlacza opcjonalnego (dużego)

Sterowanie wyświetlaczy jest realizowanie dzięki multipleksowaniu. Po każdym cyklu zaświecenia się cyfry, następuje krótszy cykl pełnego wygaszenia wyświetlaczy. Zapobiega to prześwitywaniu cyfr na sąsiednie wyświetlacze spowodowane czasem propagacji driverów.

Ponadto, poprzez zmianę stosunku czasu zaświecenia do czasu wygaszenia jest regulowana intensywność świecenia wyświetlacza. Parametrem regulującym intensywność świecenia jest sygnał z fotorezystora - im oświetlenie otoczenia silniejsze, tym silniej świeci wyświetlacz.

Obsługa

Fotografia 4. Zegar w wersji podstawowej

Do obsługi zegara służą dwa przyciski S1 i S2. Krótkie naciśnięcie przycisku S1 powoduje wyświetlenie daty w formacie DD:MM:RR - po ok. 5 sekundach zegar powróci do wyświetlania czasu.

Krótkie naciśnięcie przycisku S2 wyświetli temperaturę odczytaną z dołączonego czujnika i jak poprzednio po chwili zegar powróci do wyświetlania czasu.

Dłuższe przytrzymanie (ok. 3 s) przycisku S1 uruchamia tryb ręcznego ustawiania czasu. W pierwszym kroku zostanie wyświetlona data, będzie to sygnalizowane świeceniem się kropek. Rok jest wyświetlany w postaci dwóch ostatnich cyfr (2015 będzie pokazywany jako 15).

Fotografi a 5. Zegar w wersji z dużym wyświetlaczem

Wartość dni będzie migała na przemian z kursorem. Każde przyciśnięcie S2 spowoduje zwiększenie, a przyciśnięcie S1 zmniejszenie wartości. Uwaga! W czasie ustawiania daty program nie koryguje liczby dni dla danego miesiąca - w każdym miesiącu możemy ustawić 31.

Po ustawieniu dnia dłuższe przytrzymanie przycisku S1 lub S2 przesuwa kursor na następną pozycję - miesiąc, a po miesiącu na rok. Kolejne dłuższe przyciśnięcie spowoduje wyświetlenie godziny - wówczas kropki zostaną wyłączone. Na początku będzie migała liczba godzin, analogicznie jak przy ustawiania daty.

Fotografi a 6. Szczegóły montażu wersji z dużym wyświetlaczem

Po zakończeniu ustawiania zegar powróci do normalnej pracy. Dłuższe przytrzymanie S2 uruchomi synchronizację na żądanie - zegar będzie śledził sygnał z odbiornika GPS i zaktualizuje czas po odebraniu ramki RMC.

Zegar wymaga ustawienia kilku parametrów. Włączenie zasilania układu, gdy jest wciśnięty S1 uruchamia procedurę ustawienia strefy czasowej. Pierwsze dwa pola wyświetlacza (pierwsze 4 cyfry) pokazują wartość przesunięcia zegara względem czasu uniwersalnego.

Ustawanie przebiega analogicznie, jak ustawianie daty i godziny. Zakres możliwych do ustawienia wartości zawiera się w przedziale od -14 do +14 ze skokiem 1 godzinę (oprogramowanie nie uwzględnia stref czasowych, takich jak +3:30 czy +12:45). Domyślna wartość to 1:0,0 a wiec dla Polski i większości Europy nie trzeba nic zmieniać.

Trzecie pole wyświetlacza (ostanie dwie cyfry) określa status automatycznej zmiany czasu. Wartość 0 oznacza, że funkcja jest wyłączona, wartość 1 oznacza, że funkcja jest włączona i zmiany czasu na letni/zimowy będą wykonywane automatycznie. Domyślnie funkcja jest włączona.

Włączenie zasilania układu, gdy jest wciśnięty S2 uruchamia dodatkowe ustawienia. Pierwsze pole wyświetlacza określa prędkość komunikacji z odbiornikiem GPS (baudrate). Do wyboru mamy 0 - 4800, 1 - 9600, 2 - 14400, 3 - 19200. Wartość domyślna to 1 (9600 b/s).

Drugie pole wyświetlacza określa status funkcji automatycznego wyświetlania temperatury. Gdy funkcja jest włączona ("1") temperatura jest pokazywana co ok. 70 sekund. Gdy czujnik temperatury jest odłączony, to temperatura nie będzie pokazywana pomimo aktywnej funkcji. Domyślnie funkcja jest aktywna.

Montaż i uruchomienie

Rysunek 7. Schemat montażowy płytki głównej zegara

Montaż płytki głównej zegara wykonujemy zgodnie z rysunkiem 7 i z zachowaniem ogólnych zasad. Płytkę zaprojektowano dla elementów przewlekanych, więc poradzą sobie nawet osoby z mniejszym doświadczeniem.

Złącze CON1 pozwala na programowanie mikrokontrolera w układzie, ale nie musi, jeśli mikrokontroler jest zaprogramowany. Przed montażem należy zdecydować, czy zegar zostanie wyposażony w standardowy czy duży wyświetlacz.

Schemat montażowy wyświetlacza standardowego pokazano na rysunku 8. Montując go należy wlutować stabilizator IC6, a rezystory R15 i R16 powinny mieć rezystancję 100 Ω, dzięki czemu wyświetlacz sekund, który jest innego typu niż pozostałe, będzie świecił z taką samą intensywnością.

Rysunek 8. Schemat montażowy płytki wyświetlacza standardowego

Na koniec, zmontowane płytki sterownika i wyświetlacza, należy połączyć rzędem kątowych goldpinów lutując je bezpośrednio do płytek (fotografia 9).

Dla wersji z dużym wyświetlaczem (rysunek 10), stabilizator IC6 zastępujemy zworką, a rezystory R15 i R16 powinny mieć rezystancję 1 Ω. W miejscu złącza wyświetlacza DISP, po stronie lutowania, należy zamontować gniazdo goldpin. Na płytce dużego wyświetlacza należy w pierwszej kolejności zamontować listwę szpilek goldpin, również po stronie lutowania.

Fotografia 9. Szczegóły montażu zegara w wersji standardowej

Po zmontowaniu obu płytek, można je łatwo połączyć. Wyświetlacze na płytce dużego wyświetlacza warto zamontować kilka milimetrów ponad płytką, dzięki czemu będzie możliwe wsunięcie nakrętek za otwory montażowe i solidne umocowanie płytek z użyciem śrub i tulejek dystansowych (fotografia 11).

Po zmontowaniu z użyciem zaprogramowanego mikrokontrolera zegar jest gotowy do pracy. W wersji standardowej można umieścić przyciski na płytce wyświetlacza.

Jeśli zegar będzie umieszczony w obudowie, to trzeba przygotować otwory na przyciski w ściance frontowej - to może być kłopotliwe i może zniszczyć estetykę obudowy.

Wygodniejszym rozwiązaniem jest dołączenie przycisków przewodami do złącza SW i wyprowadzenie ich np. z tyłu obudowy.

Rysunek 10. Schemat montażowy płytki opcjonalnego, dużego wyświetlacza

Do złącza TERM można dołączyć czujnik temperatury typu DS18B20, dzięki czemu zegar zyska dodatkową funkcjonalność. Wyświetlacze warto okleić czerwoną samoprzylepną folią lub umieścić w obudowie z czerwonym filtrem, co znacząco poprawi kontrast wyświetlacza i odczyt będzie możliwy nawet z kilkunastu metrów.

Fotografi a 11. Płytka główna zegara zamontowana za dużym wyświetlaczem

Odbiornik GPS należy dołączyć do złącza SIG. Odbiornik musi mieć interfejs UART o poziomie napięcia 3,3 V lub 5 V i parametrach transmisji: 8 bitów danych, parzystość - żaden, pojedynczy bit stopu. Jak pamiętamy, dopuszczalne, obsługiwane przez program prędkości transmisji to: 4800, 9600, 14400 lub 19200 b/s. Dodatkowo, powinien działać przy zasilaniu +5 V, ponieważ takie jest wyprowadzone na złączu.

Fotografi a 12. Odbiornik GPS MARS600

Wszystkie te wymagania spełnia odbiornik GPS MARS600 zbudowany na bazie modułu u-blox 6 (fotografia 12). Co ważne, ma on zintegrowaną antenę, a całość jest zamknięta w małej, estetycznej obudowie z magnesem do montażu na powierzchni metalowej.

Moduł jest wyposażony w 2,5-metrowy przewód zakończony wtykiem PS2. Wtyk można uciąć lub dołączyć do gniazda PS2, a potem przewodami do zegara. Na rysunku 13 pokazano sygnały występujące na złączu. Doprowadzenie GND łączymy z zaciskiem G złącza SIG, VCC5.0V z zaciskiem V, a TTL_TX z zaciskiem S.

Rysunek 13. Sygnały na złączu zegara i dołączenie dodatkowych akcesoriów

Sam odbiornik powinien być tak umieszczony, aby "widział" niebo. Oczywiście można zastosować dowolny inny odbiornik GPS, który spełnia opisane wymagania.

Należy przy tym pamiętać, że odbiornik GPS nie jest elementem niezbędnym do pracy zegara. Przy pracy bez odbiornika zegar wymaga ustawienia czasu po pierwszym włączeniu i okresowej kontroli wskazań.


KS

Artykuł ukazał się w
Wrzesień 2015
DO POBRANIA
Pobierz PDF Download icon
Materiały dodatkowe
Zobacz też
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik styczeń 2020

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio styczeń 2020

Świat Radio

Magazyn użytkowników eteru

APA - Automatyka Podzespoły Aplikacje styczeń 2020

APA - Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna styczeń 2020

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Praktyczny Kurs Elektroniki 2018

Praktyczny Kurs Elektroniki

24 pasjonujące projekty elektroniczne

Elektronika dla Wszystkich styczeń 2020

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów