Kompletan vodič za MEMS MPU6050 i LSM9DS1: Teorija, praksa i primjeri upotrebe

  • MEMS senzori MPU6050 i LSM9DS1 omogućavaju mjerenje ubrzanja i rotacije u tri ose s visokom preciznošću i niskom cijenom.
  • MPU6050 integriše akcelerometar i žiroskop, dok LSM9DS1 dodaje i magnetometar, pružajući apsolutnu orijentaciju.
  • Kalibracijom i filtriranjem, oba senzora se mogu koristiti u aplikacijama kao što su inercijalna navigacija, robotika ili nosivi uređaji.
LSM9DS1

Naslagano od 12 slika. Metoda=B (R=44,S=4)

U današnjem svijetu tehnologije i elektronike, MEMS (mikro-elektromehanički sistemi) senzori postali su ključni alat za sve vrste projekata, od robotike do kućne automatizacije i nosive elektronike. Moduli koji kombinuju akcelerometre i žiroskope, kao što su... MPU6050 y el LSM9DS1, su dvije najpopularnije opcije zahvaljujući svojoj svestranosti, niskoj cijeni i jednostavnoj integraciji s mikrokontrolerima poput Arduina i drugih platformi. Temeljno razumijevanje njihovog rada, jedinstvenih karakteristika, razlika, pa čak i najboljeg načina njihovog korištenja, ključno je za dizajniranje preciznih sistema koji mjeri kretanje, orijentaciju i nagib.

U ovom članku ćemo vas korak po korak provesti kroz sve što trebate znati o senzorima MPU6050 y LSM9DS1: kako rade, koje aplikacije imaju, kako ih integrirati u vaš projekat, kalibrirati ih, ispravno interpretirati njihova očitanja i maksimalno iskoristiti njihove mogućnosti, kombinirajući informacije prikupljene u najboljim tutorijalima i tehničkim člancima, pod praktičnom i ažuriranom vizijom sa bliskim jezikom, tako da postići profesionalne rezultate u vašim dešavanjima.

Šta je MEMS senzor i kako funkcioniše?

mpu6050 modul

Prije nego što se uđe u konkretne modele MPU6050 i LSM9DS1, važno je razjasniti koncept MEMS senzorOvi uređaji, također nazvani Mikro elektromehanički sistemi, integriraju mikroskopske mehaničke komponente i elektronska kola u jedan čip, tako da mogu detektovati fizičke varijacije - poput ubrzanja, rotacija ili vibracija - i pretvoriti ih u električne signale koje digitalni sistemi mogu interpretirati.

U slučaju MEMS akcelerometara i žiroskopa, njihov rad se zasniva na principima kao što su:

  • Newtonov zakon ubrzanja (a = F/m), koristeći unutrašnje strukture koje djeluju kao mikroskopske mase i opruge.
  • Koriolisov efekat se koristi za detekciju ugaonih kretanja, iskorištavajući otklon koji male mase doživljavaju prilikom rotacije unutar čipa.
  • Interni ADC konvertori za transformaciju fizičkih varijacija u digitalne vrijednosti visoke rezolucije (obično 16 bita).

Ove mogućnosti čine MEMS izuzetno korisnim u aplikacijama koje zahtijevaju mjerenje orijentacije, nagiba ili kretanja u tri dimenzije, kao što su navigacijski sistemi, stabilizacija kamere, pametni satovi, dronovi, roboti i još mnogo toga.

Glavne karakteristike MPU6050

El MPU6050 Vjerovatno je to najšire korišteni MEMS senzor pokreta među proizvođačima, inženjerima i hobistima koji traže ekonomično i pouzdano rješenje za mjerenje ubrzanja i rotacije u tri ose.

Njegove ključne tehničke specifikacije uključuju:

  • 3-osni akcelerometarSposoban za detekciju ubrzanja na X, Y i Z osama, sa programabilnim rasponom od ±2g, ±4g, ±8g i ±16g.
  • 3 osni žiroskopMjeri ugaone brzine na sve tri ose, s podesivom osjetljivošću na ±250, ±500, ±1000 i ±2000 stepeni u sekundi.
  • Digitalni procesor pokreta (DMP): Uključuje interni mikroprocesor namijenjen obavljanju složenih proračuna Fuzija pokreta (fuzija senzora), izračunavajući podatke kao što su kvaternioni, Eulerovi uglovi i matrice rotacije bez potrebe za učitavanjem tih proračuna na glavni mikrokontroler.
  • Digitalni izlaz preko I2C-aKomunikacija putem I2C magistrale sa dvije moguće adrese (konfiguribilne preko pina AD0 na 0x68 ili 0x69), omogućavajući rad sa većinom Arduino, ESP i sličnih ploča.
  • 16-bitni ADC pretvaračNudi visoku rezoluciju u prikupljanju podataka.
  • Integrirani temperaturni senzor
  • Mogućnost proširenja eksternim magnetometromPutem pomoćne I2C magistrale, MPU6050 može očitavati druge povezane senzore kao što je popularni HMC5883L (magnetometar), kako bi formirao kompletnu 9-osnu IMU jedinicu.
  • Fleksibilni radni naponMože se napajati na 3,3 V ili čak 5 V ako se koristi matična ploča poput GY-521, koja ima ugrađen regulator.

