Obsługa pojemnościowych paneli dotykowych. Na przykładzie panelu zintegrowanego z wyświetlaczem Winstar WF35QTIBCDBC0#

Obsługa pojemnościowych paneli dotykowych. Na przykładzie panelu zintegrowanego z wyświetlaczem Winstar WF35QTIBCDBC0#
Pobierz PDF Download icon

W swojej praktyce projektowej wielokrotnie korzystałem z możliwości funkcjonalnych, które daje nam w projektowanym urządzeniu zintegrowanie nowoczesnego panelu dotykowego z wyświetlaczem. Dziś chyba już nikt nie ma wątpliwości, że elementy tego typu stały się standardowym i nieodzownym wyposażeniem wielu urządzeń powszechnego użytku, gdyż stawiają one na zupełnie nowej płaszczyźnie interakcję urządzenia z użytkownikiem czyniąc ją bardziej naturalną i... ludzką.

Tabela 1. Rozmieszczenie i opis wyprowadzeń 36-pinowego, standardowego złącza typu ZIFF wyświetlacza WF35QTIBCDBC0#

W tej chwili trudno sobie wyobrazić nowoczesny system nawigacji satelitarnej, współczesny telefon komórkowy czy też mały, przenośny komputer bez interfejsu dotykowego, a skoro taki (moim zdaniem słuszny) jest kierunek rozwoju współczesnej elektroniki użytkowej, czemu nie skorzystać z możliwości, jakie daje nam ten prosty, a zarazem genialny element. Tym bardziej, iż za sprawą dalekowschodnich producentów jest on w zasięgu możliwości finansowych większości, jak myślę, elektroników.

Jak wiadomo, pierwsze z elementów tego typu, które zastosowano w urządzeniach powszechnego użytku, bazowały na zasadzie pomiaru rezystancji dwóch przeźroczystych folii rezystancyjnych przedzielonych dielektrykiem, których to dotknięcie (a w zasadzie naciśnięcie) powodowało powstanie miejsca styku i odpowiednią zmianę stosunku rezystancji tak utworzonego dzielnika rezystancyjnego, który odpowiednio spolaryzowany pozwala na odczyt położenia miejsca styku tychże folii.

Rozwiązanie tego typu, choć proste i tanie w produkcji, ma szereg wad. Panel rezystancyjny wymagał kalibracji, często musiał być obsługiwany za pomocą rysika, zaś same folie odznaczały się stosunkowo małą trwałością (wystarczy przypomnieć sobie jakość obsługi pierwszych telefonów komórkowych wyposażonych w tego rodzaju panel dotykowy lub też tanich systemów nawigacji satelitarnej, które z uwagi na cenę, nadal korzystają z tego typu rozwiązań).

Jak to zwykle bywa, dość szybko poradzono sobie z tym problemem, wprowadzając do powszechnego użycia pojemnościowe panele dotykowe, które poza rozwiązaniem wielu problemów, z jakimi borykały się panele rezystancyjne, pozwoliły na wprowadzenie nowych, niedostępnych dotąd funkcjonalności, jak: obsługa wielu punktów jednocześnie, detekcja i obsługa tzw. gestów czy też wrażliwość na siłę nacisku. Poza tym, konstrukcja tego rodzaju peryferiów zapewniła im znacznie większą trwałość, jak i zdecydowanie zmniejszyła niekorzystny wpływ na jakość wyświetlanego obrazu na zintegrowanym zeń wyświetlaczem.

Ekran dotykowy wykonany w technologii pojemnościowej, co oczywiste, działa na innej zasadzie, aniżeli ekrany rezystancyjne. W panelach pojemnościowych jest stosowanych szereg różnych rozwiązań, które różnią się konstrukcją i zasadą działania, lecz dla typowych ekranów o najbardziej popularnych rozmiarach nieprzekraczających zwykle 10", jest stosowane rozwiązanie bazujące na wykorzystaniu zjawiska zmiany pola elektrycznego w miejscu dotknięcia szklanej płytki, na której napylono szereg niewidzialnych elektrod (równoległych do siebie linii), osobno dla osi X i Y.

W przypadku dotknięcia ekranu tego typu, w miejscu tegoż dotknięcia zmienia się wartość pojemności elektrostatycznej na pobliskich elektrodach, w związku, z czym dość łatwo i precyzyjnie można określić miejsce dotyku. Dodatkowym atutem tego rodzaju rozwiązania jest możliwość detekcji wielu dotknięć w tym samym czasie (tzw. multi touch), duża szybkość reakcji, bardzo wysoka precyzja zapewniająca detekcję nawet delikatnych "muśnięć" ekranu, odporność detekcji na wodę i kurz, jak i (dzięki zastosowaniu zintegrowanego sterownika z odpowiednim oprogramowaniem) zdolność do detekcji różnych gestów użytkownika.

Rysunek 1. Typowy schemat aplikacyjny wyświetlacza WF35QTIBCDBC0# z zastosowaniem mikrokontrolera ATmega324.

Potencjalną wadą tego rodzaju rozwiązania jest fakt, że panele takie wymagają dotknięcia gołym palcem lub specjalnym rodzajem wskaźnika, są wrażliwe na znajdujące się w pobliżu metalowe elementy oraz fakt, że zwykle nie można z nich korzystać w rękawiczkach, choć tę ostatnią niedogodność wyeliminowano w ostatnich rozwiązaniach stosowanych w telefonach komórkowych.

Mając te, podstawowe informacje na temat naszego, ciekawego peryferium przejdźmy do rozwiązania praktycznego, którego bardzo dobrym przykładem jest pojemnościowy panel dotykowy ze zintegrowanym sterownikiem zastosowany w nowej serii kolorowych wyświetlaczy ciekłokrystalicznych TFT firmy Winstar, na przykład model o przekątnej ekranu 3,5" o oznaczeniu WF35QTIBCDBC0#, który charakteryzuje się następującymi właściwościami użytkowymi:

  • Rozdzielczość 320×240 pikseli.
  • Zintegrowany sterownik ekranu SSD1963 wyposażony w wiele unikalnych funkcji sprzętowych ułatwiających rysowanie standardowych elementów ekranu.
  • 16-bitowa głębia kolorów (w standardzie RGB565).
  • 16-bitowa magistrala danych (w tym, konkretnym modelu).
  • Zintegrowana przetwornica do podświetlenia ekranu.
  • Zintegrowany sterownik pojemnościowego panelu dotykowego z rodziny FT5X06 firmy FocalTech Systems, Ltd. (co zresztą skrzętnie jest ukrywane przez producenta wyświetlacza TFT).

Ważniejsze rejestry kontrolera panelu dotykowego FT5X06

Wartość tego rejestru, przeznaczonego wyłącznie do odczytu, określa bieżący tryb pracy sterownika FT5X06: 0x00→Normalny tryb pracy sterownika (domyślnie), 0x40→Tryb testu.

Wartość tego rejestru, przeznaczonego wyłącznie do odczytu, określa rodzaj wykrytego gestu użytkownika: 0x00→Brak gestu, 0x10→Przesunięcie w górę, 0x14→Przesunięcie w lewo, 0x18→Przesunięcie w dół, 0x1C→Przesunięcie w prawo, 0x48→Gest pomniejszenia, 0x49→Gest powiększenia.

Wartość tego rejestru, przeznaczonego wyłącznie do odczytu, określa liczbę wykrytych dotknięć ekranu (funkcja multi touch): 1...10.

Wartość tego rejestru, przeznaczonego wyłącznie do odczytu, określa rodzaj zdarzenia dla pierwszego dotyku (bity F1...F0) jak również 4 najstarsze bity współrzędnej X pierwszego miejsca dotyku (TX11...TX8). Dostępne są następujące wartości bitów fl agi zdarzenia: 0x00→Naciśnięcie panelu, 0x01→Koniec naciśnięcia panelu, 0x02→Dalsze naciskanie panelu.

