Mikrokontrolery ARM. Elektroniczny zegar / budzik / kalendarz z wyświetlaczem NIXIE. Opis projektu

Podobne dokumenty
1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33

1.2. Architektura rdzenia ARM Cortex-M3...16

Sprawozdanie z projektu MARM. Część druga Specyfikacja końcowa. Prowadzący: dr. Mariusz Suchenek. Autor: Dawid Kołcz. Data: r.

Dokumentacja Licznika PLI-2

Firma DAGON Leszno ul. Jackowskiego 24 tel Produkt serii DAGON Lighting

STEROWNIK LAMP LED MS-1 Konwerter sygnału 0-10V. Agropian System

INDU-22. Przemysłowy Sterownik Mikroprocesorowy. Przeznaczenie. masownica próżniowa

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

INDU-40. Przemysłowy Sterownik Mikroprocesorowy. Przeznaczenie. Dozowniki płynów, mieszacze płynów.

Ciśnieniomierz typ AL154AG08.P

Radio FM kuchenne SoundMaster UR 2006, LCD, pamięć 30 stacji

INDU-21. Przemysłowy Sterownik Mikroprocesorowy. Przeznaczenie Masownice próżniowe, mieszałki

Radio kuchenne Soundmaster DAB 2035, FM, RDS, srebrne

WEJŚCIE W TRYB PROGRAMOWANIA

Moduł przekaźnika czasowego FRM01 Instrukcja obsługi

Stoper solarny C5085 INSTRUKCJA OBSŁUGI. Nr produktu Strona 1 z 7

INSTRUKCJA OBSŁUGI. Przekaźnik czasowy ETM ELEKTROTECH Dzierżoniów. 1. Zastosowanie

Budzik SoundMaster UR8900SI, cyfrowy

dokument DOK wersja 1.0

Commander

Instrukcja obsługi Zasilacz regulowany WINNERS XL4015 USB

REMOTE CONTROLLER RADIO 4

ZL28ARM. Zestaw uruchomieniowy dla mikrokontrolerów AT91SAM7XC

INDU-52. Przemysłowy Sterownik Mikroprocesorowy. Przeznaczenie Kotły warzelne, Patelnie gastronomiczne, Piekarniki

Wyświetlacz funkcyjny C6

INDU-60. Przemysłowy Sterownik Mikroprocesorowy. Przeznaczenie Myjki tunelowe pojemników i palet.

Kontroler Xelee Master DMX64/512 - Instrukcja obsługi. Kontroler Xelee Master DMX64/512 Firmware 1.1 Instrukcja Obsługi.

Programowalne Układy Cyfrowe Laboratorium

AAT Trading Company Sp. z o.o. ul. Puławska 359, Warszawa tel.: , fax: http.://

Radiobudzik z projektorem Drodzy Klienci

Moduł przekaźnika czasowego FRM01. Instrukcja obsługi

Parametryzacja przetworników analogowocyfrowych

Radiobudzik FM SoundMaster FUR

A-100WP ELEKTRONICZNY WANDALOODPORNY ZEWNĘTRZNY ZAMEK SZYFROWY DO MONTAŻU NADTYNKOWEGO

Interfejs analogowy LDN-...-AN

PROGRAMOWALNA CZUJKA TEMPERATURY td-1_pl 01/13

ZL4PIC uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC (v.1.0) Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

Metody obsługi zdarzeń

REGULATOR WYDAJNOŚCI WENTYLACJI RC2

PROGRAM TESTOWY LCWIN.EXE OPIS DZIAŁANIA I INSTRUKCJA UŻYTKOWNIKA

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej

DOKUMENTACJA TECHNICZNA WSKAŹNIKA ŁADOWANIA BATERII WSK-2 / 24V

Czytnik kart zbliżeniowych PROX 4k Instrukcja obsługi kartą Master

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

PK-01. Autonomiczny moduł kontroli przejścia

3. Wyświetlacz LCD. 4. Przycisk [TIME]

