
Sestavljeno iz 12 slik. Metoda=B (R=44,S=4)
V današnjem svetu tehnologije in elektronike so senzorji MEMS (mikroelektromehanski sistemi) postali ključno orodje za vse vrste projektov, od robotike do avtomatizacije doma in nosljivih naprav. Moduli, ki združujejo merilnike pospeška in žiroskope, kot je na primer MPU6050 in LSM9DS1, sta dve izmed najbolj priljubljenih možnosti zaradi svoje vsestranskosti, nizkih stroškov in enostavne integracije z mikrokrmilniki, kot je Arduino in druge platforme. Temeljito razumevanje njihovega delovanja, edinstvenih lastnosti, razlik in celo najboljšega načina njihove izkoriščanja je bistvenega pomena za načrtovanje natančnih sistemov, ki merjenje gibanja, orientacije in naklona.
V tem članku vas bomo korak za korakom popeljali skozi vse, kar morate vedeti o senzorjih MPU6050 y LSM9DS1: kako delujejo, katere aplikacije imajo, kako jih integrirati v vaš projekt, jih kalibrirati, pravilno interpretirati njihove odčitke in kar najbolje izkoristiti njihove zmogljivosti, pri čemer združujemo informacije, zbrane v najboljših vadnicah in tehničnih člankih, pod praktično in posodobljeno vizijo z ustreznim jezikom, tako da doseči profesionalne rezultate v vašem razvoju dogodkov.
Kaj je MEMS senzor in kako deluje?
Preden se lotimo specifičnih modelov MPU6050 in LSM9DS1, je pomembno, da si razjasnimo koncept MEMS senzorTe naprave, imenovane tudi Mikroelektromehanski sistemi, integrirajo mikroskopske mehanske komponente in elektronska vezja v en sam čip, tako da lahko zaznajo fizične spremembe – kot so pospeški, vrtenja ali vibracije – in jih pretvorijo v električne signale, ki jih lahko interpretirajo digitalni sistemi.
V primeru merilnikov pospeška in žiroskopov MEMS njihovo delovanje temelji na načelih, kot so:
- Newtonov zakon pospeška (a = F/m), pri čemer se uporabljajo notranje strukture, ki delujejo kot mikroskopske mase in vzmeti.
- Coriolisov učinek se uporablja za zaznavanje kotnih premikov, pri čemer se izkorišča odklon, ki ga majhne mase doživljajo pri vrtenju znotraj čipa.
- Notranji ADC pretvorniki za pretvorbo fizičnih sprememb v digitalne vrednosti visoke ločljivosti (običajno 16 bitov).
Zaradi teh zmogljivosti so MEMS izjemno uporabni v aplikacijah, ki zahtevajo merjenje orientacije, naklona ali gibanja v treh dimenzijah, kot so navigacijski sistemi, stabilizacija kamere, pametne ure, droni, roboti in še veliko več.
Glavne značilnosti MPU6050
El MPU6050 Verjetno je to najpogosteje uporabljen MEMS senzor gibanja med proizvajalci, inženirji in ljubitelji, ki iščejo ekonomično in zanesljivo rešitev za merjenje pospeška in vrtenja v treh oseh.
Njegove ključne tehnične specifikacije vključujejo:
- 3-osni merilnik pospeškaZmožnost zaznavanja pospeškov na oseh X, Y in Z, s programirljivim območjem ±2g, ±4g, ±8g in ±16g.
- 3-osni žiroskopMeri kotne hitrosti na vseh treh oseh z nastavljivo občutljivostjo pri ±250, ±500, ±1000 in ±2000 stopinj na sekundo.
- Digitalni procesor gibanja (DMP): Vključuje notranji mikroprocesor, namenjen izvajanju kompleksnih izračunov Fuzija gibanja (fuzija senzorjev), izračun podatkov, kot so kvaternioni, Eulerjevi koti in rotacijske matrike, ne da bi bilo treba te izračune naložiti na glavni mikrokrmilnik.
- Digitalni izhod prek I2CKomunikacija prek vodila I2C z dvema možnima naslovoma (nastavljiva prek pina AD0 na 0x68 ali 0x69), kar omogoča delovanje z večino Arduino, ESP in podobnimi ploščami.
- 16-bitni ADC pretvornikPonuja visoko ločljivost pri zbiranju podatkov.
- Integriran senzor temperature
- Možnost razširitve z zunanjim magnetometromPrek pomožnega vodila I2C lahko MPU6050 bere druge priključene senzorje, kot je priljubljeni HMC5883L (magnetometer), in tako tvori popolno 9-osno IMU.
- Fleksibilna delovna napetostNapaja se lahko z napetostjo 3,3 V ali celo 5 V, če se uporablja matična plošča, kot je GY-521, ki ima vgrajen regulator.
Poleg tega je modul zaradi kompaktne velikosti (približno 25 x 15 mm) in dejstva, da je pripravljen za integracijo v testno ploščo, idealen tako za testiranje kot za končni razvoj.
Kaj je LSM9DS1 in v čem se razlikuje?
S svojimi deli LSM9DS1 Gre za naprednejšo in sodobnejšo možnost znotraj družine MEMS IMU, čeprav je v začetniških projektih manj priljubljena kot MPU6050. Na enem samem čipu združuje naslednje:
- Un 3-osni merilnik pospeška
- Un 3-osni žiroskop
- Un magnetometer tudi 3-osni
To pomeni, da je LSM9DS1 9 DoF (stopinj svobode) IMU, ki vam omogoča merjenje pospeška, kotne hitrosti in Zemljinega magnetnega polja v treh dimenzijah, kar zagotavlja popolne in natančne odčitke absolutni položaj in orientacija glede na Zemljo.
Njegove glavne prednosti pred MPU6050 vključujejo:
- Združuje tri senzorje v en sam fizični čip, kar prihrani prostor in poenostavi povezave.
- Lahko komunicirate prek obeh I2C kot SPI, kar mu daje večjo vsestranskost za različne platforme.
- Dosegi in občutljivost posameznih senzorjev (merilnik pospeška, žiroskop, magnetometer) so bolj prilagodljivo nastavljivi.
- Ima napredne možnosti digitalnega filtriranja in zaznavanja dogodkov.
LSM9DS1 se pogosto izbere za projekte, kjer je potrebna absolutna orientacija (npr. kompasi, navigacijski sistemi ali stabilizacija leta) brez potrebe po dodatnih zunanjih senzorjih.
Načela delovanja MEMS merilnikov pospeška in žiroskopov
Da bi resnično razumeli, kako delujejo ti MEMS moduli, je pomembno razumeti fizikalne koncepte in kako se ti prevajajo v digitalne podatke:
Akcelerometer
Un MEMS merilnik pospeška meri pospešek objekta (spremembo hitrosti skozi čas) glede na tri osi prostora. V osnovi temelji na prisotnosti suspendirana mikroskopska masa z gibkimi sidri ali drobnimi vzmetmi. Ko senzor pospeši, se ta masa nekoliko premakne in ta sprememba se s spremenljivimi ali piezoelektričnimi kondenzatorji pretvori v električni signal.
- Akcelerometer vedno zazna vsaj en pospešek: gravitacija (9,81 m/s2), tudi če senzor miruje.
To se uporablja za izračun naklona glede na vodoravno ravnino. - Z integracijo pospeška glede na čas lahko dobimo hitrost in posledično prepotovani položaj, čeprav te operacije ponavadi kopičijo napake.
Žiroskop
El MEMS žiroskop uporabi Coriolisov učinek za zaznavanje hitrosti vrtenja telesa okoli osi X, Y in Z. Ko senzor doživi vrtenje, notranje vibrirajoče mase utrpijo odstopanje, sorazmerno z kotna hitrost, in ta sprememba se meri elektronsko.
- Žiroskop meri kotna hitrost: kako hitro se orientacija senzorja spremeni na vsaki osi.
- Integracija kotne hitrosti s časom da kot vrtenja (kotni položaj), čeprav ta operacija ustvarja kumulativne napake, imenovane drift.
Zakaj kombinirati merilnik pospeška in žiroskop?
Tako merilniki pospeška kot žiroskopi imajo sami po sebi omejitve pri določanju orientacije predmeta:
- Merilec pospeška: Natančen pri zaznavanju naklonov glede na navpično os (z uporabo gravitacije), vendar zelo občutljiv na nenadne premike, zunanje pospeške ali vibracije.
- Žiroskop: Idealen je za merjenje hitrih sprememb orientacije, vendar trpi zaradi kopičenja napak, če se njegov izhod integrira v daljšem časovnem obdobju.
Zato večina aplikacij združuje podatke iz obeh senzorjev, kar močno izboljša natančnost in zanesljivost odčitkov. kot, naklon ali položajDa bi to dosegli, se uporabljajo filtri za digitalno obdelavo kot sta komplementarni filter ali Kalmanov filter, ki združujeta in tehtata prednosti vsakega senzorja.
Uvod v MPU6050: povezava in knjižnice
Tipična shema povezave
Modul MPU6050 Običajno je nameščen na plošči GY-521, kar močno olajša integracijo z mikrokrmilniki, kot je Arduino.
Osnovne povezave za uporabo modula v načinu I2C so običajno:
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 |
Modul ima vgrajene pull-up upore, zato jih običajno ni treba dodajati od zunaj.
Naslov I2C in pin AD0
MPU6050 vam omogoča, da konfigurirate svoj I2C naslov na 0x68 (privzeto, ko je pin AD0 na GND ali ni povezan) ali 0x69 (ko je AD0 priključen na visok/5 V). To olajša uporabo več senzorjev na istem vodilu.
Priporočena knjižnica: I2Cdevlib avtorja Jeffa Rowberga
Za udobno delo z MPU6050 na Arduinu skupnost priporoča uporabo naslednjih knjižnic:
- I2CdevOmogoča komunikacijo I2C s številnimi senzorji.
- MPU6050: Omogoča dostop do vseh funkcij senzorja, odčitavanje kalibriranih vrednosti, odmikov in uporabo DMP.
Na voljo so v: https://github.com/jrowberg/i2cdevlib
Ko jih prenesete, jih preprosto razpakirajte in shranite v mapo knjižnice iz Arduino IDE.
Branje osnovnih podatkov: pospešek in kotna hitrost
Ko je MPU6050 priključen in konfiguriran, je naslednji korak izvedba odčitki pospeškov in kotnih hitrosti na treh oseh. Osnovni postopek z uporabo zgoraj omenjene knjižnice vključuje:
- Inicializirajte senzor s funkcijo senzor.inicializacija().
- Preverite povezavo z senzor.testConnection().
- Preberite neobdelane (RAW) vrednosti iz merilnika pospeška in žiroskopa v spremenljivke, kot so ax, ay, az za pospešek in gx, gy, gz za vrtenje.
- Pošljite podatke na serijska vrata, da prikažete rezultate.
Ti podatki se prikažejo kot 16-bitna cela števila v območju .
Kalibracija senzorja MPU6050
Ena ključnih faz pri uporabi MPU6050 je umerjanjeZelo pogosto se zgodi, da senzor vrne neničelne vrednosti, tudi če je popolnoma vodoraven in v mirovanju, zaradi morebitnih nepravilnosti pri spajkanju čipa na modul ali celo manjših proizvodnih nepravilnosti.
Kalibracija senzorja vključuje določitev odmiki merilnika pospeška in žiroskopa na vsaki osi in jih konfigurirajte na senzorju tako, da bodo odčitki temeljili na pravilnih informacijah. Tipičen postopek lahko vključuje:
- Trenutne odmike preberite z uporabo funkcij, kot je getXAccelOffset(), getYAccelOffset(), Itd
- Senzor postavite v vodoravni položaj in ga popolnoma primirite.
- Z uporabo programa prilagajajte odmike, dokler se filtrirane vrednosti (na primer z uporabo drsečega povprečja ali nizkoprepustnega filtra) ne zbližajo z idealnimi vrednostmi: ax = 0, ay = 0, az = 16384, gx = 0, gy = 0, gz = 0 v surovem načinu (RAW).
- Te vrednosti nastavite s funkcijami setXAccelOffset(), nastaviYAccelOffset(), Itd
Ko je senzor pravilno kalibriran, bo zagotavljal veliko natančnejše in stabilnejše vrednosti, kar je bistveno za kritične aplikacije, kot sta stabilizacija ali navigacija.
Skaliranje in pretvorba odčitkov v fizikalne enote
Surove odčitke iz MPU6050 je treba pretvoriti v enote SI (mednarodni sistem), da jih je mogoče interpretirati in uporabiti v fizikalnih izračunih ali vizualizaciji podatkov:
- Pospešek: Privzeto območje je ±2 g, kar ustreza ±19,62 m/s2Vrednost RAW 16384 ustreza 1 g; zato za pretvorbo v x am/s2: sekira * (9,81/16384.0).
- Kotna hitrost: Privzeto ±250°/s, zato bi bila pretvorba: gx * (250.0 / 32768.0) za pretvorbo iz vrednosti RAW v stopinje na sekundo.
Ti faktorji merila se spremenijo, če senzor konfigurirate na druga območja, zato je pred interpretacijo podatkov vedno treba preveriti tovarniške ali prilagojene nastavitve.
Izračunajte nagib samo z merilnikom pospeška
Ko senzor miruje ali je pod vplivom gravitacije, se lahko odčitki merilnika pospeška uporabijo za izračun kot nagiba glede na osi X in YTipične matematične formule uporabljajo trigonometrične funkcije:
- Za naklon X: atan(ax / sqrt(ay² + az²)) × 180/π
- Za nagib Y: atan(ay / sqrt(ax² + az²)) × 180/π
To zagotavlja kot naklona glede na vsako os glede na ravnino gravitacije, čeprav se te vrednosti lahko spremenijo, če se senzor premika ali prejema druge pospeške.
Izračun kotov vrtenja z giroskopom
Žiroskop omogoča izračun sprememba kota z integracijo kotne hitrosti sčasoma. Matematično:
- Kot je enak integralu kotne hitrosti v danem časovnem intervalu: θ = θ0 + ∫w·dt
V praksi se ti izračuni lahko izvajajo v programskih zankah, pri čemer seštejemo kotno hitrost, pomnoženo s periodo vzorčenja (dt), da dobimo akumulirani kot.
Pomembno je nadzorovati napako integracije, saj se majhne napake kopičijo in povzročajo drift.
Fuzijski filtri senzorjev: komplementarni in Kalmanov
Za zmanjšanje napak pri interpretaciji in kar najboljši izkoristek vsakega senzorja se uporabljajo algoritmi za združevanje podatkov:
Komplementarni filter
Ta filter združuje kot, ki ga oceni giroskop (kar dobro deluje kratkoročno), s kotom, ki ga izračuna merilnik pospeška (ki je dolgoročno bolj zanesljiv, vendar povzroča hrup). Tipična formula je:
Končni_kot = α × (Prejšnji_kot + Kotna_hitrost × dt) + (1-α) × Kot_merilnika_pospeška
Kjer je α običajno med 0,95 in 0,99. Omogoča stabilno odčitavanje in zmanjšanje drift.
Kalmanov filter
Ta filter, ki je veliko naprednejši, združuje meritve, pri čemer upošteva negotovost posamezne meritve in njihove korelacije, s čimer doseže natančne ocene v prisotnosti šuma. Široko se uporablja v navigacijskih sistemih in napredni robotiki, čeprav zahteva večjo računsko moč.
3D simulacija in vizualizacija orientacije (zvijanje, nagib, nihanje)
Zanimiva aplikacija je prikaz 3D-orientacije v realnem času predmeta, kot je dron ali robot, z predstavljanjem kotov Zvijanje, nagib in nihanje.
To dosežemo s prenosom obdelanih podatkov v grafično programsko opremo z uporabo orodij, kot je serijski ploter ali posebni 3D-programi za spremljanje in analizo gibanja. Na ta način lahko vizualno razumete, kako je vaš sistem orientiran v prostoru.
Razširjene meritve: uporaba magnetometra in senzorja LSM9DS1
El LSM9DS1 združuje merilnik pospeška, žiroskop in magnetometer v enem samem čipu, kar omogoča pridobivanje podatkov iz absolutni položaj in orientacijaPoleg merjenja pospeška in vrtenja lahko zazna tudi Zemljino magnetno polje za:
- Izračunaj absolutni azimut, uporaben pri navigaciji in digitalnih kompasih.
- Razviti sisteme vodenja brez potrebe po dodatnih zunanjih senzorjih.
- Združite podatke iz vseh senzorjev za zelo natančno oceno položaja in orientacije (9-DoF).
Praktični nasveti za učinkovito uporabo MPU6050 in LSM9DS1
- Vedno kalibrirajte senzorje pred uporabo v kritičnih aplikacijah za izboljšanje natančnosti.
- Izogibajte se nameščanju modulov v bližini virov elektromagnetnih motenj, kot so motorji ali magneti.
- Uporabljajte tehnike filtriranja in natančno nadzorujte čase vzorčenja.
- Za absolutno orientacijo glede na sever je priporočljiva uporaba LSM9DS1 ali pa MPU6050 kombinirajte z zunanjim magnetometrom, kot je HMC5883L.
- Izvajanje vizualizacij v realnem času pomaga pri boljši interpretaciji zbranih podatkov.
- Knjigarne, kot so i2cdevlib Zaradi njih je delo veliko enostavnejše, zato jim dajte prednost, da bo razvoj lažji.