Elektronika modelarska

W poprzednim artykule porównywałem czujniki ciśnienia, teraz pora na żyroskop i akcelerometr. Są to czujniki zapewniające stabilność naszej platformie i od ich parametrów zależy to, czy w każdych warunkach temperaturowych będzie ona utrzymywała właściwe kąty orientacji w przestrzeni. Zbadane zostaną żyroskopy IDG-500, ISZ-500, ITG-3200, ADXRS613 oraz akcelerometry MMA7341 i LIS302DLH.

 

Porównanie żyroskopów

W module inercyjnym Invensense mam dwuosiowy żyroskop IDG-500 (osie X i Y) oraz jednoosiowy ISZ-500 (oś Z). W module All-In-One mam trzyosiowy żyroskop ITG-3200 z wyjściem cyfrowym a z poprzedniej wersji komputera pokładowego zostały mi minimoduły z żyroskopami ADXRS613 firmy Analog Devices. Dwa minimoduły zostały przyklejone do obudowy komputera i podłączone do wejścia użytkownika na module pneumatycznym.

zestaw żyroskopów do testu

Test porównawczy polegał na obserwacji dryftu temperaturowego wszystkich żyroskopów. Komputer zasilany z dwu ogniw LiFe A123 został włożony na 1:20h do zamrażalnika, potem zabezpieczony przed kondensacją chwilę odtajał w temperaturze pokojowej i został włożony do piekarnika z termoobiegiem ustawionego na 70°C. Finalnie całość stygła w temperaturze pokojowej. Tak wyglądał rozkład temperatury mierzony dwoma czujnikami: LM50 (opisanym jako TCRef - ThermoCouple Reference) i czujnikiem wbudowanym w BMP085 (opisanym jako TmpPS - Temperature of Pressure Sensor).

Rozkład temperatury podczas testu

 

Tak wyglądała odpowiedź żyroskopów IDG-500 (na wykresie GyroP i GyroQ) oraz ISZ-500 (GyroR). Szpilki na wykresie odpowiadają przemieszczaniu komputera i są dla nas nieistotne, natomiast pełnią funkcję znaczników czasu.

Każda oś żyroskopu zachowuje się inaczej. Prawdopodobnie wynika to z trochę innej geometrii czujnika ułożonego w trzech płaszczyznach. Wykresy Q i R są w miarę proporcjonalne do zmian temperatury tyle że współczynnik temperaturowy ma inną wartość i znak. Wykres czujnika P jest mocno  nieliniowy. Dodatkowo w okolicach próbki 1500 i w znacznie mniejszym stopniu przy próbkach ok. 3000 oraz 4000 widać skokową zmianę wartości nieobserwowalną na innych czujnikach. Podobne zjawisko jest widoczne na drugiej osi tego samego układu. Być może jest to efekt stresu temperaturowego.

Test temperaturowy żyroskopów IDG-500 i ISZ-500

 

Tak zachowywał się żyroskop ITG-3200. Wartość dryftu jest wyraźnie mniejsza, nie przekracza ±3,5°. Współczynniki temperaturowe poszczególnych osi też różnią się wartością i znakiem. Oś P podobnie jak we wcześniej badanym czujniku ma dodatni dryft zarówno dla chłodzenia jak i grzania. Poza tym nie widać żadnych niepokojących objawów.

badanie temperaturowe czujnika ITG-3200

 

Na koniec zdecydowanie najdroższy czujnik ADXRS613. Tutaj dwa identyczne czujniki mają charakterystyki o współczynnikach różniących się wartością i znakiem. Na razie ten czujnik nie rzuca na kolana. Na razie plusem jest to że charakterystyka jest monotoniczna, nie ma na niej skoków i nieciągłości, któe w praktyce są nie możliwe do skompensowania.

test temperaturowy czujnika ADXRS613

 

Żyroskop -próba kompensacji temperaturowej

Wiemy już jak zachowują się żyroskopy w funkcji temperatury, wiec warto przymierzyć się do skompensowania tego zjawiska na drodze programowej. Punktem wyjścia była znajomość temperatury pokojowej oraz temperatury, jaka ustaliła się w zamrażalniku. Ich proporcja daje współczynnik temperaturowy, przez który mnożę różnicę bieżącej temperatury i temperatury pokojowej. W ten sposób uzyskuję wartość jaką należy odjąć od odpowiedzi żyroskopu.

Zacznę w odwrotnej kolejności, od najdroższego żyroskopu ADXRS613. Niebieska linia to jest odpowiedź żyroskopu, żółta to wyliczony błąd temperaturowy a pomarańczowa to skompensowana odpowiedź żyroskopu.

kompensacja temperaturowa żyroskopu ADXRS613

Jestem bardzo zadowolony z tego żyroskopu. W stanach ustalonych błąd zmniejsza się do ok. 0,1°/s. Stany nieustalone są dlatego, że żyroskop i czujnik temperatury znajdowały się na osobnych płytkach i miały różną stałą czasową. Widać że koniecznie trzeba korzystać z czujnika temperatury wbudowanego w żyroskop. Cały ten test jest do powtórzenia, ale wstępne wyniki są zachęcające.

Kolejny egzemplarz tego czujnika już początkowo miał mały błąd temperaturowy, ale okazuje się że jeszcze można go zmniejszyć. Pewnym problemem było tutaj niedokładne wyzerowanie żyroskopu, stąd wynik jest na niezerowej wartości, ale ogólnie metoda potwierdza się. Zwiększony szum czujnika spowodowany jest zawężeniem skali do 2°/s, oraz tym że czujnik podłączony był na długich przewodach a jego zasilanie szło przez oporniki 100R. W tym przypadku poziomu szumu nie można traktować jako kryterium porównawczego.

 

Kolejny żyroskop ITG-3200 wypada również bardzo dobrze. Widać jakieś schodki w odpowiedzi czujnika, niezbyt dobrze był wyzerowany, ale metoda kalibracji potwierdza się zmniejszając błąd wielokrotnie.

Schody zaczynają się w przypadku kolejnej osi tego czujnika, dla której odpowiedź zarówno dla grzania jak i chłodzenia była dodatnia. Tutaj jeden współczynnik to za mało. Uwzględniłem wiec dwa współczynniki, jeden dla temperatur powyżej pokojowej, drugi poniżej. Tak wygląda rezultat kompensacji.

 

Ostatni czujnik IDG-500 jest wyraźnie gorszy pod względem możliwości kompensacji, jednak i tutaj kompensacja istotnie zmniejsza błąd dryftu czujnika.

Jeszcze jeden wykres dla drugiej osi. Tutaj jest wyraźnie gorzej. To że czujnik nie był wyzerowany to jedna sprawa, ale pomimo zastosowania dwu współczynników korekcyjnych, kompensacja błędu dla warunków nagrzewania sięga prawie 3°/s. Dodatkowo w początkowym etapie jest ząbek na charakterystyce o wartości 2°/s, który nie jest możliwy do skompensowania tymi metodami.

Dla tego typu czujnika pomiary trzeba powtórzyć na większej ilości czujników, żeby wyeliminować możliwość błędu montażowego, bo jedną z hipotez tłumaczących występowanie skokowych zmian wartości na wykresie jest stres temperaturowy spowodowany niewłaściwym rozkładem lutowia na powierzchni styku czujnika z płytką. Pasta do lutowania nakładana była ręcznie i nie jest wykluczone że środkowy pad był częściowo przylutowany do płytki. To trzeba zweryfikować, bo na obecną chwilę tak działający czujnik nie nadaje się do poważniejszych aplikacji.

 

Porównanie akcelerometrów

W przeprowadzanym teście miałem na płytkach dwa akcelerometry. Jeden akcelerometr analogowy MMA7341 i akcelerometr cyfrowy LIS302DLH. Zakres zmian temperatur był ten sam jak dla badania żyroskopów. O ile żyroskop pokazuje zmienność położenia w czasie i jest niewrażliwy na wartości statyczne, to akcelerometr pokazuje swoje położenie a to w częściowo wypełnionej komorze zamrażarki nie było idealnie równoległe. Dlatego należy uwzględnić statyczne przesunięcie wartości w części testu chłodzenia i brać pod uwagę tylko zmianę sygnału między początkiem a końcem chłodzenia.

Wykresy na osi Y są wyskalowane w jednostce g. Oś Z została znormalizowana poprzez odjęcie od niej wartości 1.

Tak wygląda wykres dryftu dla czujnika MMA7341 z wyjściem analogowym. Dryft dla osi Z sięga wartości 0,13g. Współczynniki temperaturowe dla poszczególnych osi mają różne wartości i różne znaki.

test temperaturowy czujnika MMA7341

 

Tak wygląda wykres dla czujnika LIS302DLH z wyjściem cyfrowym. Tutaj dryft temperaturowy sięga nawet 0,25g. Wartości współczynnika temperaturowego dla osi X i Y są zbliżone i wszystkie mają ten sam znak.

Test czujnika LIS302DLH

 

Podsumowując należy powiedzieć że badana była tylko mała próbka układów. Każdy inny egzemplarz może mieć inne parametry i ten test należy traktować jako próbę wyrobienia właściwej metodologii badań. Aby można było powiedzieć coś miarodajnego o danym typie układu warto było by przebadać chociaż z 10 egzemplarzy tego czujnika.

Lataj bezpiecznie swoim UAV