matrixClock – efektowny zegar stołowy (2)

matrixClock – efektowny zegar stołowy (2)

W poprzedniej części artykułu zaprezentowaliśmy zagadnienia związane z budową układu elektronicznego oraz oprogramowaniem zegara matrixClock. Tym razem omówimy kwestie montażu PCB i obudowy naszego urządzenia.

Podstawowe parametry:
  • 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)

Omówiliśmy kwestie implementacyjne, w związku z czym możemy przejść do schematu montażowego naszego urządzenia, który to pokazano na rysunku 2.

Rysunek 2. Schemat montażowy urządzenia: a) – warstwa TOP, b) – warstwa BOTTOM

Na potrzeby urządzenia zaprojektowano kompaktową, dwustronną płytkę drukowaną ze zdecydowaną przewagą elementów SMD lutowanych po obu stronach laminatu. Montaż urządzenia rozpoczynamy od warstwy BOTTOM, gdzie w pierwszej kolejności przylutowujemy wszystkie półprzewodniki. Proces ten najłatwiej wykonać przy użyciu stacji lutowniczej na gorące powietrze (tzw. hot-air) i odpowiednich stopów lutowniczych. Jeśli jednak nie dysponujemy tego rodzaju sprzętem, można również zastosować metodę „zastępczą” z użyciem typowej stacji kolbowej i plecionki rozlutowniczej. Następnie lutujemy elementy bierne, po czym przechodzimy na warstwę TOP. Tutaj, inaczej niż poprzednio, w pierwszej kolejności przylutowujemy wszystkie elementy bierne, następnie montujemy rezonator kwarcowy, układ RTC (U1), gniazdo baterii CR1220 (BATT) a na samym końcu elementy LED (wyświetlacze matrycowe i diody LED → w jednej płaszczyźnie) oraz przyciski PREV, NEXT, DOWN i UP. W tym momencie wracamy na warstwę BOTTOM i montujemy (wsuwając w dedykowany otwór) gniazdo zasilające JACK, unieruchamiając je za pomocą wkrętów M2. Zaciski gniazda podłączamy za pomocą dwóch, krótkich przewodów (zachowując stosowną polaryzację) do pól lutowniczych VIN i GND po stronie TOP na obwodzie drukowanym. Na tym etapie urządzenie gotowe jest do uruchomienia.

Jak można zauważyć, zastosowano czarną soldermaskę – i to nie bez powodu. Obwód drukowany urządzenia zamontowany będzie w efektownej obudowie wykonanej w technologii druku 3D, w której płytę czołową stanowić ma przydymiona pleksi przesłaniająca zarówno wyświetlacz, jak i pozostałe elementy zamontowane PCB. Zależało mi, aby maksymalnie ukryć „wnętrzności” urządzenia – stąd pomysł na tego typu rozwiązanie, które w praktyce okazało się skuteczne.

Omówiliśmy kwestie montażowe, przejdźmy zatem do tematu obsługi naszego urządzenia. Zgodnie z tym, o czym wspomniałem już wcześniej, w tym celu przewidziano 4 przyciski funkcyjne umownie oznaczone jako ←, →, ↑, ↓ – lub inaczej PREV, NEXT, UP, DOWN. Jak łatwo się domyślić, przyciski PREV i NEXT służą głównie do poruszania się po menu urządzenia, w tym do wyboru ustawień poddawanych regulacji (w menu ustawień urządzenia), zaś przyciski UP i DOWN przeznaczone są z zasady do regulacji wartości tych ustawień. Niemniej jednak bieżąca funkcjonalność wszystkich przycisków zależy w dużej mierze od miejsca w systemie menu, w jakim znajduje się urządzenie. Ponadto – biorąc pod uwagę, iż rozpoznawane jest zarówno krótkie, jak i długie naciśnięcie każdego z nich – nie sposób skrótowo opisać tego zagadnienia. Z tego względu na rysunku 3 pokazano diagram obrazujący sposób obsługi systemu matrixClock oraz dostępne opcje menu.

Rysunek 3. Diagram obrazujący sposób obsługi urządzenia matrixClock oraz dostępne opcje menu

W ramach funkcjonalności zegara przewidziano dodatkowe menu nazwane THERMO, dzięki któremu możemy wyświetlić temperaturę mierzoną przez urządzenie. Jest to możliwe wyłącznie wtedy, gdy do wyprowadzenia UPDI mikrokontrolera (PA0) dołączono opcjonalny scalony termometr, przy czym – co dość unikalne w tego typu układach – przewidziano możliwość obsługi dwóch, zupełnie różnych rodzajów sensorów, mianowicie:

  • scalonego cyfrowego termometru typu DS18S20 (DS1820) wyposażonego w magistralę 1-wire,
  • scalonego analogowego termometru typu LM35 z wyjściem napięciowym.

Detekcja rodzaju podłączonego termometru dokonywana jest jedynie podczas włączania urządzenia, a polega na wysłaniu sygnału RESET na magistralę 1-Wire (wyprowadzenie UPDI) i następującym po nim oczekiwaniu na sygnał PRESENCE wysyłany przez układ Slave (DS18S20). Przy braku odpowiedzi ze strony potencjalnie podłączonego układu Slave, urządzenie matrixClock zakłada, że podłączono analogowy czujnik temperatury, w związku z czym inicjalizuje przetwornik ADC wbudowany w strukturę mikrokontrolera, dzięki któremu w późniejszym czasie dokonuje pomiaru temperatury układu LM35.

Oczywiście sposób podłączenia obu rodzajów czujników do portu UPDI mikrokontrolera jest odmienny i pokazano go na rysunku 4.

Rysunek 4. Sposób podłączenia obu rodzajów czujników temperatury do portu UPDI mikrokontrolera

Co ważne, pod żadnym pozorem nie należy podłączać czujnika LM35 bez szeregowego rezystora o rezystancji 10 kΩ, gdyż układ – generując sygnał RESET magistrali 1-Wire – ściąga wyprowadzanie UPDI mikrokontrolera do masy i brak tego rezystora mógłby spowodować uszkodzenie zarówno czujnika LM35, jak i portu UPDI mikrokontrolera. Uważny Czytelnik dostrzeże w tym momencie pewną sprzeczność, jeśli chodzi o wybór wyprowadzenia UPDI jako realizującego obsługę opcjonalnych termometrów. I słusznie. Wyprowadzenie, o którym mowa, standardowo skonfigurowane jest do obsługi programowania mikrokontrolera (dzięki stosownemu ustawieniu fuse-bitów FUSE.SYSCFG0.RSTPINCFG[1:0]) i w takim wypadku nie nadaje się do realizacji jakiejkolwiek magistrali danych. Co prawda nawet w takiej konfiguracji możliwe jest odczytywanie stanu tegoż wyprowadzenia oraz napięcia na współdzielonym kanale AIN0 przetwornika ADC (mamy w pamięci, że pin podciągnięty jest do VCC), lecz już niemożliwe okazuje się manipulowanie kierunkiem tego pinu, czy też stanem logicznym na nim występującym. W takim wypadku, aby możliwa była realizacja obsługi magistrali 1-wire (a więc termometru DS18S20), konieczne jest przestawienie (za pomocą zaprogramowania fuse-bitów FUSE.SYSCFG0.RSTPINCFG[1:0]) funkcji wyprowadzenia UPDI/RESET jako normalnego portu I/O. Należy jednak mieć na uwadze, iż po wykonaniu takiej operacji wejście w tryb programowania wymagać będzie programatora HV (wysokonapięciowego), w związku z czym w pierwszej kolejności należy wgrać wsad do pamięci Flash mikrokontrolera, a dopiero w drugim kroku przestawić fuse-bit FUSE.SYSCFG0.RSTPINCFG[1:0].

To już całość informacji z zakresu programowania urządzenia. Natomiast, jak łatwo zauważyć oglądając projekt obwodu drukowanego, celowo nie przewidywałem montażu czujnika temperatury na płytce drukowanej. Z założenia matrixClock miał być efektownym zegarkiem biurkowym, niemniej jednak niewykorzystana pamięć Flash nie dawała mi spokoju i ostatecznie skłoniła do dodania takiej opcjonalnej funkcjonalności, co z pewnością ucieszy potencjalnych użytkowników. Oczywiście, zaawansowany amator zauważy zapewne, iż „na pokładzie” naszego mikrokontrolera mamy czujnik temperatury dostępny z poziomu przetwornika ADC. Biorąc jednak pod uwagę, iż mikrokontroler nasz dostarcza do elementów LED dość spore prądy (podgrzewając tym samym własną strukturę krzemową), musimy zauważyć, że nie byłby on dobrym elementem pomiarowym w takim zastosowaniu.

Warto dodatkowo podkreślić jedną unikalną cechę prezentowanego urządzenia: funkcjonalność animacji cyfr wyświetlaczy, która dostępna jest w menu CLOCK i STOPER (zegara i stopera). We wspomnianych menu zmiana cyfr na wyświetlaczu matrycowym „okraszona” jest animacją, która przywodzi na myśl obracanie się bębna z cyframi, co miało miejsce w przypadku tradycyjnych, mechanicznych liczników w magnetofonach z lat 80. Takie rozwiązanie było również dostępne w dalekowschodnim zegarze z wyświetlaczem VFD, który posłużył za inspirację do powstania niniejszego projektu.

