Programowany Timer

Programowany Timer
Pobierz PDF Download icon
Urządzenie nazwane zostało Programowanym Timerem, ponieważ użytkownik - poza ustawieniem odliczanego czasu - może zaprogramować kilka dodatkowych parametrów. Nazwa mogła brzmieć "prosty w obsłudze timer z wyświetlaczem LCD i przekaźnikiem", ale jest zbyt długa. Bez względu na etykietkę działanie urządzenia sprowadza się do odliczania zadanych odcinków czasu w sposób, który może być dokładnie kontrolowany przez użytkownika. Rekomendacje: timer przyda się do odmierzania czasu w różnych zastosowaniach "domowych" (np. sterowania zraszaczem, symulowania obecności domowników) i nie tylko.

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.

Schemat ideowy i konstrukcja

Rysunek 1. Schemat ideowy Programowanego Timera

Schemat ideowy Programowanego Timera jest pokazany na rysunku 1. 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.

Montaż

Rysunek 2. Schemat montażowy Programowanego Timera

Schemat montażowy pokazano na rysunku 2. Ponieważ układ zbudowany jest z niewielkiej liczby elementów także montaż nie powinien nastręczać wielu kłopotów. Na początku trzeba się zdecydować, w jakiej formie będzie wykorzystywany Timer. Jeżeli jako oddzielna płytka bez obudowy wszystkie elementy powinny znaleźć się po tej samej górnej stronie druku, tam gdzie znajdują się na płytce ich opisy.

Jeżeli płytka miałaby być montowana w obudowie, pewne elementy ze względu na wielkość i dostęp powinny być wlutowane po przeciwnej, dolnej stronie płytki. Dotyczy to: baterii BT1, przekaźnika K1, kostek złączy J1, J3 oraz potencjometru regulacji kontrastu R4.

W tym przypadku dla wystających elementów, czyli wyświetlacza LCD1 i osi impulsatora IM1, należy wykonać w obudowie odpowiednie otwory. Samą płytkę można wtedy przykręcić do obudowy przy pomocy tulejek dystansowych. W każdym przypadku wyświetlacz warto montować przy użyciu złączy szpilkowych i gniazd: 2×7 dla sygnałów sterujących i 2 pojedynczych pinów dla wyprowadzeń elementu podświetlającego. Tym sposobem wyświetlacz zostanie zamocowany mechanicznie do płytki z możliwością jego wyjmowania ze złączy.

Uruchomienie

Uruchomienie sprowadza się do sprawdzenia czy podczas montażu nie doszło do przypadkowych zwarć pomiędzy elementami i ścieżkami. Przed wlutowaniem mikrokontrolera można podłączyć zasilanie do gniazda J3 zachowując odpowiednią polaryzację i poziom napięcia 6...12 V. Jeżeli wszystko jest w porządku na kondensatorach C10 i C12 powinny odpowiednio pojawić się napięcia stabilizowane +3,3 V i +5 V.

Po zaprogramowaniu mikrokontrolera, włożeniu do złącz wyświetlacza i zasileniu urządzeniu wyświetlacz powinien się podświetlić, a po czasie 1...2 sekund powinny pojawić się napisy. Należy pamiętać o ustawieniu maksymalnego kontrastu pomiędzy wyświetlanymi znakami a tłem przy pomocy potencjometru R4.

Przy braku podświetlenia należy na końcówce opornika R6 od strony portu mikrokontrolera zmierzyć napięcie, którego poziom nie powinien być niższy niż +3 V. Jeżeli tak jest błędu należy szukać w obwodzie tranzystora Q1, sprawdzić złącze wyświetlacza i lutowanie końcówek opornika R5.

Jeżeli brak napięcia na porcie mikrokontrolera połączonym z opornikiem R6 a na wyświetlaczu nie pojawiły się sensowne napisy oznacza to, że mikrokontroler nie wystartował. Należy sprawdzić czy na wszystkich końcówkach zasilających mikrokontrolera 9, 24, 36, 48 pojawiło się napięcie zasilające o nominalnym poziomie, czyli 3,3 V. Jeżeli tak jest a na kondensatorze C5 występuje poziom wysoki (co najmniej 1,4 V) może to oznaczać, że mikrokontroler nie został zaprogramowany prawidłowo.

Jeżeli na porcie KPB12 (połączonym z R6) jest poziom wysoki a na porcie KPB11 (połączonym z R7) jest poziom niski a na wyświetlaczu nic się nie pojawiło pomimo regulacji poziomu kontrastu, może to oznaczać przerwy ścieżek lub zwarcie w obrębie magistrali sterującej pracą wyświetlacza lub uszkodzenie samego wyświetlacza.

Wykaz elementów

Rezystory: (SMD 0805)
R1: 10 kΩ
R2, R3: 100 kΩ
R4: 10 kΩ/potencjometr
R5: 47 Ω
R6, R7: 3,3 kΩ

Kondensatory: (SMD 0805)
C1...C4: 15 pF
C5...C9, C14: 100 nF
C10...C13: 1 µF
C15, C16: 10 µF/16 V (elektrolit.)

Półprzewodniki:
D1, D2: dioda prostownicza SMD (DO-213AB)
Q1, Q2: BC847 (SOT-23)
U1: STM32F101C8 (LQFP48)
U2: MCP1703-3,3 (SOT-23A)
U3: MCP1703-5 (SOT-23A)

Inne:
BT1: bateria CR2032 z podstawką pionową
IM1: impulsator z przyciskiem
J1, J3: złącze DG127-5.0/3
J2: złącze SIP-4
JP1: wtyk IDC20 (2×10 pin)
K1: przekaźnik JQC-3FG
LCD1: wyświetlacz 2 linie × 8 znaków
X1: kwarc 8 MHz
X2: kwarc 32,768 kHz
Z1: zwora

Programowanie mikrokontrolera

Tabela 1. Stany i zakresy nastaw urządzenia

Do jednorazowego zaprogramowania pamięci Flash najprościej wykorzystać interfejs UART wyprowadzony na gnieździe J2. Gniazdo trzeba połączyć z wolnym portem USB komputera przy pomocy interfejsu USB np. AVT_MOD09. Przed dołączeniem do płytki Timera zasilania należy jeszcze zewrzeć zworę Z1. Do zapisu można użyć firmowego programu producenta mikrokontrolera Flash Loader Demonstrator lub jakiegoś z zamienników.

Po uruchomieniu Flash Loader Demonstrator powinien automatycznie wykryć dołączoną płytkę Timera a właściwie zamontowany na niej mikrokontroler. Potem należy wczytać plik HEX oprogramowania do zapisu, wykonać zapis i ewentualnie weryfikację. Po odłączeniu zasilania i interfejsu USB należy rozewrzeć zworę Z1. Po ponownym dołączeniu zasilania na wyświetlaczu powinny pojawić się wyzerowane wartości czasu i daty odczytywane z wewnętrznego zegara RTC.

Obsługa Timera

Rysunek 3. Schematyczny wykres przejść pomiędzy poszczególnymi funkcjami i nastawami Programowanego Timera

Wymyślenie prostego i w miarę intuicyjnego sposobu obsługi urządzenia okazuje się sporym wyzwaniem. Trudności biorą się z małej ilości znaków do dyspozycji na ekranie LCD oraz tylko jednego urządzenia nastawczego, czyli impulsatora. W trakcie układania scenariusza obsługi postanowiłem się trzymać poniższych założeń:

  • Tam gdzie to możliwe używać napisów w języku ojczystym.
  • Przejście między pozycjami list i zmianę nastaw realizować pokręcaniem impulsatora natomiast wejście do nastawy, wyjście i zatwierdzenie nastawy realizować przyciśnięciem - analogicznie jak to się dzieje w myszach komputerowych.
  • Pozycje do wyboru zaznaczać przesuwną strzałką lub migotaniem, pozycje których wartość jest właśnie zmieniana zaznaczać kursorem.

