Complete gids voor MEMS MPU6050 en LSM9DS1: theorie, praktijk en gebruiksscenario's

  • De MEMS-sensoren MPU6050 en LSM9DS1 maken drie-assige versnellings- en rotatiemetingen mogelijk met hoge precisie en lage kosten.
  • De MPU6050 integreert een accelerometer en een gyroscoop, terwijl de LSM9DS1 daar ook een magnetometer aan toevoegt, die absolute oriëntatie biedt.
  • Dankzij kalibratie en filtering kunnen beide sensoren worden gebruikt in toepassingen zoals traagheidsnavigatie, robotica en wearables.
LSM9DS1

Gestapeld uit 12 afbeeldingen. Methode=B (R=44,S=4)

In de huidige wereld van technologie en elektronica zijn MEMS-sensoren (Micro-Electro-Mechanical Systems) een essentieel instrument geworden voor allerlei projecten, van robotica tot domotica en wearables. Modules die accelerometers en gyroscopen combineren, zoals de MPU6050 en LSM9DS1, zijn twee van de meest populaire opties dankzij hun veelzijdigheid, lage kosten en eenvoudige integratie met microcontrollers zoals Arduino en andere platforms. Een grondige kennis van hun werking, unieke kenmerken, verschillen en zelfs de beste manier om ze te benutten, is essentieel voor het ontwerpen van nauwkeurige systemen die beweging, oriëntatie en helling meten.

In dit artikel nemen we je stap voor stap mee door alles wat je moet weten over sensoren MPU6050 y LSM9DS1: hoe ze werken, welke toepassingen ze hebben, hoe je ze in je project integreert, hoe je ze kalibreert, hoe je hun meetwaarden correct interpreteert en hoe je hun mogelijkheden optimaal benut, door de informatie die is verzameld in de beste tutorials en technische artikelen te combineren, onder een praktische en bijgewerkte visie met een nauwkeurige taal, zodat professionele resultaten behalen in uw ontwikkelingen.

Wat is een MEMS-sensor en hoe werkt het?

mpu6050-module

Voordat we ingaan op de specifieke modellen MPU6050 en LSM9DS1, is het belangrijk om duidelijk te zijn over het concept van MEMS-sensorDeze apparaten, ook wel Micro-elektromechanische systemen, integreren microscopisch kleine mechanische componenten en elektronische circuits in één chip, zodat ze fysieke variaties kunnen detecteren, zoals versnellingen, rotaties of trillingen, en deze kunnen omzetten in elektrische signalen die door digitale systemen kunnen worden geïnterpreteerd.

De werking van MEMS-accelerometers en gyroscopen is gebaseerd op principes zoals:

  • De versnellingswet van Newton (a = F/m), waarbij gebruik wordt gemaakt van interne structuren die fungeren als microscopische massa's en veren.
  • Het Corioliseffect wordt gebruikt om hoekige bewegingen te detecteren. Hierbij wordt gebruikgemaakt van de afbuiging die kleine massa's ervaren wanneer ze in de spaan roteren.
  • Interne ADC-converters om fysieke variaties om te zetten in digitale waarden met een hoge resolutie (meestal 16 bits).

Deze mogelijkheden maken MEMS uiterst nuttig in toepassingen die meting van oriëntatie, helling of beweging in drie dimensies, zoals navigatiesystemen, camerastabilisatie, smartwatches, drones, robots en nog veel meer.

Belangrijkste kenmerken van de MPU6050

El MPU6050 Het is waarschijnlijk de meest gebruikte MEMS-bewegingssensor onder makers, technici en hobbyisten die op zoek zijn naar een economische en betrouwbare oplossing voor het meten van versnelling en rotatie in drie assen.

