El mòdul GY-521 és un component molt utilitzat en projectes que impliquen el mesurament de moviment i orientació, gràcies al fet que integra un acceleròmetre i giroscopi en un sol dispositiu. Aquest component és versàtil i es pot fer servir en projectes amb plataformes de desenvolupament com Arduino, aportant dades importants sobre l'acceleració en tres eixos i la velocitat angular.
Aquest article us proporcionarà tota la informació que necessiteu per entendre i treballar amb el GY-521, des de les seves característiques més tècniques fins a exemples de codi que podeu implementar amb Arduino. També veurem com es pot connectar aquest mòdul a Arduino i quin tipus de dades es poden extreure i utilitzar als teus projectes.
Què és el GY-521 i com funciona?
El mòdul GY-521 està basat en el sensor MPU-6050, un xip que combina un acceleròmetre de tres eixos amb un giroscopi de tres eixos. Això significa que el GY-521 pot mesurar tant l'acceleració com la velocitat angular als tres eixos (X, Y i Z).
L'acceleròmetre mesura l'acceleració en tres direccions, cosa que inclou tant l'acceleració deguda al moviment com l'acceleració causada per la gravetat. Això significa que podeu detectar l'angle en què està inclinat el dispositiu respecte a la Terra.
El giroscopi, per la seva banda, mesura la velocitat angular o rotacional en tres eixos. D'aquesta manera, pots esbrinar la rapidesa amb què alguna cosa està girant i en quina direcció.
Característiques tècniques del GY-521

El GY-521 destaca no només per la seva integració d'acceleròmetre i giroscopi, sinó també per una sèrie de característiques tècniques que el fan ideal per a projectes de robòtica, drones i altres sistemes que requereixen mesurament precís del moviment.
- Voltatge d'operació: Pot ser alimentat tant a 3.3V com a 5V, gràcies al fet que inclou un regulador de voltatge al mateix mòdul.
- Connexió I2C: Aquest mòdul es comunica amb Arduino o qualsevol altra plataforma mitjançant el bus I2C, cosa que simplifica la connexió i el control del dispositiu.
- Rang de mesura de l'acceleròmetre: L'acceleròmetre pot mesurar en un rang ajustable que va des de ±2g fins a ±16g, cosa que permet ajustar la precisió segons les necessitats del projecte.
- Rang de mesura del giroscopi: Com l'acceleròmetre, el giroscopi també té diferents rangs ajustables, concretament ±250, ±500, ±1000 o ±2000 graus per segon.
A més d'aquestes característiques, el GY-521 compta amb un Convertidor Analògic Digital (CAD) de 16 bits, cosa que assegura una precisió alta en la conversió dels senyals analògics provinents dels sensors en dades digitals que poden ser processats pel teu Arduino.
Connexió del GY-521 amb Arduino
La connexió del mòdul GY-521 amb Arduino és molt senzilla gràcies a la interfície I2C. El bus I2C utilitza dues pins: un per al senyal de dades (SDA) i un altre per al senyal de rellotge (SCL).
Per connectar el GY-521 a una placa Arduino UNO:
- Connecta el pin VCC del mòdul al pin de 5V d'Arduino.
- Connecta el pin GND del mòdul al pin GND d'Arduino.
- Connecta el pin SCL al pin A5 d'Arduino.
- Connecta el pin SDA al pin A4 d'Arduino.
Un cop hagueu connectat el GY-521 a Arduino, podeu carregar un exemple de codi simple per començar a llegir les dades de l'acceleròmetre i el giroscopi.
Exemple de codi per llegir dades del GY-521 amb Arduino
A continuació, us mostrem un exemple de codi bàsic per començar a llegir les dades que provenen de l'acceleròmetre i el giroscopi. S'usa la llibreria Wire.h que facilita la comunicació amb dispositius I2C com el GY-521.
#include
const int MPU = 0x68; // Dirección I2C del MPU-6050.
int16_t accelerometer_x, accelerometer_y, accelerometer_z;
int16_t gyro_x, gyro_y, gyro_z;
int16_t temperature;
void setup() {
Serial.begin(9600);
Wire.begin();
Wire.beginTransmission(MPU);
Wire.write(0x6B); // Registro de gestión de energía del MPU6050.
Wire.write(0); // Coloca a cero para activar el sensor.
Wire.endTransmission(true);
}
void loop() {
Wire.beginTransmission(MPU);
Wire.write(0x3B); // Comienza a leer desde el registro 0x3B (datos de aceleración).
Wire.endTransmission(false);
Wire.requestFrom(MPU, 14, true); // Solicita 14 registros del sensor.
// Leer datos de aceleración:
accelerometer_x = Wire.read() << 8 | Wire.read();
accelerometer_y = Wire.read() << 8 | Wire.read();
accelerometer_z = Wire.read() << 8 | Wire.read();
// Leer datos de giroscopio:
gyro_x = Wire.read() << 8 | Wire.read();
gyro_y = Wire.read() << 8 | Wire.read();
gyro_z = Wire.read() << 8 | Wire.read();
Serial.print("Acc: X="); Serial.print(accelerometer_x);
Serial.print(" | Y="); Serial.print(accelerometer_y);
Serial.print(" | Z="); Serial.println(accelerometer_z);
Serial.print("Gyro: X="); Serial.print(gyro_x);
Serial.print(" | Y="); Serial.print(gyro_y);
Serial.print(" | Z="); Serial.println(gyro_z);
delay(500);
}
Aquest codi bàsic llegirà les dades d'acceleració i gir als tres eixos, i mostrarà els valors al Monitor Serial d'Arduino.
Ajustament d'escala i sensibilitat
El GY-521 permet ajustar l'escala i sensibilitat tant de l'acceleròmetre com del giroscopi, cosa que és útil si desitges obtenir mesuraments amb més precisió o per a projectes en què s'espera detectar moviments més bruscs.
Per canviar l'escala del giroscopi i l'acceleròmetre, heu de modificar els registres específics del MPU-6050. A continuació et mostrem com fer això:
- Escala de l'acceleròmetre: Pots ajustar el rang a ±2g, ±4g, ±8g o ±16g mitjançant el registre ACCEL_CONFIG. Segons el valor que escriviu en aquest registre, s'assigna el rang desitjat.
- Escala del giroscopi: Per al giroscopi, el rang es pot ajustar entre ±250, ±500, ±1000 i ±2000 graus per segon mitjançant el registre GYRO_CONFIG.
Fent aquests canvis, el sensor canviarà la seva sensibilitat, permetent obtenir dades més precises o detectar un rang de moviment més ampli.
Filtratge de dades: Filtre complementari
Un dels reptes en treballar amb sensors com el GY-521 és que les dades dacceleració i giroscopi solen tenir cert nivell de soroll. Per millorar la qualitat de les dades, es pot aplicar un filtre complementari que combini tots dos sensors per obtenir una estimació més precisa de lorientació del dispositiu.
Un filtre complementari utilitza les dades del giroscopi per mesurar canvis ràpids a l'orientació, mentre que les dades de l'acceleròmetre s'utilitzen per corregir la deriva i obtenir una mesura més estable a llarg termini.
Aplicacions del GY-521
Gràcies a la seva capacitat per mesurar acceleració i velocitat angular, el GY-521 es fa servir en una àmplia varietat de projectes i aplicacions. Algunes de les més comunes inclouen:
- Sistemes de control de drones: La informació proporcionada per l'acceleròmetre i giroscopi és clau per mantenir l'estabilitat en vol.
- robòtica: Alguns robots utilitzen dades d'acceleració i rotació per moure's i detectar canvis al seu entorn.
- Dispositius portàtils: Els sensors com el GY-521 s'utilitzen en dispositius com ara bandes d'activitat o rellotges intel·ligents per mesurar el moviment de l'usuari.
Aquests són només alguns exemples, però les aplicacions són realment il·limitades quan es tracta de mesurar i interpretar dades de moviment i orientació.
Conclusió: Per què has de triar el GY-521 pels teus projectes
El GY-521, amb la integració d'acceleròmetre i giroscopi en un sol xip, és una eina poderosa i versàtil per a qualsevol projecte d'electrònica. Com que és compatible amb Arduino i té una interfície I2C, és realment senzill d'integrar en qualsevol sistema. A més, la seva capacitat d'ajustament quant a sensibilitat i el fet que pot ser implementat en una varietat de projectes de robòtica, control de moviment i més, el converteix en una opció ideal per a qualsevol maker o enginyer en formació.
Si cerques un sensor fiable, fàcil d'usar i amb múltiples aplicacions, el GY-521 definitivament hauria d'estar a la teva llista de components indispensables.