- Obsługa funkcji zegara z kalendarzem oraz timera odliczającego odcinki czasu o zadanej długości.
- Ustawiane parametry: data i czas zegara, czas trwania odliczanego odcinka czasu, czas trwania alarmu, czas powtórzeń pomiędzy kolejnymi alarmami.
- Elementy sterujące i wykonawcze: wyświetlacz LCD 2 linie ×8 znaków, impulsator z przyciskiem, przekaźnik.
- Zasilanie napięciem 6…12 V DC/300 mA.
Przed rozpoczęciem prac konstrukcyjnych zdecydowałem, że Timer będzie wyposażony w niewielki wyświetlacz LCD, a jako elementu wykonawczego użyję przekaźnika ze stykami przełączanymi. Wyświetlacz alfanumeryczny upraszcza wprowadzanie nowych ustawień. Dzięki temu do obsługi wystarczy impulsator z funkcją przycisku. Jako jedyny układ scalony zastosowano mikrokontroler STM32F101C. Jego wybór wynika z osobistych preferencji, łatwości pisania oprogramowania sterującego oraz z wyposażenia układów z tej rodziny we wszystko, co jest potrzebne do odliczania czasu i zrealizowania funkcji zegara czasu rzeczywistego z kalendarzem.
Konstrukcja
Urządzenie jest na tyle nieskomplikowane, że nie ma potrzeby nudzenia rozwlekłym opisem. Zamiast tego zwrócę tylko uwagę na kilka istotnych szczegółów.
Kwarce X1 i X2. Wybrane zostało standardowe rozwiązanie z rozdzielonymi rezonatorami do taktowania mikrokontrolera (X1 – 8 MHz) i zegara czasu rzeczywistego RTC (X2 – 32,768 kHz). Przy niewielkich modyfikacjach programu istnieje możliwość pozbycia się kwarcu X1 i skorzystania z wewnętrznego generatora RC. Jest on jednak mniej dokładny i stabilny termicznie. Także zegar RTC może być taktowany impulsami wewnętrznego zegara systemowego mikrokontrolera. Jednak zastosowanie zewnętrznego rezonatora X2 o dobrej jakości zwiększy dokładność odmierzania czasu.
Wyświetlacz LCD1. Przewidziano zastosowanie wyświetlacza ze standardowym interfejsem i sposobem sterowania. Najbardziej popularne moduły wyświetlaczy pracują przy napięciu zasilania +5 V i takie napięcie dostarcza do wyświetlacza stabilizator U3. Z kolei mikrokontroler jest zasilany napięciem +3,3 V. Układy STM32F wyposażono w pewną liczbę portów mogących poprawnie pracować z sygnałami o poziomie 5 V i za pośrednictwem tych portów mikrokontroler steruje wyświetlaczem. Dodatkowo, za pomocą tranzystora Q1 jest możliwe niezależne wyłączanie podświetlenia, chociaż w tej wersji oprogramowania ta opcja oszczędzania energii nie jest wykorzystana.
Impulsator IM1. Wykrycie ruchu i kierunku kręcenia osią impulsatora następuje przez analizę poziomów na jego wyprowadzeniach 2 i 3. W czasie kręcenia w jedną stronę stan niski najpierw pojawia się na wyprowadzeniu 2 a dopiero potem na wyprowadzeniu 3. Podczas ruchu w przeciwną stronę sytuacja jest odwrotna i do masy najpierw zwierane jest wyprowadzenie 3 a później 2. W podobnych impulsatorach różnych producentów sekwencje zwarć mogą odpowiadać przeciwnym ruchom pokrętła impulsatora. Tym samym dla jednej wersji oprogramowania, ale dla różnych impulsatorów sposób obsługi timera będzie się nieco różnił. Pewne funkcje zamiast kręcenia w prawo będą wymagały ruchu w lewą stronę.
Złącze JTAG (JP1) i UART (J2). Na złącze JP1 wyprowadzono sygnały magistrali JTAG. Za pośrednictwem tego złącza i odpowiedniego programatora można zapisać program sterujący do pamięci FLASH mikrokontrolera. Złącze JTAG służy także do debugowania nowej wersji oprogramowania. Myślę o tych użytkownikach, którzy chcieliby skorzystać ze sprzętowej części urządzenia dla swojej wersji oprogramowania Timera. Wyprowadzone na złącze J2 sygnały RxD i TxD szeregowego interfejsu UART pozwalają na zaprogramowanie pamięci Flash mikrokontrolera, jednak bez możliwości przeprowadzenia debugowania.