De belangrijkste technische specificaties zijn:

  • Versnellingsmeter met 3 assen: Kan versnellingen op de X-, Y- en Z-as detecteren, met een programmeerbaar bereik van ±2g, ±4g, ±8g en ±16g.
  • 3-assige gyroscoop: Meet hoeksnelheden op alle drie assen, met instelbare gevoeligheid op ±250, ±500, ±1000 en ±2000 graden per seconde.
  • Digitale bewegingsprocessor (DMP): Bevat een interne microprocessor die speciaal is bedoeld voor het uitvoeren van complexe berekeningen Bewegingsfusie (sensorfusie) het berekenen van gegevens zoals quaternionen, Euler-hoeken en rotatiematrices zonder dat deze berekeningen in de hoofdmicrocontroller geladen hoeven te worden.
  • Digitale uitgang via I2C: Communicatie via de I2C-bus met twee mogelijke adressen (configureerbaar via pin AD0 tot 0x68 of 0x69), waardoor werking met de meeste Arduino-, ESP- en vergelijkbare borden mogelijk is.
  • 16-bits ADC-converter:Het biedt een hoge resolutie bij het verzamelen van gegevens.
  • Geïntegreerde temperatuursensor
  • Mogelijkheid tot uitbreiding met een externe magnetometer:Via de I2C-hulpbus kan de MPU6050 andere aangesloten sensoren uitlezen, zoals de populaire HMC5883L (magnetometer), om zo een complete 9-assige IMU te vormen.
  • Flexibele bedrijfsspanning:Het kan worden gevoed met 3,3V of zelfs 5V als er een moederbord zoals de GY-521 wordt gebruikt, dat een ingebouwde regelaar heeft.

Bovendien is de module door zijn compacte formaat (ongeveer 25 x 15 mm) en het feit dat hij direct in een breadboard kan worden geïntegreerd, ideaal voor zowel testen als de uiteindelijke ontwikkeling.

Wat is de LSM9DS1 en wat is het verschil?

Weer de LSM9DS1 Het is een geavanceerdere en modernere optie binnen de MEMS IMU-familie, hoewel hij minder populair is dan de MPU6050 in beginnersprojecten. Hij integreert het volgende op één chip:

  • Un Versnellingsmeter met 3 assen
  • Un 3-assige gyroscoop
  • Un magnetometer ook 3-assig

Dit betekent dat de LSM9DS1 een 9 DoF (vrijheidsgraden) IMUwaarmee u de versnelling, de hoeksnelheid en het magnetische veld van de aarde in drie dimensies kunt meten, waardoor u volledige en nauwkeurige metingen krijgt van absolute positie en oriëntatie ten opzichte van de aarde.

De belangrijkste voordelen ten opzichte van de MPU6050 zijn:

  • Combineert de drie sensoren in één fysieke chip, waardoor ruimte wordt bespaard en verbindingen worden vereenvoudigd.
  • Je kunt beide via I2C als SPI, waardoor het veelzijdiger is voor verschillende platforms.
  • De bereiken en gevoeligheden van elke sensor (accelerometer, gyroscoop, magnetometer) zijn flexibeler instelbaar.
  • Het beschikt over geavanceerde opties voor digitale filtering en gebeurtenisdetectie.

De LSM9DS1 wordt vaak gekozen voor projecten waarbij absolute oriëntatie vereist is (bijvoorbeeld kompassen, navigatiesystemen of vluchtstabilisatie) zonder dat er extra externe sensoren nodig zijn.

Werkingsprincipes van MEMS-accelerometers en gyroscopen

Om echt te begrijpen hoe deze MEMS-modules werken, is het belangrijk om de fysieke concepten te begrijpen en hoe deze worden vertaald naar digitale data:

accelerometer

Un MEMS-versnellingsmeter Meet de versnelling van een object (snelheidsverandering in de tijd) ten opzichte van de drie assen van de ruimte. Intern is het gebaseerd op de aanwezigheid van een zwevende microscopische massa door flexibele ankers of kleine veertjes. Wanneer de sensor versnelt, verschuift deze massa lichtjes, en deze variatie wordt omgezet in een elektrisch signaal met behulp van variabele of piëzo-elektrische condensatoren.

  • De accelerometer detecteert altijd minstens één versnelling: de zwaartekracht (9,81 m/sec2), zelfs als de sensor stilstaat.
    Dit wordt gebruikt om de helling ten opzichte van het horizontale vlak te berekenen.
  • Door de versnelling over de tijd te integreren, kan de snelheid en dus de afgelegde positie worden verkregen. Bij deze bewerkingen ontstaan ​​echter vaak fouten.

gyroscoop

El MEMS-gyroscoop gebruik de Coriolis effect om de snelheid te detecteren waarmee een lichaam rond zijn X-, Y- en Z-as draait. Wanneer de sensor een rotatie ervaart, ondergaan interne trillende massa's een afwijking evenredig met de hoeksnelheid, en die verandering wordt elektronisch gemeten.

  • De gyroscoop meet hoeksnelheid: hoe snel de oriëntatie van de sensor op elke as verandert.
  • Door de hoeksnelheid met de tijd te integreren, wordt de rotatiehoek (hoekpositie) verkregen, hoewel deze bewerking cumulatieve fouten genereert die drift.

Waarom een ​​accelerometer en een gyroscoop combineren?

Zowel accelerometers als gyroscopen hebben op zichzelf beperkingen bij het bepalen van de oriëntatie van een object:

  • Versnellingsmeter: Nauwkeurig bij het detecteren van hellingen ten opzichte van de verticale as (met behulp van zwaartekracht), maar zeer gevoelig voor plotselinge bewegingen, externe versnellingen en trillingen.
  • Gyroscoop: Het is ideaal voor het meten van snelle veranderingen in oriëntatie, maar er treedt een foutaccumulatie op als de uitvoer over een langere periode wordt geïntegreerd.

Daarom voegen de meeste toepassingen gegevens van beide sensoren samen, wat de nauwkeurigheid en betrouwbaarheid van de metingen aanzienlijk verbetert. hoek, helling of positieOm dit te bereiken worden ze gebruikt digitale verwerkingsfilters zoals het complementaire filter of het Kalman-filter, die de voordelen van elke sensor combineren en wegen.

Aan de slag met de MPU6050: aansluiting en bibliotheken

Typisch aansluitschema

De module MPU6050 Het wordt meestal op een plaattype gemonteerd GY-521, wat de integratie met microcontrollers zoals Arduino aanzienlijk vergemakkelijkt.

De basisverbindingen voor het gebruik van de module in I2C-modus zijn doorgaans:

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

De module beschikt over ingebouwde pull-up-weerstanden, waardoor het doorgaans niet nodig is om deze extern toe te voegen.

I2C-adres en AD0-pin

Met de MPU6050 kunt u het I2C-adres configureren om 0x68 (standaard wanneer de AD0-pin op GND staat of niet is aangesloten) of 0x69 (wanneer AD0 is aangesloten op hoog/5V). Dit maakt het eenvoudig om meerdere sensoren op dezelfde bus te gebruiken.

Aanbevolen bibliotheek: I2Cdevlib door Jeff Rowberg

Om comfortabel met de MPU6050 op Arduino te kunnen werken, raadt de community aan de volgende bibliotheken te gebruiken:

  • I2Cdev: Maakt I2C-communicatie met veel sensoren mogelijk.
  • MPU6050: Hiermee krijgt u toegang tot alle sensorfuncties, kunt u gekalibreerde waarden en offsets aflezen en de DMP gebruiken.

Ze zijn verkrijgbaar in: https://github.com/jrowberg/i2cdevlib

Zodra u ze hebt gedownload, pakt u ze eenvoudig uit en plaatst u ze in de map bibliotheken van de Arduino IDE.

Basisgegevens lezen: versnelling en hoeksnelheid

