
Halmozott 12 képből. Módszer = B (R = 44, S = 4)
A mai technológia és elektronika világában a MEMS (mikro-elektromechanikus rendszerek) érzékelők kulcsfontosságú eszközzé váltak mindenféle projektben, a robotikától az otthonautomatizáláson át a viselhető eszközökig. A gyorsulásmérőket és giroszkópokat kombináló modulok, mint például a MPU6050 és LSM9DS1, a két legnépszerűbb opció sokoldalúságuknak, alacsony költségüknek és a mikrovezérlőkkel, például az Arduinoval és más platformokkal való egyszerű integrációjuknak köszönhetően. Működésük, egyedi jellemzőik, különbségeik, sőt még a legjobb kihasználási módjuk alapos ismerete elengedhetetlen a precíz rendszerek tervezéséhez, amelyek mozgás, irány és dőlés mérése.
Ebben a cikkben lépésről lépésre bemutatjuk mindazt, amit a szenzorokról tudni kell. MPU6050 y LSM9DS1: hogyan működnek, milyen alkalmazásaik vannak, hogyan integrálhatók a projektbe, hogyan kalibrálhatók, hogyan értelmezhetők helyesen a leolvasásaik és hogyan hozhatók ki a legtöbbet a képességeikből, a legjobb oktatóanyagokban és műszaki cikkekben összegyűjtött információkat egy praktikus és naprakész vízió, valamint tömör nyelvezettel ötvözve, hogy professzionális eredményeket elérni a fejlesztéseidben.
Mi az a MEMS érzékelő és hogyan működik?
Mielőtt rátérnénk az MPU6050 és LSM9DS1 modellekre, fontos tisztázni a koncepciót MEMS-érzékelőEzeket az eszközöket, más néven Mikroelektromechanikus rendszerek, mikroszkopikus mechanikus alkatrészeket és elektronikus áramköröket integrálnak egyetlen chipbe, hogy azok képesek legyenek fizikai változások – például gyorsulások, forgások vagy rezgések – érzékelésére, és azokat elektromos jelekké alakítani, amelyeket a digitális rendszerek értelmezni tudnak.
A MEMS gyorsulásmérők és giroszkópok esetében működésük az alábbi elveken alapul:
- Newton gyorsulási törvénye (a = F/m), mikroszkopikus tömegekként és rugókként funkcionáló belső struktúrák felhasználásával.
- A Coriolis-effektust szögmozgások detektálására használják, kihasználva azt az elhajlást, amelyet a kis tömegek a chipen belüli forgás során tapasztalnak.
- Belső ADC átalakítók a fizikai variációk nagy felbontású digitális értékekké (általában 16 bit) alakításához.
Ezek a képességek rendkívül hasznossá teszik a MEMS-t olyan alkalmazásokban, amelyek megkövetelik orientáció, dőlés vagy mozgás mérése három dimenzióban, például navigációs rendszerek, kamerastabilizálás, okosórák, drónok, robotok és még sok más.
Az MPU6050 főbb jellemzői
El MPU6050 Valószínűleg ez a legszélesebb körben használt MEMS mozgásérzékelő a gyártók, mérnökök és hobbi szakemberek körében, akik gazdaságos és megbízható megoldást keresnek a gyorsulás és a forgás három tengely mentén történő mérésére.
Főbb műszaki adatai a következők:
- 3 tengelyes gyorsulásmérőKépes érzékelni az X, Y és Z tengelyek gyorsulásait, ±2 g, ±4 g, ±8 g és ±16 g programozható tartománnyal.
- 3 tengelyes giroszkópSzögsebességet mér mindhárom tengelyen, állítható érzékenységgel ±250, ±500, ±1000 és ±2000 fok/másodperc között.
- Digitális mozgásfeldolgozó (DMP): Belső mikroprocesszort tartalmaz, amely összetett számítások elvégzésére szolgál Mozgásfúzió (szenzorfúzió), olyan adatok kiszámítása, mint a kvaternionok, Euler-szögek és forgatási mátrixok anélkül, hogy ezeket a számításokat a fő mikrovezérlőre kellene tölteni.
- Digitális kimenet I2C-n keresztülKommunikáció I2C buszon keresztül két lehetséges címmel (az AD0 és 0x68 vagy 0x69 közötti lábakon keresztül konfigurálható), lehetővé téve a legtöbb Arduino, ESP és hasonló panellel való működést.
- 16 bites ADC átalakítóNagy felbontást kínál az adatgyűjtésben.
- Integrált hőmérséklet érzékelő
- Külső magnetométerrel bővíthetőAz I2C segédbuszon keresztül az MPU6050 más csatlakoztatott érzékelők, például a népszerű HMC5883L (magnetométer) adatait is képes leolvasni, így egy komplett 9 tengelyes IMU-t (intuition-multi-modemer) hozva létre.
- Rugalmas üzemi feszültség3,3 V-ról, vagy akár 5 V-ról is táplálható, ha olyan alaplapot használunk, mint a GY-521, amely tartalmaz egy szabályozót.
Továbbá a modul kompakt mérete (kb. 25 x 15 mm) és az a tény, hogy próbapanelbe integrálható, ideálissá teszi mind a teszteléshez, mind a végső fejlesztéshez.
Mi az LSM9DS1 és miben más?
A maga részéről, a LSM9DS1 Ez egy fejlettebb és modernebb opció a MEMS IMU családon belül, bár a kezdő projektekben kevésbé népszerű, mint az MPU6050. Egyetlen chipen integrálja a következőket:
- Un 3 tengelyes gyorsulásmérő
- Un 3 tengelyes giroszkóp
- Un magnetométer is 3 tengelyes
Ez azt jelenti, hogy az LSM9DS1 egy 9 szabadsági fok (DoF) IMU, amely lehetővé teszi a gyorsulás, a szögsebesség és a Föld mágneses mezejének három dimenzióban történő mérését, teljes és pontos méréseket biztosítva a abszolút pozíció és orientáció a Földdel kapcsolatban.
Fő előnyei az MPU6050-nel szemben:
- A három érzékelőt egyetlen fizikai chipbe egyesíti, helyet takarít meg és egyszerűsíti a csatlakozásokat.
- Mindkettőn keresztül kommunikálhattok I2C SPI-ként, ami nagyobb sokoldalúságot biztosít a különböző platformokon.
- Az egyes érzékelők (gyorsulásmérő, giroszkóp, magnetométer) hatótávolsága és érzékenysége rugalmasabban konfigurálható.
- Fejlett digitális szűrési és eseményérzékelési lehetőségekkel rendelkezik.
Az LSM9DS1-et gyakran választják olyan projektekhez, ahol abszolút tájolásra van szükség (pl. iránytűk, navigációs rendszerek vagy repülésstabilizálás) további külső érzékelők nélkül.
MEMS gyorsulásmérők és giroszkópok működési elvei
Ahhoz, hogy valóban megértsük, hogyan működnek ezek a MEMS modulok, fontos megérteni a fizikai fogalmakat és azt, hogyan fordíthatók le digitális adatokká:
gyorsulásmérő
Un MEMS gyorsulásmérő egy tárgy gyorsulását (a sebesség időbeli változását) méri a tér három tengelyéhez képest. Belsőleg egy jelenlétén alapul. mikroszkopikus szuszpendált tömeg rugalmas horgonyokkal vagy apró rugókkal. Amikor az érzékelő gyorsul, ez a tömeg kissé elmozdul, és ezt a változást változtatható vagy piezoelektromos kondenzátorok segítségével elektromos jellé alakítják.
- A gyorsulásmérő mindig legalább egy gyorsulást érzékel: a súly (9,81 m/s2), még akkor is, ha az érzékelő mozdulatlan.
Ez a vízszintes síkhoz viszonyított dőlés kiszámítására szolgál.. - A gyorsulás időbeli integrálásával megkapható a sebesség, és ezáltal a megtett pozíció, bár ezek a műveletek hajlamosak hibákat felhalmozni.
Giroszkóp
El MEMS giroszkóp használja a Coriolis hatás hogy érzékelje egy test X, Y és Z tengelyei körüli forgási sebességét. Amikor az érzékelő forgást tapasztal, a belső rezgő tömegek a forgással arányos eltérést szenvednek. szögsebesség, és ezt a változást elektronikusan mérik.
- A giroszkóp méri szögsebesség: milyen gyorsan változik az érzékelő orientációja az egyes tengelyek mentén.
- A szögsebesség idővel való integrálása megadja az elfordulási szöget (szöghelyzetet), bár ez a művelet kumulatív hibákat generál, úgynevezett sodródás.
Miért kell kombinálni a gyorsulásmérőt és a giroszkópot?
Önmagukban mind a gyorsulásmérőknek, mind a giroszkópoknak vannak korlátaik egy tárgy tájolásának meghatározásakor:
- Gyorsulásmérő: Pontosan érzékeli a függőleges tengelyhez viszonyított dőléseket (gravitáció segítségével), de nagyon érzékeny a hirtelen mozgásokra, külső gyorsulásokra vagy rezgésekre.
- Giroszkóp: Ideális a gyors orientációs változások mérésére, de hibák halmozódnak fel, ha a kimenetét hosszú időn keresztül integrálják.
Ezért a legtöbb alkalmazás mindkét érzékelőből származó adatokat egyesíti, ami nagymértékben javítja a leolvasások pontosságát és megbízhatóságát. szög, dőlés vagy pozícióEnnek eléréséhez használják őket digitális feldolgozó szűrők mint például a kiegészítő szűrő vagy a Kalman-szűrő, amelyek egyesítik és mérlegelik az egyes érzékelők előnyeit.
Az MPU6050 használatának megkezdése: csatlakozás és könyvtárak
Tipikus kapcsolási rajz
A modul MPU6050 Általában egy lemeztípusra van felszerelve GY-521, ami nagyban megkönnyíti az integrációt olyan mikrovezérlőkkel, mint az Arduino.
Az I2C módban a modul használatához szükséges alapvető csatlakozások általában a következők:
MPU6050 | Arduino Uno/Nano/Mini | Arduino Mega/DUE | arduino leonardo |
---|---|---|---|
VCC | 5V | 5V | 5V |
GND | GND | GND | GND |
SCL | A5 | 21 | 3 |
természetes erőforrások | A4 | 20 | 2 |
A modul beépített felhúzó ellenállásokkal rendelkezik, így általában nincs szükség külsőleg hozzáadni azokat.
I2C cím és AD0 láb
Az MPU6050 lehetővé teszi az I2C cím konfigurálását 0x68 (alapértelmezés szerint, amikor az AD0 láb GND-n van vagy nincs bekötve) vagy 0x69 (amikor az AD0 magas/5V-ra van csatlakoztatva). Ez megkönnyíti több érzékelő használatát ugyanazon a buszon.
Ajánlott könyvtár: I2Cdevlib, készítette: Jeff Rowberg
Az MPU6050 Arduinón történő kényelmes használatához a közösség a következő könyvtárak használatát javasolja:
- I2CdevLehetővé teszi az I2C kommunikációt számos érzékelővel.
- MPU6050: Lehetővé teszi az összes érzékelőfunkció elérését, a kalibrált értékek és eltolások leolvasását, valamint a DMP használatát.
Kaphatóak: https://github.com/jrowberg/i2cdevlib
Letöltés után egyszerűen kicsomagolod és beilleszted a mappába könyvtárak az Arduino IDE-ből.
Alapadatok olvasása: gyorsulás és szögsebesség
Miután az MPU6050 csatlakoztatva és konfigurálva van, a következő lépés a végrehajtás gyorsulások és szögsebességek leolvasása a három tengelyen. Az alapvető folyamat, a fent említett könyvtár használatával, a következőket foglalja magában:
- Inicializálja az érzékelőt a függvénnyel szenzor.inicializálás().
- Ellenőrizze a kapcsolatot a szenzor.tesztKapcsolat().
- Olvassa be a RAW (feldolgozatlan) értékeket a gyorsulásmérőből és a giroszkópból olyan változókba, mint az ax, ay, az a gyorsuláshoz és a gx, gy, gz a centrifugáláshoz.
- Küldd az adatokat a soros portra az eredmények megjelenítéséhez.
Ezek az adatok 16 bites egész számokként jelennek meg a tartományban.
Az MPU6050 érzékelő kalibrálása
Az MPU6050 használatának egyik kulcsfontosságú fázisa a kalibrációNagyon gyakori, hogy az érzékelő nem nulla értékeket ad vissza, még akkor is, ha tökéletesen vízszintes és nyugalmi állapotban van, a chip modulra forrasztásakor esetlegesen fellépő illesztési hibák, vagy akár kisebb gyártási hibák miatt.
Az érzékelő kalibrálása magában foglalja a következők meghatározását: gyorsulásmérő és giroszkóp eltolások minden tengelyen, és konfigurálja őket az érzékelőn úgy, hogy a leolvasások a helyes információkon alapuljanak. Egy tipikus folyamat a következőkből állhat:
- Olvassa ki az aktuális eltolásokat olyan függvényekkel, mint a getXAccelOffset(), getYAccelOffset()Stb
- Helyezze az érzékelőt vízszintes helyzetbe, és teljesen mozdulatlanul.
- Egy program segítségével állítsa be az eltolásokat, amíg a szűrt értékek (például mozgóátlag vagy aluláteresztő szűrő használatával) el nem érik az ideális értékeket: ax = 0, ay = 0, az = 16384, gx = 0, gy = 0, gz = 0 nyers módban (RAW).
- Állítsa be ezeket az értékeket a függvényekkel setXAccelOffset(), setYAccelOffset()Stb
Megfelelő kalibrálás után az érzékelő sokkal pontosabb és stabilabb értékeket fog szolgáltatni, ami elengedhetetlen olyan kritikus alkalmazásokhoz, mint a stabilizálás vagy a navigáció.
Mért értékek skálázása és fizikai mértékegységre konvertálása
Az MPU6050 nyers adatait SI (nemzetközi mértékegységrendszer) mértékegységbe kell átalakítani ahhoz, hogy azokat fizikai számításokban vagy adatvizualizációban lehessen értelmezni és felhasználni:
- Gyorsulás: Az alapértelmezett tartomány ±2 g, ami ±19,62 m/s-nak felel meg.2Egy 16384-es RAW érték 1 g-nak felel meg; ezért x am/s-ra való átszámításhoz2: fejsze * (9,81/16384.0).
- Szögsebesség: Alapértelmezés szerint ±250°/s, tehát az átváltás a következő lenne: gx * (250.0 / 32768.0) RAW értékekből másodpercenkénti fokokba konvertálni.
Ezek a skálafaktorok megváltoznak, ha az érzékelőt más tartományokra konfigurálja, ezért az adatok értelmezése előtt mindig ellenőrizni kell a gyári vagy egyéni beállításokat.
Dőlésszög kiszámítása csak a gyorsulásmérő segítségével
Amikor az érzékelő nyugalmi állapotban van, vagy csak a gravitáció hatása alatt áll, a gyorsulásmérő adatai felhasználhatók a ... kiszámításához. dőlésszög az X és Y tengelyekhez képestA tipikus matematikai képletek trigonometrikus függvényeket használnak:
- X-dőlés esetén: atan(ax / sqrt(ay² + az²)) × 180/π
- Y-ferdeség esetén: atan(ay / sqrt(ax² + az²)) × 180/π
Ez megadja az egyes tengelyek dőlésszögét a gravitációs síkhoz képest, bár ha az érzékelő mozgásban van vagy más gyorsulásokat kap, ezek az értékek megváltozhatnak.
Forgásszögek kiszámítása giroszkóppal
A giroszkóp lehetővé teszi a kiszámítást szögváltozás a szögsebesség integrálásával idővel. Matematikailag:
- A szög egyenlő a szögsebesség integráljával egy adott időintervallumban: θ = θ0 + ∫w·dt
A gyakorlatban ezek a számítások programciklusokban végezhetők el, a szögsebesség és a mintavételi periódus (dt) szorzatának összegzésével megkapjuk az összegzett szöget.
Fontos az integrációs hiba kontrollálása, mivel a kis hibák felhalmozódnak, ami sodródás.
Szenzorfúziós szűrők: Kiegészítő és Kalman-szűrők
Az értelmezési hibák csökkentése és az egyes érzékelők maximális kihasználása érdekében adatfúziós algoritmusokat alkalmaznak:
Kiegészítő szűrő
Ez a szűrő a giroszkóp által becsült szöget (ami rövid távon jól működik) kombinálja a gyorsulásmérő által számított szöggel (ami hosszú távon megbízhatóbb, de zajos). A tipikus képlet a következő:
Végső_szög = α × (Előző_szög + Szög_sebesség×dt) + (1-α) × Gyorsulásmérő_szöge
Ahol az α általában 0,95 és 0,99 között van. Ez lehetővé teszi a stabil leolvasás elérését és a sodródás.
Kalman-szűrő
Ez a szűrő sokkal fejlettebb, és a méréseket egyesíti, figyelembe véve az egyes mérések bizonytalanságát és azok korrelációit, így zaj jelenlétében is pontos becsléseket ér el. Széles körben használják navigációs rendszerekben és fejlett robotikában, bár nagyobb számítási teljesítményt igényel.
3D szimuláció és tájolási vizualizáció (fordulás, bólintás, hengerlés)
Egy érdekes alkalmazás a 3D-s tájolás valós idejű megjelenítése egy tárgy, például egy drón vagy robot szögeinek ábrázolásával Fordulás, bólintás és gurulás.
Ezt úgy érik el, hogy a feldolgozott adatokat grafikus szoftvernek továbbítják, olyan eszközöket használva, mint a Serial Plotter, vagy speciális 3D-s programokat a mozgások monitorozására és elemzésére. Így vizuálisan megértheti, hogyan helyezkedik el a rendszer a térben.
Bővített leolvasások: magnetométer és LSM9DS1 érzékelő használata
El LSM9DS1 egyetlen chipben integrál egy gyorsulásmérőt, giroszkópot és magnetométert, lehetővé téve az adatok kinyerését abszolút pozíció és orientációA gyorsulás és a forgás mérése mellett a Föld mágneses mezőjét is képes érzékelni, hogy:
- Számítsa ki a abszolút azimut, hasznos navigációban és digitális iránytűkben.
- Fejlesszen ki irányítórendszereket további külső érzékelők nélkül.
- Az összes érzékelőből érkező adatok egyesítése a nagy pontosságú pozíció- és tájolásbecsléshez (9 szabadságfokú).
Gyakorlati tippek az MPU6050 és az LSM9DS1 hatékony használatához
- Mindig kalibrálja az érzékelőket kritikus alkalmazásokban való használat előtt a pontosság javítása érdekében.
- Kerülje a modulok elektromágneses interferencia források, például motorok vagy mágnesek közelébe történő felszerelését.
- Használjon szűrőtechnikákat, és tartsa fenn a mintavételi idők pontos ellenőrzését.
- Az északi irányhoz viszonyított abszolút tájékozódáshoz ajánlott a következő eszközt használni: LSM9DS1 vagy kombinálja az MPU6050-et egy külső magnetométerrel, például a HMC5883L-lel.
- A valós idejű vizualizációk megvalósítása segít a gyűjtött adatok jobb értelmezésében.
- Könyvesboltok, mint például i2cdevlib Sokkal egyszerűbbé teszik a munkát, ezért rangsorold őket a fejlesztés megkönnyítése érdekében.