Na rysunku 3 pokazano schematyczny wykres przejść pomiędzy poszczególnymi funkcjami i nastawami Timera. Stanem podstawowym jest taki, w którym nie jest uruchomiona opcja odliczania czasu i jest wyświetlana godzina i data. Po naciśnięciu przycisku impulsatora przechodzi się do listy wyboru: zmiana nastaw Zegara lub Alarmu (wyjście z tej i każdej innej listy następuje automatycznie po przesunięciu strzałki poza dostępny zakres wyboru w tym przypadku składającej się z 2 pozycji). Nastawy RTC tak jak w większości zegarów cyfrowych polegają na kolejnym ustawianiu godzin, minut, sekund, dnia, miesiąca, roku.

Czas do włączenia alarmu można dla wygody ustawiać na dwa sposoby. Albo określając godzinę, minutę, sekundę alarmu albo ilość dni, godzin i minut, po którym to czasie ma nastąpić alarm. W pierwszym przypadku, jeżeli zostanie ustawiona godzina wcześniejsza niż bieżąca będzie to oznaczać, że alarm włączy się następnego dnia. Potem następuje automatyczne przejście do ustawiania czasu trwania samego alarmu. Można ustawić czas w zakresie od 1 do 59 sekund. Dostępna jest także opcja trwałego alarmu. W tym przypadku po włączeniu alarm może go wyłączyć tylko świadoma decyzja użytkownika.

Jeżeli czas alarmu nie jest ustawiony na trwały przechodzi się do programowania okresu powtarzania alarmu. Czas powtarzania może się różnić od ustawionego wcześniej czasu włączenia alarmu. Może być ustawiany w zakresie 8 dni, więc można tak zaprogramować Timer, aby każdego dnia włączał się o tej samej godzinie lub włączał się tylko raz na tydzień określonego dnia o określonej godzinie. Jeżeli czas powtórnego alarmu zostanie ustawiony na 0, opcja powtarzania alarmu zostanie wyłączona.

Następnie Timer oczekuje włączenia przez naciśnięcie. Jeżeli impulsator nie zostanie naciśnięty a pojawi się impuls świadczący o jego obracaniu, Timer wróci do pozycji wyjściowej, czyli zegara. Nastawy nie zostaną jednak utracone. Po powtórnym przejściu opisanej powyżej listy bez dokonywania zmian a jedynie z potwierdzeniem startu rozpocznie się odliczanie czasu do alarmu z ustawionymi wcześniej nastawami. Po uruchomieniu Timera na wyświetlaczu pokazywany jest czas pozostały do momentu alarmu. Kiedy to nastąpi, załączy się przekaźnik, zostanie wyświetlony napis "ALARM!" oraz informacja o ilości sekund pozostałych do końca alarmu. Po odliczeniu czasu alarmu zależnie od wcześniejszych nastaw Timer:

  • Zakończy pracę powracając do wyświetlania aktualnego czasu i daty.
  • Przejdzie w stan alarmu trwałego.
  • Zacznie odliczać czas do powtórnego alarmu.

W czasie odliczania czasu do alarmu i samego alarmu działanie Timera można w każdej chwili zakończyć. Należy nacisnąć przycisk impulsatora. Ponowne naciśnięcie kończy pracę Timera, a obrót w dowolną stronę oznacza wycofanie się z zakończenia pracy Timera. W tabeli 1 zostały zebrane dostępne stany i zakresy nastaw urządzenia.

Ryszard Szymaniak, EP

Artykuł ukazał się w
Elektronika Praktyczna
wrzesień 2014
DO POBRANIA
Pobierz PDF Download icon
Materiały dodatkowe
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik listopad 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio listopad - grudzień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje październik 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna listopad 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich listopad 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów