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

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

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

Rys. 3. Schemat ideowy połączenia układu ADS7843 z mikrokontrolerem i dotykowym panelem rezystancyjnym

 

 

Do pobrania

O autorze