Clock

Clock

Zegar to w portfolio każdego elektronika konstruktora przysłowiowe „must have”. Nie ma w tym nic dziwnego, wszak są to z reguły urządzenia dość proste, lecz dające dużo niekłamanej satysfakcji podczas własnoręcznej implementacji. Nie inaczej było w moim przypadku. Wśród wielu konstrukcji, jakie dane mi było zaprojektować, było kilka zegarów – zarówno samodzielne urządzenia jak i takie, które stanowiły element większej całości. Co ciekawe, mimo że zegar z natury ma dość prostą funkcjonalność, projektowane przeze mnie urządzenia zawsze w pewien sposób się wyróżniały, np. cechami użytkowymi. Tak samo jest z zaprezentowanym tu zegarem Clock.

Podstawowe parametry:
  • nieskomplikowana konstrukcja,
  • niska cena implementacji,
  • łatwość montażu,
  • atrakcyjny wygląd,
  • duża funkcjonalność,
  • doskonała ergonomia obsługi,
  • napięcie zasilania: 3...5 V, pobór prądu 10 mA.

Ostatnią moją konstrukcją tego typu był projekt μClock opublikowany na łamach naszego miesięcznika w wydaniu 9/2020 – cieszył się on sporym zainteresowaniem Czytelników. Tym razem postanowiłem połączyć funkcjonalności wcześniej projektowanych urządzeń rozszerzając możliwości wspomnianego wcześniej urządzenia μClock o bardzo ciekawą funkcję pokazywania imienin dla bieżącego dnia roku – wbudowany kalendarz imienin. Zgodnie z tymi założeniami powstał nowy projekt o nazwie Clock

Budowa i działanie

Podobnie, jak poprzednio, stanąłem przed dylematem wyboru źródła zegara czasu rzeczywistego – RTC. Początkowo wydawało się, że tego rodzaju peryferium z powodzeniem możemy zrealizować programowo przy współudziale wbudowanego w strukturę mikrokontrolera układu RTC. Niemniej jednak w przypadku takiej implementacji nierozwiązany pozostaje problem podtrzymania zasilania układu RTC w czasie braku zasilania systemu mikroprocesorowego. Ostatecznie wybrałem układ firmy Microchip pod postacią peryferium o nazwie MCP79410, który ma tą ważną zaletę, że obsługuje automatyczny mechanizm podtrzymania bateryjnego zegara RTC pobierając w takim trybie pracy prąd rzędu kilkuset nA. Co więcej, układ ten cechuje się następującymi, wybranymi walorami użytkowymi:

  • obsługa dokładnego zegara RTC oraz kalendarza do roku 2399,
  • tryb pracy 12/24 godzinny,
  • możliwość regulacji dokładności wbudowanego oscylatora w zakresie ±129 ppm,
  • funkcja podwójnego alarmu sprzętowego z możliwością sterowania wyprowadzeniem MFP,
  • funkcja automatycznego podtrzymania zasilania bateryjnego ustawień RTC,
  • funkcja automatycznego znacznika czasu wypadnięcia/przywrócenia zasilania,
  • wielofunkcyjne wyjście MFP wyposażone w możliwość generowania przebiegów prostokątnych o wybranej częstotliwości,
  • wbudowana pamięć RAM o wielkości 64 bajty podtrzymywana bateryjnie,
  • wbudowana pamięć EEPROM o wielkości 1 kb,
  • szeroki zakres napięć zasilających 1,8...5,5 V.

Jak widać, układ MCP79410 idealnie wpisuje się w wymagania naszej aplikacji.

Schemat aplikacyjny urządzenia Clock, został pokazany na rysunku 1.

Rysunek 1. Schemat ideowy urządzenia Clock

Zaprojektowano bardzo prosty system mikroprocesorowy, który bazuje na niewielkim ale nowoczesnym mikrokontrolerze firmy Microchip o oznaczeniu ATtiny3216. Układ jest taktowany wewnętrznym generatorem o wynikowej częstotliwości 2,66 MHz. Mikrokontroler ten realizuje kilka kluczowych zadań w ramach programu obsługi aplikacji a mianowicie:

  • Steruje pracą wbudowanego wyświetlacza OLED o organizacji 128×32 piksele stanowiącego element interfejsu użytkownika angażując w tym celu interfejs I2C;
  • Zarządza współpracą ze wspomnianym wcześniej scalonym układem RTC pod postacią peryferium o nazwie MCP-79410 angażując, jak poprzednio, ten sam sprzęg I2C;
  • Obsługuje dwa przyciski funkcyjne PLUS i MINUS oraz buzzer piezoelektryczny BUZZ będące elementami interfejsu użytkownika.

Warto w tym miejscu zaznaczyć, że obsługa przycisków funkcyjnych odbywa się bez jakichkolwiek opóźnień (typu _delay_ms), gdyż korzysta z wbudowanego w strukturę mikrokontrolera układu czasowo-licznikowego TCB0 pracującego w trybie Periodic Interrupt (100 Hz), którego zadaniem jest generowanie i obsługa sprzętowych opóźnień w ramach funkcji obsługi przycisków. Jej zadaniem jest, po pierwsze – eliminacja niepożądanego zjawiska drgania styków (debouncing), po drugie – obsługa długiego i krótkiego naciśnięcia, co wykorzystywane jest w ramach interfejsu użytkownika urządzenia Clock.

Kolejnym peryferium, jakie wykorzystuje nasz program obsługi aplikacji jest układ czasowo-licznikowy TCA0 pracujący w trybie Frequency Generation, lecz odpowiedzialny tym razem za generowanie przebiegu prostokątnego o częstotliwości 4 kHz na wyjściu PB2 (WO2) mikrokontrolera, który zasila wbudowany buzzer piezoelektryczny odpowiedzialny za efekty dźwiękowe (w funkcji budzika).

Ostatnim elementem mikrokontrolera, z którego dobrodziejstw korzysta program obsługi aplikacji jest przerwanie zewnętrzne PORTA_PORT_vect wyzwalane opadającym zboczem na wyprowadzeniu PA4 mikrokontrolera. Co ważne, do tego wyprowadzenia mikrokontrolera podłączono wielofunkcyjne wyprowadzenie MFP układu RTC MCP79410, na którym, po odpowiednim skonfigurowaniu, pojawia się bardzo dokładny sygnał 1 Hz niezbędny w programie obsługi aplikacji. Po pierwsze służy do cyklicznego odświeżania ekranu interfejsu użytkownika, zaś pod drugie obsługuje mechanizm programowego stopera będącego jedną z funkcji urządzenia. Tyle w kwestiach konstrukcyjnych.

Montaż i uruchomienie

Przejdźmy zatem do zagadnień montażowych. Celowo nie omawiam zagadnień programowych, gdyż te w większości pokrywają się z tymi z projektu μClock, w związku z czym zainteresowane osoby odsyłam do wydania 9/2020 naszego miesięcznika. Kilka różnic programowych wynika na pewno z faktu zastosowania innego typu mikrokontrolera o dużo większej wielkości pamięci Flash i zupełnie innej organizacji peryferiów. Nie są to jednak zagadnienia nazbyt skomplikowane, więc nie będę w tym miejscu przytaczał szczegółów implementacyjnych.

Rysunek 2. Schemat montażowy urządzenia Clock

Schemat płytki PCB urządzenia Clock został pokazany na rysunku 2. Zaprojektowano niewielki, dwustronny obwód drukowany z zastosowaniem elementów o niezbyt wymagających obudowach, co w założeniu miało uprościć jego implementację, spełniając jedno z założeń konstrukcyjnych. Montaż urządzenia rozpoczynamy od warstwy TOP, gdzie w pierwszej kolejności montujemy wszelkiego rodzaju półprzewodniki. Następnie przylutowujemy elementy bierne a na końcu przyciski PLUS i MINUS oraz buzzer piezoelektryczny BUZZ.

Dalej przechodzimy na warstwę BOTTOM, gdzie podobnie jak poprzednio montujemy wszelkie elementy bierne (w tym rezonator kwarcowy) a na końcu koszyk baterii podtrzymującej zasilanie BATT. W tym momencie wracamy na warstwę TOP, gdzie montujemy moduł wyświetlacza OLED zwyczajnie lutując jego wyprowadzenia typu GOLDPIN do stosownych otworów na obwodzie drukowanym co jednocześnie zapewnia mu wystarczająco stabilny montaż mechaniczny. Wykonując to zadanie musimy jednak zwrócić uwagę na wzajemne położenie płaszczyzny wyświetlacza w stosunku do zamontowanych wcześniej przycisków funkcyjnych.

Zasilanie urządzenia podłączamy za pomocą przewodów przylutowanych od strony warstwy BOTTOM w miejscach oznaczonych +, –. Należy pamiętać by nie przekroczyć dopuszczalnej wartości napięcia zasilającego (5 V), gdyż mogłoby to uszkodzić nasze urządzenie.

Poprawnie zmontowany układ nie wymaga żadnych regulacji i powinien działać tuż po włączeniu zasilania. Na fotografii 1 pokazano zmontowane urządzenie (od strony TOP) tuż przed przylutowaniem wyświetlacza OLED, zaś na fotografii 2 pokazano to samo urządzenie od strony BOTTOM.

Fotografia 1. Zmontowane urządzenie Clock od strony warstwy TOP (tuż przed przylutowaniem wyświetlacza OLED)
Fotografia 2. Zmontowane urządzenie Clock od strony warstwy BOTTOM

Obsługa

