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

Kolejny zegarek LED na AtMega8, ale dokładny

Mis 20 Gru 2007 02:24 191432 343
  • Kolejny zegarek LED na AtMega8, ale dokładny
    Witam wszystkich serdecznie !
    Oto kolejny zegarek z wyświetlaczami LED oparty na ATmega8. Znowu ?? Tak, a czemu nie. Konstrukcja powstała jako odpowiedź na zapotrzebowanie na naścienny zegarek z dużymi cyframi widoczny w nocy. Wymiary całości to 180x70x18mm.

    Zegarek wyświetla tylko godziny i minuty, mruga dwukropkiem oraz posiada automatyczną regulację jasności świecenia w zależności od oświetlenia - czym jaśniej na zewnątrz tym jaśniej świeci. Dodatkowo posiada programową korekcję dokładności wskazań. Wystarczy najpierw ustawić korekcję na 0, oraz ustawić dokładnie czas (np według DCF'a) a potem zostawić go w spokoju na tydzień i porównać odchyłkę z DCF'em. Potem bierzemy w dłoń kalkulator i liczymy... Wartość korekcji to interwał
    pomiędzy kolejnymi przyspieszeniem lub opóźnieniem zegara o 1 sekundę mierzony w okresach 10 minutowych. Zakręcone, nie ?
    Ale wcale nie aż tak bardzo, bo liczymy to tak: przyjmijmy że po równo tygodniu zegarek spóźni się o 1 minutę i 2 sekundy. Więc liczymy:
    7 dni * 24 godziny * 6 dziesieciominutówek to daje 1008. Teraz dzielimy te 1008 przez 62 (1 minuta i 2 sekuny to razem 62 sekundy).
    Otrzymujemy 16 z hakiem, po zaokrągleniu 16. I właśnie te 16 ustawiamy jako wartość poprawki. Koniec kropka, ustawiamy jeszcze raz dokładny czas i chodzi idealnie. Jeżeli zamiast się późnić, zegarek by śpieszył, to ustawiamy poprawkę ujemną, czyli np -16.
    Aby wejść w tryb wpisywania poprawki należy wyłączyć zasilanie, nacisnąć oba przyciski na raz i trzymając włączyć zasilanie. Na wyświetlaczu pojawi się "corr", puszczamy klawisze i ustawiamy poprawkę (hour zmniejsza wartość, min zwiększa). Po 10 sekundach od ostatniego naciśniecia klawisza zegarek zapamiętuje poprawkę i wraca do normalnej pracy. Aha, WAŻNE ! poprawka jest zapisywana w eepromie, więc po każdym programowaniu proca ustawia się na -1. Więc nie zapomnijmy po zaprogramowaniu procka ustawić ją na 0 lub na wyliczoną wartość.

    Oto wygląd od środka:
    Kolejny zegarek LED na AtMega8, ale dokładny
    Jako wyświetlaczy użyłem cyfr o wielkości 1,8'' czyli 46mm - dość spore. Wyświetlacze są w miarę tanie, bo po około 2.70zł / szt, a do tego bardzo jasne, uzupełnione w dwie diody świecące o średnicy 8mm jako dwukropek. Jako że użyte wyświetlacze mają spadek napięcia na poziomie 4V, wykorzystałem prosty sposób na niewielkie podbicie zasilania poprzez dodatkową diodę przy stabilizatorze 7805. Jako zasilanie awaryjne użyto kondensatora GoldCap o pojemności 0,22F podtrzymującego zasilanie procesora w przypadku zaniku zasilania sieciowego. Reszta układu jest odcięta przez diodę schottkiego 1N5817 (lub 1N5819).




    Sygnał podany na pin PC1 procka informuje go o obecności lub braku zasilania sieciowego co skutkuje wyłączeniem wszystkich zbędnych układów, i jedynie realizację odliczania czasu. W tym stanie proc pobiera tylko 15uA, a więc taki GoldCap wystarcza na kilka-kilkanaście godzin pracy bez zasilania sieciowego (6 godzin sprawdzone). Procesor pracuje z wewnętrznego generatora RC ustawionego na 2MHz, a zegarkowy kwarc 32,768KHz przypięty do pinów OSC1 i OSC2 napędza Timer2 w trybie asynchronicznym który generuje przerwania równo co sekundę. Po resecie procesora (pierwsze uruchomienie, lub zbyt długi zanik zasilania) zegar pokazuje "--:--" do momentu ustawienia czasu.
    Do portu PC0 (ADC0) przyłączony jest dzielnik napięcia z fotorezystorem, a wewnętrzny przetwornik A/D mierzy napięcie z tego dzielnika i odpowiednio dostosowuje jasność świecenia wyświetlaczy wykorzystując programowy PWM robiony przy okazji multipleksowania wyświetlaczy. Fotorezystor podpięty jest do zasilania +5,6V aby dzielnik nie pobierał prądu z kondensatora backup w przypadku zaniku zasilania. Kondensator 100n przyłączony do nogi RESET zwieksza odporność procka na zakłócenia, czyli przypadkowe resety. Zamiast tranzystorów w SMD (BC807) można zastosować BC327 (0.8A 50V).
    Całość zasilana jest z impulsowej ładowarki do telefonów Nokia. Daje ona około 9V i jest wręcz idealna do tego celu. Dławik 10uH na wejściu można pominąć, ale zmniejsza on zakłócenia emitowane po kablu z zasilacza.
    Złącze PROG służy do zaprogramowania procka i jest w standardzie programatora STK200.
    Oprogramowanie jest napisane w C z wykorzystaniem darmowego kompilatora GCC w wersji 3.4.5. Wyjścia na katody wyświetlacza są pomieszane ze względu na prostsze połączenia wyświetlacza z prockiem. Można to oczywiście zmienić w kodzie źródłowym.
    Oto schemat:
    Kolejny zegarek LED na AtMega8, ale dokładny
    Tu jest wsad do procka oraz źródła softu dla fanatyków dłubania :D


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • TermoPasty.pl
  • #2 20 Gru 2007 07:18
    bobo
    Poziom 29  

    Mis napisał:

    Jako wyświetlaczy użyłem cyfr o wielkości 1,8'' czyli 46mm - dość spore. Wyświetlacze są w miarę tanie, bo po około 2.70zł / szt,


    Czy to nie pomyłka?

    Pozdrówka

  • #3 20 Gru 2007 07:36
    marfet
    Poziom 12  

    Z czego zrobiony jest filtr (szybka) na wyświetlacze?
    Wszędzie szukam i nigdzie nie mogę dostać ciemnej plexi, wydaje się ze najtańszym rozwiązaniem jest przezroczysta plexi z naklejoną folią do przyciemniania szyb.
    Jestem ciekaw jak Ty to zrealizowałeś.

    pozdrawiam

  • #4 20 Gru 2007 08:25
    Suiezzak
    Poziom 11  

    Witam.
    Bardzo dokładny opis, dla osób zaczynających przygodę z elektroniką( tak jak ja) wręcz niezastąpione źródło wiedzy. Mam to samo pytanie co kolega marfet o filtr/szybkę do wyświetlaczy.

    Pozdrawiam,
    Suiezzak

  • TermoPasty.pl
  • #5 20 Gru 2007 08:48
    Hansol2_pl
    Poziom 20  

    Bardzo ladne wykonanie a czy ta szybka to nie jest filtr od maski spawalniczej? :)

  • #6 20 Gru 2007 09:43
    MlodyVFR
    Poziom 11  

    konstrukcja spoko, nie kumam was z tym filtrem. u mnie w gdansku taki filtr czerwony dostaje sie od reki, sa jeszcze rozne odcienie (kwestia producenta).

  • #7 20 Gru 2007 10:16
    karola44-81
    Poziom 27  

    Co do filtra to mozna w kazdym papierniczym dostac folie w roznych kolorach transparetne. Pod szybke wlozyc taka folie i juz jest piekny filtr. Kiedys tak robilem

  • #8 20 Gru 2007 11:28
    smirgol
    Poziom 14  

    Na filtr można też użyć ciemnej szyby - nagrobkowej. Sam zastosowałem taką w moim zegarku. Zapłaciłem za nią 5 zł :D . Efekt extra.

  • #9 20 Gru 2007 13:25
    Mis
    Poziom 14  

    Co do wyświetlaczy i ich ceny to wcale nie jest pomyłka. Firma Maritex z Gdyni ma takowe w swojej ofercie i po 2,70zł/szt.
    Przedni filtr zrobiłem z dymnej plexi o grubości 2mm. U mnie w Bytomiu jest zakład produkujący plexi, więc kupiłem u nich odpadki za parę groszy. Nawet polerować nie musiałem bo była idealna, bez rys. Wydaje mi się że folia do przyciemniania szyb samochodowych też powinna być OK.

  • #10 20 Gru 2007 13:29
    Stipe77
    Poziom 12  

    Czerwone filtry są do kitu bo widać przez nie nie świecące pola. Ja do tego używam pleksi bezbarwnej z naklejoną folią do przyciemniania szyb w autach i wygląda to b. dobrze

  • #11 20 Gru 2007 14:45
    avatar80
    Poziom 11  

    Witam. Swego czasu, a było to kilka lat temu poskładałem zegarek z telexpresu. Do przykrycia wyświetlaczy użyłem tapety samoprzylepnej białej, z wzorkiem marmuru. Efekt jest wyśmienity. Niema żadnej poświaty, widać ostre krawędzie wyświetlaczy. Co do koloru i wzoru tapety nie ma żadnej reguły. Użyłem takiej, gdyż takową miałem pod ręką.
    Pozdrawiam

  • #12 20 Gru 2007 15:20
    Duch__
    Poziom 31  

    Czy błąd odmierzania czasu który korygujesz programowo nie jest spowodowany brakiem kondensatorów przy kwarcu zegarkowym 32768 kHz?? Ogólnie ładnie Ci to wyszło. Pozdrawiam.

  • #13 20 Gru 2007 16:06
    Jarema
    Użytkownik obserwowany

    Siema,
    Moje gratulacje :D
    Po raz pierwszy chyba widzę na forum projekt zegara bez PCF'a i na dodatek nie napisany w bascomie...
    (Mój będzie kolejny jak wyląduje w obudowie :P).
    Jak widać jeśli "się chce" to można zbudować układ, który jest w miarę optymalnie zaprojektowany- nie mam się do czego doczepić... Dodał bym jedynie kondziorki przy kwarcu 32768Hz...
    Moja ocena 6/6 - powodzenia w nowych projektach :D

    P.S.
    Gdzie kolega tak tanio kupuje wyświetlacze :D ?

  • #14 20 Gru 2007 16:44
    JStan
    Poziom 16  

    Witam!!

    Konstrukcja bardzo udana, gratuluje!! Dowiedzialem się jak ciekawie zwiększyć napięcie 7805, mam tylko pytanie czy te kondensatory 100nF przy 7805 musze łączyć się poprzez diode z masą czy nie mogą tak jak elektrolity???

    I drugie pytanie po co jest kondensator 10uF przy rezystorze 22k? (przy dzielniku napięcia fotorezystora)

    Jak dla mnie 10/10

    Podrawiam

  • #15 20 Gru 2007 17:53
    hts
    Poziom 15  

    No i to mi się podoba :D. Super konstrukcja, porządne zdjęcia, ciekawie zrealizowana likwidacja opóźnienia/śpieszenia się zegara, schemat oraz wsad w wersji skompilowanej i źródłowej :D. I tak w DIY powinno być zawsze :D, kto chce, może sobie przerobić program, zmodyfikować schemat itp.
    Najbardziej denerwujące są tematy w których ktoś się tylko pochwali, da piękne zdjęcia, narobi innym smaku i nawet schematem sie nie podzieli a o kodzie źródłowym to można zapomnieć :evil:

  • #16 20 Gru 2007 18:06
    Mis
    Poziom 14  

    A więc tak. Co do kondensatorów przy kwarcu to nie dałem ich świadomie, bo programując fuse CKOPT w procku włączamy wewnętrzne kondensatory 36pF. Dla kwarcu zegarkowego to trochę za dużo, więc standardowo zegarek późni. Ale błąd zależy też od egzemplarza kwarcu i temperatury. Więc są dwie metody. Dać trymer i próbować go dostroić - jak na mój gust strasznie nieefektywne, bo po każdym pokręceniu trza długo czekać na sprawdzenie efektu, albo zrobić korekcję programową tak jak w moim przypadku - łatwiejsze do prawidłowego ustawienia, i można zrezygnować właśnie z tych kondensatorków przy kwarcu.
    Co do wyświetlaczy to tu: http://www.maritex.com.pl/index.php/pl/shop/productInfo/ggid/9143/pid/11464/page/1/backurl
    Mam nadzieje że nikt nie posądzi mnie o reklamę :|
    Co do stabilizatora 7805 to ten kondensatorek na wyjściu musi być bezpośrednio do nóżek scalaka, bo inaczej może się wzbudzać. Sposób który użyłem jest najbezpieczniejszy.
    Kondensator 10uF przy fotorezystorze filtruje napięcie do przetwornika A/C uniemożliwiając niestabilne odczyty przetwornika i w konsekwencji przypadkowe zmiany jasności świecenia wyświetlacza. Pamiętajmy że napięcie +5,6V jest trochę "zaśmiecone" poprzez zmiany poboru prądu przez wyświetlacze w trakcie multipleksowania.
    Aha, zapomniałem podać ustawienia FUSE dla atmegi dla tych co nie chcą ściągać źródeł (bo tam są podane).
    RSTDISBL = 1
    WDTON = 1
    SPIEN = 0
    CKOPT = 0
    EESAVE = 0 (lub 1)
    BOOTSZ1 = 1
    BOOTSZ0 = 1
    BOOTRST = 0

    BODLEVEL = 1
    BODEN = 1
    SUT1 = 1
    SUT0 = 0
    CKSEL3 = 0
    CKSEL2 = 0
    CKSEL1 = 1
    CKSEL0 = 0

  • #18 21 Gru 2007 10:34
    wojnar
    Poziom 16  

    345 napisał:
    może pcb do tego kolega by dodał??

    Wątpię, bo kolega, jak widać, zbudował godziny na desce uniwersalnej.

  • #20 21 Gru 2007 14:02
    lechoo
    Poziom 39  

    Podłączając wyświetlacz w ten sposób do mikrokontrolera przeciążasz jego linie wyjściowe - proszę sprawdzić w karcie katalogowej dopuszczalne obciążenie.

    Pomysł z automatyczną korektą odmierzania czasu zastosowałem kilka lat temu w zegarku w/g mojego pomysłu. Użyłem wtedy mikrokontrolera 89C2051, program również powstał w C, zaś korekta czasu następowała jednorazowo w ciągu doby (max. ±59 sek).
    -> http://www.elektroda.net/nauka/dyplomowe/dyplomowe.html - pozycja 21.

  • #21 21 Gru 2007 18:24
    Mis
    Poziom 14  

    Być może, ale niewiele bo prąd w impulsie dochodzi do 50mA na segment. Jest to prąd w impulsie, bo średni jest o wiele mniejszy. Nie zauważyłem żadnych negatywnych efektów. A zegarek działa bezproblemowo od około miesiąca. Procesor się nie grzeje, więc chyba nie ma powodu do obaw.

  • #22 23 Gru 2007 13:53
    pitersan15
    Poziom 11  

    Mam pytanie, czy można rozbudować układ, żeby naprzemiennie wyświetlał temperaturę w pmieszczeniu?:D:D:D:D:D

  • #23 23 Gru 2007 14:37
    Mis
    Poziom 14  

    Co do kosztów to trudno powiedzieć, bo większość części miałem w domu, ale policzmy: wyświetlacze 11zl, procek 5zł, stabilizator 1zł, GoldCap 5zł, płytka uniwersalna jakieś 8zł, kwarc 1zł, reszta to jakieś 5zł. Czyli razem jakieś 35-40zł.
    A rozbudować o pomiar temperatury to nie ma problemu, wystarczy dodać czujnik temperatury np DS18B20, albo LM35 podłączony do przetwornika A/C w procku i dopisać kawałek oprogramowania. Metoda z LM35 będzie prostsza. Od razu mówię że nie będę poprawiał softu, bo nie jest mi to potrzebne, a zegarek pełni ważną funkcję wisząc na ścianie, i nie będę go zdejmował do testów.

  • #24 21 Sty 2008 07:23
    wojnar
    Poziom 16  

    Też zbudowałem ten zegar bo konstrukcja mi się podoba a miałem już od dawna w domu takie większe wyświetlacze. Nie aż tak duże, bo tylko 25 mm. Zegar jest zbudowany na dwóch płytkach. Jak sobie z tym poradziłem widać z zdjęć.
    Kolejny zegarek LED na AtMega8, ale dokładny
    Kolejny zegarek LED na AtMega8, ale dokładny
    Kolejny zegarek LED na AtMega8, ale dokładny
    Kolejny zegarek LED na AtMega8, ale dokładny
    Kolejny zegarek LED na AtMega8, ale dokładny
    Diody dwukropka w rzeczywistości nie świecą tak mocno jak by się wydawało z fotografii. Ale i tak mi się 5 mm wydawały za duże a tak je zamieniłem na 4 mm.
    Na miejscu GoldCap jest na razie zwykły kondensator 470M/6,3V.
    Teraz jeszcze jakąś fajną obudowę.
    Płytki są malowane w Eagle 4.16.
    Czekam na wasze opinie :D

  • #25 21 Sty 2008 12:39
    spectrum7glr
    Poziom 13  

    Witam Wojnar zegarek wyszedł super jak dla mnie 6/6. Czy możesz mi podesłać na email pliki .sch z eagla do wyświetlacza i płytki zegara?. Chce zrobić taki zegar ale chciałbym go zmodyfikować np mam inne wyświetlacze.

  • #26 21 Sty 2008 13:17
    wojnar
    Poziom 16  

    *.sch dla wyświetlaczy nie ma a cały schemat jest w pierwszym poście Misa. Trzeba zrobić wdg. katalogu dla własnych konkretnych wyświetlaczy. Te są sterowane multipleksowo.
    Na płytce zegara jest wyznaczone gdzie są wyprowadzone poszczególne katody u mojego wyświetlacza. Dla zupełności mój to jeden z tych, zależy na wyboru koloru: http://www.gme.pl/index.php?action=vypis&pohl...ledani=fulltext&pageskrok=10&setrid=3&lk=&sk=

  • #27 22 Sty 2008 21:38
    elek555
    Poziom 37  

    Konstrukcja pomysłowa, szkoda że zastrzegasz się przed rozbudową o temperaturę. Brakuje na elce takich propozycji. Cieszy obecność myślących userów z gestem.

  • #28 25 Sty 2008 01:45
    Mis
    Poziom 14  

    Wiesz, wymagane zmiany w programie to w sumie nie problem, ale popełnić błąd w sofcie bardzo łatwo, z nie lubię udostępniać czegoś nie sprawdzonego. A platforma testowa (czyli działający zegarek) jest słabo dostępna, jak pisałem. Po za tym nie mam zbyt wiele wolnego czasu. Po prostu pomiaru temperatury nie było w założeniach tego projektu, aczkolwiek jest to do wykonania.

  • #29 05 Mar 2008 17:37
    goontii
    Poziom 10  

    Zrobiłem ten zegarek.Mam tylko jeden problem.Włączam zegarek i wszystko jest ok.Ustawiam godzinę i minuty jest ok.Ale gdy ustawiam albo zegarek przechodzi do godziny 10:00 to wtedy diody przestają migać tylko lekko się żarzą.Jak sprawdzałem oscyloskopem sygnał jest na wyjściu tylko.Jakiś słaby.Co może być nie tak???