Zodra de MPU6050 is aangesloten en geconfigureerd, is de volgende stap het uitvoeren van metingen van versnellingen en hoeksnelheden op de drie assen. Het basisproces, met behulp van de bovengenoemde bibliotheek, omvat:

  1. Initialiseer de sensor met behulp van de functie sensor.initialiseren().
  2. Controleer de verbinding met sensor.testConnection().
  3. Lees RAW (onbewerkte) waarden van de accelerometer en gyroscoop in variabelen zoals ax, ay, az voor acceleratie en gx, gy, gz voor spin.
  4. Stuur de gegevens naar de seriële poort om de resultaten weer te geven.

Deze gegevens worden weergegeven als 16-bits gehele getallen in het bereik .

Kalibreren van de MPU6050-sensor

Een van de belangrijkste fasen bij het gebruik van de MPU6050 is de ijkingHet komt vaak voor dat de sensor waarden anders dan nul retourneert, zelfs als deze perfect horizontaal en in rust is. Dit kan komen door mogelijke verkeerde uitlijning bij het solderen van de chip op de module, of zelfs door kleine productiefouten.

Het kalibreren van de sensor omvat het bepalen van de accelerometer- en gyroscoopoffsets op elke as en configureer ze op de sensor, zodat de metingen op de juiste informatie zijn gebaseerd. Een typisch proces kan bestaan ​​uit:

  • Lees de huidige offsets af met behulp van functies zoals getXAccelOffset(), getYAccelOffset(), Etc.
  • Plaats de sensor horizontaal en volledig stil.
  • Pas de offsets met behulp van een programma aan totdat de gefilterde metingen (bijvoorbeeld met behulp van een voortschrijdend gemiddelde of een laagdoorlaatfilter) convergeren naar de ideale waarden: ax = 0, ay = 0, az = 16384, gx = 0, gy = 0, gz = 0 in de raw-modus (RAW).
  • Stel deze waarden in met de functies setXAccelOffset(), setYAccelOffset(), Etc.

Als de sensor eenmaal goed is gekalibreerd, levert deze veel nauwkeurigere en stabielere waarden, wat essentieel is voor kritische toepassingen zoals stabilisatie of navigatie.

Het schalen en omzetten van meetwaarden naar fysieke eenheden

De ruwe meetwaarden van de MPU6050 moeten worden omgezet in SI-eenheden (Internationaal Systeem) om te kunnen worden geïnterpreteerd en gebruikt in fysieke berekeningen of datavisualisatie:

  • Versnelling: Het standaardbereik is ±2 g, wat overeenkomt met ±19,62 m/s2Een RAW-waarde van 16384 komt overeen met 1 g; om te rekenen naar x am/s2: bijl * (9,81/16384.0).
  • Hoeksnelheid: Standaard is dit ±250°/s, dus de conversie ziet er als volgt uit: gx * (250.0 / 32768.0) om van RAW-waarden naar graden per seconde te converteren.

Deze schaalfactoren veranderen als u de sensor instelt op andere bereiken. Daarom is het belangrijk om altijd de fabrieksinstellingen of aangepaste instellingen te controleren voordat u de gegevens interpreteert.

Bereken de kanteling met alleen de accelerometer

Wanneer de sensor in rust is of alleen onder invloed van de zwaartekracht, kunnen de accelerometerwaarden worden gebruikt om de hellingshoek ten opzichte van de X- en Y-asTypische wiskundige formules maken gebruik van trigonometrische functies:

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

Hierdoor wordt de hellingshoek van elke as ten opzichte van het zwaartekrachtvlak bepaald. Als de sensor beweegt of andere versnellingen ontvangt, kunnen deze waarden echter veranderen.

Rotatiehoeken berekenen met de gyroscoop

Met de gyroscoop kunt u de variatie van de hoek door integratie van de hoeksnelheid in de loop van de tijd. Wiskundig:

  • De hoek is gelijk aan de integraal van de hoeksnelheid in een bepaald tijdsinterval: θ = θ0 + ∫b·dt

