GY-521 - Introductie
De GY-521 is gebaseerd op de MPU6050 sensor welke een gecombineerde bewegingsmeter, versnellingsmeter en gyroscoop heeft. Het geeft waarden over beweging, versnelling en draaiing. Deze gegevens zijn erg precies. Voor ieder kanaal is er een eigen 16-bits analoog naar digitaal omvormer voor de gegevens. De waarden van de drie kanalen kunnen dan ook tegelijkertijd worden uitgelezen.
De GY-521 geeft direct spanningssignalen af. Geen weerstand. Een spanningsdeler is hier niet nodig.
Bewegings controller
Dit component bevat een XYZ-as bewegings controller. Neem het onderdeel vast, nu kun je 3 bewegingen maken. je kunt naar links/rechts. Je kunt omhoog/omlaag. En je kunt naar voren/achter. Dat zijn de 3 assen waarop is te bewegen in de ruimte. Links/rechts gaat via de X-as. Omhoog/omlaag gaat via de Y-as. En de verplaatsing voor/achter gaat via de Z-as. Ze noemen dit ook wel 6-Axis (=6 assen) beweging. Zie de figuur hieronder staat in het figuur links, de verplaatsing als er enkel positieve waarden zijn. Een positieve waarde voor verplaatsing op de X-as gaat via de groene lijn. Een positieve waarde voor verplaatsing op de Y-as via de blauwe lijn en een positieve verplaatsing naar achteren is de blauwe as. Positieve verplaatsingen zijn in beginsel van het centrum af. In het rechterfiguur zijn de lijnen doorgetrokken en geven deze ook negatieve waarden aan.
Als we een de volgnde waarden krijgen X=10, Y=0, Z=-10. Dan weten we dat het object 10 positieies naar rechts gaat, niet omhoog gaat en eenzelfde aantal posities naar voren komt (naar ons toe komt).
Het is dus een plaatsbepaling. Voorbeeld: De afstandbediening ligt 60 cm naar rechts, 40 cm omhoog en 140 cm naar achteren op een tafeltje.
Versnellingsmeter
Dit component bevat een MEMS accelerometer. De afkorting MEMS staat voor Micro-elektromechanische systemen. Dit zijn kleine ingebedde systemen die onderdeel van een ander systeem. Ofwel de de accelero meter is onderdeel van de bewegingsmeter.
De vertaling van accelerometer is in het Nederlands versnellingsmeter. Het component meet de kracht van versnelling. Vanuit stilstand begint iets opeens te bewegen, of vanuit een beweging is er een versnelling of vertraging. Een voetbal rolt kalm over een veld, totdat iemand er een joekel van een trap tegen geeft. De bal zal dan hard weg vliegen. De versnelling is dan groot. Als we de kinderwagen zachtjes duwen om die in beweging te zetten (en de baby niet wakker te maken), dan is er een hele kleine versnelling.
Hiermee kun je verplaatsing meten. Voorbeeld: We hebben 3 seconden met een snelheid van 10cm/s bewogen in een richting.
Gyroscoop
Dit component bevat een MEMS gyroscope. Wat MEMS is hebben we hierboven gezien. Een gyroscoop bevat een piëzokristal, waarop een elektrische spanning wordt gelegd. Als er nu een draaibeweging, op het kristal inwerkt, dan kan het verschil in deze elektrische spanning worden gemeten. Hieruit kan de richting en hoek van de draaibeweging worden gemeten.
Hiermee kun je richting en de kracht van een draaibeweging meten. Voorbeeld: We zijn horizontaal 30 graden gedraaid en in de lengterichting 15 graden.
Op de afbeelding bovenaan de pagina was al te zien dat er standaard geen connectoren op de printkaart zitten. Die moeten we er op solderen.
PINs
De GY-521 heeft 8 pins.
Adafruit
Om het leven gemakkelijker te maken, kun je de
Wire
en
Adafruit-MPU6050 library
downloaden en opnemen in je project
Script
Hieronder een script om de module te kunnen gebruiken.
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
Adafruit_MPU6050 mpu;
void setup(void) {
   Serial.begin(115200);
   while (!Serial) {
      delay(10); // will pause Zero, Leonardo, etc until serial console opens
   }
   // Try to initialize!
   if (!mpu.begin()) {
      Serial.println("Failed to find MPU6050 chip");
      while (1) {
         delay(10);
      }
   }
   mpu.setAccelerometerRange(MPU6050_RANGE_16_G);
   mpu.setGyroRange(MPU6050_RANGE_250_DEG);
   mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
   //Serial.println(");
   delay(100);
}
void loop() {
   sensors_event_t a, g, temp;
   mpu.getEvent(&a, &g, &temp);
   Serial.print("Temperature:");
   Serial.print(temp.temperature);
   Serial.print("	x-acceleration:");
   Serial.print(a.acceleration.x);
   Serial.print("ty-acceleration:");
   Serial.print(a.acceleration.y);
   Serial.print("	z-acceleration:");
   Serial.print(a.acceleration.z);
   Serial.print("	x-gyro:");
   Serial.print(g.gyro.x);
   Serial.print("	y-gyro:");
   Serial.print(g.gyro.y);
   Serial.print("	z-gyro:");
   Serial.println(g.gyro.z);
   delay(10);
}