Instrukcja obsługi i instalacji 4 kanałowego, 20-to czujnikowego (lub 35-cio czujnikowego opcja) mikroprocesorowego MODUŁU REJESTRATORA SMART

Przełącznik KVM USB. Przełącznik KVM USB z obsługą sygnału audio i 2 portami. Przełącznik KVM USB z obsługą sygnału audio i 4 portami

Programowanie mikrokontrolerów 2.0

Dwukanałowy regulator temperatury NA24

INSTRUKACJA UŻYTKOWANIA

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Przed rozpoczęciem podłączania urządzenia koniecznie zapoznać się z niniejszą instrukcją Eolis RTS!

Przemysłowy Sterownik Mikroprocesorowy

ĆWICZENIE 7. Wprowadzenie do funkcji specjalnych sterownika LOGO!

Licznik prędkości LP100 rev. 2.48

ZL30ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F103

ZAPRASZAMY NA NASZE AUKCJE SCIGANY81 (c) Copyright

PPHU Janusz Janowski Nowy Sącz; ul. Franciszkańska 3 tel.(0-18) , fax. (0-18)

ATS1170 Stacja zazbrajania dla jednych drzwi Instrukcja programowania

Odbiornik z wyświetlaczem

Opis układów wykorzystanych w aplikacji

ZL16AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega8/48/88/168

Kasa fiskalna "TURKUS" Blok funkcji dostępnych dla Serwisu.

Kod produktu: MP01105

Przemysłowy Sterownik Mikroprocesorowy

Terminal WSP dla sygnalizatorów wibracyjnych

AN ON OFF TEMPERATURE CONTROLLER WITH A MOBILE APPLICATION

Opis Ogólny OPIS INTERFEJSU POMIAROWEGO AL154SAV5.

TERMOSTAT Z WYŚWIETLACZEM LED - 50,0 do +125,0 C

dv-2ps INSTRUKCJA OBSŁUGI

KA-NUCLEO-UniExp. Wielofunkcyjny ekspander dla NUCLEO i Arduino z Bluetooth, MEMS 3DoF, LED-RGB i czujnikiem temperatury

TDWA-21 TABLICOWY DWUPRZEWODOWY WYŚWIETLACZ SYGNAŁÓW ANALOGOWYCH DOKUMENTACJA TECHNICZNO-RUCHOWA. Wrocław, listopad 1999 r.

Licznik rewersyjny MD100 rev. 2.48

SML3 październik

SPECYFIKACJA PRZETWORNIK RÓŻNICY CIŚNIEŃ DPC250; DPC250-D; DPC4000; DPC4000-D

Instrukcja obsługi elektronicznego licznika typu 524. Model 524. Licznik sumujący i wskaźnik pozycji typu Opis. 1. Opis

TWRS-21 TABLICOWY WYŚWIETLACZ CYFROWY DOKUMENTACJA TECHNICZNO-RUCHOWA. Wrocław, listopad 1999 r.

Elementy struktur cyfrowych. Magistrale, układy iterowane w przestrzeni i w czasie, wprowadzanie i wyprowadzanie danych.

Deklaracja zgodności nr 46/2011

Instrukcja obsługi sterownika Novitek Triton

INSTRUKCJA OBSŁUGI MONITORA LINII PRĄDOWEJ

INSTRUKCJA OBSŁUGI DO WYSWIETLACZA LCD C600

INSTRUKCJA OBSŁUGI ZEGARKA ANALOGOWEGO

DPS-3203TK-3. Zasilacz laboratoryjny 3kanałowy. Instrukcja obsługi

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

Szkoła programisty PLC : sterowniki przemysłowe / Gilewski Tomasz. Gliwice, cop Spis treści

Szkolenia specjalistyczne

Dokumentacja sterownika mikroprocesorowego "MIKSTER MCC 026"

Różnicowy przetwornik ciśnienia EL-PS-xxx

DOKUMENTACJA TECHNICZNO-RUCHOWA. Sterownik mikroklimatu FAG25-III

ZL29ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

SPECYFIKACJA PRZETWORNIK RÓŻNICY CIŚNIEŃ

SYGNALIZATOR DŹWIĘKOWY SD-2

INDU-41. Przemysłowy Sterownik Mikroprocesorowy. Przeznaczenie: Dozownik płynów

Polski. Podręcznik Użytkownika BT-03i

IIPW_SML3_680 (Z80) przewodnik do ćwiczeń laboratoryjnych

Sterownik źródła zasilania STR-Z01

INSTRUKCJA OBSŁUGI systemu pomiarowego

Instrukcja obsługi Zamek na kod cyfrowy TLM2-BL/SV

Transkrypt:

Mikrokontrolery ARM Elektroniczny zegar / budzik / kalendarz z wyświetlaczem NIXIE. Opis projektu 27.06.2016 Tomasz Jaroszewski Opis funkcjonalny W ramach projektu wykonany został elektroniczny zegar z budzikiem i funkcją kalendarza. Zegar wyposażony jest w j neonowe lampy typu NIXIE, za pomocą których wyświetla czas lub datę. Prosty, składający się z 3 przycisków interfejs zapewnia możliwość przełączania trybów wyświetlacza i umożliwić programowanie zegara oraz kalendarza, a także obsługę budzika. Funkcję sterownika zegara pełni zestaw uruchomieniowy NUCLEO-STM32F411RE. Do wykonania zegara niezbędny był ponadto: zasilacz 5V do zasilania części cyfrowej, zasilacz 12V do zasilania przetwornicy 12/150V do zasilania anod lamp NIXIE, płytka wyświetlacza z lampami NIXIE i drajwerami 74141, płytka z przyciskami, przetwornicą napięcia, rejestrami przesuwnymi Wyświetlacz będzie się składał z sześciu lamp NIXIE (obecnie 5 cyfr), z dziesięcioma cyframi arabskimi każda oraz czterech neonówek (chwilowo diody LED). Planowane jest zaimplementowanie automatycznej regulacji jasności świecenia wyświetlacza w zależności od natężenia światła (nie ukończone). Użytkownik ma do dyspozycji 3 tryby wyświetlania: ZEGAR neonówki dwukropka migają z częstotliwością 1 Hz. Neonówka po lewej stronie sygnalizuje uaktywnienie alarmu. Format wyświetlania czasu gg:mm.ss.

KALENDARZ świeci tylko dolna neonówka dwukropka, neonówka po lewej stronie sygnalizuje uaktywnienie alarmu. Format wyświetlania daty DD:MM:RR. BUDZIK neonówki nie migają, neonówka po lewej stronie sygnalizuje uaktywnienie alarmu. Jeśli alarm jest aktywny, to o zaprogramowanej godzinie zegar zacznie emitować dźwięk (oczywiście w każdym trybie wyswietlania) zapisany na karcie SD lub przerywany sygnał dźwiękowy w przypadku braku karty lub pliku. Dźwięk będzie emitowany do momentu wciśnięcia przycisku, ale nie dłużej niż przez 5 minut. Dodatkowo w każdym z w/w trybów zegar można przełączyć w tryb PROGRAMOWANIA. W trybie PROGRAMOWANIA edytowana cyfra (lub cyfry) miga z częstotliwością 1 Hz. Zegar posiada trzy przyciski, tak jak radzieckie elektroniczne zegary typu электрoника 8. Ich funkcje są podobne jak w tychże zegarach (zegarki te nie posiadały trybu kalendarza). Przycisk 1 przełącza tryby: ZEGAR -> KALENDARZ -> BUDZIK -> ZEGAR Przycisk 2 przełącza w tryb PROGRAMOWANIA: czasu w trybie ZEGAR : sekundy (tylko zerowanie) -> jedności minut -> dziesiątki minut -> godzina (2 cyfry) -> wyjście z trybu ustawiania -> daty w trybie KALENDARZ : jedności lat -> dziesiątki lat -> miesiąc ->jedności dni -> dziesiątki dni -> wyjście z trybu ustawiania -> godziny alarmu w trybie BUDZIK : jak w trybie zegara, ale z pominięciem sekund

