Programowa obsługa klawiatur pojemnościowych w mikrokontrolerach NXP LPC1100
W artykule tym przedstawiony został sposób programowej implementacji obsługi klawiatur dotykowych (pojemnościowych) w mikrokontrolerach LPC1100 firmy NXP Semiconductors za pomocą przetwornika A/C. Jako platformę sprzętową do przetestowania działania przykładowego programu wykorzystano płytkę ewaluacyjną PCF8883 (rysunek 1), na której znajdują się obszary miedzi będące pojemnościowymi czujnikami dotyku. Sposób fizycznego połączenia czujnika pojemnościowego poprzez obwód RC do mikrokontrolera LPC1100 przedstawiono na rysunku 2.
Rys. 1. Widok czterech czujników pojemnościowych na płytce PCF 8883
Rys. 2. Schemat połączenia czujnika pojemnościowego do wejścia przetwornika A/C mikrokontrolera
Zasada działania
Przedstawiona metoda implementacji obsługi klawiatur pojemnościowych wymaga wykorzystania jednego peryferiom mikrokontrolera – przetwornika A/C. Jeden przycisk jest obsługiwany przez jedno wyprowadzenie układu pracujące raz jako przetwornika A/C, a raz jako linia ogólnego przeznaczenia. Proces odczytu stanu przycisku wykonywany jest w kilku prostych krokach (rysunek 3).
Rys. 3. Przebieg sygnału napięcia na ścieżce łączącej przycisk pojemnościowy z mikrokontrolerem
W pierwszej kolejności wyprowadzenie mikrokontrolera konfigurowane jest jako linia ogólnego przeznaczenia (I/O) i wystawiony zostaje na niej logiczny stan wysoki. Efektem tej czynności jest naładowanie zewnętrznego kondensatora o pojemności 10 pF oraz powierzchni miedzi będącej również kondensatorem. Jeśli do obszaru miedzi zbliżony został palec, całkowita pojemność obwodu zostaje zwiększona, co skutkuje zgromadzeniem większej ilości ładunku.
W następnym kroku wyprowadzenie mikrokontrolera jest rekonfigurowane tak, aby mogło działać jako przetwornik A/C. Zmiana ta rozpoczyna proces rozładowania naładowanych wcześniej kondensatorów (prąd płynie do masy układu przez rezystory 5 k i 50 k).
Kolejny etap działania to konwersja przez przetwornik napięcia do postaci cyfrowej. Jeśli odczytane napięcie ma wartość znacznie wyższą niż poziom przyjęty dla stanu przycisku niewciśniętego, oznacza to, że przycisk został wciśnięty. Wyższy poziom napięcia wynika to z faktu dłuższego czasu rozładowania będącego efektem zwiększonej przez palec pojemności.
Następnie wyprowadzenie mikrokontrolera znowu konfigurowane jest jako linia ogólnego przeznaczenia i ustawiany jest stan wysoki. Proces odczytu przycisku rozpoczyna się na nowo.
Etapy procesu odczytu przedstawione na rysunku 3:
- Wystawienie stanu wysokiego (ładowanie kondensatora)
- Włączenie przetwornika A/C (rozładowanie), rozpoczęcie konwersji
- Miejsce odczytu stanu napięcia, interpretacja wyniku (wciśnięcie lub brak wciśnięcia przycisku)
- Powrót do punktu 1