
Pinottu 12 kuvasta. Menetelmä = B (R = 44, S = 4)
Nykyteknologian ja elektroniikan maailmassa MEMS-antureista (mikroelektromekaaniset järjestelmät) on tullut keskeinen työkalu kaikenlaisissa projekteissa robotiikasta kotiautomaatioon ja puettaviin laitteisiin. Moduulit, jotka yhdistävät kiihtyvyysantureita ja gyroskooppeja, kuten MPU6050 ja LSM9DS1, ovat kaksi suosituinta vaihtoehtoa monipuolisuutensa, edullisuutensa ja mikrokontrollerien, kuten Arduinon ja muiden alustojen, helpon integroinnin ansiosta. Niiden toiminnan, ainutlaatuisten ominaisuuksien, erojen ja jopa parhaan hyödyntämistavan perusteellinen ymmärtäminen on välttämätöntä tarkkojen järjestelmien suunnittelussa, jotka mittaa liikettä, suuntaa ja kallistusta.
Tässä artikkelissa käymme läpi kaiken, mitä sinun tarvitsee tietää antureista askel askeleelta. MPU6050 y LSM9DS1: miten ne toimivat, mitä sovelluksia niillä on, miten ne integroidaan projektiisi, kalibroidaan ne, tulkitaan niiden lukemat oikein ja hyödynnetään niiden ominaisuuksia parhaalla mahdollisella tavalla yhdistämällä parhaista opetusohjelmista ja teknisistä artikkeleista kerätyt tiedot käytännöllisen ja ajantasaisen vision alle sekä selkeään kieleen, jotta saavuttaa ammattimaisia tuloksia sinun kehitysaskeleissasi.
Mikä on MEMS-anturi ja miten se toimii?
Ennen kuin perehdymme MPU6050- ja LSM9DS1-malleihin, on tärkeää ymmärtää tarkemmin, mitä MEMS-anturiNäitä laitteita kutsutaan myös Mikroelektromekaaniset järjestelmät, integroivat mikroskooppisia mekaanisia komponentteja ja elektronisia piirejä yhdelle sirulle, jotta ne voivat havaita fyysisiä vaihteluita – kuten kiihtyvyyksiä, pyörimisiä tai värähtelyjä – ja muuntaa ne sähköisiksi signaaleiksi, joita digitaaliset järjestelmät voivat tulkita.
MEMS-kiihtyvyysantureiden ja -gyroskooppien tapauksessa niiden toiminta perustuu seuraaviin periaatteisiin:
- Newtonin kiihtyvyyden laki (a = F/m), jossa käytetään mikroskooppisia massoja ja jousia toimivia sisäisiä rakenteita.
- Coriolis-ilmiötä käytetään kulmaliikkeiden havaitsemiseen hyödyntämällä pienten massojen taipumaa niiden pyöriessä sirun sisällä.
- Sisäiset ADC-muuntimet fyysisten vaihteluiden muuntamiseksi korkean resoluution digitaalisiksi arvoiksi (yleensä 16 bittiä).
Nämä ominaisuudet tekevät MEMSistä erittäin hyödyllisen sovelluksissa, jotka vaativat suunnan, kallistuksen tai liikkeen mittaus kolmiulotteisesti, kuten navigointijärjestelmät, kameranvakautus, älykellot, droonit, robotit ja paljon muuta.
MPU6050:n tärkeimmät ominaisuudet
El MPU6050 Se on luultavasti eniten käytetty MEMS-liikeanturi valmistajien, insinöörien ja harrastelijoiden keskuudessa, jotka etsivät taloudellista ja luotettavaa ratkaisua kiihtyvyyden ja pyörimisen mittaamiseen kolmella akselilla.
Sen tärkeimpiin teknisiin tietoihin kuuluvat:
- 3-akselinen kiihtyvyysanturiPystyy havaitsemaan kiihtyvyydet X-, Y- ja Z-akseleilla, ohjelmoitavalla alueella ±2 g, ±4 g, ±8 g ja ±16 g.
- 3-akselinen gyroskooppiMittaa kulmanopeuksia kaikilla kolmella akselilla, säädettävä herkkyys ±250, ±500, ±1000 ja ±2000 astetta sekunnissa.
- Digitaalinen liikeprosessori (DMP): Sisältää sisäisen mikroprosessorin, joka on tarkoitettu monimutkaisten laskelmien suorittamiseen Liikefuusio (anturifuusio), laskemalla tietoja, kuten kvaternioita, Eulerin kulmia ja rotaatiomatriiseja, ilman että näitä laskelmia tarvitsee ladata päämikrokontrolleriin.
- Digitaalinen lähtö I2C:n kauttaKommunikointi I2C-väylän kautta, jossa on kaksi mahdollista osoitetta (konfiguroitavissa pin AD0:sta 0x68:aan tai 0x69:ään), mikä mahdollistaa toiminnan useimpien Arduino-, ESP- ja vastaavien piirilevyjen kanssa.
- 16-bittinen ADC-muunninSe tarjoaa korkean resoluution tiedonkeruussa.
- Integroitu lämpötila-anturi
- Mahdollisuus laajentaa ulkoisella magnetometrilläI2C-apuväylän kautta MPU6050 voi lukea muita kytkettyjä antureita, kuten suosittua HMC5883L:ää (magnetometri), muodostaen täydellisen 9-akselisen IMU:n.
- Joustava käyttöjänniteSe voi toimia 3,3 V:n tai jopa 5 V:n jännitteellä, jos käytetään emolevyä, kuten GY-521, jossa on säädin.
Lisäksi moduulin kompakti koko (noin 25 x 15 mm) ja se, että se on valmis integroitavaksi koekytkentälevyyn, tekevät siitä ihanteellisen sekä testaukseen että lopulliseen kehitykseen.
Mikä on LSM9DS1 ja miten se eroaa siitä?
Puolestaan LSM9DS1 Se on MEMS IMU -perheen edistyneempi ja modernimpi vaihtoehto, vaikkakin se on vähemmän suosittu kuin MPU6050 aloittelijoiden projekteissa. Se yhdistää seuraavat ominaisuudet yhdelle sirulle:
- Un 3-akselinen kiihtyvyysanturi
- Un 3-akselinen gyroskooppi
- Un magnetometri myös 3-akselinen
Tämä tarkoittaa, että LSM9DS1 on 9 vapausastetta (DoF) IMU, jonka avulla voit mitata kiihtyvyyttä, kulmanopeutta ja Maan magneettikenttää kolmiulotteisesti, mikä tarjoaa täydelliset ja tarkat lukemat absoluuttinen sijainti ja suunta Maan suhteen.
Sen tärkeimmät edut MPU6050:een verrattuna ovat:
- Yhdistää kolme anturia yhdeksi fyysiseksi siruksi, mikä säästää tilaa ja yksinkertaistaa liitäntöjä.
- Voit kommunikoida molempien kautta I2C SPI:nä, mikä antaa sille enemmän monipuolisuutta eri alustoille.
- Kunkin anturin (kiihtyvyysanturi, gyroskooppi, magnetometri) kantamat ja herkkyydet ovat joustavammin konfiguroitavissa.
- Siinä on edistyneet digitaaliset suodatus- ja tapahtumien tunnistusvaihtoehdot.
LSM9DS1 valitaan usein projekteihin, joissa vaaditaan absoluuttista suuntausta (esim. kompassit, navigointijärjestelmät tai lennonvakautus) ilman ulkoisia antureita.
MEMS-kiihtyvyysantureiden ja -gyroskooppien toimintaperiaatteet
Jotta todella ymmärtäisimme, miten nämä MEMS-moduulit toimivat, on tärkeää ymmärtää fyysiset käsitteet ja miten ne muuntuvat digitaaliseksi dataksi:
kiihtyvyysanturi
Un MEMS-kiihtyvyysanturi mittaa kappaleen kiihtyvyyttä (nopeuden muutosta ajan kuluessa) suhteessa avaruuden kolmeen akseliin. Sisäisesti se perustuu jonkin läsnäoloon mikroskooppinen suspendoitu massa joustavilla ankkureilla tai pienillä jousilla. Kun anturi kiihtyy, tämä massa siirtyy hieman, ja tämä muutos muunnetaan sähköiseksi signaaliksi muuttuvien tai pietsosähköisten kondensaattoreiden avulla.
- Kiihtyvyysanturi havaitsee aina vähintään yhden kiihtyvyyden: painovoima (9,81 m/s2), vaikka anturi olisi paikallaan.
Tätä käytetään laskemaan kaltevuus vaakatasoon nähden. - Integroimalla kiihtyvyys ajan suhteen voidaan saada nopeus ja sitä kautta kuljettu sijainti, vaikka näissä operaatioissa on taipumus kerryttää virheitä.
gyroskooppi
El MEMS-gyroskooppi Käytä Coriolis-vaikutus havaitakseen nopeuden, jolla kappale pyörii X-, Y- ja Z-akseleidensa ympäri. Kun anturi kokee pyörimisen, sisäiset värähtelevät massat poikkeavat suhteessa nopeuden suuruuteen. kulmanopeusja tämä muutos mitataan sähköisesti.
- Gyroskooppi mittaa kulmanopeus: kuinka nopeasti anturin suunta muuttuu kullakin akselilla.
- Kulmanopeuden integrointi aikaan antaa pyörimiskulman (kulma-asennon), vaikka tämä operaatio aiheuttaakin kumulatiivisia virheitä, joita kutsutaan ajelehtia.
Miksi yhdistää kiihtyvyysanturi ja gyroskooppi?
Sekä kiihtyvyysantureilla että gyroskoopeilla on yksinään rajoituksia kohteen suunnan määrittämisessä:
- Kiihtyvyysanturi: Tarkka kallistusten havaitsemisessa pystysuoraan akseliin nähden (painovoiman avulla), mutta erittäin herkkä äkillisille liikkeille, ulkoisille kiihtyvyyksille tai tärinälle.
- Gyroskooppi: Se on ihanteellinen nopeiden suunnanmuutosten mittaamiseen, mutta kärsii virheiden kertymisestä, jos sen tulos integroidaan pitkän ajan kuluessa.
Siksi useimmat sovellukset yhdistävät molempien antureiden tiedot, mikä parantaa huomattavasti lukemien tarkkuutta ja luotettavuutta. kulma, kaltevuus tai asentoTämän saavuttamiseksi niitä käytetään digitaaliset käsittelysuodattimet kuten komplementaarinen suodatin tai Kalman-suodatin, jotka yhdistävät ja punnitsevat kunkin anturin edut.
MPU6050:n käytön aloittaminen: liitäntä ja kirjastot
Tyypillinen kytkentäkaavio
Moduuli MPU6050 Se on yleensä asennettu levytyyppiseen GY-521, mikä helpottaa huomattavasti integrointia mikrokontrollerien, kuten Arduinon, kanssa.
Moduulin I2C-tilassa käyttämiseen tarvittavat perusliitännät ovat yleensä:
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 |
Moduulissa on sisäänrakennetut vetovastukset, joten niitä ei yleensä tarvitse lisätä ulkoisesti.
I2C-osoite ja AD0-nasta
MPU6050:n I2C-osoitteen voi määrittää 0x68 (oletusarvoisesti, kun AD0-nasta on GND:ssä tai irrotettuna) tai 0x69 (kun AD0 on kytketty korkeaan/5 V:iin). Tämä helpottaa useiden antureiden käyttöä samassa väylässä.
Suositeltu kirjasto: I2Cdevlib, kirjoittanut Jeff Rowberg
Jotta MPU6050:n kanssa työskenneltäisiin mukavasti Arduinossa, yhteisö suosittelee seuraavien kirjastojen käyttöä:
- I2CdevHelpottaa I2C-tiedonsiirtoa monien antureiden kanssa.
- MPU6050: Mahdollistaa kaikkien anturitoimintojen käytön, kalibroitujen arvojen ja offsettien lukemisen sekä DMP:n käytön.
Ne ovat saatavilla seuraavissa vaihtoehdoissa: https://github.com/jrowberg/i2cdevlib
Kun olet ladannut ne, pura ne vain ja sijoita ne kansioon kirjastot Arduino IDE:stä.
Perustietojen lukeminen: kiihtyvyys ja kulmanopeus
Kun MPU6050 on kytketty ja konfiguroitu, seuraava vaihe on suorittaa kiihtyvyyksien ja kulmanopeuksien lukemat kolmella akselilla. Perusprosessi, jossa käytetään edellä mainittua kirjastoa, sisältää seuraavat:
- Alusta anturi funktiolla sensor.initialize().
- Tarkista yhteys anturi.testiYhteys().
- Lue kiihtyvyysanturin ja gyroskoopin RAW-arvot (käsittelemättömät) muuttujiksi, kuten ax, ay, az kiihtyvyydelle ja gx, gy, gz spinille.
- Lähetä tiedot sarjaporttiin tulosten näyttämiseksi.
Tämä data näkyy 16-bittisinä kokonaislukuina välillä .
MPU6050-anturin kalibrointi
Yksi MPU6050:n käytön keskeisistä vaiheista on kalibrointiOn hyvin yleistä, että anturi palauttaa nollasta poikkeavia arvoja, vaikka se olisi täysin vaakasuorassa ja levossa, johtuen mahdollisista virhekohdista sirun juottamisessa moduuliin tai jopa pienistä valmistusvirheistä.
Anturin kalibrointiin kuuluu sen määrittäminen, kiihtyvyysanturin ja gyroskoopin siirtymät jokaisella akselilla ja konfiguroi ne anturilla niin, että lukemat perustuvat oikeisiin tietoihin. Tyypillinen prosessi voi koostua seuraavista:
- Lue nykyiset siirtymät käyttämällä funktioita, kuten getXAccelOffset(), getYAccelOffset(), Jne
- Aseta anturi vaakasuoraan asentoon ja täysin liikkumattomaan asentoon.
- Säädä offset-arvoja ohjelmalla, kunnes suodatetut lukemat (esimerkiksi liukuvan keskiarvon tai alipäästösuodattimen avulla) lähestyvät ihanteellisia arvoja: ax = 0, ay = 0, az = 16384, gx = 0, gy = 0, gz = 0 raakatilassa (RAW).
- Aseta nämä arvot funktioilla setXAccelOffset(), asetaYAccelOffset(), Jne
Kun anturi on kalibroitu oikein, se tarjoaa paljon tarkempia ja vakaampia arvoja, mikä on olennaista kriittisissä sovelluksissa, kuten vakauttamisessa tai navigoinnissa.
Lukemien skaalaus ja muuntaminen fyysisiksi yksiköiksi
MPU6050:n raakalukemat on muunnettava SI-yksiköiksi (kansainvälinen järjestelmä), jotta niitä voidaan tulkita ja käyttää fysikaalisissa laskelmissa tai datan visualisoinnissa:
- Kiihtyvyys: Oletusalue on ±2 g, mikä vastaa ±19,62 m/s2RAW-arvo 16384 vastaa 1 g:aa; siksi se muunnetaan arvoksi x am/s2: kirves * (9,81/16384.0).
- Kulmanopeus: Oletusarvoisesti ±250°/s, joten muunnos olisi: gx * (250.0 / 32768.0) muuntaa RAW-arvoista asteiksi sekunnissa.
Nämä skaalauskertoimet muuttuvat, jos konfiguroit anturin muille alueille, joten on tärkeää aina tarkistaa tehdasasetukset tai mukautetut asetukset ennen tietojen tulkitsemista.
Laske kallistus käyttämällä vain kiihtyvyysanturia
Kun anturi on levossa tai vain painovoiman vaikutuksen alaisena, kiihtyvyysanturin lukemia voidaan käyttää laskemaan kallistuskulma X- ja Y-akseleihin nähdenTyypilliset matemaattiset kaavat käyttävät trigonometrisiä funktioita:
- X-kaltevuus: atan(ax / sqrt(ay² + az²)) × 180/π
- Y-kallistumalle: atan(ay / sqrt(ax² + az²)) × 180/π
Tämä antaa kallistuskulman kunkin akselin suhteen painovoimatasoon nähden, vaikka jos anturi on liikkeessä tai vastaanottaa muita kiihtyvyyksiä, nämä arvot voivat muuttua.
Kääntökulmien laskeminen gyroskoopilla
Gyroskoopin avulla voidaan laskea kulman vaihtelu kulmanopeuden integroinnilla ajan kuluessa. Matemaattisesti:
- Kulma on yhtä suuri kuin kulmanopeuden integraali tietyllä aikavälillä: θ = θ0 + ∫w·dt
Käytännössä nämä laskelmat voidaan suorittaa ohjelmasilmukoissa laskemalla yhteen kulmanopeus kerrottuna näytteenottojaksolla (dt), jolloin saadaan kertynyt kulma.
Integrointivirheen hallinta on tärkeää, koska pienet virheet kasautuvat ja aiheuttavat ajelehtia.
Anturifuusiosuodattimet: Täydentävä ja Kalman
Tulkintavirheiden vähentämiseksi ja kunkin anturin maksimoimiseksi käytetään datan fuusioalgoritmeja:
Täydentävä suodatin
Tämä suodatin yhdistää gyroskoopin arvioiman kulman (joka toimii hyvin lyhyellä aikavälillä) kiihtyvyysanturin laskemaan kulmaan (joka on luotettavampi pitkällä aikavälillä, mutta kohinaisempi). Tyypillinen kaava on:
Loppukulma = α × (Edellinen_kulma + Kulmanopeus×dt) + (1-α) × Kiihtyvyysanturin_kulma
Missä α on yleensä 0,95 ja 0,99 välillä. Se mahdollistaa vakaan lukeman saamisen ja vähentää ajelehtia.
Kalman-suodatin
Paljon kehittyneempi suodatin yhdistää mittauksia ottaen huomioon kunkin mittauksen epävarmuuden ja niiden korrelaatiot, jolloin saavutetaan tarkkoja arvioita kohinan läsnä ollessa. Sitä käytetään laajalti navigointijärjestelmissä ja edistyneessä robotiikassa, vaikka se vaatii suurempaa laskentatehoa.
3D-simulointi ja suunnan visualisointi (suuntaus, kallistus, rulla)
Mielenkiintoinen sovellus on ns. 3D-suunnan reaaliaikainen näyttö esineen, kuten dronin tai robotin, kuvaamalla kulmia Suunta, kallistus ja rullaaminen.
Tämä saavutetaan siirtämällä käsitelty data grafiikkaohjelmistoon käyttämällä työkaluja, kuten Serial Plotter tai erityisiä 3D-ohjelmia liikkeiden seurantaan ja analysointiin. Tällä tavoin voit visuaalisesti ymmärtää, miten järjestelmäsi on suuntautunut avaruudessa.
Laajennetut lukemat: magnetometrin ja LSM9DS1-anturin käyttö
El LSM9DS1 integroi kiihtyvyysanturin, gyroskoopin ja magnetometrin yhdelle sirulle, mikä mahdollistaa datan saamisen absoluuttinen sijainti ja suuntaKiihtyvyyden ja pyörimisen mittaamisen lisäksi se voi havaita Maan magneettikentän ja:
- Laske absoluuttinen atsimuutti, hyödyllinen navigoinnissa ja digitaalisissa kompasseissa.
- Kehitä ohjausjärjestelmiä ilman ulkoisia antureita.
- Yhdistä kaikkien antureiden tiedot erittäin tarkkaa sijainnin ja suunnan arviointia varten (9-DoF).
Käytännön vinkkejä MPU6050:n ja LSM9DS1:n tehokkaaseen käyttöön
- Kalibroi anturit aina ennen käyttöä kriittisissä sovelluksissa tarkkuuden parantamiseksi.
- Vältä moduulien asentamista sähkömagneettisten häiriölähteiden, kuten moottoreiden tai magneettien, lähelle.
- Käytä suodatustekniikoita ja pidä näytteenottoaikoja tarkasti kurissa.
- Absoluuttiseen pohjoiseen suuntautumiseen on suositeltavaa käyttää LSM9DS1 tai yhdistä MPU6050 ulkoiseen magnetometriin, kuten HMC5883L:ään.
- Reaaliaikaisten visualisointien toteuttaminen auttaa tulkitsemaan kerättyä dataa paremmin.
- Kirjakaupat, kuten i2cdevlib Ne tekevät työstä paljon yksinkertaisempaa, joten priorisoi niitä kehityksen helpottamiseksi.