logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

atmega32 - Śledzenie pozycji układu żyroskop + akcelerometr + kompas

mati1988k 23 Lut 2013 15:24 3849 4
REKLAMA
  • #1 11975383
    mati1988k
    Poziom 13  
    Witam.

    Zaprojektowałem i wykonałem układ składający się z akcelerometru, żyroskopu i czujnika pola magnetycznego (kompas, jako dodatek). Chciałbym za pomocą tych czujników określić pozycję układu, obrót wokół osi Z, X i Y. O ile X i Y to nie problem bo można to zrobić za pomocą samego akcelerometru (taka dokładność mi w 100% wystarcza) to wokół osi Z jest problemem. Na razie zrobiłem to za pomocą całkowania pomiaru z żyroskopu, a do kompensacji dryfu wykorzystałem kompas, zeruje on dryf tylko w pozycji początkowej (tzn pochylenie "x" i przechylenie "y" = 0 i obrót wokół osi Z względem początkowej pozycji = 0).
    Wszystko w zasadzie działa jednak nie jestem do końca zadowolony z rezultatu. Po kilku ruchach układem w osi Z pozycja się gubi a jak zadziałą kompensacja dryfu to widać jej działania na układzie (szybki skok do pozycji 0). Wolałbym żeby odbywało się to w miarę płynnie.
    Nie zależy mi na bardzo dużej dokładności. Czy jest jakiś prosty algorytm? Niestety w układzie mam zajęte wszystkie timery i pomiar odczytów odbywa się w pętli głównej do której wrzuciłem delay, tak więc nie jest pewne, że odstęp pomiędzy pomiarami zawsze jest taki sam.

    Jeżeli chodzi o filtrację danych z żyro to powinienem filtrować pomiar (prędkość kątową) czy wynik po całkowaniu (czyli kąt)? W obsłudze żyroskopu zaimplementowałem algorytm niwelujący wpływ temperatury na pomiar.




    W 34 sekundzie widać jak zostaje skompensowany dryf żyroskopu.
  • REKLAMA
  • #2 11976122
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #3 11982547
    mati1988k
    Poziom 13  
    A czy mógłby ktoś mi podpowiedzieć jak odczytać dane z żyroskopu i przekonwertować na stopnie? Używam żyroskopu LSM330dl.
    Mój kod wygląda tak:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Jednak nie działa to najlepiej. Dokładność ustawiona jest na 250dps. A pomiar pobierany jest co 10ms.
  • REKLAMA
  • #4 12007037
    sweter_007
    Poziom 14  
    Ja w planach mam również zbudowanie podobnego układu.
    Do rozwiązania twoich problemów potrzebna jest znajomość matematyki na poziomie studiów oraz bardzo dobra umiejętność programowania.
    Potrzebne algorytmy(całkowanie numeryczne równań ruchu) są czasochłonne(wymagają dużo cykli zegara) i musisz oszacować czy mikrokontroler poradzi sobie z takimi obliczeniami.
    Zainteresuj się tematem: układem współrzędnych sferycznych oraz jakobian przejścia.
    Poszukaj lepszego algorytmu całowania niż eulera(jest najszybszy ale najmniej dokładny)
  • #5 12223512
    zbyszek19940
    Poziom 10  
    Mozna by bylo ten uklad podlaczyc do kompa i zbudowac wlasny Oculus Rift.
REKLAMA