Przedstawiony projekt panelu dotykowego może być użyty jako część systemu sterowania, znajdując zastosowanie praktycznie wszędzie, poprzez dziedziny przemysłowe, bezpieczeństwa, kontroli dostępu, … po edukacyjne i rozrywkowe.
Electric Field Imaging Device „E-Field”
Chęć skonstruowania własnego panelu dotykowego przyszła mi podczas praktycznej realizacji mojej pracy dyplomowej, gdzie wymagane było zastosowanie dużej żywotności bez-awaryjnego przełącznika do sterowania manipulatorem, w ilości większej niż 10 przycisków. Projekt ten polecam wszystkim tym których chcą w swoich własnych urządzeniach zastosować proste rozwiązania paneli dotykowych, jednocześnie zwiększyć funkcjonalność urządzenia oraz poprawić wizualny wygląd projektu.
Słowa wstępu:
Popularność paneli dotykowych wzrasta z dnia na dzień, ich obecność jest widoczna w szerokiej gamie sprzętu AGD-RTV, przemyśle, rozrywce i wielu innych dziedzinach. Zalety jakie daje nam użycie panelu dotykowego to : dłuższa żywotność (brak styków), możliwość wkomponowania przycisków naszego menu w część obudowy, w krytycznych sytuacjach większą szczelność obudowy co może czynić urządzenie kompletnie zamkniętym, znacznie odpornym na wpływy atmosferyczne.
Prezentowane urządzenie oparte jest o dedykowane układy paneli dotykowych Electric Field Imaging Device „E-Field” MC34940 firmy Freescale. Zgodnie z rekomendacją producenta, układy mogą również znaleźć zastosowanie w urządzeniach kontrolnych jako wykonawcze panele dotykowe, wykrywanie położenia, urządzenia kontrolne w przemyśle, peryferia komputerowe, pomiar wielkości typu: pomiar poziomu cieczy. Jeden układ potrafi obsłużyć do siedmiu bądź dziewięciu przycisków, które stanowią pady wytrawione na laminacie o niewielkiej powierzchni. Prezentowane urządzenie składa się w 2 układów MC34940 siedmio-przyciskowych, obsługiwanych przez procesor MSP430F123 firmy Teras Instruments, który zapewnia dodatkowo komunikację zewnętrzną między prezentowanym urządzeniem a procesorem wykonawczym w innym większym projekcie, dzięki dwu przewodowej szynie I2C (SDA.SCL) wraz z wyjściem przerwania IRQ.
Opis układu MC34940:
Zastosowany w tym projekcie układ jest dedykowanym panelem dotykowym (siedmio-przyciskowym) firmy Freescale o oznaczeniu MC34940.
Rys.1 Idea działania układów paneli dotykowych
Idea działania układu przedstawiona na rysunku 1. Polega na generowaniu sygnału sinusoidalnego o niskiej częstotliwości 120kHz (dobierana poprzez zmianę zewnętrznego rezystora Rosc) o niskiej zawartości pasożytniczych harmonicznych i amplitudzie peak-to-peak 5V. Sygnał następnie jest podawany na zewnętrzną elektrodę (pad na laminacie) oraz wewnętrzny detektor. W chwili przyłożenia palca do elektrody zostaje zaburzony sygnał zmienny o częstotliwości 120kHz, ciało ludzkie tworzy zewnętrzną pojemność do ziemi, co skutkuje pojawieniem się napięcia stałego na wejściu detektora diodowego. Idąc dalej poprzez filtr wygładzający dolno przepustowy do kolejnego detektora napięcia stałego, który wyznacza czułość panelu, mierząc otrzymaną wartość napięcia stałego. Wartość tego napięcia jest większa czym wytworzy się mniejszą pojemność przez dotknięcie elektrody. To właśnie ten parametr jest bardzo istotny przy doborze materiału na jaki się decydujemy aby przykryć pady. Zwiększenie pojemności powoduje zmniejszenie czułości, dlatego też nie bez powodu inżynierowie z firmy Freescale zdecydowali się na częstotliwość 120kHz wyznaczającą pojemność rzędu 10-70pF. Aby dobrze dobrać materiał na pokrycie padów koniecznym staje się wyznaczanie przybliżonej pojemności jakiej możemy się spodziewać podczas dotyku, co przedstawia rys2
Rys.2 Wyznaczanie przybliżonej pojemności
Gdzie:
C – pojemność obliczona
k(εr) - współczynnik mówiący o przenikalności materiału
A – powierzchnia wyrażona w m2
d – dystans po między elektrodami
ε0 =1 - przenikalność elektryczna w próżni
Kilka dodatkowych właściwości materiałowych przedstawia zestawienie w tabeli 1:
Substancja | k(εr) |
2,1 | |
2,25 | |
2,4-2,7 | |
2,6 | |
3,5 | |
3,7 | |
4,5 | |
7 | |
5,5-10 | |
3-15 | |
10-15 | |
11,68 |
Tab.1 Właściwości innych materiałów
Jeżeli jednak uznamy, że czułość naszego panelu jest zbyt niska zabiegiem pożądanym jest: a)zmniejszenie częstotliwości pracy generatora do 82kHz przez zmianę wartości zewnętrznego rezystora Rosc z 39kOhm na 20kOhm, co da przybliżoną czułość dla pojemności 150pF.
b)zmiana pojemności filtru dolno przepustowego (LP_CAP) za detektorem, standardowo 10nF daje reakcje 2.5ms, 1nF – 500us. Zabieg ten okupiony jest jednak znawczymi szumami wchodzącymi na detektor napięcia, co może powodować awaryjną pracę układu.
Szczegóły obrazuje rysunek 3 niżej :
Rys.3 Napięcie na wejściu detektora w stosunku do pojemności i częstotliwości pracy układu
Układ MC34940 daje możliwość obsługi do siedmiu padów (przycisków) E1..E7 wytrawionych na jedno warstwowym laminacie, dostępna jest również wersja z większa ilością MC33794 (9 padów).
Wewnętrzną budowę układu przedstawia rysunek 4.
Rys.4 Wewnętrzna budowa układu
Wejścia padów (przycisków) E1..E7 posiada zabezpieczenie do 2kV.
Wejścia VCCCAP, VDDCAP zapewniają filtrację napięcia zmiennego i stałego wykorzystywanego wewnątrz układu do prawidłowej pracy. Dołączona zewnętrzna rezystancja Rosc służy do wyboru częstotliwości z jaką będzie pracował wewnątrz generator nasze układ. W przedstawiony urządzeniu jest to wartość 39kOhm, dając częstotliwość sygnału zmiennego 120kHz. Komunikacja z Mc34940, którą zapewnia procesor MSP430f123 realizowana jest dzięki 4 przewodowej szynie danych A, B, C, Level.
Podczas pracy sygnał z generatora jest multipleksowany na siedem wyjść do zewnętrznych padów E1..E7, oraz za każdym razem badany jest detektor napięcia stałego.
Opis działania:
Urządzenie dedykowanie ma pracować przy zasilaniu bateryjnym 4V-9V. Problemem okazało się uzyskanie z jednego źródła zasilania dwóch napięć stałych wartości 3.3V (wykorzystane przez procesor), 9V(wykorzystane przez układy paneli dotykowych) co wymagało zastosowania dwóch przekształtników napięcia.
Schemat urządzenia przedstawiony jest na rysunku 5.
Na wejściu znajduje się szybki bezpiecznik SMD 100mA. Przełącznik S1 służy do wyboru pracy urządzenia, pozycja górna to normalna praca panelu dotykowego, pozycja dolna to włączenie w obieg baterii układu ładowarki ogniw li-ion, Li-pol, MCP73831. Jest to układ dedykowanej ładowarki ogniw, który w zależności od wersji układu (-1, -2 , -3, -4)zapewnia możliwość ładowania 4.20, 4.35, 4.40, 4.50 V, dodatkowo przez zmianę zewnętrznego rezystora R8 możliwe jest ustalenie prądu ładowania ogniwa. Informację o trwaniu procesu ładowania zapewnia nam świecąca dioda LED D4. Po włączeniu opcji ładowania należy dołączyć do urządzenia kabel mini USB(rysunek 6) z którego ładowarka pobierze prąd, przy napięciu 5VDC.
Rys. 6 Kabel mini USB
Użycie MCP73831 może okazać się przydatnym, kiedy zdecydujemy się na zamknięcie naszego urządzenia w obudowie do której dostęp w chwili wymiany baterii może być kłopotliwy.
Pracę panelu sygnalizuje dioda LED D3, za nią znajduje się szybka dioda schottky D2, która zapobiega zmianie polaryzacji baterii, oraz daje możliwość szybkiego przełączania dla przekształtnika napięcia. Z racji zasilania bateryjnego urządzenia, koniecznym stało się użycie przekształtników napięcia MAX882(U2), MAX618(U1). Pierwszy z nich jest w gruncie rzeczy stabilizatorem LDO, C9 C10 C11 to standardowe pojemności filtrujące. Drugi układ jest przekształtnikiem podwyższającym pracujący przy częstotliwości przełączania 250kHz, który zapewnia prąd 12mA dla dwóch układów MC34940, elementy zewnętrzne L, C zostały dobrane tak aby zagwarantować poprawność pracy. R1,R3,R4,R6 to zestawienie rezystorów tak aby w domowych warunkach dobrać łączną rezystancję 710kOhm, wymaganą do zapewnienia napięcia na wyjściu przekształtnika 9VDC.
Dedykowane układy paneli dotykowych MC34940 posiadają wejścia E1..E7 do podłączenia padów, oraz pin SHIELD który daje możliwość dołączenia masy w postaci oplotu przewodów E1..E7 w sytuacji gdy panel dotykowy musi być oddalony od części elektronicznej. Pojemności podłączone pod wejścia VCCCAP, CDDCAP stanowią część układów filtrujących napięcie zmienne i stałe do prawidłowej pracy układów, zaś pod pinem LPCAP znajdują się pojemności filtrujące napięcie stałe przed wejście do głównego detektora napięcia panelu dotykowego.
Sterowanie układem realizowane jest przez wybór wyjścia multipleksera (wybór E1..E7)
Podając odpowiednią kombinację bitową na liniach A, B, C możliwe jest ustawienie multiplekser na żądany pad.
Po wyborze padu, informację o aktualnie przyłożonym palcu sygnalizuje wyjście 5V LEVEL, które podawane jest na tranzystor BC846 by uzyskać wejściowe napięcie dla procesora 3.3V logicznie widziane jako ‘1’ .
Procesor za każdym razem przełącza na odpowiednie wyjścia padów E1..E7 skanując jednocześnie pojawienie się napięcia LEVEL.
Głównym elementem wykonawczym w urządzeniu jest 16bitowy procesor MSP430f123, zamiennikiem może być również MSP430F1232. Jest to 28pinowy w wersji SMD, przyjazny procesor o napięciu zasilania z zakresu 1.8-3.6V, posiadającym 16-bitową architekturę RISC, 8KB pamięci Flash oraz 256B pamięci Ram. Taktowany rezonatorem kwarcowym 32k768 (zegarkowym).
Programowanie procesora odbywa się poprzez porty J-tag (VCC,GND,TEST,RESET,TDO,TDI,TMS,TCK) co daje możliwość również debugowania pracy przy użyciu przykładowego środowiska IAR. Do procesora dołączone są diody D5..D8,
które początkowo służyły mi w celu detekcji przyciśniętego klawisza wskazując kombinację bitową, w ostatecznej wersji programu wszystkie sygnalizują przyciśnięcie padu.
Dodatkową sygnalizację przyciśnięcia padu może sygnalizować buzer LS1, który w obecnej wersji programu jest wyłączony. Procesor w chwili wykrycia padu na linii IRQ, podczas normalnej pracy występuje w stanie wysokim, zmienia stan linii na niski, po czym transmituje dane po magistrali I2C.
Opis software :
Główna idea programu zestawiona jest na listingu 1.
//------------------------------------------------------------------------------ // main //------------------------------------------------------------------------------ void main(void) {
init(); //peryferia init_i2c(); //i2c
while(1) //skanowanie { switch(licz) { case 1: set1_E1(); //wybierz segment if((P2IN&BIT1)!=0x00) {dana1 |= BIT0+BIT1;} ….. case 7: set1_E7(); //wybierz segment if((P2IN&BIT1)!=0x00) {dana1 |= BIT0+BIT7; } ….. }
switch(licz) { case 8: set2_E1(); //wybierz segment if((P2IN&BIT0)!=0x00) {dana2 |= BIT0+BIT1; } ….. case 14: set2_E7(); //wybierz segment if((P2IN&BIT0)!=0x00) {dana2 |= BIT0+BIT7; } ….. } licz++;
if(licz>14){ //zbieranie wyników licz=1; if((dana1&BIT0)==1) {P3OUT |=IRQ_touch; wpisz_data_i2c(0x01,dana1);} //wyslij daną P3OUT &= IRQ_touch; //czysc przerwanie if((dana2&BIT0)==1) {P3OUT |=IRQ_touch; wpisz_data_i2c(0x02,dana2);} //wyslij daną P3OUT &= IRQ_touch; //czysc przerwanie dana1=0x00; //czyść bufory dana2=0x00; } } }
|
Listing 1. Główna pętle programu
Procesor po starcie inicjalizuje swoje porty do pracy oraz układ Watchdoga. Następnym etapem jest włączenie i skonfigurowanie programowego układu I2C, procesor MSP430f123/1232 posiada jedynie sprzętowy blok SPI.
Jak już było powiedziane poprzednio zadaniem procesora jest włączenie odpowiedniego padu a następnie sprawdzenie czy został uaktywniony przez przyłożenie palca do padu co jest realizowane w głównej pętli programu. Zmienna licz jest to 8 bitowa zmienna wyznaczająca kombinację portów służącą następnie do wysterowania multipleksera. W każdej z pozycji caseX wybierany jest numer padu set1_EX1();, następnie sprawdzane jest czy został on wciśnięty, if((P2IN&BIT1)!=0x00). W urządzeniu dostępne są 2 układu dedykowanych paneli, skanowanie następuje wiec najpierw dla pierwszego, a następnie dla drugiego. Wyniki dla obu z tych układów zapisywane są do zmiennych odpowiednio dana1, dana2.
Przykładowa funkcja dla wciśniętego padu E1 panelu pierwszego to {dana1 |= BIT0+BIT1;}.
Bit0 jest sygnalizacją przerwania, Bit1 to wciśnięcie E1, strukturę zmiennych dana przedstawia tabela 1
| Bit0 | Bit1 | Bit2 | Bit3 | Bit4 | Bit5 | Bit6 | Bit7 |
danaX | IRQ | E1 | E2 | E3 | E4 | E5 | E6 | E7 |
Tab.3
Po zeskanowniu i zbadaniu kombinacji sprawdzane jest czy któryś pad został wciśnięty,
co sygnalizowane jest na bicie zerowym IRQ zmiennych dana1, dana2.
if((dana1&BIT0)==1) {P3OUT |=IRQ_touch; wpisz_data_i2c(0x01,dana1);}
jeżeli tak, to generowany jest sygnał IRQ, oraz po szynie I2C wysyłana jest informacja o wystąpieniu zdarzenia, która zawiera kolejno:
Bajt1: 0xA0 (na stałe wpisany adres urządzenia, możliwość zmiany w programie)
Bajt2: 0x01 lub 0x02 (wciśnięty pad od układu MC34940 pierwszego 01/ drugiego 02)
Bajt3: bitowa informacja o wciśniętym padzie.
Bit: 8.........1 IRQ
-- 00000000
E1 00000011 0x03
E2 00000101 0x05
E3 00001001 0x09
E4 00010001 0x11
E5 00100001 0x21
E6 01000001 0x41
E7 10000001 0x81
Przykładowy przebieg z analizatora stanów logicznych dotknięcia padu E4 w układzie 02 przedstawiony jest na rysunku 7.
Rys.7
Projektowanie własnych padów :
Jak ma to miejsce w większości aplikacji częstym problemem jest obudowa naszego urządzenia. Często jesteśmy ograniczeni określoną powierzchnią, w której musi zawierać się część elektroniczna, zasilanie oraz w naszym przypadku panel. Rozdział ten daje krótki wyznacznik jak zaprojektować wymiary własnych padów. Ogólnie rzecz biorąc padem, elektrodą odbiorczą może być dowolna rzecz, która ma właściwości indukcji elektrycznej.
Nasz pad może być równie dobrze cienką ścieżką grubości 10mil (10 milsów= 0.254mm).
Ogólnie rzecz biorąc, czym większa jest powierzchnia padu tym większą czułość oraz dystans jest w stanie zapewnić układ, ale jednocześnie na elektrodzie odbiorczej mogą indukować się szumy i zakłócenia, co doprowadzić może do zachwiania pracy panelu. Propozycją inżynierów z firmy Freescale jest stosowanie padów wielkości 2-3 krotnie większej niż palec, który zostaje przykładany. Kolejną kwestią równie ważną są ścieżki doprowadzające do padów. Co prawda producent podaje, że najkorzystniej jest aby nie przekraczać odległości między ścieżkami doprowadzającymi rzędu 50pF, z moich krótkich doświadczeń proponuję ścieżki 10-20mil oraz dystans 20mil między nimi.
REKLAMA |
REKLAMA |
REKLAMA |
REKLAMA |
REKLAMA |
Elektroinstalatorzy - ... Forum w którym są poruszane tematy związane z branżą elektroinstalacyjną, osprzętem. Porady, opinie, ... |
Fotografia cyfrowa Grupa dedykowana pasjonatom i amatorom fotografii cyfrowej. Rozmawiamy o sprzęcie fotograficznym ... |
Falowniki Informacje na temat elektrycznych systemów napędowych. |
Koło naukowe programistów Koło naukowe poruszające zagadnienia związane z programowaniem w różnych językach: C/C++/C# , ... |
REKLAMA |