Touch Sensing Library. Obsługa bezstykowych przycisków pojemnościowych.

Touch Sensing Library. Obsługa bezstykowych przycisków pojemnościowych.
Pobierz PDF Download icon
Interfejs użytkownika występuje w większości urządzeń elektronicznych. Jest to element bardzo ważny, a jednak jego istotność jest często przez konstruktorów niedoceniana. Dobrze wykonany interfejs użytkownika pozwala na komfortowe, intuicyjne i zarazem niezawodne użytkowanie urządzenia. Jednym z najistotniejszych komponentów składających się na interfejs użytkownika są przyciski, które są podstawowym elementem umożliwiającym interakcję użytkownika z urządzeniem.
59ELEKTRONIKA PRAKTYCZNA 6/2010 Obsługa bezstykowych przycisków pojemnościowych Przyciski przez długi okres opierały się postępowi techniki i  reprezentowane były niezmiennie przez podzespoły mechaniczne, których działanie opiera się na mechanizmie stykowym. Obecny rozwój technologii spowo- dował znaczny postęp w tej dziedzinie, dzięki czemu obok klasycznych rozwiązań pojawiły się nowe, dotąd nieznane. Najpowszechniej- szą z nich jest metoda bezstykowa, oparta na pomiarze pojemności. Ma ona wiele zalet, wśród których wymienić można np. niskie koszty, łatwość implementacji, dużą trwałość. Producenci układów scalonych, widząc te zalety, wychodzą naprzeciw oczekiwaniom, oferując zintegrowane sterowniki klawiatur pojemnościowych. Wśród największych pro- ducentów zajmujących się tą branżą znajdują się między innymi firmy: Freescale, Micro- chip NXP, Atmel, Elan i STMicroelectronics. Produkty tych firm opisane zostały w  EP 11/2009, EP 1/2010 oraz EP 5/2010. Firma STMicroelectronics, kontynuując prace nad przyciskami pojemnościowymi, przedstawiła bibliotekę Touch Sensing Library przezna- czoną dla mikrokontrolerów z rodziny STM8. Narzędzie to pozwala na implementację w  mikrokontrolerze nawet zaawansowanego interfejsu złożonego z  przycisków pojemno- ściowych przy użyciu standardowych zaso- bów mikrokontrolera i  jednocześnie bez ko- nieczności użycia zewnętrznego kontrolera. Czujniki pojemnościowe i zasada ich działania Zasada działania bezstykowych klawia- tur pojemnościowych opiera się na zjawi- sku zmiany ilości gromadzonego ładunku elektrycznego w elektrodzie (będącej polem przyciskowym) w  zależności od odległości dzielącej elektrodę i ludzkie ciało. Zbliżenie palca powoduje wprowadzenie dodatkowej pojemności. W  dużym przybliżeniu pojem- Obsługa bezstykowych przycisków pojemnościowych Touch Sensing Library Interfejs użytkownika występuje w  większości urządzeń elektronicznych. Jest to element bardzo ważny, a  jednak jego istotność jest często przez konstruktorów niedoceniana. Dobrze wykonany interfejs użytkownika pozwala na komfortowe, intuicyjne i  zarazem niezawodne użytkowanie urządzenia. Jednym z  najistotniejszych komponentów składających się na interfejs użytkownika są przyciski, które są podstawowym elementem umożliwiającym interakcję użytkownika z  urządzeniem. ność spodziewaną w  warunkach oddziały- wania ludzkiego palca na zaprojektowane pole przycisku obliczyć można za pomocą wzoru opisującego pojemność kondensatora płaskiego: gdzie: C ? pojemność ;R ? względna przenikalność elektryczna ośrodka, z którego wykonano dzielący okład- ki izolator ;0 ? przenikalność elektryczna wolnej prze- strzeni A ? pole powierzchni okładek d ? odległość okładek kondensatora W kontekście przycisku pojemnościowe- go ;R jest przenikalnością elektryczną ma- teriału separującego pole przycisku, ;0 jest przenikalnością elektryczną powietrza, A jest powierzchnią pola przycisku, natomiast d odległością między polem przycisku a pal- cem. Za pomocą powyższego wzoru zinter- pretować można ponadto sposób zmian po- jemności ? wraz ze zmniejszaniem dystansu dzielącego palec i pole przycisku pojemność będzie rosnąć, natomiast oddalanie palca spowoduje zmniejszenie pojemności [2]. W  celu maksymalnego uproszczenia sposobu odczytu stanów przycisków firma STMicroelectronics zaproponowała do tego celu metodę, której realizacja możliwa jest za pomocą podstawowych zasobów spoty- kanych w mikrokontrolerach. Wymaganymi peryferiami są linie ogólnego przeznaczenia w liczbie odpowiadającej liczbie przycisków oraz dwa układy licznikowe. Sposób pomia- ru polega na periodycznym ładowaniu i roz- ładowywaniu pojemności elektrody. Proces ładowania i  rozładowania jest odmierzany przez układ licznikowy i na podstawie zmie- rzonego czasu określany jest aktualny stan przycisku. W  momencie startu timera na wszystkie elektrody podawany jest przez re- zystor stan wysoki. W miarę upływu czasu ilość gromadzonego ładunku zwiększa się i  napięcie na elektrodach wzrasta. W  mo- mencie odczytania na danej linii sygnałowej stanu wysokiego obliczany jest czas, który minął od rozpoczęcia ładowania (rys. 1). Po sprawdzeniu w  ten sposób wszyst- kich linii od pól przycisków pojemność elektrod jest rozładowywana przez podanie na linie stanu niskiego. Następnie cały pro- ces sprawdzenia przycisków wykonuje się cyklicznie poprzez powtarzanie opisanych etapów. Schemat elektryczny przedstawiają- cy sposób podłączania przycisków zamiesz- czony został na rys. 3. Obsługa biblioteki Touch Sensing Library Biblioteka Touch Sensing Library jest kompleksowym narzędziem do obsługi Rys. 1. Proces ładowania i rozładowania pojemności elektrody oraz zmieniający się poziom napięcia na elektrodzie [3] Jeśli zmierzony czas przekroczył ustaloną wartość, oznacza to, że cykl ładowania był wydłużony z powodu dodatkowej pojemności wprowadzonej przez ludzkie ciało, a więc przycisk został naciśnięty (rys. 2) Notatnik konstruktora 60 ELEKTRONIKA PRAKTYCZNA 6/2010 Notatnik konstruktora bezstykowych przyci- sków pojemnościowych. Umożliwia nie tylko od- czyt stanów przycisków metodą opisaną powy- żej, ale oferuje ponadto szereg mechanizmów zwiększających funkcjo- nalność tego procesu. Są to między innymi zaim- plementowane algorytmy pełniące funkcje filtrów przeciwzakłóceniowych oraz wbudowane procedu- ry kalibrujące. Pozwala to na wykrycie błędów zwią- zanych z tak zwanymi fał- szywymi naciśnięciami, a  więc błędami odczytu wynikającymi ze zmiany pojemności elektrody wy- wołanej np. zakłóceniami pochodzącymi od zasila- nia czy zmianami środo- wiskowymi (temperatura, wilgotność, kurz). Sama architektura bi- blioteki ma budowę war- stwową. Można w  niej wyróżnić zasadniczo trzy bloki: ? Acquisition layer ? warstwa odpowie- dzialna za ładowanie/ rozładowanie elektrod i  zbieranie surowych danych ? Post processing layer ? warstwa kontrolują- ca kalibrację, filtrowanie i adaptację do zmian środowiskowych ? API ? warstwa umożliwiająca użytkowni- kowi konfigurację i dostęp do danych wy- nikowych oraz zmiennych statusowych Struktura plików biblioteki podzielona została ze względu na realizowane funkcje. Po- dział ten został przeprowadzony zgodnie z opi- sanymi warstwami, a ponadto został rozszerzo- ny o elementy charakterystyczne dla mikrokon- trolera, a więc np. plik służący do wyboru sto- sowanej podrodziny STM8, plik konfiguracyjny wykorzystywanych peryferii czy plik definiują- cy liczbę użytych przycisków oraz ich przypo- rządkowanie do portów. Kompletna struktura plików przedstawiona została na rys. 4. Pracę z biblioteką Touch Sensing Libra- ry należy rozpocząć od edycji pliku STM8_ TSL_RC_Configuration.h. Należy w  nim zdefiniować peryferie, które będą używane przez bibliotekę oraz wskazać porty podłą- czone do pól przycisków i  linii ładowania/ rozładowania. Przykładowa konfiguracja przedstawiona jest w tab. 1. Wykorzystany- mi układami licznikowymi są Timer3 oraz Timer4. Port PC2 odpowiedzialny jest za ładowanie i rozładowanie pojemności, nato- miast do portu PC1 doprowadzone jest pole przycisku pojemnościowego (rys. 5). Inicjalizacji biblioteki dokonuje się za po- mocą wywołania funkcji TSL_Init(). Aktywa- cja przycisku wykonywana jest poprzez wypeł- nienie struktury konfiguracyjnej sSCKeyInfo: sSCKeyInfo[0]. Setting.b.IMPLEMENTED = 1; sSCKeyInfo[0].Setting.b.ENABLED = 1; sSCKeyInfo[0].DESGroup = 0x01; Wykrycie zmiany stanu przycisków moż- liwe jest poprzez monitorowanie wartości Tab. 1. Przykładowe przyporządkowanie wybranych peryferii do elementów wykonawczych biblioteki Touch Sensing Library [1] Funkcja Nazwa przy dyrektywie #define w  pliku STM8_TSL_RC_ Configuration.h Wartość Opis Wybór mikrokontrolera STM8S 1 Wybrana podrodzina STM8S Licznik nr 1 TIMACQ TIMACQ_CNTR_ADD TIM3 0x5328 Timer do licznika nr 1 = TIMER3 Adres timera = 0x5328 Licznik nr 2 TIMTICK TIM4 Timer do licznika nr 2 = TIMER4 Linia sygnałowa do ładowania/ rozładowania LOADREF_PORT_ADDR LOADREF_BIT GPIOC_BaseAdress 0x04 Linia ładowania/rozładowania = PC2 Przyciski jednokanałowe SCKEY_P1_KEY_COUNT SCKEY_P1_PORT_ADDR SCKEY_P1_A SCKEY_P1_DRIVEN_SHIELD_MASK SCKEY_P2_COUNT SCKEY_P3_COUNT 1 GPIOC_BaseAddress 0x02 0x08 0 0 Liczba klawiszy = 1 Port przycisku = port C Pin przycisku = pin nr 1 Warstwa ochronna dla przycisku P1 wyłączona Przycisk P2 wyłączony Przycisk P3 wyłączony Przyciski wielokanałowe NUMBER_OF_MULTI_CHANNEL_KEYS 0 Funkcja wielokanałowych przycisków wyłączona Maski elektrod GPIOA_ELECTRODES_MASK GPIOA_ELECTRODES_MASK GPIOA_ELECTRODES_MASK GPIOA_ELECTRODES_MASK GPIOA_ELECTRODES_MASK GPIOA_ELECTRODES_MASK GPIOA_ELECTRODES_MASK GPIOA_ELECTRODES_MASK GPIOA_ELECTRODES_MASK 0x00 0x00 0x0A 0x00 0x00 0x00 0x00 0x00 0x00 Definicja masek dla elektrod (wartość nieużywanych masek = 0x00) Rys. 2. Proces sprawdzania stanu przycisków (różnica przebiegów dla samej elektrody oraz elektrody ze zbliżonym palcem) [3] Rys. 3. Sposób podłączania przycisków pojemnościowych do układu mikrokontrolera [3] 61ELEKTRONIKA PRAKTYCZNA 6/2010 Obsługa bezstykowych przycisków pojemnościowych pól struktury TSL_GlobalSetting. Przykłado- wy kod wykonujący tą czynność może wy- glądać następująco: if (TSL_GlobalSetting.b.CHANGED) { TSL_GlobalSetting.b.CHANGED = 0; if (sSCKeyInfo[0]. Setting.b.DETECTED) { /* wykrycie wciśnięcia przycisku */ } } TSL_Action(); Kompleksowy program obsługujący przyciski pojemnościowe powinien być zgodny ze schematem blokowym z rys. 6. Kod programu realizujący czynności zgodne ze schematem blokowym: #include ?stm8s.h? #include ?stm8_tsl_rc_api.h? void main(void) { /* Konfiguracja zegara */ CLK_HSIPrescalerConfig(CLK_PRESCALER_ HSIDIV1); /* Inicjalizacja biblioteki ?Touch Sensing Library? */ TSL_Init(); /* Aktywacja wybranego przycisku */ sSCKeyInfo[0].Setting.b.IMPLEMENTED = 1; Rys. 4. Widok plików składających się na bibliotekę Touch Sensing Library w przykładowym projekcie w środowisku ST Visual Develop Rys. 5. Połączenie mikrokontrolera STM8S z układem RC przycisku pojemnościowe- go Rys. 6. Schemat blokowy przykładowego programu do obsługi przycisków pojem- nościowych sSCKeyInfo[0].Setting.b.ENABLED = 1; sSCKeyInfo[0].DESGroup = 0x01; /* Włączenie przerwań */ enableInterrupts(); while(1) { if (TSL_ GlobalSetting.b.CHANGED ) { TSL_ GlobalSetting.b.CHANGED = 0; if (sSCKeyInfo[0]. Setting.b.DETECTED) { /* wykryto wciśnięcie przycisku */ } } TSL_Action(); } } Dokładny opis wszystkich aspektów dotyczących biblioteki Touch Sensing Li- brary znajduje się w  pliku pomocy STM8 TSL Manual. Zostały tam opisane między innymi wszystkie funkcje i struktury danych wchodzące w  skład tego narzędzia. Pakiet instalacyjny biblioteki zwierający ten do- kument oraz pliki źródłowe biblioteki wraz z przykładami dostępny jest pod poniższym adresem: http://www.st.com/stonline/products/support/ micro/files/stm8s_touch_sensing_package.zip Podsumowanie Biblioteka Touch Sensing Library jest ko- lejnym krokiem w  rozwoju dziedziny elek- troniki, jaką są bezstykowe przyciski pojem- nościowe. Narzędzie do ich obsługi zapropo- nowane przez firmę STMicroelectronics jest ciekawym rozwiązaniem, gdyż umożliwia pro- gramową implementację obsługi przycisków w  mikrokontrolerach rodziny STM8. Jakość i  funkcjonalność tej metody obsługi przyci- sków nie ustępuje rozwiązaniom sprzętowym, a więc zintegrowanym kontrolerom klawiatur pojemnościowych. Dodatkowym atutem jest możliwość nieodpłatnego korzystania z  tego narzędzia, gdyż jest ono udostępniane przez producenta za darmo. Daje to możliwość szyb- kiego i taniego zaadaptowania tego rozwiąza- nia w  nowych lub istniejących konstrukcjach. Szymon Panecki szymon.panecki@pwr.wroc.pl Literatura [1] www.st.com Adjustable LED blinking spe- ed using STM8S-DISCOVERY touch sensing key, UM0833 User manual [2] www.st.com Guidelines for designing to- uch sensing applications, AN2869 applica- tion note [3] www.st.com RC acquisition principle for touch sensing applications, AN2927 applica- tion note [4] www.st.com STM8S Access Line/Perfor- mance Line, datasheet R E K L A M A
Artykuł ukazał się w
Czerwiec 2010
DO POBRANIA
Pobierz PDF Download icon
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik grudzień 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 listopad - grudzień 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna grudzień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich grudzień 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów