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

Rys. 1. Fizyczna realizacja interfejsu użytkownika z przyciskami pojemnościowymi

 

 

Algorytm odczytu stanu pojedynczego przycisku można przedstawić w kilku krokach:

  1. 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
  2. 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)
  3. Rozpoczęcie procesu odczytu napięcia z przetwornika
  4. 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

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

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).

Do pobrania

O autorze