I na sam koniec zagadnień dotyczących obsługi naszego urządzenia – słowo komentarza na temat ostatniej funkcjonalności, w jakie je wyposażono, a mianowicie automatycznej zmiany menu urządzenia, którą włącza się i wyłącza poprzez długie wciśnięcie przycisku DOWN. Włączenie tej funkcji powoduje cykliczną zmianę (co 10 s) menu urządzenia w cyklu CLOCK → CALENDAR → STOPER → THERMO → CLOCK itd.

Obudowa

Na koniec naszego artykułu kilka niezbędnych słów uwagi należy się zagadnieniu projektu obudowy urządzenia matrixClock. Definiując stosowne założenia projektowe za cel postawiłem sobie przygotowanie estetycznej i nowoczesnej w swym kształcie obudowy, która w założeniach ma być ustawiana na biurku, przez co musi zostać wyposażona w niezbędne podpórki. Etapem wyjściowym do wykreowania poprawnego projektu było przygotowanie odpowiedniego obwodu drukowanego, który zarówno swym kształtem, jak i umieszczonymi nań elementami montażowymi upraszczałby późniejszy proces montażu. Kluczowe wymiary wspomnianego obwodu drukowanego urządzenia matrixClock pokazano na rysunku 5.

Rysunek 5. Kluczowe wymiary obwodu drukowanego urządzenia

Bazując na powyższych założeniach przygotowano bardzo zwarty, 1-elementowy projekt obudowy urządzenia, którego rzut 3D pokazano na rysunku 6, zaś wybrany przekrój poprzeczny na rysunku 7.

Rysunek 6. Rzut 3D obudowy urządzenia
Rysunek 7. Przekrój poprzeczny obudowy urządzenia

Obwód drukowany urządzenia mocujemy do obudowy za pomocą 2 wkrętów. Gniazdo zasilające (JACK) wystaje poza tylną płaszczyznę obudowy przez odpowiednio przygotowane wycięcie. Z uwagi na obecność mikroprzełączników (w górnej części obwodu drukowanego), które mają wystawać przez otwory ponad górną płaszczyznę obudowy, montaż PCB musimy wykonać z pewnym wyczuciem wsuwając go pod kątem do tak przygotowanej obudowy (by osie przełączników weszły w stosowne otwory). Następnie unieruchamiamy wsunięty obwód drukowany za pomocą 2 wkrętów, po czym montujemy półprzeźroczysty (przydymiony) kawałek pleksi stanowiący płytę czołową obudowy korzystając z dwóch niewielkich wystających rantów przytrzymujących go (pleksi musimy delikatnie wygiąć, by dało się ją umieścić w „świetle” obudowy). Zainteresowanym Czytelnikom podpowiem, iż sam zakupiłem taki kawałek pleksi na znanym portalu aukcyjnym (łącznie z usługą jego wycięcia) za przysłowiowe 5 zł. Aby zlecić taką usługę niezbędny będzie projekt (i stosowny plik) płyty czołowej urządzenia (pleksi), który pokazano na rysunku 8.

Rysunek 8. Wygląd płyty czołowej (pleksi) urządzenia

Na fotografii 3 zaprezentowano natomiast wygląd obudowy wydrukowanej na niedrogiej, filamentowej drukarce 3D, zaś dla kontrastu, na zdjęciu tytułowym pokazano z kolei wygląd obudowy urządzenia wydrukowanej w technologii MJF (Multi Jet Fusion), dzięki usłudze jednej z dalekowschodnich firm produkujących obwody drukowane, o czym wspomniałem już w opisach projektów publikowanych wcześniej na łamach „Elektroniki Praktycznej”.

Fotografia 3. Widok obudowy urządzenia wydrukowanej w technologii FDM
Fotografia 4. Widok tylnej części obudowy urządzenia wydrukowanej w technologii MJF

Szczerze polecam tego rodzaju rozwiązanie, gdyż – jak widać na fotografii 4 – jakość takiego wydruku jest wprost fenomenalna.

Robert Wołgajew, EP

Artykuł ukazał się w
Elektronika Praktyczna
lipiec 2024
DO POBRANIA
Materiały dodatkowe

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik październik 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio wrzesień - październik 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje wrzesień 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna październik 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich październik 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów