Kompletny przewodnik po MEMS MPU6050 i LSM9DS1: teoria, praktyka i przypadki użycia

  • Czujniki MEMS MPU6050 i LSM9DS1 umożliwiają pomiar przyspieszenia i obrotu w trzech osiach z wysoką precyzją i niskim kosztem.
  • MPU6050 zawiera zintegrowany akcelerometr i żyroskop, natomiast LSM9DS1 posiada dodatkowo magnetometr zapewniający orientację absolutną.
  • Dzięki kalibracji i filtrowaniu oba czujniki można stosować w aplikacjach takich jak nawigacja bezwładnościowa, robotyka czy urządzenia noszone na ciele.
LSM9DS1

Ułożone z 12 obrazów. Metoda=B (R=44,S=4)

W dzisiejszym świecie technologii i elektroniki czujniki MEMS (Micro-Electro-Mechanical Systems) stały się kluczowym narzędziem dla wszelkiego rodzaju projektów, od robotyki po automatykę domową i urządzenia noszone na ciele. Moduły łączące akcelerometry i żyroskopy, takie jak MPU6050 i LSM9DS1, to dwie z najpopularniejszych opcji dzięki ich wszechstronności, niskim kosztom i łatwości integracji z mikrokontrolerami, takimi jak Arduino i innymi platformami. Dogłębne zrozumienie ich działania, unikalnych cech, różnic, a nawet najlepszego sposobu ich wykorzystania jest niezbędne do projektowania precyzyjnych systemów, które zmierzyć ruch, orientację i nachylenie.

W tym artykule krok po kroku przedstawimy Ci wszystko, co musisz wiedzieć o czujnikach MPU6050 y LSM9DS1: jak działają, jakie mają zastosowania, jak zintegrować je z projektem, skalibrować, prawidłowo interpretować ich odczyty i maksymalnie wykorzystać ich możliwości, łącząc informacje zebrane w najlepszych samouczkach i artykułach technicznych, w ramach praktycznej i aktualnej wizji z bliskim językiem, tak aby osiągnąć profesjonalne rezultaty w Twoich wydarzeniach.

Czym jest czujnik MEMS i jak działa?

moduł mpu6050

Zanim przejdziemy do omówienia konkretnych modeli MPU6050 i LSM9DS1, ważne jest, aby wyjaśnić koncepcję Czujnik MEMSUrządzenia te, zwane także Mikrosystemy elektromechaniczneintegrują mikroskopijne elementy mechaniczne i obwody elektroniczne w jednym układzie scalonym, dzięki czemu mogą wykrywać zmiany fizyczne, takie jak przyspieszenia, obroty lub wibracje, i przekształcać je na sygnały elektryczne, które mogą być interpretowane przez systemy cyfrowe.

W przypadku akcelerometrów i żyroskopów MEMS działanie opiera się na następujących zasadach:

  • Prawo Newtona dotyczące przyspieszenia (a = F/m) wykorzystujące struktury wewnętrzne działające jak mikroskopijne masy i sprężyny.
  • Efekt Coriolisa służy do wykrywania ruchów kątowych, wykorzystując odchylenie, jakiego doświadczają małe masy obracające się wewnątrz układu scalonego.
  • Wewnętrzne przetworniki ADC służące do przetwarzania zmian fizycznych na wartości cyfrowe o wysokiej rozdzielczości (zwykle 16 bitów).

Te możliwości sprawiają, że technologia MEMS jest niezwykle użyteczna w zastosowaniach, które wymagają pomiar orientacji, nachylenia lub ruchu w trzech wymiarach, takie jak systemy nawigacyjne, stabilizacja kamer, inteligentne zegarki, drony, roboty i wiele innych.

Główne cechy MPU6050

El MPU6050 Jest to prawdopodobnie najpopularniejszy czujnik ruchu MEMS wśród twórców, inżynierów i hobbystów poszukujących ekonomicznego i niezawodnego rozwiązania do pomiaru przyspieszenia i obrotu w trzech osiach.

Jego kluczowe parametry techniczne obejmują:

  • Akcelerometr 3-osiowy:Możliwość wykrywania przyspieszeń na osiach X, Y i Z w programowalnym zakresie ±2g, ±4g, ±8g i ±16g.
  • Żyroskop 3 osiowy: Mierzy prędkości kątowe na wszystkich trzech osiach, z regulowaną czułością wynoszącą ±250, ±500, ±1000 i ±2000 stopni na sekundę.
  • Cyfrowy procesor ruchu (DMP): Zawiera wewnętrzny mikroprocesor przeznaczony do wykonywania złożonych obliczeń Połączenie ruchu (fuzja czujników), obliczająca dane takie jak kwaterniony, kąty Eulera i macierze obrotu bez konieczności ładowania tych obliczeń do głównego mikrokontrolera.
  • Wyjście cyfrowe przez I2C:Komunikacja poprzez magistralę I2C z dwoma możliwymi adresami (konfigurowalnymi poprzez pin AD0 do 0x68 lub 0x69), umożliwiająca współpracę z większością płytek Arduino, ESP i podobnych.
  • 16-bitowy przetwornik ADC:Zapewnia wysoką rozdzielczość w zbieraniu danych.
  • Zintegrowany czujnik temperatury
  • Możliwość rozbudowy o zewnętrzny magnetometr:Za pośrednictwem pomocniczej magistrali I2C moduł MPU6050 może odczytywać dane z innych podłączonych czujników, takich jak popularny układ HMC5883L (magnetometr), tworząc w ten sposób kompletny 9-osiowy moduł IMU.
  • Elastyczne napięcie robocze:Można go zasilać napięciem 3,3 V lub nawet 5 V, jeśli używana jest płyta główna, taka jak GY-521, która zawiera regulator.

Ponadto kompaktowe rozmiary modułu (około 25 x 15 mm) i fakt, że jest gotowy do zamontowania na płytce stykowej, czynią go idealnym zarówno do testowania, jak i ostatecznego rozwoju.

Czym jest LSM9DS1 i czym się różni?

Ze swojej strony, LSM9DS1 Jest to bardziej zaawansowana i nowoczesna opcja w rodzinie MEMS IMU, chociaż jest mniej popularna niż MPU6050 w projektach dla początkujących. Integruje następujące elementy na jednym chipie:

  • Un Akcelerometr 3-osiowy
  • Un 3-osiowy żyroskop
  • Un magnetometr również 3-osiowy

Oznacza to, że LSM9DS1 jest 9 stopni swobody (DoF) IMU, umożliwiając pomiar przyspieszenia, prędkości kątowej i pola magnetycznego Ziemi w trzech wymiarach, zapewniając kompletne i dokładne odczyty absolutna pozycja i orientacja w odniesieniu do Ziemi.

Do jego głównych zalet w porównaniu z MPU6050 zalicza się:

  • Łączy trzy czujniki w jednym fizycznym układzie scalonym, oszczędzając miejsce i upraszczając połączenia.
  • Można komunikować się zarówno poprzez I2C jako SPI, co zapewnia mu większą wszechstronność dla różnych platform.
  • Zakresy i czułości każdego czujnika (akcelerometru, żyroskopu, magnetometru) można konfigurować w sposób bardziej elastyczny.
  • Posiada zaawansowane funkcje filtrowania cyfrowego i wykrywania zdarzeń.

Model LSM9DS1 jest często wybierany w projektach, w których wymagana jest absolutna orientacja (np. w kompasach, systemach nawigacyjnych lub stabilizacji lotu), bez konieczności stosowania dodatkowych zewnętrznych czujników.

Zasady działania akcelerometrów i żyroskopów MEMS

Aby w pełni zrozumieć, jak działają moduły MEMS, ważne jest zrozumienie koncepcji fizycznych i sposobu, w jaki przekładają się one na dane cyfrowe:

Akcelerometr

