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

Zegar LED z DCF77 i termometrem

Michuza 07 Lis 2010 23:12 17856 16
  • 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.


    Fajne!
  • #2 08 Lis 2010 01:24
    skynet_2
    Poziom 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 08 Lis 2010 06:33
    Michuza
    Poziom 12  

    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 08 Lis 2010 08:49
    slawek55
    Poziom 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 08 Lis 2010 13:34
    Michuza
    Poziom 12  

    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 08 Lis 2010 19:04
    11111olo
    Poziom 43  

    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 08 Lis 2010 20:05
    Michuza
    Poziom 12  

    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 08 Lis 2010 21:05
    11111olo
    Poziom 43  

    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 08 Lis 2010 21:17
    leo1
    Poziom 14  

    Witam. Jaką wielkość (wysokość) mają te wyświetlacze?

  • #10 08 Lis 2010 21:43
    Michuza
    Poziom 12  

    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 08 Lis 2010 21:49
    11111olo
    Poziom 43  

    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 11 Lis 2010 15:35
    22053
    Użytkownik usunął konto  
  • #13 24 Gru 2010 11:00
    Andrzej L.
    Poziom 26  

    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 24 Gru 2010 18:54
    Michuza
    Poziom 12  

    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 25 Gru 2010 12:33
    asembler
    Poziom 32  

    11111olo napisał:
    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 29 Sie 2014 09:01
    Michuza
    Poziom 12  

    G.R. napisał:
    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.