
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?
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:
- Zainicjuj czujnik za pomocą funkcji czujnik.initialize().
- Sprawdź połączenie z czujnik.testConnection().
- Odczytaj surowe (nieprzetworzone) wartości z akcelerometru i żyroskopu do zmiennych takich jak ax, ay, az dla przyspieszenia i gx, gy, gz dla spinu.
- 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.