Skocz do zawartości

Magnetometr - jak odszumować czujnik w obecności zakłóceń np. silników DC ?


simba92

Pomocna odpowiedź

Cześć !

Czy mógłby mi ktoś podsunąć jakiś pomysł o zabezpieczenie magnetometru od zakłóceń pola magnetycznego np. pochodzących od silników DC. Sprawdzałem czujnik poza robotem i wynik są poprawne 🙁 Jakiś pomysł jak odflirtować dane z magnetometru ?

Dziękuje za wszelkie wskazówki 🙂

Link do komentarza
Share on other sites

Odfiltrowanie oznacza odrzucenie jakiejś części sygnału bazujące na pewnych cechach, na częstotliwości. Jeżeli np. zrobiłeś platformę przymocowaną do drzewa i wiesz, że pole magnetyczne Ziemi jest raczej stałe (przynajmniej w horyzoncie czasowym pracy tego urządzenia) a zakłócenia od silników szybkozmienne, robisz bardzo nisko tnący filtr dolnoprzepustowy i po godzinie lub dniu masz całkiem dobrą estymację kierunku na północ magnetyczną. Oczywiście zakładasz również, że zakłócenia od silników są "symetryczne", czyli nie wnoszą błędu stałego offsetu do pomiarów - tego żaden filtr nie wytnie, bo jest to nieodróżnialne od właściwego sygnału. To oczywiście nieprawda (że napędy nie wnoszą offsetu), bo silniki DC mają magnesy trwałe i samo ich umieszczenie blisko magnetometru jest błędem.

Decydując się na takie filtrowanie, jedyną właściwie decyzją jest wybór częstotliwości odcięcia filtra. Im będzie niższa tym lepiej będzie "wygładzał" sygnał, ale tym dłuższa będzie jego stała czasowa więc z tym większym opóźnieniem (względem zmian na wejściu) będziesz dostawał odczyty. W przypadku platformy ruchomej czas ten może być niedopuszczalnie długi, musisz poeksperymentować. Często w samych magnetometrach jest parametr określający wielkość uśredniania, np. z 2, 4 itd.. kolejnych pomiarów. A zrobienie filtra programowego też jest proste. Poczytaj o IIR (po polsku NOI) - prosty w implementacji, zajmuje mało pamięci, ale wymaga precyzyjnej arytmetyki o dużej dynamice, np. zmiennoprzecinkowej.

Możesz kombinować z bardziej wyrafinowanymi i nieliniowymi filtrami (np. medianowy), ale musisz dużo wiedzieć o sygnale właściwym i zakłócającym, żeby skutecznie je rozdzielać. No niestety, magnetometry to wredne czujniki i trzeba się z nimi obchodzić jak z zepsutym jajkiem: odsuwać daleko.

  • Lubię! 1
Link do komentarza
Share on other sites

marek1707 zawsze lubię czytać Twoje komentarze, dużo można się dowiedzieć. Ostatecznie zmieniłem jedną linie kodu i czujnik działa poprawnie, silniki są oddalone więc nie mają wpływu tu się myliłem 🙂 trzeba jeszcze wykalibrować offset dla magnetometru i będę miał poprawniejsze wyniki, póki co mam błędy do 10 stopni max.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.