Elektroda.pl
Elektroda.pl
X
BotlandBotland
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

multiwii_atmega 32_u4 - magnetometr_hmc5883L - błędne odczyty

06 Paź 2015 20:27 738 5
  • Poziom 2  
    Posiadam płytkę zakupioną w sklepie hobbyking. Do obsługi wykorzystałem biblioteki Pana Korneliusza Jarzębskiego . Tylko musiałem sobie "dopisać" funkcję konfigurującą tryb pracy układu MPU6050 jako master i magnetometru HMC5883L jako slave - to wziąłem z kodu "multiwii".
    Zaczęły się problemy - przykładowy program na " kompas " - obracam płytką ustawioną na stole i " heading " rośnie przykładowo od 90 : 120 stopni, a potem z powrotem, i po osiągnięciu 90 stopni znów idzie w górę.
    Przeprowadziłem "self test" przy max częstotliwości I2C = 400kHz i dopiero za drugim razem, dla osi X odczyty mieściły się w normie.

    Zastanawia mnie czy jest to spowodowane zbyt dużą częstotliwością zegara na I2C ? Ktoś się z czymś takim spotkał ?

    Na razie częstotliwość I2C w MPU ustawiłem na 320 kHz, magnetometr jest na zakresie 1.3 gausa, uśrednianie próbek = 8, data rate = 30Hz, i wszystko działa, tylko nie wiadomo na jak długo.

    W załączniku wrzucam bibliotekę z której korzystam i przykładowy program na kompas.
    Darmowe szkolenie: Ethernet w przemyśle dziś i jutro. Zarejestruj się za darmo.
  • BotlandBotland
  • Poziom 34  
    Nie znam się na Arduino i tej biblioteki też nie znam, ale ogólnie to te magnetometry wymagają programowej kalibracji, aby uzyskać prawidłowe wartości. No i oczywiście, trzeba użyć funkcji cyklometrycznych do wyliczenia wartości kąta obrotu.
  • BotlandBotland
  • Poziom 13  
    Witam.
    hard iron, soft iron, ellipsoid fit
    Pozdr.
  • Poziom 2  
    Jak widzę mało kto się u nas bawi tymi rzeczami, dzięki za porady. Odnośnie kalibracji, to nie udało mi się wykonać jej poprawnie (hard, soft), zwykła - obracanie płytki na stole w miarę dobrze; może przez te błędy z osi x magnetometru. Na razie spróbuje jeszcze "uproszczonej" wersji multiwii i chyba jedyne wyjście to szukać problemu na zagranicznych forach, bo u nas to ciężko to idzie ...

    pozdrawiam
  • Poziom 18  
    Opisz jak tą "zwykłą" kalibrację zrobiłeś i jak na jej podstawie obliczasz kąt w kompasie.
    Do zwykłego wskazywania bez przechyłu płytki wystarczy kalibracja przez "obracanie na stole"
  • Poziom 2  
    Kalibracja: Link

    Pierwsze kilka razy - po prostu obracałem płytką na stole, taborecie, tak jak w filmiku, z tym że (jeśli ktoś nie widział tej mojej płytki, to tak to wygląda Link)
    więc męczyłem obracanie z kablem usb - może otrzymane wyniki były trochę niedokładne ale wystarczyły.

    Później, wykorzystałem "serial1" - czyli usb_ ft232 i odpowiednie wyjścia na płytce - trochę łatwiejsze obracanie.

    Ostatnim razem wykorzystałem starą ruską okrągłą przedłużkę - na niej ustawiłem płytkę tak, żeby magnetometr był cały czas na środku w trakcie obracanie.

    Dodatkowo, ponieważ w bibliotece, z której korzystałem offsety dla x i y były typu "int", ja zmieniłem je na "float".

    Kalibrowałem jeszcze tą metodą: Link , no ale wyniki były kiepskie.

    A to jak obliczam - w pierwszym poście jest "przykładowy program"