Elektroda.pl
Elektroda.pl
X
Adex Agregaty
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Dekodowanie sygnału DCF77 na ATmega.

And! 03 Gru 2016 21:22 3618 22
  • #1 03 Gru 2016 21:22
    And!
    Admin grupy Projektowanie

    Kiedyś umieściłem na obecnie niedostępnej stronie and.elektroda.eu materiał o dekodowaniu sygnału DCF. Urządzenie potrzebne było w urządzeniu, które wymagało synchronizacji czasu w pomieszczeniu gdzie wyprowadzenie anteny zewnętrznej do GPS było utrudnione. Poniżej umieszczam treść oryginalnego materiału, który może być pomocny przy budowaniu urządzeń z RTC synchronizowanych DCF.

    Sygnał czasu DCF77 jest nadawany na częstotliwości 77,5KHz z mocą 50KW z miejscowości Mainflingen niedaleko Frankfurtu nad Menem w Niemczech.
    Transmisja danych trwa minutę, transmisja bitu trwa sekundę dokładne informacje o sposobie transmisji można bez problemu odnaleźć w internecie.
    Transmisja jest powolna, oraz zakłócają ją wszelkie zasilacze impulsowe jednak ma swoje zalety,
    w przeciwieństwie do sygnału czasu z GPS odbiór możliwy jest również wewnątrz budynków,
    jednorazowa synchronizacja zegara RTC w ciągu dnia czy też tygodnia jest zwykle wystarczająca do zachowania odpowiedniej dokładności.

    Do dekodowania sygnału DCF potrzebujemy wolnego wejścia przerwania np. INT0 oraz 8b timer T0 i zegar RTC zewnętrzny lub np. oparty o timer T2 który może współpracować z zewnętrznym rezonatorem "zegarkowym" 32.768kHz
    Timer T0 będzie służył do określania długości odstępów po między impulsami. W zależności od zaniku sygnału na 100ms lub 200ms interpretowane jest 0 lub 1.
    Wejście przerwania INT0 będzie służyć do odbierania sygnału DCF.
    Na początek krótka konfiguracja.

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Definiujemy globalną zmienną static unsigned char dcf_tick oraz static unsigned char dcf_count.
    Dla przerwania od timera T0 ustawiamy procedurę obsługi przerwania.
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Dla odbieranych danych definiujemy tabelę static unsigned char dcf_data[8];
    W tej tabeli będziemy wpisywać kolejne odebrane bity z sygnału DCF.
    Aby łatwiej operować na bitach odebranych z DCF warto przygotować kilka procedur pomocniczych.

    Kod: c
    Zaloguj się, aby zobaczyć kod


    W programie definiujemy również zmienne years,months,days,hours,minutes które będą przechowywać aktualne dane czasowe.

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Draft kodu zastosowania testowego dekodowania sygnału DCF:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Jeżeli chcesz zastosować powyższy przykład należy dostosować go do wersji wykorzystywanego mikroprocesora oraz doprowadzić kod do stanu produkcyjnego.
    Po synchronizacji czasu, można zablokować odbieranie sygnału DCF oraz pracę T0 na pewien czas aby zbędnie nie obsługiwać przerwań od INT0 oraz T0.
    W tak prosty sposób można uzyskać dekodować informacje czasowe zawarte w sygnale DCF77 oraz automatycznie synchronizować zegar RTC.
    W sygnale DCF77 przekazywane są również informacje o pogodzie tzw. METEOTIME, jednak ich rozdzielczość dla Polski jest mała,
    oraz przy dość dużych zakłóceniach sygnału odbiór utrudniony.
    Procedurę odbioru można dopasować do innej częstotliwości taktowania mikrokontrolera niż 8MHz, można zmieniać zarówno dzielnik dla timera T0,
    jak również wartości do wykrywania długości trwania impulsów w procedurze obsługi przerwania.
    W przypadku sprzętowego RTC aktualizacja czasu może polegać na zapisaniu wartości do odpowiednich rejestrów.
    Kolejną sprawą jest wskaźnik synchronizacji, można np. pokazywać jak dawno uzyskaliśmy synchronizację,
    na wskaźniku podobnym np. do wskaźnika zasięgu jak w telefonie komórkowym gdzie jedna kreska może oznaczać np. czas sześciu godzin.
    Poniżej film prezentujący działanie kodu do synchronizacji zegara RTC:

    0 22
  • Adex Agregaty
  • #2 03 Gru 2016 23:08
    dasej
    Poziom 29  

    Witam.

    Świetna sprawa. Tylko co mam zrobić jak nie mogę złapać sygnału DCF.
    To co można za parę groszy na allegro kupić przetestowałem i żadna "pierdółka" nie daje sygnał.

    Raz kiedyś udało mi się złapać sygnał w samym centrum pokoju i to tylko przez chwilę.
    Nie można kupić nic co by miało porządny wejściowy wzmacniacz.

    Może masz jakieś pomysł jak sobie z tym poradzić?

    0
  • #3 04 Gru 2016 00:31
    373522
    Użytkownik usunął konto  
  • #4 04 Gru 2016 11:18
    And!
    Admin grupy Projektowanie

    Zgadza się, sygnał najłatwiej odebrać po 23:00 i sukcesem do poprawnej synchronizacji jest RTC, który ciągle próbuje się synchronizować. Odbiór ramki raz na 1-2 dni pozwala na utrzymanie dokładności wskazań zegara.
    Bardzo duży wpływ na jakość odbioru ma prawidłowe ustawienie anteny względem źródła sygnału oraz oddalenie jej od lokalnych źródeł zakłóceń (zasilaczy, komputerów, telewizorów itp.). W praktyce warto podłączyć sam odbiornik do baterii, na wyjściu podłączyć LED i chodząc po pomieszczeniach poszukać optymalnej lokalizacji oraz ustawienia anteny (sygnał DCF jest tak powolny i charakterystyczny, że można go rozpoznań "okiem").
    Kolejna sprawa to oddalenie odbiornika na przewodzie od samego urządzenia, które analizuje sygnał DCF, to pozwala na zredukowanie zakłóceń oraz łatwe ustawienie małej obudowy z układem odbiornika.

    Poniżej wrzucam jeszcze dwa materiały ze wspomnianej strony, które mogą się przydać.

    Odbiornik DCF77 MAS6180B

    Ciekawą alternatywą dla znanego układu odbiornika U4221B jest układ MAS6180B.
    Układ może być zasilany napięciem 3.3V (1.1-3.6V) oraz pobiera prąd na poziomie kilkadziesiąt mikroamperów.
    Układ dostępny jest także jako gotowy moduł z rezonatorem kwarcowym oraz zestrojoną anteną.
    Dekodowanie sygnału DCF77 na ATmega.
    Odbiornik oparty o MAS6180B wykazuje większą czułość niż U4221B oraz można go stosować w energooszczędnych układach, mikroprocesorowych zasilanych napięciem 3.3V. Zasilanie warto doprowadzić do układu przez rezystor o wartości około 1kom, za którym warto umieścić kondensator o pojemności, około 100uF podłączony równolegle z zasilaniem płytki. Tego typu filtr RC poprawi stabilność działania układu. Wyjście sygnału z modułu należy odpowiednio wzmocnić oraz dostosować do poziomów napięć w układzie analizującym sygnał DCF.
    Dekodowanie sygnału DCF77 na ATmega.
    Układ jest dość czuły na zakłócenia pochodzące z pracujących układów cyfrowych, warto umieścić układ odbiornika w obudowie i połączyć z układem cyfrowym przewodem zasilającym i sygnałowym.

    Antena ferrytowa do odbiornika DCF77 na układzie U4221B

    Układ U4221B pozwala w prosty sposób na budowę odbiornika sygnału DCF77.
    Sygnał DCF77 transmitowany jest na częstotliwości 77,5Khz i zawiera informacje o aktualnej dacie i czasie.




    Sygnał transmitowany jest z mocą 50kW z terytorium Niemiec konkretnie z Mainflingen pod Frankfurtem.
    Transmisja jednej paczki informacji trwa minutę, odbiór utrudniają pracujące przetwornice impulsowe,
    oraz inne źródła fal radiowych z zakresu VLF np. kineskopy CRT. Zwykle w nocy zakłócenia są mniejsze i pozwalają na prawidłowy odbiór sygnału.
    Aplikacja układu U4221B jest bardzo prosta, krytycznym elementem jest antena ferrytowa.
    Dobrze sprawdza się antena nawinięta na pręcie ferrytowym o długości około 5cm oraz średnicy około 7mm,
    na papierowym korpusie umożliwiającym przesuwanie cewki na rdzeniu, należy nawinąć 80 zwojów drutem emaliowanym o średnicy 0.12-0.2mm. Cewkę należy nawinąć dwuwarstwowo po 2x40 zwojów z papierową przekładką po między warstwami.
    Dekodowanie sygnału DCF77 na ATmega.
    Pręt ferrytowy pochodzi z anteny ferrytowej odbiornika długofalowego.
    Liczbę AL tego rdzenia można szacować na ~0,038.
    Obwód uzyskuje rezonans równoległy dla częstotliwości 77.5KHz z kondensatorem 4.7nF-6.8nF.
    Dekodowanie sygnału DCF77 na ATmega.
    Strojenie anteny odbiornika można wykonać bezpośrednio przy użyciu sygnału DCF77 (najlepiej późno w nocy 1-3), podmieniając kondensatory oraz przesuwając cewkę na rdzeniu w poszukiwaniu sygnału.
    Obwód można wstępnie zestroić podłączając przez rezystancję 15-20Kom sygnał z generatora 77.5KHz.
    Generator może być zestawiony prowizorycznie nawet na bramce NAND lub NOT kontrolując ustawioną częstotliwość częstotliwościomierzem.
    Obwód należy stroić na maksymalną amplitudę przesuwając cewkę na rdzeniu przy kolejnych wartościach kondensatorów.
    Poziom sygnału na obwodzie można kontrolować oscyloskopem lub sondą w.cz.
    Wstępnie zestrojony obwód należy dostroić na prawdziwym sygnale DCF77 a następnie antenę zalać, parafiną lub klejem termicznym.

    0
  • Adex Agregaty
  • Pomocny post
    #6 04 Gru 2016 14:46
    tmf
    Moderator Mikrokontrolery Projektowanie

    U mnie (Katowice) z DCF77 nie ma problemu, oczywiście zdarza się, że przez jakiś czas nie działa, ale przecież nie musi - wystarczy że złapie sygnał od czasu do czasu. Z tego co zauważyłem, to strasznie przeszkadza w odbiorze DCF77 komputer. Kiedy miałem zasilane układy przez USB to generalnie był problem, gdy je zasilałem osobno - z sieci lub z baterii to problem znikał. Nawet podłączenie programatora do układu najwyraźniej powodowało przedostawanie się zakłóceń z kompa, utrudniających odbiór DCF.

    Przy okazji podzielę się kodem ze swoich książek obsługującym DCF:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Kod: c
    Zaloguj się, aby zobaczyć kod


    Kor testuje też poprawność odebranej ramki DCF. Jeśli ktoś chce, to łatwo można go użyć z time.h w celu normalnego dostępu do daty i czasu. Po przykłady wykorzystania odsyłam do darmowych przykładów do moich książek.

    0
  • #8 16 Lis 2017 10:06
    Soberro
    Poziom 4  

    Witam,
    chciałbym odświeżyć temat. Czy przy słabym sygnale powinienem odbierać jakieś dane, lecz mogą być błędne czy może nie otrzymam żadnego sygnału który wygenerowałby przerwanie?

    0
  • #9 16 Lis 2017 21:05
    And!
    Admin grupy Projektowanie

    Jeżeli sygnału całkiem brak to może tak być że sygnału na wyjściu odbiornika nie będzie,
    natomiast najczęściej odbierane są lokalne zakłócenia to na wyjściu pojawiają się przypadkowe impulsy o częstotliwości wyższej niż sygnał DCF,
    w skupiskach miejskich odbiór transmisji zwykle możliwy jest późno w nocy.

    0
  • #10 22 Lis 2017 11:10
    Soberro
    Poziom 4  

    No właśnie gdy mam podłączony uC do programatora to moduł zmienia stan na linii wyjściowej, czyli moduł działa. Zakłócenia są przechwytywane. Gdy podłącze płytkę do zasilania z sieci to nie otrzymuję nic. Nawet gdy antena jest zbliżona do programatora. Mieszkam w Andrychowie tj. jakieś 60km w linii prostej od Katowic. Tmf pisał, że w Katowicach nie ma on większego problemu z odbiorem. Między naszymi miastami jest znaczna różnica wysokości nad poziomem morza i moje miasto leży w dolinie. Antenę nakierowałem prosto na Mainflingen, może jest różnica kilku stopni odchylenia. Korzystam z Pana kodu i jestem wręcz pewny, że program działa prawidłowo, a problem leży w module. Czy da się jakoś zasymulować sygnał DCF nie musząc robić całego nadajnika?

    0
  • #11 22 Lis 2017 11:55
    And!
    Admin grupy Projektowanie

    Dziwi mnie ta sprawa że podłączenie do zasilacza "psuje" moduł. Można przetestować zasilanie bateryjne a później spróbować zasilić z zasilacza sieciowego i wprowadzić filtr RC w gałęzi zasilającej odbiornik DCF (odbiornik pobiera małą moc, więc spadek napięcia na rezystorze będzie niewielki).

    Można zasymulować DCF emulator sygnału DCF,
    ale na początek można wykorzystać nagrania sygnału DCF np. z 2005r
    https://www.cl.cam.ac.uk/~mgk25/time/lf-clocks/msf-leapsec2005-bfo.mp3
    https://www.cl.cam.ac.uk/~mgk25/time/lf-clocks/msf-leapsec2005.wav
    tutaj propozycja wytworzenia lokalnego sygnału DCF z wykorzystaniem wzmacniacza audio i głośnika wraz z dołączonym oprogramowaniem: software DCF generator.

    0
  • #12 28 Lis 2017 08:29
    Soberro
    Poziom 4  

    Nie udało mi się sprawdzić poprawności działania samego modułu dźwiękami(zawsze były słyszalne a z tego co rozumiem mają nie być słyszalne). Podpiąłem do płytki DISCOVERY i napisałem szybko coś co by mi zasymulowało sygnał DCF(konkretnie odpowiednio ustawione stany wysokie i niskie). No i program działa. Data i godzina aktualizują się. Może jest to kwestia czułości odbiornika? Na płytce są trzy miejsca na dolutowanie zapewne kondensatorów. Pytanie jakich.

    0
  • #13 28 Lis 2017 19:07
    And!
    Admin grupy Projektowanie
  • #14 29 Lis 2017 09:42
    Soberro
    Poziom 4  

    No i tu się zaczynają schody. Dostałem moduł jak na zdjęciu poniżej. Niestety posiadam jedną sztukę. Nie mam do niej ani schematu ani nic. Jedyne co mi się o niej udało znaleźć to układ pinów.
    Dekodowanie sygnału DCF77 na ATmega.
    Na płytce jest symbol GE10-581(R6). Sam układ jest pokryty tym czarnym czymś. Nie brałem się na razie za ściąganie tego ponieważ nie chciałem uszkodzić układu. Jest opcja bezpiecznego ściągnięcia tego?

    0
  • #15 29 Lis 2017 10:31
    es2
    Poziom 15  

    Soberro napisał:
    Jest opcja bezpiecznego ściągnięcia tego?

    Tak, tylko po co?

    0
  • #16 29 Lis 2017 10:32
    Soberro
    Poziom 4  

    Żeby się dowiedzieć jaki układ się tam znajduję. Może łatwiej by było znaleźć noty do samego układu.

    0
  • #17 29 Lis 2017 10:34
    es2
    Poziom 15  

    Soberro napisał:
    Żeby się dowiedzieć jaki układ się tam znajduję. Może łatwiej by było znaleźć noty do samego układu.

    Zobaczysz strukturę układu i co dalej?

    0
  • #18 29 Lis 2017 10:39
    Soberro
    Poziom 4  

    Może będą podane jakieś parametry lub opis ustawienia czułości czy czegoś. Nie wiem. Chyba lepiej wiedzieć co się tam dzieje. Albo dlaczego nie dzieje się to co powinno. Nie mam innego pomysłu więc staram się robić to co sugerują Panowie. Wciąż jestem początkujący więc robię co mogę :)

    0
  • #19 29 Lis 2017 10:45
    es2
    Poziom 15  

    Soberro napisał:
    Może będą podane jakieś parametry lub opis ustawienia czułości czy czegoś. Nie wiem. Chyba lepiej wiedzieć co się tam dzieje.

    Pomijając koszt sprzętu do inżynierii wstecznej, to:
    - mamy strukturę układu, jednej warstwy, robimy foto, moze sie zmieści w pokoju
    - zdejmujemy warstwę, znów foto itd
    - zabieramy sie za analizę, odnajdujemy elementy (pojedyńcze tranzystory, diody), na podstawie ich wygladu określamy parametry
    - po np miesiącu pracy zespołu ludzi, z których każdy kasuje 10kzł, mamy schemat układu.

    Tenn układ, to pewnie demodulator AM, pytanie, czy aby sie tego dowiedziec warto wydawać kupę kasy?

    0
  • #20 29 Lis 2017 11:16
    tmf
    Moderator Mikrokontrolery Projektowanie

    Soberro napisał:
    Może będą podane jakieś parametry lub opis ustawienia czułości czy czegoś. Nie wiem. Chyba lepiej wiedzieć co się tam dzieje. Albo dlaczego nie dzieje się to co powinno. Nie mam innego pomysłu więc staram się robić to co sugerują Panowie. Wciąż jestem początkujący więc robię co mogę :)


    Pod tą żywicą jest goła struktura scalona, nie znajdziesz tam klasycznego układu scalonego, ta żywica spełnia funkcję obudowy scalaka. Po jej zniszczeniu możesz cały moduł wyrzucić do kosza. Najprościej poszukać zdjęć innych modułów DCF i porównać do twojego, znajdując pewne podobieństwa. Zapewne masz tam GND, Vcc, wyjście sygnału i wejście enable usypiające układ. Zasilanie możesz zidentyfikować po ścieżkach i elementach dodatkowych. Potem co jest wejściem a co wyjściem zidentyfikujesz bez problemu.

    0
  • #21 29 Lis 2017 14:46
    Soberro
    Poziom 4  

    Udało się znaleźć coś więcej na temat tego modułu. Oparty jest na układzie MAS6180B tak jak w temacie. Zrobiłem także filtr identyczny do tego przedstawionego przez And! i chyba udało się złapać jakiś sygnał przypominający DCF77. Niestety otrzymałem tylko 5 impulsów. Teraz pozostaje mi cierpliwie czekać aż przyjdzie noc i liczyć na to że zostanie odebrana pełna ramka.

    0
  • #22 29 Lis 2017 16:54
    michalko12
    Specjalista - Mikrokontrolery

    Soberro napisał:
    Oparty jest na układzie MAS6180B tak jak w temacie.

    MAS6180 pierwotnie był produkowany jako MAS9180, ale z tym drugim producent miał jakieś problemy. Sporo sztuk w partiach potrafiło mieć złą czułość. Sytuacja poprawiła się dopiero po zmianie wytwórcy struktur krzemowych (sam Mas-oy jest fabless). Jeśli to jest jakiś starszy odbiornik to może być jakieś prawdopodobieństwo, że może to być układ MAS9180.

    0
  • #23 26 Lut 2018 22:15
    Tomen13
    Poziom 11  

    Witam.... W Andrychowie sygnał DCF ostatnio się pogorszył ale i tak w nocy można go złapać bez problemu. Jeżeli nie pojawia się prawidłowa ramka to można spróbować wymienić kwarc. Kiedyś w odbiorniku z North po kilku miesiącach użytkowania padł właśnie kwarc 77,5kHz.

    0