ADS7843 i STM32: obsługa dotykowego panelu rezystancyjnego
Jednym z coraz częściej stosowanych interfejsów użytkownika, w które są wyposażane różnego rodzaju urządzenia jest panel dotykowy. Poniższy artykuł ma na celu przybliżenie budowy oraz sposobu obsługi rezystancyjnego panelu dotykowego.
Jest to jeden z najtańszych rodzajów paneli dotykowych dostępnych na rynku. Niestety, razem z ceną ,jak to często fbywa, idzie jakość. Panele te nie są tak dokładne jak panele wykonane w innych technologiach i bardzo łatwo mogą ulec uszkodzeniu przez ostre przedmiot. Jednak panele te mogą pracować niezawodnie przez bardzo długi czas, gdy zachowa się odpowiednią ostrożność.
W ofercie KAMAMI.pl jest dostępny 3,2-calowy wyświetlacz LCD-TFT (240×320 pikseli) z rezystancyjnym touch-panelem obsługiwanym przez przetwornik ADS7843.
|
Panel rezystancyjny zbudowany jest z dwóch przezroczystych warstw przewodzących, pomiędzy którymi jest niewidoczna przerwa, oraz z warstwy izolacyjnej. Budowa panelu rezystancyjnego została przedstawiona na rys. 1.
Rys. 1. Budowa dotykowego panelu rezystancyjnego
Aby odczytać miejsce, w którym panel został dotknięty, trzeba przyłożyć napięcie pomiędzy okładki Y+ i Y-. W wyniku czego, w miejscu gdzie nastąpiło przyciśnięcie, górna warstwa X styka się z dolna warstwą Y tworząc dzielnik napięcia. W takiej sytuacji pomiędzy okładkami X+ i X- pojawia się napięcie, które należy odczytać. Po odpowiedniej konwersji tego napięcia, można uzyskać pozycję Y, w której nastąpiło dotkniecie panelu. Aby odczytać pozycję X trzeba przyłożyć napięcie pomiędzy okładkę X+ a X- i odczytać wartość napięcia między okładkami Y+ a Y-.
Pomimo tego, że obsługa takiego panelu wydaję się nieskomplikowana, w praktyce potrafi ona sprawić wiele problemów. W poprawnym odczycie pozycji mogą przeszkodzić dwie rzeczy. Pierwsza z nich wynika z drgań górnej powierzchni, które mogą się pojawić przy przyciśnięciu panelu dotykowego. Jeśli drgania są wystarczająco silne, to powierzchnia górna styka się z dolna w kilku miejscach, co powoduje błędny odczyt pozycji. Druga niekorzystna sytuacja wywołana jest przez ładowanie się pojemności pasożytniczych pomiędzy warstwą X a Y oraz na wejściu przetwornika ADC, co również ma wpływ na błędny odczyt.
Aby uniknąć powyższych problemów przy obsłudze panelu, można skorzystać z zewnętrznego kontrolera. W poniższym przykładzie skorzystano z kontrolera ADS7843. Układ ten jest wyposażony w 12-bitowy przetwornik analogowo-cyfrowy (wykorzystywany do pomiaru napięcia pomiędzy okładkami panelu), multiplekser (służący do wyboru okładki, na której wykonywany jest pomiar) oraz interfejs SPI do komunikacji z otoczeniem. Producent umożliwił konfigurowanie następujących parametrów pracy układu:
- wybór kanału – pozwala to na osobny odczyt pozycji X oraz pozycji Y,
- ustawienie rozdzielczości przetwornika – podstawowa rozdzielczość to 12 bit jednak można ją zmniejszyć do 8 bit,
- wybór trybu pomiarów – pomiary mogą być wykonywane w jednym z dwóch trybów, pierwszy z nich Single-Ended Reference Mode (SER) – pomiar wykonywany jest przy wolnym taktowaniu zegara po ustąpieniu drgań powierzchni panelu, drugi z nich to Differential Reference Mode (DFR) – pomiar z wykorzystaniem metody różnicowej przy dużo wyższej częstotliwości taktowania (dwukrotne wysłanie żądania pomiaru napięcia na jednej z osi, pierwszy pomiar jest wykonywany, gdy powierzchnia górna drga, drugi tuż po ustabilizowaniu się drgań),
- wybór trybu pracy – określenie trybu zarządzania energią, pierwszy powoduje, że po każdej konwersji układ przechodzi w stan niskiego poboru energii, w drugim trybie urządzenie przez cały czas pracuje w stanie normalnego poboru energii.
Komunikacja z kontrolerem odbywa się poprzez szeregowy interfejs SPI wbudowany w układ za pomocą następujących linii:
- CS (Chip Select) – linia odpowiadająca za wybór układu i rozpoczęcie komunikacji, aktywnym stanem jest poziom niski,
- DCLK (Data Clock) – linia zegara taktującego i synchronizującego,
- DIN (Data In) – linia, po której przekazywane są dane wejściowe,
- BUSY – linia informująca o zajętości urządzenia (np. podczas konwersji),
- DOUT (Data Out) – linia, po której przekazywane są dane wychodzące z urządzenia.
Na rysunku poniżej przedstawiono przykładowe przebiegi sygnałów podczas komunikacji.
Rys. 2. Przykładowe przebiegi sygnałów magistrali SPI
Pierwszym krokiem wykonywanym podczas komunikacji jest ustawienie linii CS w stan niski oraz rozpoczęcie podawania sygnału zegarowego na linię DCLK. W tym momencie kontroler jest gotowy do pracy i oczekuje na dane wejściowe podawane na linii DIN, które służą do kontrolowania układu ADS7843. Format danych wejściowych jest widoczny na rys. 2, gdzie:
- S – bit startu – każda ramka kontrolna zaczyna się od bitu startu ustawionego w stan wysoki,
- A2 – A0 – bity wyboru kanału, na którym będzie wykonywany pomiar ADC, w praktyce decydują o tym czy zostanie zmierzona pozycja X czy Y,
- MODE – bit, który decyduje o rozdzielczości pomiarów ADC: ‘0’ – 12 bitów, ‘1’ – 8 bitów,
- SER/DFR – bit ustawiający tryb wykonywania pomiarów, ‘1’ – Single-Ended Reference Mode, ‘0’ Differential Reference Mode,
- PD1 – PD0 – bity określające wybrany tryb Power–Down.
Po wykonaniu konwersji urządzenie odpowiada 12 bitami zawierającymi zmierzone napięcie dla danej osi panelu, z którego należy odczytać pozycje przyciśnięcia panelu. Schemat podłączenia układu do koordynatora przedstawiony jest na rys. 3.
Rys. 3. Schemat ideowy połączenia układu ADS7843 z mikrokontrolerem i dotykowym panelem rezystancyjnym