Wartość tego rejestru, przeznaczonego wyłącznie do odczytu, określa 8 najmłodszych bitów współrzędnej X pierwszego miejsca dotyku.

Wartość tego rejestru, przeznaczonego wyłącznie do odczytu, określa identyfikator dotyku (bity ID3...ID0, niewykorzystywane) jak również 4 najstarsze bity współrzędnej Y pierwszego miejsca dotyku (TY11...TY8).

Wartość tego rejestru, przeznaczonego wyłącznie do odczytu, określa 8 najmłodszych bitów współrzędnej Y pierwszego miejsca dotyku.

Tabela 2. Adresy i funkcje rejestrów

Jako, że obsługa wyświetlaczy TFT wyposażonych w sterownik SSD1963 była tematem mojego artykułu z numeru EP 8/2011, jak również rozwiązania praktycznego pod postacią systemu intelliDom (z EP 10/2011 i EP 11/2011) w tej chwili nie będę powracał do tej tematyki, lecz skupię się na samej obsłudze pojemnościowego panelu dotykowego. Wspomniany sterownik FT5X06 ma następujące właściwości użytkowe:

  • Obsługa do 10 punktów dotyku w tym samym czasie (multi-touch).
  • Sygnalizacja zdarzeń typu: dotknięcie panelu, dalszy kontakt, koniec dotknięcia panelu (zdjęcie palca z panelu).
  • Sygnalizacja gestów: przesunięcie w górę, w dół, w prawo, w lewo, gest powiększenia, gest zmniejszenia.
  • 3 tryby pracy zróżnicowane pod względem funkcjonalności i poboru energii: Active, Monitor i Hibernate.
  • Wyjście /INT przeznaczone do sygnalizacji zdarzeń do kontrolera-hosta (aktywny stan niski).
  • Wejście /WAKE przeznaczone do usypiania/wybudzania sterownika panelu pojemnościowego (aktywny stan niski).
  • Zintegrowany interfejs komunikacyjny I²C z trybem high-speed 400 kHz.
  • Szereg sprzętowych rejestrów konfiguracyjnych pozwalających na szczegółową konfigurację parametrów sterownika związanych z detekcją dotyku i algorytmem sterującym dla różnych warunków pracy (zawilgocenie, krople wody, zabrudzenie).
  • Napięcie zasilania z zakresu 2,8...3,6 V.
  • Szeroki zakres temperatury pracy -40...+85°C.
  • Obsługa przekątnych ekranu do 8,9" (aktualnie 3,5"; 4,3"; 5,7" i 7").
  • Rozdzielczość 896×640 dla panelu o przekątnej 3,5", 1280×768 dla 4,3", 1408×1024 dla 5,7", 1792×1024 dla 7".
  • Wbudowany mikrokontroler z rodziny 8051 z 28 kB pamięci Flash, 6 kB pamięci RAM i 256 B pamięci EEPROM.

Listing 1. Ciała funkcji odpowiedzialnych za obsługę interfejsu TWI mikrokontrolera ATmega32A

W tabeli 1 umieszczono rozkład wyprowadzeń 36-pinowego, standardowego złącza typu ZIFF (raster 0,5 mm), w które wyposażono wyświetlacz WF35QTIBCDBC0#, jak i pozostałe, nowe modele firmy Winstar wraz z opisem wyprowadzeń.

Jak to zwykle bywa, obsługa urządzeń peryferyjnych tego typu polega na odczycie/zapisie specjalnych rejestrów stanu/konfiguracyjnych, dzięki którym możemy skonfigurować sterownik panelu oraz odczytywać bieżący stan urządzenia.

