MPU-6050 Gyroscoop + Accelerometer aansluiten op Raspberry Pi

Op de electronica markt zijn een groot aantal sensoren beschikbaar die je kunt aansluiten op een Raspberry Pi. Naast de vele displays en temperatuur gerelateerde sensoren is het ook mogelijk om een gyroscoop aan te sluiten.

Een gyroscoop is een rotatiesymmetrische massa die om zijn as kan draaien. Vaak is een gyroscoop, net als een kompas op een schip, in een Cardanische ophanging gevat zodat hij in alle dimensies vrij kan draaien. In zo’n ophanging blijft de as altijd één kant op wijzen. Door deze eigenschap is de gyroscoop praktisch onmisbaar geworden als richtinginstrument in bijvoorbeeld vliegtuigen.

De GY-521 module is een elektronische MPU-6050 gyroscoop voorzien van versnellingsmeters. Hiermee wordt bepaald in welke stand de sensor zich bevindt: staand, liggend of schuin. Door de versnellingsmeters kan naast richting ook bewegingssnelheid, aantal graden en het rotatieaantal berekend worden. Er kan met de sensor drie assen gemeten worden. De sensor zelf kun je via I2C aansluiten op de Raspberry Pi.

Gebruikte componenten

GY-521 MPU-6050 Module 3 Axis gyro sensors+Accelerometer
10x Dupont verbindingskabel (female/female)

Aansluitschema MPU-6050

Raspberry Pi RPI Pin HC-SR04
VCC 3.3V #1 VCC
GND #6 GND
SDA #3 SDA
SCL #5 SCL

I2C Activeren

Om de Gyroscoop waarden uit te lezen gebruiken we een speciaal Python script dat de I2C interface aanstuurt. Om toegang te krijgen tot de interface dient deze in de Raspberry Pi geactiveerd te zijn. Je kunt deze activeren met behulp van raspi-config.

sudo raspi-config

Selecteer de optie ‘Advanced Options’ ▸ ‘I2C’ en kies ‘YES’ om de I2C interface te activeren.

Controleren werking I2C

Nadat de module is aangesloten op de I2C bus kun je controleren of deze ook daadwerkelijk wordt gedetecteerd. Dit kun je doen met de I2C tools, heb je deze niet geïnstalleerd dan kun je dit doen met behulp van:

sudo apt-get install i2c-tools

Controleer hierna of de module zichtbaar is:

sudo i2cdetect -y 1

De Gyroscoop module heeft als ID #0x68. Mocht de module niet zichtbaar zijn controleer dan of de kabels goed zijn aangesloten.

Gyroscoop Python script

Een demo script om de werking van de Gyroscoop MPU-6050 te testen:

#!/usr/bin/python
# Control MPU-6050 Gyroscoop + Accelerometer from Raspberry Pi
# https://raspberrytips.nl/mpu-6050-gyroscoop-raspberry-pi/
import smbus
import math
# Power management registers
power_mgmt_1 = 0x6b
power_mgmt_2 = 0x6c
def read_byte(adr):
return bus.read_byte_data(address, adr)
def read_word(adr):
high = bus.read_byte_data(address, adr)
low = bus.read_byte_data(address, adr+1)
val = (high << 8) + low
return val
def read_word_2c(adr):
val = read_word(adr)
if (val >= 0x8000):
return -((65535 - val) + 1)
else:
return val
def dist(a,b):
return math.sqrt((a*a)+(b*b))
def get_y_rotation(x,y,z):
radians = math.atan2(x, dist(y,z))
return -math.degrees(radians)
def get_x_rotation(x,y,z):
radians = math.atan2(y, dist(x,z))
return math.degrees(radians)
bus = smbus.SMBus(0) # or bus = smbus.SMBus(1) for Revision 2 boards
address = 0x68 # This is the address value read via the i2cdetect command
# Now wake the 6050 up as it starts in sleep mode
bus.write_byte_data(address, power_mgmt_1, 0)
print "gyro data"
print "---------"
gyro_xout = read_word_2c(0x43)
gyro_yout = read_word_2c(0x45)
gyro_zout = read_word_2c(0x47)
print "gyro_xout: ", gyro_xout, " scaled: ", (gyro_xout / 131)
print "gyro_yout: ", gyro_yout, " scaled: ", (gyro_yout / 131)
print "gyro_zout: ", gyro_zout, " scaled: ", (gyro_zout / 131)
print
print "accelerometer data"
print "------------------"
accel_xout = read_word_2c(0x3b)
accel_yout = read_word_2c(0x3d)
accel_zout = read_word_2c(0x3f)
accel_xout_scaled = accel_xout / 16384.0
accel_yout_scaled = accel_yout / 16384.0
accel_zout_scaled = accel_zout / 16384.0
print "accel_xout: ", accel_xout, " scaled: ", accel_xout_scaled
print "accel_yout: ", accel_yout, " scaled: ", accel_yout_scaled
print "accel_zout: ", accel_zout, " scaled: ", accel_zout_scaled
print "x rotation: " , get_x_rotation(accel_xout_scaled, accel_yout_scaled, accel_zout_scaled)
print "y rotation: " , get_y_rotation(accel_xout_scaled, accel_yout_scaled, accel_zout_scaled)
view raw gyro.py hosted with ❤ by GitHub

Kopieer of download het Python script:

wget https://raspberrytips.nl/gyro.py

gyroscoop raspberry pi MPU-6050

Activeer het script:

python gyro.py

Hierna verschijnen de gemeten X,Y & Z waarden van de gyroscoop en de accelerometer.

Wil je meer weten over de werking van een Gyroscoop of Accelerometer dan kun je op de Hobbytronics.co.uk website terecht.

Plaats een reactie

%d bloggers liken dit: