- Napięcie zasilania: 7...9 V
- Prąd obciążenia: 100 mA
- Źródło napięcia podtrzymania zegara RTC: bateria CR1220
- Prąd podtrzymania zegara RTC: 1 μA
- Zakres pomiarowy wbudowanego termometru: 0...55°C
- Dokładność pomiaru temperatury: 0,5°C
- Rozdzielczość pomiaru temperatury: 0,5/0,1°C (w zależności od rodzaju zastosowanego termometru scalonego)
Z jednej strony chciałem, by odznaczało się ono dużą prostotą implementacji oraz nieskomplikowaną obsługą, a z drugiej strony – efektownym i nowoczesnym interfejsem użytkownika. Nie ukrywam, że inspiracją do powstania niniejszego projektu był zakupiony przeze mnie na chińskim portalu sprzedażowym prosty zegar biurkowy, wyposażony w bardzo efektowny, graficzny wyświetlacz VFD. Dodajmy: bardzo efektowny, ale niewielki, gdyż konstrukcja dużych wyświetlaczy tego typu, zwłaszcza graficznych, jest niezwykle kosztowna i w zasadzie odchodzi do lamusa. Zaintrygowany wspomnianym rozwiązaniem postanowiłem skonstruować urządzenie o zbliżonej funkcjonalności, lecz wyposażone w znacznie większy wyświetlacz graficzny, a ponieważ z założenia urządzenie miało być proste w implementacji i niedrogie w konstrukcji – do roli elementów interfejsu użytkownika wybrałem popularne, dość duże matryce LED o organizacji 5×7 pikseli. Przyznam szczerze, że przez chwilę zastanawiałem się nad zastosowaniem programowalnych diod LED, ale biorąc pod uwagę niezbędną liczbę takich elementów (a co za tym idzie – koszt ich zakupu), jak i trudność późniejszej implementacji zrezygnowałem z tego pomysłu, pozostając przy wspomnianych już matrycach.
Jak widać, zaprojektowano bardzo prosty system mikroprocesorowy, którego serce stanowi niewielki, ale nowoczesny mikrokontroler ATtiny806 firmy Microchip (dawniej Atmel), taktowany wewnętrznym oscylatorem RC o częstotliwości 10 MHz i realizujący całą założoną funkcjonalność urządzenia. Mikrokontroler nasz steruje pracą grupy czterech 8-bitowych rejestrów przesuwnych (szeregowo-równoległych) typu STPIC6C595 (wyprowadzenia PB5…PB2 mikrokontrolera), dzięki którym realizuje obsługę 6 matrycowych wyświetlaczy LED w konfiguracji wspólnej anody (wyprowadzenia PA7…PA1 mikrokontrolera) oraz 5 dodatkowych diod LED, oznaczonych jako LED7…LED11. Ponadto obsługuje zegar czasu rzeczywistego z podtrzymaniem bateryjnym pod postacią układu MCP79410-I/SN firmy Microchip – oraz prostą klawiaturę złożoną z 4 przycisków typu microswitch (wyprowadzenia PC3…PC0 mikrokontrolera), przeznaczonych do obsługi urządzenia. W ramach ostatniej z wymienionych funkcjonalności układ – w celu eliminacji drgań styków oraz detekcji krótkiego i długiego naciśnięcia każdego z przycisków – używa wbudowanego weń 16-bitowego układu czasowo-licznikowego TCB0 pracującego w trybie Periodic Interrupt. Uważnego Czytelnika zastanowi zapewne fakt wyboru nietypowych rejestrów przesuwnych zamiast zwyczajowych 74HC595. Jak się zapewne domyślacie, do obsługi tylu wyświetlaczy LED skorzystano ze znanego mechanizmu multipleksowania, a że do wysterowania mamy aż 32 wspólne katody (wyświetlaczy matrycowych LED1…LED6 i diod LED7…LED11), konieczne stało się sterowanie tymi elementami dość dużym prądem, by wynikowa ich jasność była na akceptowalnym poziomie. W takim wypadku zastosowanie zwykłych 74HC595 okazałoby się niewystarczające, w związku z czym sięgnięto po element, na którego równoległych wyjściach zintegrowano tranzystory mocy DMOS pozwalające na przepływ prądu rzędu 100 mA na wyjście (przy aktywnych wszystkich wyjściach!). Dość egzotyczne może się również wydawać przyporządkowanie poszczególnych wyjść rejestrów przesuwnych do wspólnych katod elementów LED, gdyż pozornie nie ma w nim większego sensu. W sensie elektrycznym rzeczywiście tak można to postrzegać, lecz przyporządkowanie, o którym mowa powyżej, wynika z chęci uproszczenia projektu obwodu drukowanego, zaś wszelkie niedogodności z niego wynikające zostaną zniwelowane na drodze programowej.
Zegar czasu rzeczywistego jest obsługiwany przy użyciu interfejsu TWI, będącego funkcjonalnym odpowiednikiem standardu I²C firmy Philips. Już teraz zwrócę uwagę, że jeśli chcemy, by nasz zegar wspierał funkcję podtrzymywania bateryjnego, należy zastosować dokładnie taki typ układu, jaki podano powyżej (i w spisie elementów), gdyż producent tego peryferium oferuje także wersje bez tej funkcjonalności oznaczone innym sufiksem.