Implementacja obsługi klawiatur pojemnościowych w LPC17xx firmy NXP
Interfejsy użytkownika wykorzystujące technologie dotykowe są coraz powszechniej spotykanym elementem urządzeń elektronicznych, w których zastępują dotychczas stosowane interfejsy użytkownika oparte na elementach mechanicznych. Popularność interfejsów dotykowych można wytłumaczyć ich zaletami, dzięki którym górują nad rozwiązaniami o charakterze mechanicznym – należą do nich między innymi większa niezawodność i funkcjonalność. Nic więc zatem dziwnego, że producenci mikrokontrolerów wprowadzając do sprzedaży nowe układy dbają o to, aby w możliwie łatwy sposób można było w nich zaimplementować obsługę przycisków dotykowych. Przykładem takiego trendu jest przedstawiony poniżej sposób realizacji dotykowego interfejsu użytkownika wykorzystującego mikrokontroler z rodziny LPC17xx (rdzeń ARM Cortex-M3) firmy NXP Semiconductors.
Sposób realizacji warstwy fizycznej interfejsu użytkownika przedstawiono na rys. 1. Cała konstrukcja składa się z umieszczonych na płytce drukowanej miedzianych pól będących przyciskami pojemnościowymi, które zostały dołączone do mikrokontrolera LPC17xx za pomocą obwodów RC (dwa rezystory i kondensator). Wykorzystane w mikrokontrolerze wyprowadzenia muszą spełniać dwa warunki – mieć możliwość pełnienia funkcji linii I/O oraz przetwornika A/C.
Rys. 1. Fizyczna realizacja interfejsu użytkownika z przyciskami pojemnościowymi
Algorytm odczytu stanu pojedynczego przycisku można przedstawić w kilku krokach:
- Skonfigurowanie wyprowadzenia mikrokontrolera jako linii I/O oraz ustawienie logicznego stanu wysokiego. Czynność ta spowoduje naładowanie ładunkiem elektrycznym kondensatora w obwodzie RC oraz pola przycisku
- Przekonfigurowanie wyprowadzenia układu na funkcję przetwornika A/C. Zmiana ta wywoła odpływ ładunku przez rezystory do masy (proces rozładowywania kondensatora i pola przycisku)
- Rozpoczęcie procesu odczytu napięcia z przetwornika
- Odczyt poziomu napięcia na linii. Jeśli pole przycisku było dotknięte przez palec jego pojemność wzrosła, przez co poziom napięcia w momencie odczytu jest wyższy.
Metodę odczytu stanu przycisku wraz z zaznaczeniem omówionych punktów zilustrowano na rys. 2.
Rys. 2. Wykres napięcia w funkcji czasu na wyprowadzeniu dołączonym do przycisku pojemnościowego
Kod źródłowy do obsługi przedstawionego interfejsu użytkownika został podzielony przez autorów programu na kilka plików zgodnie z realizowaną funkcjonalnością. Strukturę plików programu przedstawiono na rys. 3 (środowisko Keil).
Rys. 3. Struktura plików programu
Pracę z programem należy rozpocząć od zapoznania się z plikiem config.h. Poprzez jego edycję można dostosować konfigurację parametrów pracy programu optymalnie do własnych potrzeb – ustawiając liczbę potrzebnych przycisków (od 1 do 8) i przyporządkowując każdemu odpowiednie wyprowadzenie mikrokontrolera i kanał przetwornika A/C (listing 1).