Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Zegar LED z DCF77 i termometrem

Michuza 07 Nov 2010 23:12 20901 20
  • Zegar LED z DCF77 i termometrem

    Witam, własną konstrukcję prezentuje na elektrodzie po raz pierwszy, jestem otwarty na wasze opinie, pomysł na konstrukcję miałem już dawno temu, kupiłem wyświetlacze, jeszcze w szkole zrobiłem płytkę pod wyświetlacz (co zresztą widać) ale późnej zabrakło i wiedzy i chęci. No i ostatnio zafascynowany dodatkowo DCF-em zdecydowałem się ruszyć projekt.

    Zaznaczę na samym początku że z robieniem płytek jestem na do tyłu, wiem że u niektórych plątanina kabli na płytce uniwersalnej budzi odrazę.

    Część elektroniczna
    W schemacie nie ma żadnych ciekawostek, jedynie do multipleksowania użyłem licznika 4017 który załącza tranzystory kolejnych wyświetlaczy. Licznikowi zapodaje sygnał zegarowy i sygnał resetu żeby powrócił do pierwszego wyświetlacza. Licznik mysi być resetowany przez uC ponieważ gry resetował się sam były problemy z kolejnością liczb. Sygnał resetu musiałem też wydłużyć do 3us bo na krótsze impulsy nie reagował. Z sygnałem zegarowym nie ma takich problemów.

    Reszta standardowa, atmega8 z kwarcem zewnętrznym 8MHz, do liczenia czasu użyłem PCF8583, komunikacja za pomocą TWI(sprzętowy odpowiednik I2C). Odczytuje tylko samą godzinę bo daty nie miał bym nawet jak wyświetlić.
    Jeżeli chodzi o pomiar temperatury to robi to DS1820. Musiałem go umieścić na zewnątrz obudowy bo w środku temperatura wyższa o ok 1-2 stopnie (ciepło z transformatora i stabilizatorów.

    Odbiornik DCF77 zrobiłem na układzie u4224b który przez zupełny przypadek znalazłem na serwisie aukcyjnym, przeglądałem sobie aukcje z mojego miasta :)
    Rdzeń ferrytowy ze starego radia. Antenę stroiłem na czuja ale działa i synchronizuje się. Niestety wystarczy włączony komputer czy nawet bliskość (do 10cm) mojego zegara i koniec.

    Jasność wyświetlacze reguluje za pomocą PWM. Przetwornik ADC mierzy napięcie na fotorezystorze, korzystam tylko z 8 starszych bitów wyniku i wpisuje je jako wartość PWM.

    Obudowa:
    Z obudową zawsze jest problem, zdecydowałem się za obudowę z radio-budzika, dokładność pomiaru czasu pozostawiała wiele do życzenia a wyświetlacz w dzień świecił za słabo a w nocy za jasno :/

    Program:
    Jeżeli chodzi o program to jest napisany w C. Początkowo pisałem go w BASCOM bo było łatwiej (oczywiście tylko pozornie). Jak już miałem napisane 3/4 program zajmował ponad połowę procka i zaczynał żyć własnym życiem. Z nauką C zwlekałem od pewnego czasu ale tu mnie wyraźnie przycisnęło. Dwa wieczory z kursem z EDW i miałem już takie ogólne pojęcie.
    Większośc funkcji jest w przerwaniach, w pętli głównej siedzi jedynie odczyt i zapis przez TWI bo on ma pętle czekające na ustawienie bitu.

    T0 odpowiada za multipleksowanie, T1 za PWM, T2 odczyt klawiszy i pomocnicze liczniki, dochodzi jeszcze przerwanie od ADC i zawnętrzne INT0 od DCF77.

    Zegar LED z DCF77 i termometrem Zegar LED z DCF77 i termometrem Zegar LED z DCF77 i termometrem
    Zegar LED z DCF77 i termometrem Zegar LED z DCF77 i termometrem Zegar LED z DCF77 i termometrem Zegar LED z DCF77 i termometrem

    Całość dokumentacji oczywiście udostępniam.
    Aha jeżeli chodzi o koszt wykonania to całości nie liczyłem. Pamiętam że za wyświetlacze zapłaciłem ok 22zł, u2442b kosztował mnie 10zł, reszta to zapasy.

    Uwaga, projekt zawiera błędy.
    Brak rezystorów podciągających I2C.
    Problemy z nazwami niektórych rejestrów.
    Problem z odbiorem/dekodowaniem DCF.

    Cool? Ranking DIY
    About Author
    Michuza
    Level 14  
    Offline 
    Michuza wrote 135 posts with rating 94, helped 5 times. Live in city Toruń. Been with us since 2004 year.
  • #2
    skynet_2
    Level 26  
    Wreszcie jakaś konstrukcja która po prostu działa, bez żadnych mrugających niebieskich bajerów, gratuluje :)

    Fajnie że program w C, w przerwaniu T0 można by spróbować zastąpić tego okropnego switch'a pętlą for i tablicą zawierającą definicję segmentów.
  • #3
    Michuza
    Level 14  
    Dzięki, wyświetlacz jest porozrzucany na wielu portach ponieważ nie miałem wolnego całego portu (W porcie PC jest ADC i TWI, w PB PWM a PD INTO).
    Jako że cały czas poznaje C to na bieżąco wprowadzam jakieś drobne poprawki.
    Jakby kogoś interesowało kod zajmuje 23% uC.
  • #4
    slawek55
    Level 23  
    Możesz mi powiedziec jak odbierasz sygnał DCF77.
    Mam taki sam odbiornik tzn na tym samym układzie i jak dotąd nie udało mi sie złapać tego sygnału? I za bardo nie wiem co mam z tym zrobić?
  • #5
    Michuza
    Level 14  
    Odbiornik DCF robiłem tak trochę metodą prób i błędów. Link jest trochę przydatnych informacji.
    Ja na ferryt nałożyłem kawałek kartki papieru, zawinąłem i skleiłem tak żeby się mogła swobodnie poruszać. Nawinąłem ok 80 zwoi (drut w emalii z cewki przekaźnika). Podłączasz równolegle kondensator ok 5,6nF i do tego oscyloskop. Na generatorze ustawiłem ok 77.5kHz, nie mam super generatora to częstotliwość trochę pływała. Wtedy na oscyloskopie patrzysz kiedy osiągasz największą amplitudę, próbujesz najpierw dobrać kondensator a potem z pozycją cewki. Jak skończysz wtedy antenę łączysz z układem. Antenę ustawiasz prostopadle do nadajnika (u nas mniej więcej na zachód).

    Jeżeli masz odbiór i dioda ci miga co sekundę to ewentualne korekty robisz pozycją cewki.

    Ja u siebie mogę cokolwiek odebrać jedynie wieczorem i przy wyłączonym komputerze. Odbiornik trzeba też odsunąć przynajmniej 20cm od wszelkich zasilaczy, transformatorów. Co ciekawe u mnie lepiej odbiera wewnątrz mieszkania niż za oknem.

    Dekodowanie to już inna bajka.
  • #6
    11111olo
    Level 42  
    Projekt estetycznie wykonany jednak ekonomia jest na fatalnym poziomie. Jeśli program zajmuje około 23% to bez problemu po optymalizacji zmieścił by się w ATTiny2313. Dodatkowo licznik dziesiętny 4017 można by pominąć, a sterownie wejść RESET i CLOCK przez tranzystory to już nieporozumienie.
    I po co bufor IC5?
  • #7
    Michuza
    Level 14  
    Pod względem wielkości programu ATTiny2313 rzeczywiście by wystarczył ale musiał bym dołożyć jakiś ekspander (np PCF8574) bo brakło by portów. Licznik 4017 pracuje na 12V a uC na 5V dlatego dałem tranzystory.
    Z bufora mógłbym jednak zrezygnować. Teraz patrze że zmieścił bym się w maksymalnym obciążeniu portów i całego procka.
  • #8
    11111olo
    Level 42  
    4017 równie dobrze pracuje na +5V więc tranzystory są zbędne. Dodatkowo resetowanie 4017 też gdyż wystarczy wyjście Q4 dołączyć przez diodę do RST oraz dodać auto reset 4017 przez kondensator i rezystor.
  • #9
    leo1
    Level 14  
    Witam. Jaką wielkość (wysokość) mają te wyświetlacze?
  • #10
    Michuza
    Level 14  
    Cała część odpowiedzialna za sterowanie wyświetlaczem jest zasilana z 12V(spadki napięcia na wyświetlaczu i tranzystorach), dało by się na 9V ale rezystory na wyświetlacz wyszły by ok 10 - 20 Ohm. W każdym segmencie siedzą dwie diody, a darlingtony dałem dlatego bo na zwykłym bc547 spadek napięcia mocno zależał od prądu (np. przy zapalonym jednym segmencie jasność była inna niż przy zapalonych wszystkich). Jak strzeliłem jakiegoś błęda to mnie poprawcie.

    Na początku 4017 był resetowany z Q4 ale wystarczył jakikolwiek reset procka (czy to podczas programowania czy watchdog) i już gubił kolejność liczb.

    leo1 wysokość znaku 38mm
  • #11
    11111olo
    Level 42  
    Jakie znowu spadki?
    Przecież zielony led potrzebuje do zaświecenia kosmicznie wielkiej wartości napięcia bo aż 3V więc w 5V się nie mieści, a na poważnie to wystarczą 4 tranzystory do sterowania anodami (katodami) wyświetlaczy i 8 rezystorów ograniczających prąd - zwykle 47-100R.
  • #12
    Anonymous
    Anonymous  
  • #13
    Andrzej L.
    Level 31  
    Na schemacie https://obrazki.elektroda.pl/74_1289167323.png w obwodzie anteny ferrytowej wskazane by było poprawić pojemność równoległą 78pF na wartość w nanoFaradach 2,2nF-6,8nF w zależności od użytej anteny ferrytowej.
    Na jakiej zasadzie w tym programie składana jest informacja o czasie z odbiornika DCF?
    Wymagana jest pełna niezakłócona minuta transmisji od 00 do 59 sek? Czy raczej jest to bardziej inteligentny program, który po ustaleniu, która sekunda jest tą 00 złoży sobie kompletną informację ze szczątków pociętej transmisji w kilka minut?
    Co do konstrukcji odbiornika DCF czy przeprowadzałeś testy jak wypada dwukwarcowa kostka U4224B względem niby prostszego układu z jednym kwarcem U4221B. Bo może to tylko pięknie wygląda w notach katalogowych a w praktyce efekt w odbiorze na terenie Polski będzie porównywalny? I niewarta skórka za wyprawkę używając wersji niby bardziej rozbudowanej na U4224B?
    Obecnie używam jednokwarcowej U4221B i zastanawiam się czy jest jakaś różnica zauważalna w selektywności i odporności na śmieci U4224B względem U4221B?
    Natknąłem się na ciekawe rozwiązanie konstrukcji odbiornika DCF poprawiające odporność na zakłócenia. Trzeba by było dotrzeć do autora tej konstrukcji odbiornika i ustalić na jakiej kości jest on zrobiony.
    Pierwsze oględziny zdjęcia wskazują, że antena ferrytowa umieszczona jest w mosiężnej rurce - pewnie chodzi o wytłumienie pobliskich zakłóceń i w związku z tym także (niestety) osłabienie sygnału użytecznego - ale mimo to w efekcie końcowym możliwość poprawy odbioru DCF-a przez znaczne stłumienie śmieci lokalnych.
    Swego czasu widziałem antenę z fabrycznego odbiornika częstotliwości wzorcowej Warszawa 1 na 225kHz (to był produkt z gatunku Zopan lub Meratronik) gdzie antena ferrytowa - duża fi 10mm, długość około 15cm była zamknięta w aluminiową rurkę o średnicy około 4cm. Rurka miała jedno podłużne nacięcie na całej swojej długości, równoległe do pręta ferrytowego. Szerokość nacięcia-szczeliny kilka mm.
    Czyli sygnał "wpływał" do anteny tą podłużną szczeliną tylko od "przodu". Szczeliną skierowaną prostopadle w kierunku sygnału użytecznego. Rurka na obu końcach miała metalowe korki więc wszelkie zakłócenia z "boku" i z "tyłu" względem użytecznej "wpływowej" szczeliny były maksymalnie tłumione. W tej aluminiowej rurce był utworzony gotowy obwód rezonansowy: antena ferrytowa + równoległa pojemność + separator na tranzystorze.
    Rurka była mocowana na metalowym wysięgniku koło 1,5m tak aby można było go umieścić w najbardziej korzystnym miejscu co do jakości odbioru sygnału.
    Na rurce było zakręcone wyjściowe gniazdo BNC, do którego przyłączało się kilkumetrowy przewód koncentryczny i sygnał był przesyłany do właściwego odbiornika. Dzięki temu antena była odsunięta od wszelkich możliwych zakłóceń. Może warto by było spróbować zrobić coś takiego w odbiorniku DCF.
    Zastanawiam się jeszcze nad dodaniem w takim przypadku na samym wejściu antenowym kostki równoległego obwodu rezonansowego 7x7 - lub nawet podwójnego obwodu ze sprzężeniem magnetycznym. Czyli w miejscu obecnej anteny równoległy obwód rezonansowy LC 77,5kHz, który będzie przejmował i dodatkowo filtrował dosyłany koncentrykiem - z podwójnym ekranem - sygnał z anteny. Odfiltrowanie ze względu na potężną czułość samego odbiornika - kilka uV.
    Sama antena ferrytowa nie ma na tyle potężnej selektywności i w związku z tym możliwość szybkiego "zatkania" obwodów wejściowych U4224B silnymi lokalnymi sygnałami zakłócającymi, których amplituda jest dużo większa niż nasz oczekiwany 77,5kHz.
    Z tego co słyszałem taki właśnie efekt występuje w okolicach Solca Kujawskiego gdzie nadajnik 225kHz skutecznie zatyka odbiornik DCF z tylko jednym obwodem równoległym LC w postaci samej anteny ferrytowej.
    Na nic filtry kwarcowe wtedy skoro samo wejście odbiornika - jeszcze przed szeregowymi filtrami kwarcowymi - zostało zatkane tutaj sygnałem zakłócającym radiostacji długofalowej Warszawa 1 na 225kHz. Wtedy taki mocny lokalnie sygnał 225kHz jest traktowany błędnie przez odbiornik DCF jako niby sygnał użyteczny (bo sama antena ferrytowa nie będzie w stanie porządnie go stłumić dostrojona do oczekiwanego 77,5kHz) i tor ARW odbiornika błędnie zjeżdża ze wzmocnieniem i nie jest już możliwe odebranie DCF, bo odbiornik zagłuszony - dioda nawet nie mignie, odbiór martwy. Podobnie zapewne sprawa się ma gdy w okolicy śmieci nam pełno zasilaczy impulsowych, urządzeń AGD, szczotek silników. Odbiornik dostaje wiązankę śmieci i cała automatyka odbiornika głupieje i zamiast pięknych pików 100 i 200ms obserwowanych na diodzie świecącej w odbiorniku mamy kolorofon ;)
  • #14
    Michuza
    Level 14  
    Rzeczywiście powinno być 7,8nF. Przy dekodowaniu sprawdzam bity kontrolne 28 i 35, daty nie pobieram więc nie sprawdzam bitu 58. Na koniec sprawdzam tylko czy minuty są mniejsze od 60 a godziny od 24 i tyle.
    Nie sprawdzam też czy dwie kolejne ramki różnią się o minutę bo to jeszcze bardziej ograniczyło by możliwość synchronizacji.
    Nie testowałem wersji U4221B więc nie mam porównania. Może kiedyś przy jakieś okazji zamówię sobie ta kostkę i sprawdzę. A co do zakłóceń to zauważyłem że zwykłe transformatory sieciowe w odległości ok 15 cm zagłuszały, ba zagłuszał sam mój zegar, multipleksowanie albo PWM.
  • #15
    asembler
    Level 32  
    11111olo wrote:
    Jakie znowu spadki?
    Przecież zielony led potrzebuje do zaświecenia kosmicznie wielkiej wartości napięcia bo aż 3V więc w 5V się nie mieści, a na poważnie to wystarczą 4 tranzystory do sterowania anodami (katodami) wyświetlaczy i 8 rezystorów ograniczających prąd - zwykle 47-100R.


    Jeden zielony racja ale dwa zielone szeregowo to już ok 4.8V więc sie nie miesci w 5V.
  • #17
    Michuza
    Level 14  
    G.R. wrote:
    A mógłbyś udostępnić gotowy wsad do procesora ?

    W załączniku jest cały kod w C.

    U siebie na komputerze mam już całkiem inną wersję ponieważ sam projekt przerabiałem.
  • #18
    dacman
    Level 1  
    HI,
    congratulation for your project !

    I'm interested but, how to compile the
    source code, or it's possible to send the
    HEX file for direct programming the MCU ?

    Thank you in advance,
    Jose
  • #19
    piwowar
    Level 12  
    Czy ktoś zbudował ten zegar?? Schemat już na pierwszy rzut oka posiada błędy, brak rezystorów podciągających na szynach SDA i SCL, zasilanie 4017 ma być 5V ,urządzenie z tego schematu nie ma prawa pracować,po usunięciu w/m błędów pracuje z tym że nie ma synchr z DCF,po kontakcie z Autorem projektu (i tu byłem bardzo mile zaskoczony)przyznał iż to jest stara wersja ,nadesłał mi pliki nowej wersji źródłowe i hex , nie informując mnie iż w nowej wersji układ ULN 2803 jest niepotrzebny ,ale to opanowałem,w nowej wersji nie ma termometru, zegar pracuje, ale tylko z PCF8583 dalej nie ma synchronizacji z DCF ,uważam iż jest to błąd w programie .Z odbiorem DCF nie mam żadnych problemów na innych urządzeniach,oprócz tego posiadam emulator sygnału DCF .Projekt uważam za jedyny w swoim rodzaju ,jest to projekt który posiada PCF8583 (BATERIA) i DCF jest super jako projekt.Zainteresowanym odpowiem jak usunąć błędy na schemacie
  • #20
    Michuza
    Level 14  
    Dodałem do pierwszego postu adnotację o błędach.

    Niestety 11 lat temu zaczynałem przygodę z uC, schemat oraz kod pozostawiają wiele do życzenia.
    Usuwałem pomiar temperatury (nie był mi potrzebny), dekodowanie DCF też zmieniałem.

    Jeżeli znajdę motywację do poprawy kodu to umieszczę go tu.
  • #21
    Zbig63
    Level 14  
    Andrzej L. wrote:
    (...) antena ferrytowa - duża fi 10mm, długość około 15cm była zamknięta w aluminiową rurkę o średnicy około 4cm. Rurka miała jedno podłużne nacięcie na całej swojej długości, równoległe do pręta ferrytowego. Szerokość nacięcia-szczeliny kilka mm.
    Czyli sygnał "wpływał" do anteny tą podłużną szczeliną tylko od "przodu". Szczeliną skierowaną prostopadle w kierunku sygnału użytecznego. Rurka na obu końcach miała metalowe korki więc wszelkie zakłócenia z "boku" i z "tyłu" względem użytecznej "wpływowej" szczeliny były maksymalnie tłumione.


    :not: :not: :not:

    Antena na rdzeniu ferrytowym to antena o sprzężeniu magnetycznym, więc odbiera tylko zmienne pole magnetyczne, dla którego aluminium nie stanowi żadnej przeszkody. Przecięcie wzdłuż rurki jest tylko i wyłącznie po to, aby nie było zwartego zwoju. A cała ta rurka jest po to, aby zaekranować antenę od zakłócających pól elektrycznych.