In de praktijk kunnen deze berekeningen worden uitgevoerd in programma-lussen, waarbij de hoeksnelheid wordt opgeteld bij de bemonsteringsperiode (dt), om de geaccumuleerde hoek te verkrijgen.

Het is belangrijk om de integratiefout onder controle te houden, omdat kleine fouten zich ophopen en ervoor zorgen dat: drift.

Sensorfusiefilters: complementair en Kalman

Om interpretatiefouten te beperken en elke sensor optimaal te benutten, worden datafusie-algoritmen gebruikt:

Complementair filter

Dit filter combineert de hoek die door de gyroscoop wordt geschat (wat op de korte termijn goed werkt) met de hoek die door de accelerometer wordt berekend (wat op de lange termijn betrouwbaarder is, maar wel ruis bevat). De typische formule is:

Eindhoek = α × (Vorige_hoek + Hoeksnelheid × dt) + (1-α) × Accelerometerhoek

Waarbij α gewoonlijk tussen 0,95 en 0,99 ligt. Dit maakt het mogelijk een stabiele uitlezing te verkrijgen en de drift.

Kalman-filter

Dit veel geavanceerdere filter combineert metingen, waarbij rekening wordt gehouden met de onzekerheid van elke meting en hun correlaties, om zo nauwkeurige schattingen te verkrijgen, zelfs bij ruis. Het wordt veel gebruikt in navigatiesystemen en geavanceerde robotica, hoewel het meer rekenkracht vereist.

3D-simulatie en oriëntatievisualisatie (gieren, stampen, rollen)

Een interessante toepassing is de realtime weergave van 3D-oriëntatie van een object, zoals een drone of robot, door de hoeken weer te geven Gieren, stampen en rollen.

Dit wordt bereikt door de verwerkte data door te sturen naar grafische software, met behulp van tools zoals Serial Plotter of specifieke 3D-programma's om bewegingen te monitoren en te analyseren. Zo kunt u visueel begrijpen hoe uw systeem zich in de ruimte bevindt.

Uitgebreide metingen: gebruik van magnetometer en LSM9DS1-sensor

El LSM9DS1 integreert een accelerometer, gyroscoop en magnetometer in één enkele chip, waardoor gegevens kunnen worden verkregen uit absolute positie en oriëntatieNaast het meten van de versnelling en rotatie, kan het ook het magnetische veld van de aarde detecteren om:

  • Bereken de absolute azimut, nuttig bij navigatie en digitale kompassen.
  • Ontwikkel geleidingssystemen zonder dat er extra externe sensoren nodig zijn.
  • Combineer gegevens van alle sensoren voor een zeer nauwkeurige positie- en oriëntatieschatting (9-DoF).

Praktische tips voor effectief gebruik van MPU6050 en LSM9DS1

  • Kalibreer de sensoren altijd vóór gebruik in kritische toepassingen om de nauwkeurigheid te verbeteren.
  • Monteer modules niet in de buurt van bronnen van elektromagnetische interferentie, zoals motoren of magneten.
  • Maak gebruik van filtertechnieken en houd de bemonsteringstijden nauwkeurig onder controle.
  • Voor een absolute oriëntatie ten opzichte van het noorden wordt het gebruik van een LSM9DS1 of combineer de MPU6050 met een externe magnetometer, zoals de HMC5883L.
  • Door realtime visualisaties te implementeren, kunnen we de verzamelde gegevens beter interpreteren.
  • Boekwinkels zoals i2cdevlib Ze maken het werk een stuk eenvoudiger. Geef ze dus prioriteit om de ontwikkeling makkelijker te maken.
LSM9DS1
Gerelateerd artikel:
Volledige gids voor de LSM9DS1-sensor met Arduino: accelerometer, gyroscoop en magnetometer

Begin het gesprek

Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.