Przycisk 3: w trybie BUDZIK powoduje włączenie/wyłączenia alarmu (budzika). Włączenie (aktywność alarmu) sygnalizowane jest zapaleniem skrajnej lewej neonówki. w trybie PROGRAMOWANIA czasu/daty zwiększa edytowaną cyfrę o 1 (po osiągnięciu wartości maksymalnej następne naciśnięcie powoduje zmianę na wartość minimalną). Podczas edycji sekund naciśnięcie przycisku powoduje zerowanie sekund. w trybie ZEGAR oraz KALENDARZ naciśnięcie przycisku 3 nie ma wpływu na pracę zegara. Budowa zegara Jak wcześniej wspomniano, zegar składa się z następujących modułów: Zestaw uruchomieniowy NUKLEO z mikrokontrolerem STM32F411RE, zasilaczy, Wyświetlacza z dekoderami BCD na 1 10 (74141) Płytki z przyciskami, przetwornicą oraz rejestrami przesuwnymi, Zegar korzysta z następujących zasobów mikrokontrolera: układ przerwań, RTC odliczanie czasu i generowanie przerwań co 1s oraz przerwań alarmu (budzika), SPI 1 sterowanie wyświetlaczem, kanał OC3 licznika 2 do sterowania przetwornicą zasilającą lampy NIXIE 3 linie: PB3, PB4 i PC13 + kanał OC1 licznika 2 obsługa klawiszy, W planach: SPI +DMA komunikacja z kartą SD licznik w trybie PWM do generowania dźwięku, 1 kanał ADC do pomiaru natężenia światła (gotowa funkcja konfiguracji ADC, wyzwalanie przetwornika przez licznik). Schemat blokowy zegara.

Jak wcześniej wspomniałem klawisze podłączone są do linii PC13 (przycisk USER klawisz 1) PB3 klawisz 2 i PB4 klawisz 3, skonfigurowanych jako wejścia. Skonfigurowane są jako źródła przerwań zewnętrznych EXTI. Wyjście kanału OC3 licznika 2 (wyjście PWM) do sterowania kluczem MOS przetwornicy napięcia podłączone jest do linii PB10. Linia PA6 (skonfigurowana jako wyjście) służy do zatrzaskiwania danych w buforach wyjściowych rejestrów 74HC595. Linie PA5 i PA7 skonfigurowane są jako wyjścia interfejsu SPI. Oprogramowanie Kod programu zawarty jest w kilku plikach. Część plików odpowiada za konfigurację układów peryferyjnych oraz zegarów mikrokontrolera (ich nazwy mówią same za siebie): o RTC_config o NVIC_config o GPIO_config o SPI_config o RCC_ config o ADC_ config o Timer_config.c Komentarze umieszczone w kodzie programu objaśniają szczegóły konfiguracji. Warto zwrócić uwagę na sposób konfiguracji czasu i daty. Po poprawnym skonfigurowaniu układu RTC i zaprogramowaniu czasu i daty zapisywana jest w rejestrze RTC_BKP_DR0 wartość 0X9527. Jeżeli mikrokontroler będzie miał podłączoną baterię podtrzymującą pracę generatora LSE oraz backup domain lub jeśli nie zostanie odłączone zasilanie ale wykonany zostanie reset mikrokontrolera to podczas inicjalizacji sprawdzona zostanie zawartość w/w rejestru i jeżeli będzie ona równa 0X9527 ustawienia czasu daty i budzika nie zostaną zmienione. Pozostałe pliki to: o main.c zawiera funkcję main(), funkcje wyświetlające czas, datę i godzinę alarmu: disp_time(), disp_date(), disp_alarm(), a także funkcje odpowiadające za reakcję na naciśnięcie klawiszy switch1(), switch2() i switch3(). o STM32F4xx_it.c zawiera funkcje obsługi przerwań. Cała obsługa układów peryferyjnych (komunikacja z wyświetlaczem, RTC ) i zdarzeń zewnętrznych (naciśnięcie klawiszy, odliczanie czasu wciśnięcia klawiszy), odbywa się podczas obsługi przerwań. Tylko procedury konfigurujące rdzeń i układy peryferyjne mikrokontrolera są wykonywane w funkcji main() kolejno: Konfiguracja zegarów, Konfiguracja GPIO, Konfiguracja licznika, (Konfiguracja przetwornika ADC), Konfiguracja RTC, Konfiguracja Układu przerwań. Po skonfigurowaniu wszystkich niezbędnych układów następuje inicjalizacja zmiennych globalnych a następnie rozpoczyna się wykonywanie nieskończonej, pustej pętli. Użyte w programie zmienne globalne:

