El GY-521-module Het is een component die veel wordt gebruikt in projecten waarbij beweging en oriëntatie worden gemeten, dankzij het feit dat het een versnellingsmeter en een gyroscoop in één apparaat integreert. Dit onderdeel is veelzijdig en kan worden gebruikt in projecten met ontwikkelingsplatforms zoals Arduino, en levert belangrijke gegevens over versnelling in drie assen en hoeksnelheid.
Dit artikel geeft je alle informatie die je nodig hebt om de GY-521 te begrijpen en ermee te werken, van de meest technische functies tot codevoorbeelden die je met Arduino kunt implementeren. We zullen ook zien hoe deze module kan worden aangesloten op Arduino en welk type gegevens kan worden geëxtraheerd en gebruikt in uw projecten.
Wat is GY-521 en hoe werkt het?
De GY-521-module is gebaseerd op de MPU-6050-sensor, een chip die een drie-assige accelerometer combineert met een drie-assige gyroscoop. Dit betekent dat de GY-521 zowel de versnelling als de hoeksnelheid in alle drie de assen (X, Y en Z) kan meten.
De versnellingsmeter Het meet de versnelling in drie richtingen, waaronder zowel versnelling als gevolg van beweging als versnelling veroorzaakt door zwaartekracht. Dit betekent dat het de hoek kan detecteren waaronder het apparaat ten opzichte van de aarde is gekanteld.
de gyroscoop, op zijn beurt, meet de hoek- of rotatiesnelheid in drie assen. Zo kun je erachter komen hoe snel iets draait en in welke richting.
Technische kenmerken van de GY-521
De GY-521 valt niet alleen op door zijn versnellingsmeter- en gyroscoopintegratie, maar ook door een reeks technische kenmerken die hem ideaal maken voor roboticaprojecten, drones en andere systemen die nauwkeurige bewegingsmetingen vereisen.
- Voltooiing van de operatie: Hij kan zowel op 3.3 V als op 5 V worden gevoed, dankzij het feit dat er een spanningsregelaar in de module zelf zit.
- I2C-aansluiting: Deze module communiceert met Arduino of een ander platform via de I2C-bus, waardoor het apparaat eenvoudig kan worden aangesloten en bediend.
- Meetbereik accelerometer: De versnellingsmeter kan meten over een instelbaar bereik van ±2g tot ±16g, waardoor u de nauwkeurigheid kunt aanpassen aan de behoeften van het project.
- Meetbereik gyroscoop: Net als de versnellingsmeter heeft ook de gyroscoop verschillende instelbare bereiken, namelijk ±250, ±500, ±1000 of ±2000 graden per seconde.
Naast deze functies heeft de GY-521 een Digitaal Analoog Converter (CAD) 16 bits, wat zorgt voor een hoge precisie bij het omzetten van analoge signalen van de sensoren naar digitale gegevens die door uw Arduino kunnen worden verwerkt.
De GY-521 verbinden met Arduino
Het aansluiten van de GY-521 module op Arduino is heel eenvoudig dankzij de I2C-interface. Hij I2C-bus Het gebruikt twee pinnen: één voor het datasignaal (SDA) en één voor het kloksignaal (SCL).
Om de GY-521 op een bord aan te sluiten Arduino UNO:
- Sluit de pin aan VCC van de module naar de 5V-pin van de Arduino.
- Sluit de pin aan GND van de module naar de Arduino GND-pin.
- Sluit de pin aan SCL om A5 van Arduino vast te zetten.
- Sluit de pin aan SDA om A4 van Arduino vast te zetten.
Zodra u de GY-521 op de Arduino hebt aangesloten, kunt u een eenvoudig codevoorbeeld uploaden om gegevens van de versnellingsmeter en gyroscoop te gaan lezen.
Codevoorbeeld om gegevens van de GY-521 te lezen met Arduino
Hieronder laten we u een basiscodevoorbeeld zien om te beginnen met het lezen van de gegevens afkomstig van de versnellingsmeter en gyroscoop. Er wordt gebruik gemaakt van de bibliotheek Draad.h wat de communicatie met I2C-apparaten zoals de GY-521 vergemakkelijkt.
#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);
}
Deze basiscode leest de versnellings- en rotatiegegevens op alle drie de assen en geeft de waarden weer op de Arduino Serial Monitor.
Schaal- en gevoeligheidsaanpassing
De GY-521 maakt dit mogelijk pas de schaal aan en gevoeligheid van zowel de versnellingsmeter als de gyroscoop, wat handig is als u nauwkeurigere metingen wilt verkrijgen of voor projecten waarbij u abruptere bewegingen verwacht te detecteren.
Om de schaal van de gyroscoop en de versnellingsmeter te wijzigen, moet u de specifieke registers van de MPU-6050 wijzigen. Hier leest u hoe u dit doet:
- Schaal van de versnellingsmeter: U kunt het bereik aanpassen naar ±2g, ±4g, ±8g of ±16g door te registreren ACCEL_CONFIG. Afhankelijk van de waarde die naar dit register wordt geschreven, wordt het gewenste bereik toegewezen.
- Gyroscoopschaal: Voor de gyroscoop kan het bereik worden aangepast tussen ±250, ±500, ±1000 en ±2000 graden per seconde door te registreren GYRO_CONFIG.
Door deze wijzigingen aan te brengen, verandert de sensor de gevoeligheid, waardoor u nauwkeurigere gegevens kunt verkrijgen of een groter bewegingsbereik kunt detecteren.
Gegevensfiltering: aanvullend filter
Een van de uitdagingen bij het werken met sensoren zoals de GY-521 is dat de acceleratie- en gyroscoopgegevens vaak een bepaald ruisniveau hebben. Om de datakwaliteit te verbeteren, kunt u een complementair filter dat beide sensoren combineert om een nauwkeurigere schatting van de oriëntatie van het apparaat te verkrijgen.
Een aanvullend filter maakt gebruik van gyroscoopgegevens om snelle oriëntatieveranderingen te meten, terwijl versnellingsmetergegevens worden gebruikt om drift te corrigeren en een stabielere langetermijnmeting te verkrijgen.
GY-521-toepassingen
Dankzij zijn vermogen om versnelling en hoeksnelheid te meten, wordt de GY-521 gebruikt in een grote verscheidenheid aan projecten en toepassingen. Enkele van de meest voorkomende zijn:
- Drone-besturingssystemen: De informatie van de versnellingsmeter en gyroscoop is van cruciaal belang voor het behoud van de stabiliteit tijdens de vlucht.
- Robotica: Sommige robots gebruiken versnellings- en rotatiegegevens om veranderingen in hun omgeving te verplaatsen en te detecteren.
- Draagbare apparaten: Sensoren zoals de GY-521 worden gebruikt in apparaten zoals fitnessbanden of smartwatches om de beweging van de gebruiker te meten.
Dit zijn slechts enkele voorbeelden, maar de toepassingen zijn werkelijk grenzeloos als het gaat om het meten en interpreteren van bewegings- en oriëntatiegegevens.
Conclusie: Waarom u GY-521 zou moeten kiezen voor uw projecten
De GY-521, met zijn integratie van versnellingsmeter en gyroscoop op één enkele chip, is een krachtig en veelzijdig hulpmiddel voor elk elektronicaproject. Omdat het compatibel is met Arduino en een I2C-interface heeft, is het heel eenvoudig te integreren in elk systeem. Bovendien maakt de aanpasbaarheid in termen van gevoeligheid en het feit dat het kan worden geïmplementeerd in een verscheidenheid aan robotica, motion control en meer projecten het een ideale keuze voor elke maker of ingenieur in opleiding.
Als u op zoek bent naar een betrouwbare, gebruiksvriendelijke sensor met meerdere toepassingen, dan zou de GY-521 zeker op uw lijst met onmisbare componenten moeten staan.