ZL31ARM: sterowanie kulki i obroty bryły w 3D za pomocą czujnika MEMS LIS35

Konfiguracja interfejsu SPI:

Kulka na wirtualnym stole

Mając do dyspozycji moduł wyświetlacza oraz akcelerometru jest możliwe zrealizowanie ciekawych programów sterujących. Pomysłów na to może być wiele, ale czasem zdarza się, że nie zawsze jest to takie proste w realizacji i niestety trzeba poznać pewne metody pozwalające osiągnąć zamierzone efekty. Na początku warto zacząć od prostych aplikacji jak np. sterowanie kulką na stole wirtualnym.

Fizyczna kulka posiada pewną masę, na którą działa siła przyciągania ziemskiego i które powoduje przyśpieszanie kulki, a zatem jej ruch. W naszym przypadku kulka co prawda nie posiada masy, ale można odczytać wartość przyśpieszenia z akcelerometru i za pomocą pewnych technik wprawić kulkę w ruch. Jak wiadomo z podstaw mechaniki klasycznej, położenie kulki na którą działa przyśpieszenie a jest określone następującym równaniem:

 

 

 

 

gdzie:
t  – czas
s  – pozycja bieżąca
s0  – pozycja początkowa
v  – prędkość początkowa
a  – przyśpieszenie

Dla potrzeb danego projektu powyższe równanie zostanie nieco zmodyfikowane w następujący sposób. Pozycja aktualna kulki będzie przechowywana w zmiennych x_pos i y_pos, które co pewien okres będą aktualizowane o wartości przemieszczenia delta_x i delta_y:

Z kolei aktualne przemieszczenia są wynikiem iloczynu prędkości aktualnej i stałego okresu próbkowania Ts:

Ostatnie dwa równania określają aktualną prędkość kulki według wzoru:

 

 

 

 

Wartości przyśpieszeń zostały podzielone przez 5 w celu poprawnej wizualizacji, tzn. aby kulka nie poruszała się za szybko. Jednocześnie można pójść dalej i wprowadzić tarcie wirtualne dla poruszającej się kulki co w pewnym stopniu nadaje cechy realistyczne:

Do pobrania

O autorze