Un Akcelerometr MEMS mierzy przyspieszenie obiektu (zmianę prędkości w czasie) względem trzech osi przestrzeni. Wewnętrznie opiera się na obecności mikroskopijna masa zawieszona za pomocą elastycznych kotwic lub małych sprężyn. Gdy czujnik przyspiesza, masa ta nieznacznie się przesuwa, a ta zmiana jest przekształcana w sygnał elektryczny za pomocą kondensatorów zmiennych lub piezoelektrycznych.

  • Akcelerometr zawsze wykrywa co najmniej jedno przyspieszenie: powaga (9,81 m/s2), nawet jeśli czujnik jest nieruchomy.
    Służy do obliczenia nachylenia względem płaszczyzny poziomej.
  • Całkując przyspieszenie względem czasu, można uzyskać prędkość, a co za tym idzie, przebytą pozycję, chociaż operacje te mają tendencję do kumulowania błędów.

żyroskop

El Żyroskop MEMS Użyj efekt Coriolisa do wykrywania prędkości, z jaką ciało obraca się wokół osi X, Y i Z. Gdy czujnik wykonuje obrót, wewnętrzne drgające masy ulegają odchyleniu proporcjonalnemu do prędkość kątowai ta zmiana jest mierzona elektronicznie.

  • Żyroskop mierzy prędkość kątowa:jak szybko zmienia się orientacja czujnika na każdej osi.
  • Zintegrowanie prędkości kątowej z czasem daje kąt obrotu (położenie kątowe), chociaż operacja ta generuje kumulatywne błędy zwane dryfować.

Dlaczego warto połączyć akcelerometr i żyroskop?

Zarówno akcelerometry, jak i żyroskopy same w sobie mają ograniczenia przy określaniu orientacji obiektu:

  • Akcelerometr: Dokładny w wykrywaniu nachyleń względem osi pionowej (z wykorzystaniem grawitacji), lecz bardzo czuły na nagłe ruchy, przyspieszenia zewnętrzne i wibracje.
  • Żyroskop: Jest to metoda idealna do pomiaru szybkich zmian orientacji, ale jest ona obarczona ryzykiem kumulacji błędów, jeśli jej wynik jest integrowany przez długi okres czasu.

Dlatego większość aplikacji łączy dane z obu czujników, co znacznie zwiększa dokładność i niezawodność odczytów. kąt, nachylenie lub pozycjaAby to osiągnąć, wykorzystuje się je filtry przetwarzania cyfrowego takie jak filtr uzupełniający lub filtr Kalmana, które łączą i oceniają zalety każdego czujnika.

Pierwsze kroki z MPU6050: połączenie i biblioteki

Typowy schemat połączeń

Moduł MPU6050 Zwykle montuje się go na płycie GY-521, co znacznie ułatwia integrację z mikrokontrolerami takimi jak Arduino.

Podstawowe połączenia umożliwiające korzystanie z modułu w trybie I2C to zazwyczaj:

MPU6050 Arduino Uno/Nano/Mini Arduino Mega/DUE Arduino Leonardo
VCC 5V 5V 5V
GND GND GND GND
SCL A5 21 3
SDA A4 20 2

Moduł ma wbudowane rezystory podciągające, więc zazwyczaj nie ma potrzeby ich zewnętrznego dodawania.

Adres I2C i pin AD0

MPU6050 umożliwia skonfigurowanie adresu I2C w celu 0x68 (domyślnie, gdy pin AD0 jest w stanie GND lub niepodłączony) lub 0x69 (gdy AD0 jest podłączony do high/5V). Ułatwia to używanie wielu czujników na tej samej magistrali.

Polecana biblioteka: I2Cdevlib autorstwa Jeffa Rowberga

Aby wygodnie pracować z MPU6050 na Arduino, społeczność zaleca korzystanie z następujących bibliotek:

  • I2Cdev:Ułatwia komunikację I2C z wieloma czujnikami.
  • MPU6050: Umożliwia dostęp do wszystkich funkcji czujnika, odczyt skalibrowanych wartości, przesunięć i korzystanie z DMP.

Dostępne są w: https://github.com/jrowberg/i2cdevlib

Po pobraniu wystarczy je rozpakować i umieścić w folderze biblioteki z Arduino IDE.

Odczyt podstawowych danych: przyspieszenie i prędkość kątowa

