Guia completa sobre MEMS MPU6050 i LSM9DS1: teoria, pràctica i casos dús

  • Els sensors MEMS MPU6050 i LSM9DS1 permeten mesurar acceleració i rotació en tres eixos amb alta precisió i baix cost.
  • El MPU6050 integra acceleròmetre i giroscopi, mentre que el LSM9DS1 afegeix també un magnetòmetre, brindant orientació absoluta.
  • Mitjançant calibratge i filtratge, ambdós sensors poden emprar-se en aplicacions com navegació inercial, robòtica o wearables.
LSM9DS1

Apilat a partir de 12 imatges. Mètode=B (R=44,S=4)

Al món actual de la tecnologia i l'electrònica, els sensors MEMS (Micro-Electro-Mechanical Systems) s'han convertit en una eina clau per a tot tipus de projectes, des de robòtica fins a domòtica i wearables. Els mòduls que combinen acceleròmetres i giròscops, com el MPU6050 i LSM9DS1, són dues de les opcions més populars gràcies a la seva versatilitat, baix cost i facilitat d'integració amb microcontroladors com Arduino i altres plataformes. Comprendre a fons el seu funcionament, característiques úniques, diferències i fins i tot la forma més òptima de treure'ls partit, és fonamental per dissenyar sistemes precisos que mesurin moviment, orientació i inclinació.

En aquest article et portarem pas a pas per tot allò que necessites saber sobre els sensors MPU6050 y LSM9DS1: com funcionen, quines aplicacions tenen, com integrar-los al teu projecte, calibrar-los, interpretar les seves lectures correctament i aprofitar al màxim les seves capacitats, combinant la informació recollida als millors tutorials i articles tècnics, sota una visió pràctica i actualitzada amb llenguatge proper, perquè aconsegueixis resultats professionals en els teus desenvolupaments.

Què és un sensor MEMS i com funciona?

mòdul mpu6050

Abans d'endinsar-nos en els models concrets MPU6050 i LSM9DS1, convé tenir clar el concepte de sensor MEMS. Aquests dispositius, també anomenats Sistemes micro electromecànics, integren en un únic xip components mecànics microscòpics i circuits electrònics, de manera que poden detectar variacions físiques —com acceleracions, girs o vibracions— i convertir-les en senyals elèctrics interpretables per sistemes digitals.

En el cas dels acceleròmetres i giròscops MEMS, el seu funcionament es basa en principis com:

  • La llei de Newton per a l'acceleració (a = F/m), utilitzant estructures internes que actuen com a masses i ressorts microscòpics.
  • L'efecte Coriolis per detectar moviments angulars, aprofitant la desviació que pateixen petites masses en rotar dins del xip.
  • Conversors ADC interns per transformar les variacions físiques en valors digitals d'alta resolució (habitualment 16 bits).

Aquestes capacitats fan que els MEMS siguin extremadament útils en aplicacions que requereixen mesurament d'orientació, inclinació o moviment en tres dimensions, com ara sistemes de navegació, estabilització de càmeres, rellotges intel·ligents, drones, robots i molt més.

Característiques principals del MPU6050

El MPU6050 és probablement el sensor de moviment MEMS més emprat entre makers, enginyers i aficionats que busquen una solució econòmica i fiable per mesurar acceleració i rotació en tres eixos.

Les vostres especificacions tècniques clau inclouen:

  • Acceleròmetre de 3 eixos: Capaç de detectar acceleracions als eixos X, Y i Z, amb rang programable de ±2g, ±4g, ±8g i ±16g.
  • Giroscopi de 3 eixos: Mesura velocitats angulars en els tres eixos, amb sensibilitat ajustable a ±250, ±500, ±1000 i ±2000 graus per segon.
  • Processador de moviment digital (DMP): Incorpora un microprocessador intern dedicat a realitzar càlculs complexos de Motion Fusion (fusió de sensors), calculant dades com quaternions, angles d'Euler i matrius de rotació sense necessitat de carregar aquests càlculs sobre el microcontrolador principal.
  • Sortida digital per I2C: Comunicacions mitjançant bus I2C amb dues possibles adreces (configurables mitjançant el pin AD0 a 0x68 o 0x69), permetent operar amb la majoria de plaques Arduino, ESP i similars.
  • Conversor ADC de 16 bits: Ofereix gran resolució a la presa de dades.
  • Sensor de temperatura integrat
  • Possibilitat d'ampliar amb magnetòmetre extern: A través del bus auxiliar I2C, el MPU6050 pot llegir altres sensors connectats com el popular HMC5883L (magnetòmetre), per conformar una IMU completa de 9 eixos.
  • Voltatge de funcionament flexible: Pot alimentar-se a 3,3V o fins i tot 5V si es fa servir una placa base com la GY-521, que incorpora un regulador.

A més, la mida compacta del mòdul (entorn de 25 x 15 mm) i el fet de venir ja preparat per a la seva integració en protoboard, el fan ideal tant per a proves com per a desenvolupaments definitius.

Què és el LSM9DS1 i en què es diferencia?

Per la seva banda, el LSM9DS1 és una opció més avançada i moderna dins de la família d'IMUS MEMS, tot i que és menys popular que el MPU6050 en projectes d'iniciació. Integra en un sol xip:

  • Un acceleròmetre de 3 eixos
  • Un giroscopi de 3 eixos
  • Un magnetòmetre també de 3 eixos

Això suposa que el LSM9DS1 és una IMU de 9 DOF (Degrees of Freedom), cosa que li permet mesurar acceleració, velocitat angular i camp magnètic terrestre en les tres dimensions, proporcionant lectures completes i precises de posició i orientació absoluta respecte a la Terra.

Entre els seus principals avantatges pel que fa al MPU6050 destaquen:

  • Combina els tres sensors en un sol xip físicestalviant espai i simplificant les connexions.
  • Es pot comunicar tant mitjançant I2C com a SPI, la qual cosa li aporta una versatilitat més gran per a diferents plataformes.
  • Els rangs i sensibilitats de cada sensor (acceleròmetre, giroscopi, magnetòmetre) són configurables de manera més flexible.
  • Disposa d'opcions avançades de filtratge digital i detecció d'esdeveniments.

El LSM9DS1 sol triar-se en projectes on cal conèixer l'orientació absoluta (per exemple, brúixoles, sistemes de navegació o estabilització de vol) sense necessitat d'afegir sensors externs addicionals.

Principis de funcionament d'acceleròmetres i giròscops MEMS

Per entendre realment com treballen aquests mòduls MEMS, és important conèixer els conceptes físics i com es tradueixen en dades digitals:

acceleròmetre

Un acceleròmetre MEMS mesura l‟acceleració d‟un objecte (canvi de velocitat amb el temps) respecte als tres eixos de l‟espai. Internament, es basa en la presència d'una massa microscòpica suspesa per ancoratges flexibles o diminuts ressorts. Quan el sensor accelera, aquesta massa es desplaça lleugerament i aquesta variació es converteix a un senyal elèctric gràcies a condensadors variables o piezoelèctrics.

  • L'acceleròmetre sempre detecta almenys una acceleració: la gravetat (9,81 m/s2), encara que el sensor estigui quiet.
    Això es fa servir per calcular la inclinació respecte al pla horitzontal.
  • De la integració de l'acceleració respecte al temps se'n pot obtenir la velocitat i, alhora, la posició recorreguda, encara que aquestes operacions tendeixen a acumular errors.

giroscopi

El giroscopi MEMS utilitza el efecte Coriolis per detectar la velocitat a què trenca un cos al voltant dels seus eixos X, Y i Z. Quan el sensor experimenta un gir, masses vibrants internes pateixen una desviació proporcional a la velocitat angular, i aquest canvi es mesura electrònicament.

  • El giroscopi mesura velocitat angular: com de ràpid canvia l'orientació del sensor a cada eix.
  • Integrant la velocitat angular amb el temps s'obté l'angle de gir (posició angular), encara que aquesta operació genera errors acumulatius anomenats deriva.

Per què combinar acceleròmetre i giròscop?

Per si sols, tant els acceleròmetres com els giròscops presenten limitacions a l'hora de determinar l'orientació d'un objecte:

  • acceleròmetre: Precís per detectar inclinacions respecte a l'eix vertical (usant la gravetat), però molt sensible al moviment brusc, acceleracions externes o vibracions.
  • giroscopi: És ideal per mesurar canvis ràpids d'orientació, però pateix acumulació d'errors si la seva sortida s'integra durant un llarg període de temps.

Per això, la majoria d'aplicacions fusionen les dades dels dos sensors, cosa que millora en gran mesura la precisió i fiabilitat de lectures de angle, inclinació o posició. Per aconseguir-ho, s'utilitzen filtres de processament digital com el filtre Complementari o el filtre Kalman, que combinen i ponderen els avantatges de cada sensor.

Primers passos amb el MPU6050: connexió i llibreries

Esquema de connexions típiques

el mòdul MPU6050 normalment es munta sobre una placa tipus GY-521, que facilita molt la integració amb microcontroladors com Arduino.

Les connexions bàsiques per utilitzar el mòdul en mode I2C solen ser:

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

El mòdul disposa de resistències pull-up integrades, per la qual cosa generalment no cal afegir externament.

Adreça I2C i pin AD0

El MPU6050 permet configurar la vostra adreça I2C a 0x68 (per defecte, quan el pin AD0 està a GND o sense connectar) oa 0x69 (quan es connecta AD0 a nivell alt/5V). Això facilita utilitzar diversos sensors en un mateix bus.

Llibreria recomanada: I2Cdevlib de Jeff Rowberg

Per treballar còmodament amb el MPU6050 a Arduino, la comunitat recomana utilitzar les següents llibreries:

  • I2Cdev: Facilita la comunicació I2C amb molts sensors.
  • MPU6050: Permet accedir a totes les funcions del sensor, llegir valors calibrats, òfsets i utilitzar el DMP.

Estan disponibles a: https://github.com/jrowberg/i2cdevlib

Un cop descarregades, només cal descomprimir-les i col·locar-les a la carpeta biblioteques de l'IDE d'Arduino.

Lectura de dades bàsiques: acceleració i velocitat angular

Un cop connectat i configurat el MPU6050, el pas següent és realitzar lectures de les acceleracions i velocitats angulars als tres eixos. El procés bàsic, utilitzant la llibreria esmentada, inclou:

  1. Inicialitzar el sensor mitjançant la funció sensor.initialize().
  2. Verificar la connexió amb sensor.testConnection().
  3. Llegir els valors RAW (sense processar) de l'acceleròmetre i giròscop en variables com ax, ay, az per a acceleració i gx, gi, gz per a gir.
  4. Envia les dades al port sèrie per mostrar els resultats.

Aquestes dades apareixen com a enters de 16 bits en el rang.

Calibratge del sensor MPU6050

Una de les fases clau a l'hora de fer servir el MPU6050 és la calibratge. És molt habitual que, fins i tot si el sensor està perfectament horitzontal i en repòs, torneu valors diferents de zero a causa de possibles desajustos en soldar el xip al mòdul, o fins i tot per petites imperfeccions de fàbrica.

Calibrar el sensor implica determinar els òfsets d'acceleròmetre i giròscop a cada eix i configurar-los al sensor perquè les lectures parteixin d'una base correcta.

  • Llegir els òfsets actuals usant funcions com getXAccelOffset(), getYAccelOffset(), Etc
  • Col·locar el sensor en posició horitzontal i completament quiet.
  • Mitjançant un programa, anar ajustant els òfsets fins que les lectures filtrades (per exemple, usant mitja mòbil o filtre passa baix) convergeixin als valors ideals: ax = 0, ay = 0, az = 16384, gx = 0, gi = 0, gz = 0 en mode brut (RAW).
  • Establir aquests valors amb les funcions setXAccelOffset(), setYAccelOffset(), Etc

Un cop calibrat correctament, el sensor proporcionarà valors molt més precisos i estables, fonamentals per a aplicacions crítiques com estabilització o navegació.

Escalat i conversió de lectures a unitats físiques

Les lectures RAW del MPU6050 han de transformar-se a les unitats del SI (Sistema Internacional) per poder interpretar-se i utilitzar-se en càlculs físics o visualització de dades:

  • acceleració: El rang per defecte és ±2g, cosa que equival a ±19,62 m/s2. Un valor RAW de 16384 correspon a 1g; per tant, per convertir ax am/s2: ax * (9,81/16384.0).
  • Velocitat angular: Per defecte, ±250°/s, així que la conversió seria: gx * (250.0 / 32768.0) per passar de valors RAW a graus per segon.

Aquests factors d'escala canvien si configures el sensor a altres rangs, així que és essencial comprovar sempre la configuració de fàbrica o personalitzada abans d'interpretar les dades.

Calculeu la inclinació utilitzant només l'acceleròmetre

Quan el sensor està en repòs o només sota l'efecte de la gravetat, es poden fer servir les lectures de l'acceleròmetre per calcular el angle d'inclinació respecte als eixos X i Y. Les fórmules matemàtiques típiques empren funcions trigonomètriques:

  • Per inclinació a X: atan(ax / sqrt(ai + az²)) × 180/π
  • Per inclinació a Y: atan(ai / sqrt(ax² + az²)) × 180/π

Això proporciona l'angle d'inclinació respecte de cada eix respecte del pla de la gravetat, encara que si el sensor està en moviment o rep altres acceleracions, aquests valors es poden veure alterats.

Càlcul d'angles de rotació amb el giroscopi

El giròscop permet calcular la variació d'angle per integració de la velocitat angular al llarg del temps. Matemàticament:

  • L'angle és igual a la integral de la velocitat angular en un interval de temps determinat: θ = θ0 + ∫w·dt

A la pràctica, aquests càlculs es poden fer en bucles de programa, sumant la velocitat angular multiplicada pel període de mostreig (dt) per obtenir l'angle acumulat.

És important controlar l'error d'integració, ja que els errors petits s'acumulen, causant deriva.

Filtres de fusió de sensors: complementaris i de Kalman

Per reduir els errors d'interpretació i aprofitar el millor de cada sensor, es fan servir algoritmes de fusió de dades:

Filtre Complementari

Aquest filtre combina l'angle estimat pel giroscopi (que funciona bé a curt termini) amb el calculat per l'acceleròmetre (que és més fiable a llarg termini però sorollós). La fórmula típica és:

Angle_final = α × (Angle_anterior + Velocitat_angular×dt) + (1-α) × Angle_acceleròmetre

On α sol estar entre 0,95 i 0,99. deriva.

Filtre Kalman

Molt més avançat, aquest filtre fusiona els mesuraments considerant la incertesa de cadascun i les seves correlacions, aconseguint estimacions precises en presència de soroll. És àmpliament utilitzat en sistemes de navegació i robòtica avançada, encara que requereix més capacitat computacional.

Simulació 3D i visualització orientació (Yaw, Pitch, Roll)

Una aplicació interessant és la visualització en temps real de l'orientació 3D d'un objecte, com un dron o robot, mitjançant la representació dels angles Yaw, Pitch i Roll.

Això s'aconsegueix transmetent les dades processades a un programari de gràfics, utilitzant eines com el Serial Plotter o programes 3D específics per monitoritzar i analitzar els moviments. Així, pots comprendre visualment com s'orienta el teu sistema a l'espai.

Ampliació de lectures: ús de magnetòmetre i sensor LSM9DS1

El LSM9DS1 integra en un sol xip acceleròmetre, giroscopi i magnetòmetre, permetent obtenir dades de posició i orientació absoluta. A més de mesurar l'acceleració i la rotació, pot detectar el camp magnètic terrestre per:

  • Calcular el azimut absolut, útil en navegació i brúixoles digitals.
  • Desenvolupar sistemes dorientació sense necessitat de sensors externs addicionals.
  • Fusionar les dades de tots els sensors per a una estimació de posició i d'orientació molt precisa (9-DoF).

Consells pràctics per a un ús eficaç de MPU6050 i LSM9DS1

  • Calibrar sempre els sensors abans del seu ús en aplicacions crítiques per millorar-ne la precisió.
  • Evitar muntar els mòduls a prop de fonts dinterferència electromagnètica, com motors o imants.
  • Utilitzar tècniques de filtratge i mantenir un control precís dels temps de mostreig.
  • Per orientació absoluta respecte al nord, es recomana emprar un LSM9DS1 o combinar el MPU6050 amb un magnetòmetre extern, com ara el HMC5883L.
  • Implementar visualitzacions en temps real ajuda a interpretar millor les dades recollides.
  • Les llibreries com I2Cdevlib simplifiquen molt la feina, així que prioritza-les per facilitar el desenvolupament.
LSM9DS1
Article relacionat:
Guia completa del sensor LSM9DS1 amb Arduino: acceleròmetre, giroscopi i magnetòmetre