Guia completa del sensor LSM9DS1 amb Arduino: acceleròmetre, giroscopi i magnetòmetre

  • El LSM9DS1 és un sensor 9DOF que mesura acceleració, rotació i magnetisme.
  • Podeu connectar-vos a Arduino mitjançant I2C o SPI, segons les necessitats del projecte.
  • La biblioteca Arduino_LSM9DS1 en facilita l'ús i la integració en projectes.
  • És ideal per a aplicacions de navegació, control de moviment i realitat augmentada.
LSM9DS1

Versió 1.0.0

el sensor LSM9DS1 és un sofisticat mòdul de mesura inercial que incorpora un acceleròmetre, un giroscopi i un magnetòmetre, tot en un sol xip. Aquest sensor és altament versàtil i s'utilitza en projectes que requereixen mesurament de moviment i orientació a l'espai tridimensional. És comú en aplicacions com a dispositius de navegació, control de moviment en robòtica i sistemes de realitat augmentada.

En aquesta guia, explorarem en detall el seu funcionament, com integrar-ho amb Arduino i quins aspectes considerar en interpretar-ne les lectures. A més, aprendrem a programar-ho utilitzant biblioteques específiques per aprofitar-ne al màxim les capacitats.

Característiques del sensor LSM9DS1

El LSM9DS1 és un sensor 9 graus de llibertat (9DOF), el que significa que pot mesurar el moviment en tres eixos mitjançant tres sensors diferents:

  • acceleròmetre: mesura l'acceleració als eixos X, Y i Z, cosa que permet detectar inclinació i velocitat.
  • giroscopi: mesura la velocitat angular als tres eixos, útil per detectar canvis d'orientació.
  • magnetòmetre: permet determinar la direcció del camp magnètic terrestre, funcionant com una brúixola digital.

Aquest mòdul es comunica amb el microcontrolador a través de I2C o SPI i ofereix diferents rangs de mesura per a cada sensor:

  • acceleròmetre: ± 2 g, ± 4 g, ± 8 g, ± 16 g
  • giroscopi: ±245 dps, ±500 dps, ±2000 dps
  • magnetòmetre: ±4 gauss, ±8 gauss, ±12 gauss, ±16 gauss

Connexió del LSM9DS1 amb Arduino

Per utilitzar el sensor LSM9DS1 amb Arduino, hem de fer la connexió física utilitzant el protocol de comunicació adequat. Aquest sensor permet dos mètodes de connexió:

Connexió mitjançant I2C

Si utilitzem la interfície I2C, connectarem els pins del sensor de la següent manera:

  • VCC: 3.3V
  • GND: GND
  • SDA: A4 en plaques basades en ATmega328P (Arduino Uno, Nano, etc.)
  • SCL: A5 en plaques ATmega328P

Connexió mitjançant SPI

En cas d'usar SCI, es connectarà de la següent manera:

  • VCC: 3.3V
  • GND: GND
  • Extensió MOSI: D11
  • MISO: D12
  • SCLK: D13
  • CS: Pin digital seleccionable

Instal·lació de la biblioteca i primer codi

Per facilitar l'ús del LSM9DS1, Arduino disposa d'una biblioteca oficial que podem instal·lar des del Administrador de Biblioteques. Només cal buscar «Arduino_LSM9DS1» i instal·lar-la.

Un cop instal·lada, podem carregar el codi de prova següent:

#include void setup() {Serial.begin(115200);while (!Serial);if (!IMU.begin()) {Serial.println("Error al iniciar el IMU.");while (1);}}void loop() {float x, y, z;if (IMU.magneticFieldAvailable()) {IMU.readMagneticField(x, y, z);Serial.print("Campo magnetico: ");Serial.print(x); Serial.print(", ");Serial.print(y); Serial.print(", ");Serial.println(z);}delay(500);}

Aquest codi llegeix el camp magnètic detectat pel magnetòmetre i ho mostra al monitor sèrie.

Interpretació dels valors obtinguts

Les dades obtingudes pel LSM9DS1 són valors numèrics que representen mesures físiques reals:

  • L'acceleròmetre ret valors en g (gravetat terrestre).
  • El giroscopi mesura la velocitat angular en dps (graus per segon).
  • El magnetòmetre mesura la intensitat del camp magnètic en microtesles (µT).

Per integrar aquestes dades en un projecte real, és recomanable aplicar tècniques com ara la fusió de sensors mitjançant filtres de Kalman o Complementari.

Aplicacions del LSM9DS1

Aquest sensor es pot fer servir en una àmplia varietat de projectes, com:

  • Brúixoles digitals: utilitzant els valors del magnetòmetre per determinar la direcció.
  • Sistemes de navegació: combinant acceleròmetre i giroscopi per mesurar desplaçaments.
  • Control de moviments: en robòtica i dispositius de VR per detectar inclinació i rotació.

Gràcies a la seva versatilitat, el LSM9DS1 és una eina clau en el disseny de projectes que requereixen coneixement precís del moviment i orientació.

El LSM9DS1 és una excel·lent opció per mesurar moviment i orientació amb gran precisió. La seva integració amb Arduino és senzilla gràcies a biblioteques específiques, cosa que permet obtenir dades en temps real sobre acceleració, rotació y camp magnètic. Amb un correcte calibratge i interpretació de dades, es poden desenvolupar aplicacions avançades en robòtica, navegació i interacció amb l'entorn.