mode tryb pracy: 0 - wyswietlanie czasu, 1 - wyświetlanie daty, 2 - wyświetlanie godziny alarmu prog_mode tryb programowania (dokładny opis w pliku globals.h) led odpowiada za miganie dwukropka w trybie zegara (1 górna kropka świeci / 0 nie świeci) off_digit w trybie programowania odpowiada za miganie edytowanej cyfry... time_2_mode0 odlicza czas [s] do automatycznego powrotu do trybu 0 - zegar z trybów 1 i 2 (powrót blokowany przy programowaniu) alarm 0 - alarm wyłączony, 1 - alarm aktywny i budzik nie dzwoni, 2 - budzik dzwoni time struktura RTC_TimeTypeDef do zapamiętania aktualnej godziny date struktura RTC_DateTypeDef do zapamiętania aktualnej daty alarm_time struktura RTC_AlarmTypeDef do zapamiętania aktualnej godziny alarmu RTC_TimeTypeDef temp_time struktury jak wyżej, wykorzystywane podczas programowania. RTC_DateTypeDef temp_date RTC_AlarmTypeDef temp_alarm. Ze względu na dużą ilość komentarzy w kodzie programu omówię tylko ogólną koncepcję działania oprogramowania. Układ przerwań obsługuje zdarzenia zewnętrzne linii EXTI3 (klawisz 2), EXTI4 (klawisz 3), EXTI13 (klawisz 1) oraz EXTI17 (RTC budzik oraz odliczanie sekund). Pierwsze 3 ustawiają tylko liczniki (odpowiednie zmienne globalne) służące do odliczania opóźnienia, po którym sprawdzany jest ponownie stan linii wejściowej. Gdy na skutek mechanicznych drgań styków poszczególne funkcje przerwania wywołane zostaną kilkukrotnie poszczególne liczniki będą inicjowane za każdym razem wartością początkowa. W mikrokontrolerach STM32F4xx wyjście przerwań układu RTC połączone jest z linią EXTI17 a za obsługę przerwania odpowiedzialna jest funkcja RTC_Alarm_IRQHandler(). W funkcji tej sprawdzana jest co 1s wartość zmiennej mode i w zależności od jej wartości wywoływana jest opowiednia funkcja disp_xxx() odczytująca z RTC i wyświetlająca czas, datę lub godzinę alarmu. Funkcje te odpowiadają także za odpowiednie włączenie/wyłączenie LEDów/neonówek oraz miganie edytowanych cyfr w trybie programowania. W przerwanie od RTC (co 1s) dekrementowany jest licznik odpowiadający za automatyczny powrót z trybów budzik i kalendarz do trybu zegar. Kolejnym źródłem przerwania jest licznik TIM2 a dokładnie kanał 1 tego licznika pracujący w trybie zliczania czasu. Funkcja tego przerwania ogranicza się do odliczania czasu wciśnięcia klawisza (poprzez zliczanie ilości wystąpień tego przerwania przy wciśniętym klawiszu dekrementacja zmiennych keyxcounter) Jeśli klawisz wciśnięty jest odpowiednio długo wywoływana jest odpowiednia funkcja switchx(), która wykonuje właściwy dla danego klawisza kod. W zależności od potrzeby realizowane jest lub blokowane autopowtarzanie np. podczas programowania czasu przytrzymanie klawisza 3 powoduje zmianę programowanej wartości co około 1s. Przerwanie od licznika ma najwyższy priorytet, pozostałe źródła przerwania mają najniższy możliwy priorytet i nie powodują wzajemnego wydziedziczania. Za odliczanie czasu odpowiedzialny jest wbudowany w mikrokontroler układ zegara czasu rzeczywistego (RTC) skonfigurowany do generowania przerwania co 1s. Czas i data odczytywane i zapisywane są z/do układu RTC w kodzie BCD, co ułatwia wysyłanie danych do wyświetlacza (nie ma potrzeby konwersji danych przed wysłaniem, ale konieczna jest korekta podczas programowania godzin i miesięcy przy przejściu 9 -> 10 i 19 -> 20). Do odliczanie czasu (godziny i daty) nie jest konieczne wykonywanie kodu programu. Podczas programowania daty konieczne jest również sprawdzenie zgodności daty (wpisanego dnia) z długością aktualnego miesiąca.

