Wykorzystanie mechanizmu przerwań w akceleratorach MEMS

| Technika

Większość dostępnych na rynku 3-osiowych akceleratorów MEMS została wyposażona w układ generowania przerwań. Ich działanie daje się powiązać z wieloma zdarzeniami związanymi z ruchem urządzenia mobilnego, takim jak swobodny spadek, podwójne stuknięcie, wybudzenie lub detekcja kierunku.

Wykorzystanie mechanizmu przerwań w akceleratorach MEMS

Cyfrowy akcelerometr MEMS ma zwykle jedno lub dwa wyjścia przerwań, które można połączyć z analogicznymi wejściami w mikrokontrolerze. Pozwala to zaprogramować listę zdarzeń, które będą sygnalizowane za pomocą tych linii i pozostawić mikrokontroler w stanie uśpienia.

Pojawienie się zdarzenia pozwala na szybkie wybudzenie mikrokontrolera i obsługę programową plus ewentualnie reakcję. Podejście to zapewnia znaczną oszczędność mocy w porównaniu z tradycyjnym odczytywaniem rejestrów w pętli.

Poniżej zostaną opisane przykładowe zdarzenia dostępne za pomocą przerwań w akcelerometrach firmy STMicroelectronics (LIS3DH) i zostaną omówione metody ich wykorzystania.

Dane gotowe do odczytu

Rys. 1. Wykrywanie swobodnego spadku

Akcelerometr MEMS może zostać skonfigurowany, aby przerwanie pojawiało się, gdy w rejestrach dostępny będzie nowy komplet danych gotowych do odczytu. Zdarzenie to zwykle wskazywane jest za pomocą flagi data-ready w rejestrze statusu akcelerometru, co pozwala na ciągłe odpytywanie przez mikrokontroler, ale można też sygnał ten wyprowadzić na linię przerwań, poprzez aktywację tej funkcji w rejestrze sterującym oraz wybór aktywnego stanu (poziom niski, wysoki lub kierunek zmiany zbocza impulsu).

Po włączeniu wyjście przerwań ma domyślny stan wysoki. Gdy w rejestrze danych pojawi się nowy komplet pomiarów przyspieszenia, wyjście przerwań zmienia stan na wysoki i gdy dane (górne rejestry) dla wszystkich trzech osi zostaną odczytane, zmienia stan na niski.

Jeśli rejestry danych nie zostaną odczytane w czasie pomiędzy kolejnymi odczytami wynoszącymi 1/ODR (Output Data Rate), stare dane zostają nadpisane nowymi, a wyjście przerwania pozostaje w stanie wysokim i dodatkowo ustawiana jest flaga overrun w rejestrze statusu.

Stąd przerwanie sygnalizujące gotowość danych do odczytu jest wygodnym mechanizmem do synchronizacji ciągłej akwizycji danych pomiarowych z czujnika i zapobiegania ich utracie, gdy np. mikrokontroler wykonuje inne czynności. Jest to też sposób na ograniczenie mocy pobieranej przez system, bo z pewnością ciągłe odpytywanie linii I/O nie jest efektywne.

Detekcja swobodnego spadku

Przerwanie freefall (FF) związane ze swobodnym spadkiem wykorzystywane jest najczęściej w systemach mechatronicznych, elektronice medycznej, dyskach twardych i innych aplikacjach wrażliwych na przeciążenia mechaniczne. Szybkie wykrycie stanu swobodnego spadku pozwala ustawić elementy wykonawcze (silniki, siłowniki, pompy, głowice) w stanie początkowym i zminimalizować ryzyko ich uszkodzenia.

Obecnie coraz częściej łączy się też układy MEMS z czujnikami ciśnienia atmosferycznego, pozwalającymi na określanie wysokości, po to, aby na przykład wykrywać utratę przytomności i upadek człowieka na podłogę oraz automatycznie wzywać pomoc - to tzw. aplikacje man-down w górnictwie, medycynie, budownictwie.