Mimo że sterownik FT5X06 ma szereg możliwości w zakresie drobiazgowej konfiguracji algorytmu detekcji dotyku w różnych warunkach pracy panelu, i konfigurowania trybów pracy sterownika, standardowe, zdefiniowane przez producenta ustawienia są w zupełności wystarczające w zdecydowanej większości aplikacji, więc przedstawię wyłącznie te rejestry, za pomocą których jest możliwa ocena najważniejszych zdarzeń z punktu widzenia aplikacji użytkownika. Typowy schemat aplikacyjny wyświetlacza WF35QTIBCDBC0# z zastosowaniem mikrokontrolera ATmega324 w roli kontrolera-hosta, pokazano na rysunku 1.

Jak widać, jest to dość prosty system mikroprocesorowy, który do obsługi wbudowanego w wyświetlacz TFT sterownika panelu dotykowego wykorzystuje sprzętowy interfejs TWI mikrokontrolera (kompatybilny z interfejsem I²C) oraz przerwanie zewnętrzne INT1, które to wyzwalane jest za każdym razem, gdy sterownik FT5X06 wykryje obsługiwane zdarzenie nadzorowanego przezeń pojemnościowego panelu dotykowego. Przykładowe przebiegi na wyprowadzeniu /INT sterownika panelu dotykowego podczas naciskania obsługiwanego przezeń pojemnościowego panelu dotykowego pokazano na rysunku 2.

Listing 2. Listing pliku nagłówkowego sterownika panelu dotykowego

Dodatkowo, wprowadzono możliwość sygnalizacji dotknięcia panelu dotykowego przez prosty buzzer piezoelektryczny ze zintegrowanym generatorem lub też opcjonalnie (co wykorzystuje się dość często w aplikacjach telefonów komórkowych) za pomocą wibrującego silniczka o specjalnej konstrukcji. Mechanizm ten wykorzystuje wbudowany w strukturę mikrokontrolera Timer sprzętowy, dzięki któremu jest możliwe odmierzanie zadanego czasu sygnalizacji bez wstrzymywania pracy programu głównego aplikacji. Przejdźmy, zatem do opisu najważniejszych, z punktu widzenia użytkownika, rejestrów, dzięki którym aplikacja użytkownika dostaje informację o bieżącym zdarzeniu z udziałem panelu dotykowego. Wykaz ważniejszych rejestrów zamieszczono w ramce.

Znaczenie bitów rejestrów konfiguracyjnych odpowiedzialnych za parametry pozostałych miejsc dotyku jest analogiczne jak rejestrów dla pierwszego miejsca dotyku, zaś ich adresy i funkcje przedstawiono w tabeli 1.

Jak wspomniano, sterownik FT5X06 wyposażono w szereg dodatkowych rejestrów konfiguracyjnych, za pomocą których możemy wpływać na algorytm detekcji dotyku dla różnych warunków pracy obsługiwanego pojemnościowego panelu dotykowego oraz na progi aktywacji dostępnych trybów pracy, jednak w zdecydowanej większości przypadków typowych aplikacji, nie ma potrzeby ingerencji w domyślne ustawienia producenta układu. Inną sprawą jest, iż producent ten dość ogólnikowo opisuje znaczenie tychże rejestrów dla pracy algorytmu detekcji jak i samego sterownika, co czyni je stosunkowo mało wartościowymi z punktu widzenia programisty.

W tej chwili dysponujemy już wystarczającą wiedzą na temat samego sterownika panelu dotykowego by przejść do stosownego oprogramowania. Zanim jednak przejdę do szczegółów implementacyjnych, przedstawię podstawowe funkcje, dzięki którym możliwa jest komunikacja przy udziale interfejsu TWI mikrokontrolera, przy czym należy zaznaczyć, iż są to podstawowe implementacje poszczególnych funkcjonalności niewyposażone np. w mechanizm obsługi błędów, który moim zdaniem, nie jest elementem niezbędnym w tak prostych i niewielkich systemach mikroprocesorowych. Ciała funkcji odpowiedzialnych za obsługę interfejsu TWI pokazano na listingu 1.

