Lús de sensors és fonamental en nombrosos projectes delectrònica avançada. Si sou al món d'Arduino, probablement heu sentit a parlar de l'acceleròmetre, un dispositiu que mesura variacions en l'acceleració, i del giroscopi, que us permet treballar amb mesuraments angulars. Tots dos possibiliten que puguis capturar el moviment i l'orientació en eixos tridimensionals, cosa que obre un univers de possibilitats interessants.
En aquest article t'explicarem a fons què és un acceleròmetre i com el pots integrar en els teus projectes amb Arduino. Descriurem diferents mòduls com el MPU6050, l'ADXL345 i altres de similars, detallant com treure-li el mà xim profit. A més, us oferim material sobre com connectar aquests sensors i exemples de codi que podeu aprofitar per als vostres projectes.
Què és un acceleròmetre?

Un acceleròmetre és un sensor que mesura l‟acceleració d‟un objecte en un o més eixos. Això inclou tant l‟acceleració deguda al moviment com l‟acceleració deguda a la gravetat. L'acceleració es mesura en metres per segon al quadrat (m/s²), i en tenir en compte els tres eixos (X, Y i Z), podem saber en quina direcció i amb quina força s'està movent l'objecte.
Els acceleròmetres són essencials per a aplicacions que requereixin detecció de moviment, inclinació o vibració. Per exemple, s'utilitzen en telèfons intel·ligents per detectar l'orientació de la pantalla, estabilització de cà meres, detecció de caigudes en dispositius de seguretat i videojocs.
En projectes amb Arduino, l'acceleròmetre ofereix una gran quantitat de dades que podeu convertir en accions com controlar l'orientació d'un robot o activar alarmes quan se superen certs lÃmits d'acceleració. A més, molts mòduls com el MPU6050 i ADXL345 també inclouen giroscopis, cosa que permet obtenir dades addicionals sobre la velocitat angular i la inclinació.
L'acceleròmetre MPU6050
El MPU6050 és un dels mòduls més utilitzats degut a la seva gran versatilitat. Aquest dispositiu combina tant un acceleròmetre de tres eixos com un giroscopi de tres eixos en un sol xip, cosa que proporciona un total de sis graus de llibertat (6DOF). A més, inclou un Digital Motion Processor (DMP) que permet combinar les lectures dels dos sensors, optimitzant el rendiment de l'Arduino en evitar cà lculs complexos dins del microcontrolador.
El rang de mesura de l'acceleròmetre permet treballar amb un rang ajustable entre ±2g, ±4g, ±8g i ±16g. Això li atorga una gran precisió, ja que disposa de convertidors de 16 bits que permeten captar petites variacions a cada eix. També el seu giroscopi intern permet el mesurament de rotacions amb un rang ajustable entre ±250°/sa ±2000°/s.
La comunicació és senzilla grà cies al protocol I2C o SPI, cosa que permet connectar de manera eficient el MPU6050 a un Arduino i obtenir les dades rà pidament a través del bus de dades. El baix consum d'energia (uns 3,5mA de mitjana) el fa ideal per a projectes on s'ha d'optimitzar l'ús d'energia.
Exemple de connexió del MPU6050
La connexió entre un mòdul MPU6050 i Arduino és força senzilla, grà cies a l'està ndard I2C que utilitza aquest sensor.
| MPU6050 | Arduino Uno (o semblant) |
|---|---|
| VCC | 5V |
| GND | GND |
| SCL | A5 |
| SDA | A4 |
Un cop establertes aquestes connexions, podeu carregar un codi a l'IDE d'Arduino que us permeti llegir les dades de l'acceleròmetre i el giroscopi en temps real.
Lectura de dades amb Arduino
Per obtenir les lectures del MPU6050, pots fer servir les biblioteques MPU6050 y filferro, que faciliten la comunicació entre el sensor i la placa Arduino. A continuació us mostrem un exemple senzill de com llegir les acceleracions i rotacions i mostrar-les pel port sèrie:
#include
#include
MPU6050 accelGyro;
int ax, ay, az;
int gx, gy, gz;
void setup() {
Serial.begin(9600);
Wire.begin();
accelGyro.initialize();
if (accelGyro.testConnection()) {
Serial.println("Sensor conectado correctamente");
} else {
Serial.println("Error al conectar el sensor");
}
}
void loop() {
accelGyro.getAcceleration(&ax, &ay, &az);
accelGyro.getRotation(&gx, &gy, &gz);
Serial.print("Accel: ");
Serial.print(ax); Serial.print(" ");
Serial.print(ay); Serial.print(" ");
Serial.print(az); Serial.print(" ");
Serial.print("Gyro: ");
Serial.print(gx); Serial.print(" ");
Serial.print(gy); Serial.print(" ");
Serial.println(gz);
delay(100);
}
Calibratge de l'acceleròmetre
Un cop connectat i rebent dades, és important calibrar el sensor per obtenir lectures precises. Això implica compensar qualsevol error a causa de la inclinació del sensor o petites variacions als components electrònics.
Per calibrar el teu mòdul MPU6050, pots ajustar els valors de offset tant de l'acceleròmetre com del giroscopi. Aquests òfsets et permetran corregir les lectures i fer que reflecteixin amb més precisió els valors reals. Aquà tens un exemple on els òfsets són ajustats automà ticament:
void calibrateMPU6050() {
int16_t ax, ay, az, gx, gy, gz;
int ax_offset = 0, ay_offset = 0, az_offset = 0;
int gx_offset = 0, gy_offset = 0, gz_offset = 0;
// Inicia con valores de ejemplo...
for(int i=0; i<100; i++) {
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
ax_offset += ax; ay_offset += ay; az_offset += az;
gx_offset += gx; gy_offset += gy; gz_offset += gz;
delay(100);
}
Aquest codi és només un fragment per il·lustrar com ajustar els òfsets a partir de diverses lectures repetides.
Acceleròmetre ADXL345
El ADXL345 és un acceleròmetre capacitiu de 3 eixos també molt popular a la comunitat d'Arduino. Com el MPU6050, aquest sensor és de baix consum i disposa d'un bloc de memòria FIFO per emmagatzemar fins a 32 conjunts de mesuraments dels tres eixos.
Un dels seus punts forts és que permet escollir entre diversos rangs de mesura, des de ±2g fins a ±16g, amb una resolució de fins a 13 bits. Té també dues pins d'interrupcions que pots configurar per detectar esdeveniments especÃfics com ara moviments bruscos o caigudes lliures.
Ús de l'ADXL345 amb Arduino
La connexió de l'ADXL345 a un Arduino també és força senzilla. A continuació es mostra com connectar el sensor usant el bus I2C:
| ADXL345 | Arduino Uno (o semblant) |
|---|---|
| Vcc | 5V |
| GND | GND |
| SDA | A4 |
| SCL | A5 |
Quan estiguis llest, pots fer servir la biblioteca SparkFun_ADXL345 per llançar les lectures de l'acceleròmetre de forma rà pida i eficient. A continuació es mostra un codi de com fer aquestes lectures:
#include
ADXL345 adxl;
void setup() {
Serial.begin(9600);
adxl.powerOn();
adxl.setRangeSetting(8); // Selecciona el rango de ±8g
}
void loop() {
int x, y, z;
adxl.readAccel(&x, &y, &z);
Serial.print("X:"); Serial.print(x);
Serial.print(" Y:"); Serial.print(y);
Serial.print(" Z:"); Serial.println(z);
delay(500);
}
Aplicacions de l'acceleròmetre
Els acceleròmetres tenen una gran varietat d'aplicacions. A més de ser emprats en projectes de hobby amb Arduino, són essencials en dispositius electrònics com ara telèfons mòbils, cà meres i sistemes de navegació. Les aplicacions més comunes inclouen:
- Detecció de moviment en videojocs i controladors.
- Estabilització de cà meres per evitar vibracions.
- Dispositius de seguretat per detectar caigudes o moviments bruscs.
- Alarma de seguretat vehicles o sistemes d'accés.
Ja sigui que vulguis construir el teu propi robot, desenvolupar un sistema de control basat en gestos o simplement aprendre'n més sobre sensors, l'acceleròmetre és una de les millors opcions per començar. A través d'exemples prà ctics i un calibratge correcte, pots obtenir lectures precises que et permetran prendre decisions en temps real en els teus projectes.