Po podłączeniu i skonfigurowaniu MPU6050 następnym krokiem jest wykonanie odczyty przyspieszeń i prędkości kątowych na trzech osiach. Podstawowy proces, wykorzystujący wspomnianą bibliotekę, obejmuje:

  1. Zainicjuj czujnik za pomocą funkcji czujnik.initialize().
  2. Sprawdź połączenie z czujnik.testConnection().
  3. Odczytaj surowe (nieprzetworzone) wartości z akcelerometru i żyroskopu do zmiennych takich jak ax, ay, az dla przyspieszenia i gx, gy, gz dla spinu.
  4. Aby wyświetlić wyniki, wyślij dane na port szeregowy.

Dane te pojawiają się jako 16-bitowe liczby całkowite z zakresu .

Kalibracja czujnika MPU6050

Jedną z kluczowych faz podczas korzystania z MPU6050 jest kalibracjaBardzo często zdarza się, że czujnik zwraca wartości różne od zera, nawet gdy jest idealnie poziomy i w stanie spoczynku. Jest to spowodowane możliwym rozbieżnością w procesie lutowania układu scalonego do modułu, a nawet drobnymi niedoskonałościami produkcyjnymi.

Kalibracja czujnika polega na określeniu przesunięcia akcelerometru i żyroskopu na każdej osi i skonfiguruj je na czujniku tak, aby odczyty były oparte na prawidłowych informacjach. Typowy proces może składać się z:

  • Odczytaj bieżące przesunięcia za pomocą funkcji takich jak pobierzXAccelOffset(), pobierzYAccelOffset(), itp.
  • Umieść czujnik w pozycji poziomej i pozostaw go w całkowitym bezruchu.
  • Za pomocą programu dostosuj przesunięcia, aż odczyty filtrowane (na przykład za pomocą średniej ruchomej lub filtra dolnoprzepustowego) będą zbieżne z wartościami idealnymi: topór = 0, ay = 0, az = 16384, gx = 0, gy = 0, gz = 0 w trybie surowym (RAW).
  • Ustaw te wartości za pomocą funkcji ustawXAccelOffset(), ustawYAccelOffset(), itp.

Po prawidłowej kalibracji czujnik będzie dostarczał o wiele dokładniejsze i stabilniejsze wartości, co jest niezwykle istotne w przypadku tak ważnych zastosowań, jak stabilizacja czy nawigacja.

Skalowanie i konwersja odczytów na jednostki fizyczne

Surowe odczyty z MPU6050 muszą zostać przekształcone na jednostki SI (Międzynarodowy Układ Miar), aby można je było zinterpretować i wykorzystać w obliczeniach fizycznych lub wizualizacji danych:

  • Przyśpieszenie: Domyślny zakres wynosi ±2g, co odpowiada ±19,62 m/s2Wartość RAW 16384 odpowiada 1 g, dlatego aby przeliczyć na x am/s2: siekiera * (9,81/16384.0).
  • Prędkość kątowa: Domyślnie ±250°/s, więc konwersja będzie wyglądać następująco: gx * (250.0 / 32768.0) aby przeliczyć wartości RAW na stopnie na sekundę.

Współczynniki skali ulegają zmianie w przypadku skonfigurowania czujnika na inne zakresy, dlatego zawsze należy sprawdzić ustawienia fabryczne lub niestandardowe przed interpretacją danych.

Oblicz pochylenie używając tylko akcelerometru

Gdy czujnik znajduje się w stanie spoczynku lub jest pod wpływem grawitacji, odczyty akcelerometru można wykorzystać do obliczenia kąt nachylenia względem osi X i YTypowe wzory matematyczne wykorzystują funkcje trygonometryczne:

  • Dla nachylenia X: atan(ax / sqrt(ay² + az²)) × 180/π
  • Dla skosu Y: atan(ay / sqrt(ax² + az²)) × 180/π

Zapewnia to kąt nachylenia względem każdej osi w stosunku do płaszczyzny grawitacji, chociaż jeśli czujnik jest w ruchu lub odbiera inne przyspieszenia, wartości te mogą ulec zmianie.

Obliczanie kątów obrotu za pomocą żyroskopu

Żyroskop pozwala na obliczenie zmiana kąta przez całkowanie prędkości kątowej z czasem. Matematycznie:

  • Kąt jest równy całce prędkości kątowej w danym przedziale czasu: θ = θ0 + ∫w·dt

W praktyce obliczenia te można wykonywać w pętlach programu, sumując prędkość kątową pomnożoną przez okres próbkowania (dt), aby uzyskać skumulowany kąt.

Ważne jest kontrolowanie błędu integracji, ponieważ małe błędy kumulują się, powodując dryfować.

Filtry fuzyjne czujników: komplementarne i Kalmana

Aby ograniczyć błędy interpretacyjne i maksymalnie wykorzystać potencjał każdego czujnika, stosuje się algorytmy łączenia danych:

Filtr uzupełniający

Ten filtr łączy kąt oszacowany przez żyroskop (który dobrze działa w krótkim okresie) z kątem obliczonym przez akcelerometr (który jest bardziej niezawodny w długim okresie, ale zakłócony). Typowy wzór to:

Kąt_końcowy = α × (Poprzedni_kąt + Prędkość_kątowa × dt) + (1-α) × Kąt_akcelerometru

Gdzie α zwykle mieści się w przedziale od 0,95 do 0,99. Pozwala to na uzyskanie stabilnego odczytu i zmniejszenie dryfować.

Filtr Kalmana

Znacznie bardziej zaawansowany, ten filtr łączy pomiary, biorąc pod uwagę niepewność każdego pomiaru i ich korelacje, osiągając dokładne szacunki w obecności szumu. Jest szeroko stosowany w systemach nawigacyjnych i zaawansowanej robotyce, chociaż wymaga większej mocy obliczeniowej.

Symulacja 3D i wizualizacja orientacji (odchylenie, pochylenie, przechylenie)

Ciekawym zastosowaniem jest wyświetlanie orientacji 3D w czasie rzeczywistym obiektu, takiego jak dron lub robot, poprzez przedstawienie kątów Odchylenie, pochylenie i przechylenie.

Osiąga się to poprzez przesyłanie przetworzonych danych do oprogramowania graficznego, przy użyciu narzędzi takich jak Serial Plotter lub konkretnych programów 3D do monitorowania i analizowania ruchów. W ten sposób można wizualnie zrozumieć, jak zorientowany jest system w przestrzeni.

Rozszerzone odczyty: wykorzystanie magnetometru i czujnika LSM9DS1

El LSM9DS1 integruje akcelerometr, żyroskop i magnetometr w jednym układzie scalonym, co umożliwia pozyskiwanie danych z absolutna pozycja i orientacjaOprócz pomiaru przyspieszenia i obrotów, może wykrywać pole magnetyczne Ziemi, aby:

  • Oblicz azymut absolutny, przydatne w nawigacji i kompasach cyfrowych.
  • Opracowanie systemów naprowadzania bez konieczności stosowania dodatkowych zewnętrznych czujników.
  • Łączenie danych ze wszystkich czujników w celu uzyskania niezwykle dokładnego oszacowania położenia i orientacji (9 stopni swobody).

Praktyczne wskazówki dotyczące efektywnego wykorzystania MPU6050 i LSM9DS1

  • Zawsze kalibruj czujniki przed użyciem w krytycznych zastosowaniach w celu zwiększenia dokładności.
  • Należy unikać montażu modułów w pobliżu źródeł zakłóceń elektromagnetycznych, takich jak silniki lub magnesy.
  • Stosuj techniki filtrowania i utrzymuj precyzyjną kontrolę nad czasami próbkowania.
  • W celu uzyskania bezwzględnej orientacji względem północy zaleca się użycie LSM9DS1 lub połączyć MPU6050 z zewnętrznym magnetometrem, np. HMC5883L.
  • Wdrożenie wizualizacji w czasie rzeczywistym pozwala lepiej interpretować zebrane dane.
  • Księgarnie takie jak i2cdevlib Ułatwiają pracę, dlatego nadaj im priorytet, aby ułatwić rozwój.
LSM9DS1
Podobne artykuł:
Kompletny przewodnik po czujniku LSM9DS1 z Arduino: akcelerometr, żyroskop i magnetometr

Rozpocznij rozmowę

Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.