Nadalje, kompaktna veličina modula (oko 25 x 15 mm) i činjenica da dolazi spreman za integraciju u probnu ploču čine ga idealnim i za testiranje i za konačni razvoj.

Šta je LSM9DS1 i po čemu se razlikuje?

Sa svoje strane, LSM9DS1 To je naprednija i modernija opcija unutar MEMS IMU porodice, iako je manje popularna od MPU6050 u početničkim projektima. Integriše sljedeće na jednom čipu:

  • Un 3-osni akcelerometar
  • Un 3-osni žiroskop
  • Un magnetometar također 3-osni

To znači da je LSM9DS1 9 DoF (stepeni slobode) IMU, što vam omogućava mjerenje ubrzanja, ugaone brzine i Zemljinog magnetskog polja u tri dimenzije, pružajući potpuna i tačna očitanja apsolutna pozicija i orijentacija u odnosu na Zemlju.

Njegove glavne prednosti u odnosu na MPU6050 uključuju:

  • Kombinuje tri senzora u jedan fizički čip, štedeći prostor i pojednostavljujući veze.
  • Možete komunicirati putem oba I2C kao SPI, što mu daje veću svestranost za različite platforme.
  • Domet i osjetljivost svakog senzora (akcelerometar, žiroskop, magnetometar) su fleksibilnije konfigurabilni.
  • Ima napredne opcije digitalnog filtriranja i detekcije događaja.

LSM9DS1 se često bira za projekte gdje je potrebna apsolutna orijentacija (npr. kompasi, navigacijski sistemi ili stabilizacija leta) bez potrebe za dodatnim vanjskim senzorima.

Principi rada MEMS akcelerometara i žiroskopa

Da bismo zaista razumjeli kako ovi MEMS moduli rade, važno je razumjeti fizičke koncepte i kako se oni prevode u digitalne podatke:

Akcelerometar

Un MEMS akcelerometar mjeri ubrzanje objekta (promjenu brzine tokom vremena) u odnosu na tri ose prostora. Interno se zasniva na prisustvu mikroskopska suspendirana masa fleksibilnim sidrima ili malim oprugama. Kada senzor ubrzava, ova masa se malo pomiče, a ta varijacija se pretvara u električni signal pomoću varijabilnih ili piezoelektričnih kondenzatora.

  • Akcelerometar uvijek detektuje barem jedno ubrzanje: gravitacija (9,81 m/s2), čak i ako senzor miruje.
    Ovo se koristi za izračunavanje nagiba u odnosu na horizontalnu ravan..
  • Integriranjem ubrzanja u odnosu na vrijeme, može se dobiti brzina i, zauzvrat, pređena pozicija, iako ove operacije imaju tendenciju akumuliranja grešaka.

Žiroskop

El MEMS žiroskop koristiti Coriolisov efekat za detekciju brzine kojom se tijelo okreće oko svojih X, Y i Z osa. Kada senzor doživi rotaciju, unutrašnje vibrirajuće mase trpe odstupanje proporcionalno ugaona brzina, a ta promjena se mjeri elektronski.

  • Žiroskop mjeri ugaona brzina: koliko brzo se orijentacija senzora mijenja na svakoj osi.
  • Integriranjem ugaone brzine s vremenom dobija se ugao rotacije (ugaoni položaj), iako ova operacija generira kumulativne greške koje se nazivaju zanošenje.

Zašto kombinovati akcelerometar i žiroskop?

Sami po sebi, i akcelerometri i žiroskopi imaju ograničenja pri određivanju orijentacije objekta:

  • Akcelerometar: Precizan u detekciji nagiba u odnosu na vertikalnu osu (koristeći gravitaciju), ali vrlo osjetljiv na nagle pokrete, vanjska ubrzanja ili vibracije.
  • Žiroskop: Idealan je za mjerenje brzih promjena orijentacije, ali pati od akumulacije grešaka ako se njegov izlaz integriše tokom dužeg vremenskog perioda.

Stoga većina aplikacija spaja podatke iz oba senzora, što znatno poboljšava tačnost i pouzdanost očitavanja. ugao, nagib ili položajDa bi se to postiglo, koriste se filteri za digitalnu obradu kao što su komplementarni filter ili Kalmanov filter, koji kombinuju i važe prednosti svakog senzora.