Interfejs SPI wykorzystany został do wysyłania danych do wyświetlacza. W celu odświeżenia zawartości wyświetlacza konieczne jest wysłanie 4 bajtów (2 x 16 bitów) najmłodszy bajt steruje świeceniem diod LED i/lub neonówek, kolejne 3 zawierają wartości w kodzie BCD sterujące dekoderami 74141. Przeprowadzane były próby mające na celu wykonanie regulatora napięcia zasilającego lampy NIXIE z wykorzystaniem przetwornika ADC. Klucz MOS przetwornicy sterowany jest sygnałem PWM z kanału 3 licznika TIM2, natomiast charakterystyka napięcia wyjściowego prostej przetwornicy wykonanej na 1 kluczu MOS okazała się mocno nieliniowa i niemonotoniczna). Skutkowało to silnym nagrzewaniem tranzystora i nieprzewidywalnym zachowanie dla pewnych wartości częstotliwości i wypełnienia. W związku z tym konieczne było dobranie tych wartości doświadczalnie i ustawienie ich na stałe. Ten sam licznik wykorzystywany jest do obsługi klawiatury ( autopowtarzanie, filtrowanie drgań styków). Częstotliwość przepełniania licznika ma wpływ na prace klawiatury i zmiana częstotliwości przepełniania licznika pociąga za sobą konieczność zmiany wartości odpowiednich stałych. Dodatkowe założenia, które zostały zrealizowane w oprogramowaniu: wygaszanie zera na pozycji dziesiątek godzin, odliczanie czasu w trybie programowania (zegar normalnie odlicza czas a na wyświetlaczu aktualizowane są cyfry tak jak we wspomnianych wcześniej radzieckich budzikach elektronicznych), zegar automatycznie przechodzi z trybu BUDZIK i KALENDARZ do trybu ZEGAR po kilkunastu sekundach (co zostało wyżej opisane). Podsumowanie Projekt wykonany został w z wykorzystaniem płytki uniwersalnej oraz 5-cyfrowego wyświetlacza NIXIE pochodzącego ze starego miernika częstotliwości. Wymaga jeszcze dopracowania oprogramowania, wykonania nowej płytki drukowanej pozwalającej obsłużyć 6 cyfr wyświetlacza i umieszczenie pomiędzy cyframi zegara dwukropka oraz wykonania estetycznej obudowy. Poniższe zdjęcia przedstawiają aktualny stan:

Zegar będący przedmiotem tego projektu po wykonaniu płytki drukowanej wyświetlacza oraz odpowiedniej obudowy będzie w pełni funkcjonalnym urządzeniem, mającym zastosowanie w codziennym ( a ze względu na rodzaj wyświetlacza i conocnym ) życiu. Znaczne zasoby mikrokontrolera, w szczególności możliwości komunikacji z innymi urządzeniami poprzez USB, bluetooth itp. ) pozwolą w przyszłości rozbudować zegar o dodatkowe funkcje, np. zdalne programowanie budzika lub synchronizacja czasu z GPS.