Obsługa kontrolera klawiatur pojemnościowych w mikrokontrolerach Freescale Kinetis
W pierwszej kolejności następuje inicjalizacja modułu TSI. Następnie wykonywana jest kalibracja poprzez wywoływanie funkcji TSI_SelfCalibration(). Funkcja ta wykonuje pojedynczy odczyt pojemności elektrod w celu określenia wartości pojemności w stanie nienaciśnięcia. W kolejnych krokach włączony zostaje tryb odczytu ciągłego i aktywowane zostają przerwania. Proces konfiguracji kończy włączenie modułu TSI.
Po inicjalizacji modułu TSI można przystąpić do odczytu stanu przycisków. Po każdorazowym zakończeniu skanowania wywoływane jest przerwanie. W momencie stwierdzenia prawdopodobieństwa wciśnięcia przycisku, wykonywany jest algorytm mający na celu potwierdzenie wciśnięcia (debounce algorithm). Polega on na wielokrotnym odczycie wartości pojemności, co wyklucza błąd pomiaru lub chwilowe zwiększenie pojemności nie będące efektem wciśnięcia przycisku. Po potwierdzeniu wciśnięcia przycisku ustawiana jest flaga informująca o tym zdarzeniu. Działanie algorytmu pokazano na rysunku 5.
Rys. 5. Schemat działania algorytmu mającego na celu potwierdzenie wciśnięcia przycisku
Projektowanie elektrod
W porównaniu z klasycznymi elektrodami przycisków pojemnościowych, budowa elektrod współpracujących z modułem TSI jest uproszczona. W jej konstrukcji nie jest potrzebny rezystor zewnętrzny typu pull-up, dzięki czemu pole elektrody wymaga jedynie ścieżki doprowadzającej do wejścia mikrokontrolera. W przypadku pracy elektrody w niekorzystnych warunkach elektromagnetycznych warto dodać do ścieżki elementy zabezpieczające. Pierwszym z tych elementów jest dioda przeciwprzepięciowa TVS (transient voltage suppression), natomiast drugim jest szeregowo wpięty rezystor o wartości od 100 ? do 470 ? ograniczający przepływ prądu. Schemat takiego połączenia przedstawiono na rysunku 6.
Rys. 6. Budowa ścieżki między mikrokontrolerem i sensorem elektrody
Projektując na płytce PCB elektrody i doprowadzające sygnał do mikrokontrolera ścieżki warto pamiętać o kilku podstawowych zaleceniach zapewniających ich poprawne działanie. W przypadku współpracy z modułem TSI jest to:
- utrzymywanie szerokości ścieżek na poziomie 5-7 milsów,
- zachowanie prześwitu co najmniej 10 milsów między sąsiadującymi ścieżkami tej samej warstwy płytki,
- zapewnienie możliwie najkrótszej drogi dla ścieżek,
- umieszczanie ścieżek na innej warstwie płytki niż pola sensorowe elektrod,
- unikanie umieszczania obok i pod elektrodami innych komponentów elektronicznych.
Ponadto warto rozważać umieszczanie poligonów masowych. Ich obecność pod i wokół elektrod i ścieżek znacznie poprawia odporność systemu na wpływ zakłóceń. Optymalną strukturą poligonu jest forma kraty, która umieszczona na spodniej warstwie płytki spełnia rolę filtru jednocześnie nie wnosząc do układu pomiarowego pasożytniczej pojemności (rysunek 7).
Rys. 7. Rekomendowany przez firmę Freescale sposób projektowania elektrod i ścieżek
Podsumowanie
Na podstawie przedstawionego opisu można stwierdzić, ze moduł TSI to rozwiązanie umożliwiające implementację taniego i niezawodnego interfejsu klawiatur dotykowych. Główne zalety modułu TSI to:
- Kontroler zintegrowany w strukturze mikrokontrolera,
- Brak konieczności stosowania komponentów zewnętrznych dołączanych do ścieżek elektrod,
- Do odczytu stanu jednej elektrody wystarcza jedno wyprowadzenie mikrokontrolera,
- Współpraca z maksymalnie 16 elektrodami,
- Przerwania informujące i zmianie stanu wciśnięcia,
- Zintegrowane wszystkie źródła zegarowe zapewniające kompensację błędów w przypadku zmiany warunków pracy,
- Konfigurowalne czasowe i elektryczne parametry pracy,
- Zastosowanie do odczytu stanu przycisku źródeł prądowych, co zwiększa wiarygodność odczytu.
Bibliografia
[1] www.freescale.com Kinetis Peripheral Module, 11/2010[2] www.freescale.com Kinetis Reference Manual, 05/2011