Myślę, że nie wymagają one dodatkowego komentarza, gdyż ich nazwy są na tyle wymowne, iż nie pozostawiają wątpliwości, co do realizowanych przez nie funkcjonalności. Przejdźmy, zatem do funkcji bezpośrednio związanych z obsługą panelu dotykowego.

Zanim jednak przedstawię listingi tychże funkcji warto poznać zawartość pliku nagłówkowego stosownego sterownika, który skonstruowano w taki sposób by bez lektury dokumentacji układu FT5X06 łatwo było się zorientować w realizowanej przezeń funkcjonalności. Dodatkowo zadeklarowano dwa, nowe typy strukturalne, które znacznie zwiększają czytelność programu obsługi jak również ułatwiają dostęp do zmiennych. Listing pliku nagłówkowego sterownika panelu dotykowego przedstawiono na listingu 2.

Rysunek 2. Przykładowe przebiegi na wyprowadzeniu /INT sterownika panelu dotykowego

Na listingu 3 przedstawiono ciało funkcji odpowiedzialnej za inicjalizację sterownika panelu dotykowego, zaś na listingu 4 ciało funkcji obsługi przerwania zewnętrznego (w naszym przypadku INT1) odpowiedzialnej za odczyt zdarzeń panelu dotykowego (wyzwalane opadającym zboczem sygnału) oraz przerwania od przepełnienia Timera0, odpowiedzialnej za obsługę opcjonalnego buzzera.

Dodatkową, bardzo użyteczną funkcję narzędziową (zwłaszcza przy konstrukcji wszelkiego rodzaju graficznych interfejsów użytkownika), której zadaniem jest sprawdzanie czy odczytane koordynaty miejsca dotyku panelu dotykowego mieszczą się w zakresie obszaru określonego argumentami wywołania funkcji (prostokątny obszar określony parametrami współrzędnych X i Y lewego górnego i prawego, dolnego wierzchołka) przedstawiono na listingu 5 (stosowne współrzędne należy zdefiniować jako zmienną strukturalną typu rectType w pamięci programu mikrokontrolera).

Listing 3. Ciało funkcji odpowiedzialnej za inicjalizację sterownika panelu dotykowego

Listing 4. Ciało funkcji obsługi przerwania zewnętrznego odpowiedzialnej za odczyt zdarzeń panelu dotykowego

Listing 5. Ciało funkcji narzędziowej do sprawdzania położenia współrzędnych panelu dotykowego

Funkcja ta zwraca wartość 1, jeśli bieżące koordynaty miejsca dotyku panelu dotykowego mieszczą się w zakresie obszaru określonego argumentami jej wywołania. Kończąc tematykę obsługi pojemnościowych paneli dotykowych przy udziale sterownika FT5X06 chciałbym szczególnie polecić Czytelnikom ten rodzaj układu i zintegrowany z nim, całkiem niedrogi wyświetlacz TFT jako doskonałe urządzenie peryferyjne dające nowe możliwości w konstruowaniu urządzeń mikroprocesorowych, dostępne dotychczas wyłącznie dla profesjonalistów.

Co ciekawe, szukając informacji na temat tegoż układu, natknąłem się na źródła sterowników programowych dedykowanych właśnie jemu dla systemu operacyjnego Linux jak i innych, znanych systemów stosowanych w urządzeniach mobilnych, co dobitnie potwierdza jego atrakcyjność i nowoczesność zastosowanych w nim rozwiązań.

Robert Wołgajew, EP

Artykuł ukazał się w
Elektronika Praktyczna
wrzesień 2014
DO POBRANIA
Pobierz PDF Download icon
Zobacz też
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik czerwiec 2020

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio lipiec 2020

Świat Radio

Magazyn użytkowników eteru

APA - Automatyka Podzespoły Aplikacje czerwiec 2020

APA - Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna czerwiec 2020

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Praktyczny Kurs Elektroniki 2018

Praktyczny Kurs Elektroniki

24 pasjonujące projekty elektroniczne

Elektronika dla Wszystkich czerwiec 2020

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów