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

Czujnik kierunku położenia - kompas

23 Maj 2010 17:59 2109 2
  • Poziom 9  
    Witam,

    konstruuję model robota mobilnego typu poduszkowiec,
    do sterowania opartym na mikrokontrolerze ATmega8 (później będzie ATmega 32)
    używam wentylatora umieszczonego na serwo.

    szukam rozwiązania/czujnika do określenia kierunku poruszania się,
    co umożliwi "orientację" w czasie wykonywania obrotu/skrętu

    najlepszym i najprostszym rozwiązaniem wydaje się być kompas elektroniczny,
    czyli czujnik pola magnetycznego ziemi, który można podpiąć pod I2C lub port ADC,

    mam pytanie, czy ktoś może mi doradzić dobór układu, który sprawdzi się w takim rozwiązaniu?

    na razie jedynym czujnikiem jaki znalazłem jest MMC2120MG (koszt ok. 25zł),
    mam jednak obawy co do jego czułości... 512 pomiarów na 1 Gauss,
    co dla wartości pola magnetycznego ziemi daje tylko 5 pomiarów w zakresie...
    (czyli pomiar co 18 stopni obrotu robota dla pola ziemi 30uT)

    ... znalazłem informację, że można też użyć KMZ10A,
    niestety nie znalazłem juz informacji na jego temat,
    ani miejsca gdzie by był sprzedawany.
    Darmowe szkolenie: Ethernet w przemyśle dziś i jutro. Zarejestruj się za darmo.
  • Poziom 25  
    Witam,

    bardzo popularny czujnik magnetorezystywny: KMZ51

    Pozdrawiam,
    GSM
  • Poziom 9  
    nie chciałem zostawiać tego problemu bez odpowiedzi, więc opisze co mi się udało zrobić :)

    Program pod I2C elegancko działa, czujnik w obudowie LGA przylutowałem
    do przejściówki na DIP-20, więc nie ma z nim problemu.

    Czujnik po zapytaniu zwraca 5 wartości
    - bit kontrolny,
    - MSB(X),
    - LSB(X),
    - MSB(Y),
    - LSB(Y).

    Bit kontrolny to zawsze 0x00; natomiast MSB(X) i MSB(Y) to wartości nie mierzone przez ten czujnik i zawsze wynoszą 0x04;
    potrzebne wartości do określenia kierunku to LSB(X) i LSB(X).

    Na poczatku wartości trochę skakały, ale wyciągnąłem średnia arytmetyczną
    ze stu pomiarów i wyniki są powtarzalne.
    W moim układzie obudowa LGA czujnika jest przypięta "do góry nogami",
    więc oś pomiarowa wygląda następująco
    (stan początkowy - X wskazuje północ, Y - wschód):
    Czujnik kierunku położenia - kompas

    wartość ulegają zerowaniu - przejściu przez 0
    (zmieniają się od 0 do 255, zamiast 256 jest 0...)
    Code:
                  LSG(X)        LSG(Y)
    

    PN            -----        255/0
    WSCH          0/255        -----
    PD            -----        0/255
    ZACH          255/0        -----


    zależności te nie sa liniowe! do robotów mobilnych należy wykonać średnią z 10 pomiarów i określić kierunek z dokładnością do 30 lub 45 stopni,
    wszelkie dokładniejsze pomiary wymają kalibracji i rozpisania tablicy wartości.

    Pozdrawiam.