
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:

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:

Tu jest wsad do procka oraz źródła softu dla fanatyków dłubania

Cool! Ranking DIY