Swobodny upadek to stan, gdzie na akcelerometr nie działa żadna inna siła poza ziemskim oddziaływaniem grawitacyjnym, zatem teoretycznie 3-osiowy akcelerometr w takim stanie zgłosi na wyjściach wartość zero-g (patrz ramka). Niemniej prawidłowa detekcja stanu swobodnego spadku wymaga eliminacji zdarzeń podobnych, które mogłyby zostać zasygnalizowane błędnie.

Swobodny spadek nie zawsze oznacza bowiem od razu upadek w dół, równie dobrze obiekt może być lekko podrzucony na wstępie, a dopiero potem może zacząć spadać w kierunku ziemi. Podrzucenie może wiązać się też z wprowadzeniem obiektu w rotację. Wówczas czujnik, który może być także zainstalowany w urządzeniu z dala od osi obrotu obiektu, na skutek obecności siły odśrodkowej na wyjściach nie będzie wskazywać stanów bliskich zeru.

Oczywiście należy dążyć do tego, aby MEMS był umieszczony w osi obrotu, ale mieć świadomość, że spadek swobodny nie musi być procesem wolnym od zaburzeń. Każdy akcelerometr jest fabrycznie skalibrowany i przetestowany. Oznacza to, że użytkownik nie potrzebuje dalszych kalibracji po zamontowaniu na płytce, aby wykryć stan swobodnego spadania.

Jednakże off set wartości zero- g może sięgać od ± 40 mg do nawet ±100 mg, ponieważ czujnik nie musi być zamontowany dokładnie poziomo na płytce drukowanej. Ze względu na te przesunięcia zera próg wykrywania i czas niezbędny do uznania stanu obiektu za swobodny spadek stają się ważnymi parametrami, które trzeba rozważnie przyjąć, aby uniknąć fałszywych detekcji oraz aby nie przesadzić w drugą stronę i po prostu tego zdarzenia nie zauważyć.

Poniższy przykład pokazuje, w jaki sposób rozwiązać ten problem w przypadku 3-osiowego akcelerometru ST. Na rysunku 1 pokazano surowe dane i sygnał przerwania w trakcie swobodnego spadku. Czujnik został skonfigurowany do przesyłania danych z szybkością 50 Hz, zakres pomiarowy na ± 2 g. Przyjęto, że swobodny spadek będzie wykryty, gdy przyspieszenia na każdej z osi będą poniżej ±343 mg w czasie 40 ms.

Płytkę z zamontowanym czujnikiem upuszczono na podłogę. Widać, że po tym jak sygnały z czujnika maleją, generowane jest przerwanie, a następnie czujnik uderza o podłogę. Jak widać z wykresu kluczowe dla wykrycia swobodnego spadku jest utrzymanie wartości przyspieszeń na każdym z wyjść przez określony czas.

Wybudzenie przez poruszenie

Rys. 2. Sygnały wyjściowe z czujnika przy pojedynczym i podwójnym puknięciu

Dla sprzętu zasilanego z baterii minimalizacja pobieranej mocy jest zagadnieniem kluczowym. Gdy sygnały z osi X, Y, Z przyjmują wartość bliską zero g przez pewien czas, można przyjąć, że urządzenie pozostaje w spoczynku. Pozwala to wyłączyć wyświetlacz, uśpić działanie wybranych aplikacji i gdy pojawi się ruch, przygotować urządzenie do pracy.

W porównaniu do przerwania związanego ze swobodnym spadkiem tutaj przerwanie jest generowanie, gdy na jednej z osi wykryte zostanie przyspieszenie większe od założonego progu.

Dodatkowo czujnik MEMS ma wbudowany filtr górnoprzepustowy, który może zostać użyty do odrzucenia powolnych zmian przyspieszenia, które mogłyby zakłócić działanie. Typowe działanie wybudzania ruchem wykorzystuje próg 250 mg lub przechył większy niż ±14,5°. Wykrycie takiego stanu przez ustalony czas większy od kilku milisekund generuje przerwanie.

Poziom zero-g w akcelerometrach

Poziom odniesienia zero-g w akcelerometrach określa warunki, gdy czujnik MEMS jest nieruchomy i umieszczony na płaskiej poziomej powierzchni. Wówczas przyspieszenie dla osi X i Y wynosi 0 z dla osi Z 1 g. Jest to stan leżący dokładnie w środku dynamicznego zakresu pomiarowego sensora.

Niemniej w warunkach rzeczywistych wartości odczytywane z rejestrów układu nie są dokładnie równe podanym wartościom, ponadto zmieniają się minimalnie ze zmianami temperatury. Stąd w większości aplikacji odczytanie dla takiego położenia wartości przyjmuje się za offset czujnika.

Pojedyncze i podwójne stuknięcie

Rys. 3. Różnice pomiędzy trybami 6D movement recognition i 6D position recognition

Akcelerometry MEMS mogą generować przerwanie związane z pojedynczym lub podwójnym stuknięciem i wskazywać kierunek tego ruchu. Ta funkcja najbardziej przydatna jest w sprzęcie przenośnym, gdzie zamiast włączać urządzenie przyciskiem, można zaprogramować wybudzanie przez stuknięcie palcem.

Wykrywanie ruchu podobnego do stuknięcia zależy od materiału i kształtu urządzenia, lokalizacji czujnika w obudowie. Dodatkowo potrząsanie sprzętem jest w stanie spowodować fałszywe odczyty, stąd podobnie jak w innych zdarzeniach konieczna jest eliminacja zdarzeń fałszywych. Podwójne stuknięcie to zdarzenie takie samo jak pojedyncze, tyle że pojawiające się jedno po drugim.

Jego wykrywanie opiera się na tej samej zasadzie - określenia progu detekcji i czasu pomiędzy podwójnym stuknięciem liczonego w kolejnych odczytach. Przerwanie jest generowane po przekroczeniu wartości progowej, a następnie po zaniku przyspieszenia poniżej progu (rys. 2) lub po dwóch takich zdarzeniach.

W rejestrze zapisywane są też dane na temat wykrytego kierunku stuknięcia, co pozwala odrzucać przypadkowe potrącenia. W przykładowym teście akcelerometr został ustawiony na zakres ±4 g, a szybkość odczytu (ODR) na 1250 Hz.

Próg stuknięcia ustawiono na 2,25 g w czasie 1,6 ms (dwa odczyty). Przy takich ustawieniach LSB dla danych z czujnika wyniosło 2 mg. Oczywiście im częstsze odczyty, tym większa skuteczność detekcji fałszywych potrąceń, ale i większy pobór mocy. Stąd lepiej korzystać z podwójnego stuknięcia.

Wykrywanie kierunku 4D/6D

Wykrywanie kierunku to opcja pozwalająca na generowanie przerwania, gdy akcelerometr znajdzie się w stabilnym stanie w określonym kierunku w przestrzeni. Dla trybu 4D pod uwagę brane są jedynie osie X i Y, w trybie 6D także oś Z. Jest to funkcja najczęściej wykorzystywana do obracania treści ekranu w zależności od położenia urządzenia, ale można za jej pomocą realizować systemy pozycjonowania i stabilizacji ruchu.

Dostępne są dwa tryby tej funkcji (rys. 3). W pierwszym (6D movement recognition) przerwanie jest generowane podczas ruchu układu z kierunku (znanego i nieznanego) do innego znanego kierunku.

W drugim trybie (6D position recognition) przerwanie jest generowane, gdy urządzenie utrzymuje stabilną pozycję w znanym kierunku. Przerwanie jest aktywne, póki pozycja jest utrzymywana. Oczywiście można zaprogramować progowe wartości określające czułość wykrywania, podobnie jak w poprzednich funkcjach.

Podsumowanie

Za pomocą przerwań możliwe jest obsłużenie wybranych zdarzeń związanych z działaniem akcelerometrów, niemniej należy oczekiwać, że w kolejnych opracowaniach lista takich funkcji będzie rosła.

Wbudowanie do wnętrza czujnika MEMS funkcji powiązanych z charakterystycznymi ruchami wraz z mechanizmem przerwań wydaje się najkorzystniejszą metodą rozbudowy funkcjonalności elektroniki przenośnej z uwzględnieniem minimalnego poboru mocy.