Konstruując program obsługi aplikacji kierowałem się jednym z początkowych założeń, a mianowicie prostotą obsługi. Biorąc to pod uwagę zdecydowałem się na zastosowanie wyłącznie dwóch przycisków sterujących oznaczonych umownie PLUS i MINUS, ale zaimplementowano obsługę krótkiego i długiego wciśnięcia tych przycisków. Właśnie dzięki takiemu podejściu możliwe stało się znaczne uproszczenie sposobu obsługi urządzenia nie wpływając negatywnie na ergonomię lub, co gorsza, na funkcjonalność urządzenia.
Urządzenie Clock dysponuje pięcioma w pełni konfigurowalnymi funkcjonalnościami:

  • zegar (z sekundnikiem) i funkcją imiennika,
  • kalendarz (z dniem tygodnia),
  • stoper,
  • budzik (z planem tygodniowym),
  • imiennik.

Co ważne, wszystkie te funkcjonalności obsługuje się w bardzo intuicyjny sposób za pomocą wyłącznie dwóch klawiszy funkcyjnych (obsługujących krótkie i długie naciśnięcie). Klawisze te, co oczywiste, przyjmują różne funkcjonalności zależne od trybu pracy urządzenia w jakim aktualnie się znajduje. Sposób obsługi urządzenia wraz z zaznaczeniem funkcji każdego z klawiszy (PLUS i MINUS) pokazano na rysunku 3.

Rysunek 3. Diagram obrazujący sposób obsługi urządzenia Clock (w tym funkcjonalność przycisków funkcyjnych)

Konstruując graficzny interfejs użytkownika GUI urządzenia stawiałem bardzo duży nacisk na przejrzystość prezentowanych informacji, jak i ich walory estetyczne. Właśnie dlatego posłużyłem się wyłącznie trzema krojami czcionek ekranowych o prostej i eleganckiej formie, co w połączeniu z niezaprzeczalnymi zaletami zastosowanego wyświetlacza OLED postawiło na dość wysokim poziomie osiągnięty efekt końcowy. Całość prezentuję się po prostu ładnie a ergonomia i łatwość obsługi urządzenia potęgują te walory.

Warto podkreślić, że funkcja pokazywania imienin aktywna jest wyłącznie w trybie zegara oraz, co oczywiste, w trybie imiennika. W trybie zegara na początku każdej minuty w polu nazw dni tygodnia (w pierwszej linii wyświetlacza) pokazywane są imiona osób obchodzących w tym dniu imieniny. Forma tego przekazu jest statyczna, w przypadku, gdy cały tekst mieści się na ekranie lub dynamiczna (przewijanie), w przypadku, gdy tekst nie mieści się na ekranie. W trybie imiennika wspomniane wcześniej informacje przewijane są bez przerwy w głównej części ekranu (linie 2...4), tym razem z zastosowaniem znacznie większej czcionki ekranowej, co w zamyśle miało poprawić czytelność prezentowanych informacji.

Rysunek 4. Dostępne menu urządzenia Clock

Dla jasności, na rysunku 4 pokazano wszystkie dostępne menu urządzenia Clock. W ramach menu Zegar/Imiennik pokazywany jest również dzień tygodnia oraz aktywność alarmu budzika. Warto podkreślić, że sekundy zegara pokazywane są w sposób animowany. Kolejna sekunda przesuwa się z dołu do góry, jak miało to miejsce w przypadku mechanicznych liczników z cyframi umieszczonymi na bębnie. Muszę przyznać, że efekt końcowy przerósł moje oczekiwania i całość wygląda bardzo atrakcyjnie. Z kolei w ramach menu Alarm pokazywane są wszystkie aktywne dni tygodnia, dla których zaprogramowano funkcję alarmu.

Robert Wołgajew, EP

Opis projektu μClock opublikowanego w EP 9/2020: https://bit.ly/3p1QNZC

Wykaz elementów:
Rezystory: (SMD0805)
  • R1: 1 kΩ
  • R2, R3: 4,7 kΩ
Kondensatory: (SMD 0805, ceramiczne)
  • C1, C2: 12 pF
  • C3: 100 pF
  • C4…C6: 100nF
Półprzewodniki:
  • D1: BAS85.115 (MINIMELF)
  • U1: MCP79410-I/SN (SO-08)
  • U2: ATtiny3216 (SOIC-20)
  • OLED: wyświetlacz OLED 128×32 px., 0,91", sterownik SSD1306, magistrala I2C, wymiary 38×12 mm
Pozostałe:
  • Q1: rezonator kwarcowy zegarkowy 32768 Hz
  • PLUS, MINUS: mikroprzełącznik SMD typu DTSM31NB
  • BATT: gniazdo baterii CR1220 typu CONNFLY DS1092-12-N8S
  • VCC: bateria CR1220
Artykuł ukazał się w
Elektronika Praktyczna
grudzień 2021
DO POBRANIA
Materiały dodatkowe

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik kwiecień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio maj - czerwiec 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje kwiecień 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna kwiecień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich maj 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów