Obsługa kontrolera klawiatur pojemnościowych w mikrokontrolerach Freescale Kinetis
Dotykowe interfejsy użytkownika stają się elementem coraz popularniej stosowanym w urządzeniach elektronicznych. Znajdują zastosowanie w produktach różnego rodzaju, począwszy od aplikacji przemysłowych takich jak panele sterujące, a skończywszy na przenośnych urządzeniach powszechnego użytku. Obecnie istnieje wiele technologii pozwalających projektantom na implementację interfejsów dotykowych, jednak najpowszechniejszą z nich jest metoda pojemnościowa.
Inne artykuły o kontrolerach klawiatur dotykowych z oferty Freescale:
– prezentacja układu MPR121, – przegląd rozwiązań bezstykowych firmy Freescale, – opis oprogramowania Xtrinsic Touch Sensing, – przegląd interfejsów bezstykowych firmy Freescale, – przegląd zasad projektowania klawiatur bezstykowych, – opis rozwiązań bezstykowych w TowerSystem. |
Dotychczas najpopularniejszym sposobem implementacji interfejsu użytkownika opartego na metodzie pojemnościowej było wykorzystanie mikrokontrolera z zewnętrznym układem sterownika klawiatur pojemnościowych, bądź mikrokontrolera wykorzystującego biblioteki programistyczne z kodem źródłowym algorytmów odczytu stanów przycisków klawiatur pojemnościowych. Firma Freescale poszła o krok dalej, integrując kontroler klawiatur pojemnościowych o nazwie TSI (Touch Sense Input) w swoich 32-bitowych mikrokontrolerach z rodziny Kinetis.
Zasada działania TSI
Podstawowym elementem obwodu z przyciskiem pojemnościowym jest tak zwana elektroda. Jest to składająca się z materiału przewodzącego prąd powierzchnia, na której znajduje się materiał nieprzewodzący np. plastik lub szkło. Taka konstrukcja tworzy przycisk, który jest dotykany przez użytkownika urządzenia. Powierzchnia przycisku jest kondensatorem, którego pojemność zmienia się w momencie zbliżenia lub oddalenia palca dłoni, co wywołuje odpowiednio efekt zwiększenia i zmniejszenia wartości pojemności kondensatora (rysunek 1). Dołączony do elektrody mechanizm pomiaru pojemności jest w stanie odróżnić stan wciśniętego przycisku od stanu niewciśniętego przycisku.
Rys. 1. Model pojemnościowy przycisku dotykowego
Popularną metodą odczytu stanu przycisku pojemnościowego jest tak zwana metoda RC. Wykorzystuje ona zewnętrzny rezystor (typowo o rezystancji około 1 M?), który umieszczony jest między ścieżką płytki PCB prowadzącą z elektrody do mikrokontrolera lub sterownika klawiatur pojemnościowych, a napięciem zasilania (a więc jest to rezystor typu pull-up). Proces odczytu stanu przycisku polega na pomiarze czasu naładowania kondensatora. W przypadku nienaciśniętego przycisku pojemność jest mniejsza, zatem czas potrzebny do naładowania kondensatora jest krótki. W momencie naciśnięcia przycisku pojemność wzrasta, co skutkuje dłuższym czasem niezbędnym do jego naładowania. Metoda ta, choć prosta i nie wymagająca zaawansowanych zasobów i skomplikowanych obliczeń, ma jednak słaby punkt, którym jest podatność zewnętrznego rezystora na wpływ zakłóceń. Z tego względu w mikrokontrolerach Kinetis zastosowano inną metodę odczytu stanu przycisków. W celu ładowania i rozładowywania elektrody będącej kondensatorem wykorzystywane są dwa źródła prądowe (po jednym oddzielenie dla ładowania i rozładowywania). Schemat takiego mechanizmu pokazano na rysunku 2.
Rys. 2. Struktura wewnętrzna obwodu ładowania i rozładowywania kondensatora elektrody
Cykliczne ładowanie i rozładowywanie kondensatora daje w efekcie sygnał napięciowy o kształcie trójkąta. Czas ładowania (zbocze rosnące sygnału) jest proporcjonalny do wydajności prądowej źródła prądowego i pojemności kondensatora. Wzór przedstawiający tą zależność wygląda następująco:
Czas ładowania kondensatora mierzony jest z wykorzystaniem wewnętrznego oscylatora, niezależnego dla każdej z elektrod. Cały moduł TSI również taktowany jest z wewnętrznego zegara. Takie rozwiązanie zwiększa dokładność pomiaru, gdyż wszystkie mechanizmy zegarowe są zintegrowane w tym samym układzie, dzięki czemu elementy te pracują w takich samych warunkach podlegających tym samym zmianom temperaturowym i napięciowym. Na rysunku 3 pokazano przebieg sygnału taktującego moduł TSI (linia niebieska) i przebieg sygnału ładującego i rozładowującego pojedynczą elektrodę. Warto zwrócić uwagę na zmianę okresu sygnału ładowania i rozładowania kondensatora w momencie wciśnięcia przycisku.
Rys. 3. Przebieg sygnału taktującego moduł TSI (linia niebieska) i przebieg sygnału ładującego i rozładowującego pojedynczą elektrodę