Početak rada s MPU6050: povezivanje i biblioteke

Tipični dijagram povezivanja

Modul MPU6050 Obično se montira na tip ploče GY-521, što uveliko olakšava integraciju s mikrokontrolerima kao što je Arduino.

Osnovne veze za korištenje modula u I2C modu su obično:

MPU6050 Arduino Uno/Nano/Mini Arduino Mega/DUE arduino leonardo
VCC 5V 5V 5V
GND GND GND GND
SCL A5 21 3
prirodni resursi A4 20 2

Modul ima ugrađene pull-up otpornike, tako da ih uglavnom nije potrebno dodavati eksterno.

I2C adresa i AD0 pin

MPU6050 vam omogućava da konfigurišete njegovu I2C adresu na 0x68 (podrazumevano, kada je AD0 pin na GND ili nije povezan) ili 0x69 (kada je AD0 povezan na visoki/5V). Ovo olakšava korištenje više senzora na istoj magistrali.

Preporučena biblioteka: I2Cdevlib od Jeffa Rowberga

Za ugodan rad s MPU6050 na Arduinu, zajednica preporučuje korištenje sljedećih biblioteka:

  • I2CdevOmogućava I2C komunikaciju sa mnogim senzorima.
  • MPU6050Omogućava vam pristup svim funkcijama senzora, očitavanje kalibriranih vrijednosti, pomaka i korištenje DMP-a.

Dostupni su u: https://github.com/jrowberg/i2cdevlib

Nakon preuzimanja, jednostavno ih raspakujte i stavite u mapu biblioteke iz Arduino IDE-a.

Očitavanje osnovnih podataka: ubrzanje i ugaona brzina

Nakon što je MPU6050 povezan i konfiguriran, sljedeći korak je izvršiti očitavanja ubrzanja i ugaonih brzina na tri ose. Osnovni proces, korištenjem prethodno spomenute biblioteke, uključuje:

  1. Inicijalizirajte senzor pomoću funkcije sensor.initialize().
  2. Provjerite vezu sa senzor.testConnection().
  3. Očitajte RAW (neobrađene) vrijednosti s akcelerometra i žiroskopa u varijable poput ax, ay, az za ubrzanje i gx, gy, gz za rotaciju.
  4. Pošaljite podatke na serijski port da biste prikazali rezultate.

Ovi podaci se pojavljuju kao 16-bitni cijeli brojevi u rasponu .

Kalibracija senzora MPU6050

Jedna od ključnih faza pri korištenju MPU6050 je kalibracijaVrlo je uobičajeno da senzor vraća vrijednosti različite od nule, čak i ako je savršeno horizontalan i u mirovanju, zbog mogućih nepravilnosti prilikom lemljenja čipa na modul ili čak manjih nedostataka u proizvodnji.

Kalibracija senzora uključuje određivanje pomaci akcelerometra i žiroskopa na svakoj osi i konfigurirajte ih na senzoru tako da očitanja budu zasnovana na tačnim informacijama. Tipičan proces može se sastojati od:

  • Pročitajte trenutne pomake koristeći funkcije poput getXAccelOffset(), getYAccelOffset(), Itd
  • Postavite senzor u horizontalni položaj i potpuno ga umirite.
  • Pomoću programa podesite pomake dok filtrirana očitanja (na primjer, korištenjem pomičnog prosjeka ili niskopropusnog filtera) ne konvergiraju prema idealnim vrijednostima: ax = 0, ay = 0, az = 16384, gx = 0, gy = 0, gz = 0 u sirovom režimu (RAW).
  • Postavite ove vrijednosti pomoću funkcija setXAccelOffset(), setYAccelOffset(), Itd

Nakon pravilne kalibracije, senzor će pružati mnogo preciznije i stabilnije vrijednosti, što je neophodno za kritične primjene poput stabilizacije ili navigacije.

Skaliranje i pretvaranje očitanja u fizičke jedinice

Sirova očitanja sa MPU6050 moraju se transformisati u SI (Međunarodni sistem) jedinice kako bi se interpretirala i koristila u fizičkim proračunima ili vizualizaciji podataka:

  • Ubrzanje: Zadani raspon je ±2g, što je ekvivalentno ±19,62 m/s2RAW vrijednost od 16384 odgovara 1 g; stoga, za pretvaranje u x am/s2: sjekira * (9,81/16384.0).
  • Ugaona brzina: Podrazumevano, ±250°/s, tako da bi konverzija bila: gx * (250.0 / 32768.0) za pretvaranje iz RAW vrijednosti u stepene u sekundi.

Ovi faktori skaliranja se mijenjaju ako konfigurirate senzor na druge raspone, stoga je bitno uvijek provjeriti tvorničke ili prilagođene postavke prije interpretacije podataka.

Izračunajte nagib koristeći samo akcelerometar

Kada senzor miruje ili je samo pod utjecajem gravitacije, očitanja akcelerometra mogu se koristiti za izračunavanje ugao nagiba u odnosu na X i Y oseTipične matematičke formule koriste trigonometrijske funkcije:

  • Za X-nagib: atan(ax / sqrt(ay² + az²)) × 180/π
  • Za Y-nagib: atan(ay / sqrt(ax² + az²)) × 180/π

Ovo daje ugao nagiba u odnosu na svaku osu u odnosu na ravan gravitacije, iako se ove vrijednosti mogu promijeniti ako se senzor kreće ili prima druga ubrzanja.

Izračunavanje uglova rotacije pomoću žiroskopa

Žiroskop omogućava izračunavanje promjena ugla integracijom ugaone brzine tokom vremena. Matematički:

  • Ugao je jednak integralu ugaone brzine u datom vremenskom intervalu: θ = θ0 + ∫w·dt

U praksi, ovi proračuni se mogu izvršiti u programskim petljama, sumirajući ugaonu brzinu pomnoženu sa periodom uzorkovanja (dt) da bi se dobio akumulirani ugao.

Važno je kontrolisati grešku integracije, jer se male greške akumuliraju, uzrokujući zanošenje.

Filteri za fuziju senzora: Komplementarni i Kalman

Da bi se smanjile greške u interpretaciji i maksimalno iskoristio svaki senzor, koriste se algoritmi za fuziju podataka:

Komplementarni filter

Ovaj filter kombinuje ugao koji procijeni žiroskop (što dobro funkcioniše kratkoročno) sa uglom koji izračuna akcelerometar (što je pouzdanije dugoročno, ali stvara buku). Tipična formula je:

Konačni_ugao = α × (Prethodni_ugao + Ugaona_brzina×dt) + (1-α) × Ugao_akcelerometara

Gdje je α obično između 0,95 i 0,99. Omogućava dobijanje stabilnog očitanja i smanjenje zanošenje.

Kalmanov filter

Mnogo napredniji, ovaj filter spaja mjerenja, uzimajući u obzir nesigurnost svakog mjerenja i njihove korelacije, postižući tačne procjene u prisustvu šuma. Široko se koristi u navigacijskim sistemima i naprednoj robotici, iako zahtijeva veću računarsku snagu.

3D simulacija i vizualizacija orijentacije (skretanje, nagib, rotacija)

Zanimljiva primjena je prikaz 3D orijentacije u realnom vremenu objekta, kao što je dron ili robot, predstavljanjem uglova Skretanje, propinjanje i ljuljanje.

To se postiže prenošenjem obrađenih podataka u grafički softver, korištenjem alata poput serijskog plotera ili specifičnih 3D programa za praćenje i analizu pokreta. Na ovaj način možete vizualno razumjeti kako je vaš sistem orijentiran u prostoru.

Proširena očitavanja: upotreba magnetometra i senzora LSM9DS1

El LSM9DS1 integriše akcelerometar, žiroskop i magnetometar u jednom čipu, omogućavajući dobijanje podataka iz apsolutna pozicija i orijentacijaPored mjerenja ubrzanja i rotacije, može detektovati Zemljino magnetno polje kako bi:

  • Izračunajte apsolutni azimut, koristan u navigaciji i digitalnim kompasima.
  • Razviti sisteme navođenja bez potrebe za dodatnim eksternim senzorima.
  • Spajanje podataka sa svih senzora za visoko preciznu procjenu položaja i orijentacije (9-DoF).

Praktični savjeti za efikasno korištenje MPU6050 i LSM9DS1

  • Uvijek kalibrirajte senzore prije upotrebe u kritičnim primjenama radi poboljšanja tačnosti.
  • Izbjegavajte montiranje modula u blizini izvora elektromagnetskih smetnji, kao što su motori ili magneti.
  • Koristite tehnike filtriranja i održavajte preciznu kontrolu vremena uzorkovanja.
  • Za apsolutnu orijentaciju u odnosu na sjever, preporučuje se korištenje LSM9DS1 ili kombinujte MPU6050 sa eksternim magnetometrom, kao što je HMC5883L.
  • Implementacija vizualizacija u realnom vremenu pomaže u boljem tumačenju prikupljenih podataka.
  • Knjižare poput i2cdevlib Oni znatno pojednostavljuju rad, stoga im dajte prioritet kako biste olakšali razvoj.
LSM9DS1
Vezani članak:
Kompletan vodič za senzor LSM9DS1 sa Arduinom: akcelerometar, žiroskop i magnetometar