Czujniki zbliżeniowe w ograniczaniu poboru mocy i sterowaniu gestami
| TechnikaCzas pracy na zasilaniu bateryjnym wpływa na komfort użytkowania urządzeń przenośnych. By go maksymalnie wydłużyć, stosuje się różne rozwiązania sprzętowe i programowe. Jednym z nich jest przełączanie najbardziej energochłonnych podzespołów w tryb pracy o mniejszym poborze energii lub ich wyłączanie wtedy, gdy urządzenie nie jest używane. W razie wykrycia aktywności użytkownika są one ponownie włączane. Dlatego wymagany jest jakiś mechanizm detekcji jego zachowania.
Urządzenie może na przykład reagować na wciśnięcie przycisku. Alternatywą jest jego aktywacja bezkontaktowa. Korzysta się wtedy z sensorów zbliżeniowych - pojemnościowych, indukcyjnych albo optycznych, które wykrywają obecność ręki w pewnej odległości od ekranu. Zalety takiego rozwiązania można odczuć szczególnie wówczas, gdy użytkując dany sprzęt, mamy pobrudzone ręce.
Przykładem takiej sytuacji z życia codziennego jest przygotowywanie posiłków według przepisów opublikowanych w Internecie. Gdy wyświetlając je na przykład na ekranie tabletu lub telefonu, nie chcemy go pobrudzić, możemy po prostu wyłączyć przejście w tryb uśpienia. Ryzykujemy jednak wówczas szybszym rozładowaniem się akumulatorów. Alternatywą jest bardzo częste mycie rąk, nawet przed każdym dotknięciem przycisku, którym włączamy wyświetlacz.
Włączanie bezdotykowe w teorii i w praktyce
Teoretycznie realizacja aktywacji bezdotykowej jest bardzo prosta. Wystarczy po przełączeniu się urządzenia w tryb czuwania monitorować sygnał z czujnika zbliżeniowego. Jeżeli przekroczy on wartość progową, generowane jest przerwanie. W ramach jego obsługi włączane są kolejne podzespoły. W praktyce okazuje się to jednak dużo trudniejsze.
Jedną z najważniejszych kwestii do rozważenia jest wybór wartości progowej aktywacji. Osiągnąć trzeba przy tym kompromis. System detekcji powinien być wystarczająco czuły, ale równocześnie unikać trzeba fałszywych załączeń.
Jeżeli wartość graniczna jest mała, łatwo można wykryć nawet delikatne poruszenie ręki. Zwiększa to jednak ryzyko niezamierzonej aktywacji. Zbyt wysoka wartość progowa zmniejsza co prawda prawdopodobieństwo tej ostatniej, ale jednocześnie użytkownik może szybko się zniechęcić, jeśli urządzenie będzie reagowało tylko na ruch bardzo energiczny albo bardzo blisko ekranu.
Jak rozpoznać typ obiektu?
Optymalną czułość uzyskuje się, stosując filtrowanie usuwające szumy. Tu z kolei potrzebny jest kompromis pomiędzy dokładnością odszumiania a wymaganą szybkością reakcji urządzenia - jeżeli będzie ona zbyt wolna, też może zrazić użytkownika do dalszego korzystania z danego sprzętu.
Czułość reguluje się ponadto przez odpowiednie rozmieszczenie czujników. Można je na przykład pogrupować, ustawiając w odpowiednich odległościach od siebie. Dzięki temu, jeżeli użytkownik zbliża do urządzenia dłoń albo tylko palec, równocześnie wykrywa to tylko jedna grupa lub, w tym drugim przypadku, tylko kilka sensorów z danego zestawu.
Jeżeli natomiast obok pojawi się większy obiekt - na przykład człowiek przesunie się w pobliżu całym ciałem - jednocześnie wykryją to wszystkie czujniki. Wiadomo wówczas, że nie należy włączać urządzenia. Wadą tego rozwiązania jest zwiększony pobór mocy w porównaniu do układów z jednym sensorem.
Zalety sterowania gestami
Pamiętać też należy, że pole widzenia czujnika determinuje odległość, w jakiej musi znajdować się ręka, żeby jej ruch można było wykryć. Częstotliwość próbkowania sygnału z sensora wpływa z kolei na maksymalną, rozpoznawalną szybkość ruchu.
Czujniki zbliżeniowe są również wykorzystywane w sterowaniu urządzeniami, nie tylko tymi przenośnymi, za pomocą gestów. Wspólną zaletą tej metody i ekranów dotykowych jest brak konieczności używania jakichkolwiek dodatkowych urządzeń wskazujących. W porównaniu do paneli dotykowych, oraz tradycyjnych przycisków i przełączników, sterowanie gestami ma też wiele innych zalet.
Na przykład można w taki sposób kontrolować urządzenie w rękawiczkach - w przypadku ekranów dotykowych nie jest to możliwe. Oprócz tego sterowanie gestami zapewnia kontrolę też w trzecim wymiarze, kiedy użytkownik przysuwa lub odsuwa dłonie od urządzenia. Jest to ponadto bardziej intuicyjny sposób wykonywania niektórych zadań. Przykładami są: zmienianie kanału radiowego poprzez "machnięcie" ręką od lewej do prawej strony i zmiana poziomu głośności poprzez ruch dłonią góra-dół.
Dalej przedstawiamy przykłady realizacji sterowania gestami z wykorzystaniem podzespołów firm Vishay, a następnie Microchip.
Płyta Gesture Control Sensor Board
W ofercie tej pierwszej znaleźć można płytę Gesture Control Sensor Board. Zamontowano na niej czujnik optyczny VCNL4020, a po jego obu stronach diody VSMF2890RGX01, które emitują podczerwień. Dzięki dużemu natężeniu i silnie skupionemu strumieniowi promieniowania - 80 mW/sr przy 200 mA - wykryć można ruch ręki znajdującej się maksymalnie 25 cm nad płytą.
Rozpoznanie rodzaju gestu dokonywane jest przez porównanie sygnałów z obu diod, które po odbiciu od obiektu, czyli dłoni, są mierzone przez czujnik optyczny. By odróżnić sygnały z obu diod, są one załączane naprzemiennie.
Kiedy ręka znajdzie się w pobliżu płyty, odbije więcej promieniowania tej diody, od której dzieli ją mniejsza odległość. Jeżeli z kolei użytkownik przesunie dłoń z jednej strony na drugą, kolejno nad obiema diodami, sygnały odbite również zmienią się odpowiednio. Określając różnicę między nimi, rozróżnić można rodzaj i kierunek wykonanego ruchu.
Algorytm detekcji gestów
Szczegółowo analizowane i porównywane z ustalonymi wartościami progowymi są dwa parametry sygnałów mierzonych naprzemiennie przez detektor optyczny: ich odchylenie standardowe oraz opóźnienie czasowe pomiędzy nimi. To pierwsze jest miarą odchylenia wartości zmierzonych w danej ramce danych od wartości średniej w tej ramce.
Mała wartość odchylenia standardowego oznacza, że sygnał się nie zmieniał, co z kolei pozwala stwierdzić, że albo nad płytą, w polu widzenia czujnika, nie ma ręki, albo jest ona trzymana przez cały czas nieruchomo. Duża wartość tego parametru sugeruje natomiast dużą zmianę sygnału, co dowodzi, że wykonano ruch nad czujnikiem albo w jego kierunku. Ważne jest przy tym, aby wartość odchylenia standardowego przekraczała wartość graniczną - tylko wówczas analiza jest kontynuowana.
Z kolei tylko pod warunkiem, że opóźnienie czasowe między sygnałami ma odpowiednio dużą wartość, można przyjąć, że wykonano ruch nad płytą z jednej na drugą stronę.
Algorytm uproszczony
W algorytmie, który zaimplementowano w projekcie firmy Vishay, wielkość ta jest wyznaczana na podstawie korelacji wzajemnej sygnałów z obu diod. Ponieważ ta jest obliczana zawsze w tej samej kolejności, bez względu na to, sygnał z której diody zarejestrowano pierwszy, opóźnienie czasowe ma wartość dodatnią lub ujemną. W zależności od jego znaku określa się kierunek ruchu.
Przedstawiona technika rozpoznawania gestów jest dokładna i niezawodna, ale jej wadą jest to, że stanowi spore obciążenie obliczeniowe dla procesora. Prostszą alternatywą jest wykrywanie tylko przekroczenia wartości progowej, które w zależności od kierunku zmiany sygnału - tzn. powyżej czy poniżej wartości granicznej - oznacza, odpowiednio, pojawienie się ręki w polu widzenia czujnika albo jego opuszczenie. W zależności od kolejności, w jakiej zachodzą te zdarzenia, wyznacza się kierunek ruchu.
Do płyty firma Vishay dołączyła oprogramowanie, w którym zaimplementowano opisany algorytm rozpoznawania gestów wraz z wizualizacją wyników.
Mikrokontrolery serii MGC3X30
Wsparcie dla projektantów urządzeń sterowanych gestami zapewnia również firma Microchip. Ma ona w swojej ofercie mikrokontrolery MGC3030 i MGC3130 z serii GestIC. Są to układy typu mixed signal (z obwodami analogowymi). Ich najważniejsze części funkcjonalne to (rys. 1): blok przetwarzania sygnałów analogowych AFE (Analog Front End) jednostka przetwarzania sygnałów cyfrowych SPU (Signal Processing Unit) i interfejsy komunikacyjne.
Kontrolery mają po pięć wejść, przez które odbierają sygnały z elektrod pomiarowych oraz jeden kanał, na który podawany jest sygnał wytwarzający pole elektryczne. Zaburzenia tego ostatniego spowodowane przez pojawienie się w jego obrębie obiektu - ręki - są analizowane w kontrolerze. Na tej podstawie rozpoznawany jest wykonany gest. Zasięg detekcji wynosi od 0 cm (przy dotyku) do 10 cm od czujnika.
Jak wynika z rysunku 2, układ elektrod składa się z tej nadawczej oraz maksymalnie pięciu odbiorczych, rozmieszczonych nad tą pierwszą. Oddziela je warstwa izolatora. Elektrody odbiorcze są układane w konfiguracji jak na rysunku 3 - cztery dookoła, a jedna w środku. Na rysunku 4 przedstawiono schemat zastępczy utworzonego w ten sposób czujnika.
Jak zaprojektować elektrody?
Na prawidłowe rozpoznanie gestów wpływ ma właściwy projekt elektrod. Trzeba tu przestrzegać kilku zasad, aby uzyskać dużą czułość i odpowiedni zasięg detekcji. Przykładowo im większa jest powierzchnia elektrody odbiorczej RX, tym większa będzie pojemność CH, czyli pomiędzy ręką a elektrodą.
To z kolei skutkować będzie pożądanym, większym odchyleniem standardowym sygnału. Równocześnie jednak rezultatem zbyt dużej powierzchni elektrody odbiorczej jest duża pojemność między nią a elektrodą nadawczą TX i duża pojemność między elektrodą RX a masą. Efektem tego jest mniejsza czułość detekcji. Zatem rozmiar oraz kształt elektrody odbiorczej jest kompromisem pomiędzy czułością na ruchy użytkownika a jej sprzężeniem z elektrodą nadawczą i masą.
Ogólnie można przyjąć, że dla uzyskania największej czułości powierzchnia elektrody odbiorczej powinna być tego samego rzędu wielkości, co obiekt, którego ruch ma być wykryty, tzn. ręka albo palec. Zwykle też im dłuższe elektrody odbiorcze, tym większa czułość.
GestIC Library
Dobrze zaprojektowany układ elektrod charakteryzuje oprócz tego możliwie największa wartość pojemności CH i minimalna wartość stosunku pojemności CRXG (elektroda odbiorcza - masa) do pojemności CRXTX (elektroda odbiorcza - elektroda nadawcza).
Microchip przygotował również bibliotekę do obsługi rozpoznawania gestów. Zbiór funkcji GestIC Library zapisany jest w pamięci Flash mikrokontrolerów z serii MGC3X30. Obejmuje on trzy główne bloki zadaniowe.
Pierwszy, Colibri Suite, stanowi implementację algorytmów cyfrowego przetwarzania sygnałów w zakresie podstawowej funkcjonalności, tzn. wykrywania zbliżenia się obiektu detekcji, śledzenia jego położenia oraz rozpoznawania gestów. Blok System Control odpowiada za parametry pracy kontrolera, natomiast Library Loader za aktualizację biblioteki GestIC Library.
Opis mikrokontrolerów serii MGC-3X30, ich dokumentację i oprogramowanie zamieszczono na stronie internetowej firmy Microchip, pod adresem http://www.microchip.com/pagehandler/en_us/technology/gestic.
Monika Jaworowska