Kompensacja przechyleń kompasów cyfrowych
Jednym z podstawowych problemów spotykanych w magnetometrach wykorzystywanych do realizacji prostych kompasów cyfrowych, jest problem błędnych wyników przy drobnych kątach odchylenia czujnika względem płaszczyzny X i płaszczyzny Y.
Nawet drobne odchylenia tego kąta, mogą znacznie zakłamać otrzymane przez nas wyniki. Problem ten da się na szczęście rozwiązać, znając kąty pochylenia i przechylenia czujnika za wykorzystaniem akcelerometru MPU6050 lub ADXL345. Metoda jest skuteczna jedynie dla zakresów zmiany kątów położenia w zakresie od -45º do +45º. W większości przypadków, jest to w zupełności wystarczająca granica przy wyznaczaniu kierunku kompasu.
Zapraszam do materiału filmowego o kalibracji i kompensacji przechyleń kompasu z wykorzystaniem magnetometru HMC5883L oraz akcelerometru MPU6050.
Reklama
Komentarze
Witam! Czy mógłbym prosić o pomoc przy kalibracji i kompensacji w module IMU GY 85? Z góry dziękuję ;)
A w czym jest problem?
W moim module jest żyroskop ITG3205 (przynajmniej takie informacje udało mi się znaleźć) i wymaga chyba po prostu odpowiedniej biblioteki ale nie wiem jak go odpalić i zmienić szkic, żeby wykorzystać go do kompensacji jak MPU6050 w przykładzie. Możliwe, że rozwiązanie jest proste ale jestem BARDZO POCZĄTKUJĄCYM użytkownikiem arduino ;)
Gdzie można zobaczyć przykład?
Witam:) i o pomoc pytam :)
Staram się zaadoptować gotowy projekt sterownika rotora anteny opisany tu http://blog.radioartisan.com/yaesu-rotator-computer-serial-interface/.
Ze względu na to że posiadałem konkretny model wykonawczy znany z niestabilności utrzymania położenia zdecydowałem się na użycie HMC5883L jako wskaźnika rzeczywistego położenia anteny.
Biorąc pod uwagę moją znikomą znajomość tematu Arduino udało mi się jakoś to uruchomić lecz pojawił się opisany problem z przekłamaniami odczytu .Efekt był taki że przy ustawieniu na 0 stopni kompas pokazywał 0 ale przy 180 było to już 240 stopni !!. Rozwiązaniem ma być zastosowanie LSM303(GY-51) zamiast HMC5883L. W programi jest nawet odcinek kodu odpowiedzialny za korektę :
/*
*
* Azimuth and Elevation calibraton tables - use with FEATURE_AZIMUTH_CORRECTION and/or FEATURE_ELEVATION_CORRECTION
*
* You must have the same number of entries in the _FROM_ and _TO_ arrays!
*
*/
#define AZIMUTH_CALIBRATION_FROM_ARRAY {180,630} /* these are in "raw" degrees, i.e. when going east past 360 degrees, add 360 degrees*/
#define AZIMUTH_CALIBRATION_TO_ARRAY {180,630}
// example: reverse rotation sensing
// #define AZIMUTH_CALIBRATION_FROM_ARRAY {0,359}
// #define AZIMUTH_CALIBRATION_TO_ARRAY {359,0}
#define ELEVATION_CALIBRATION_FROM_ARRAY {-180,0,180}
#define ELEVATION_CALIBRATION_TO_ARRAY {-180,0,180}
Lecz ja nie wiem co mam z tym zrobić :(
Bariera językowa oraz brak znajomości programowania nie pozwalają pokonać mi tego problemu.
A tak wygląda antena którą ma "kręcić" sterownik
https://goo.gl/photos/7j9VS3TnKrYuqajw7 .
Jeśli jest ktoś kto byłby w stanie mi pomóc byłbym bardzo wdzięczny. Największy problem jest w tym że czas goni bo jeśli tego nie uruchomię puki jest ładna pogoda to dopiero wiosną będę mógł zrobić cokolwiek dalej.
Great job!
But ... there is a nuance.
For full tilt compensation must enter the offset axis Z.
I enclose a screenshot.
https://yadi.sk/i/0vzThONlzbMKY
Thanks for you work. See the demonstration in an observatory dome
Witam,
Panie Korneliuszu a czy program do kompensacji będzie działała z bibliotekami MechaQMC5883.h ?