Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Python / MATLAB Code for GY-521 Modul #31

Open
Denkschmied opened this issue May 24, 2019 · 5 comments
Open

Python / MATLAB Code for GY-521 Modul #31

Denkschmied opened this issue May 24, 2019 · 5 comments
Assignees
Labels

Comments

@Denkschmied
Copy link
Owner

Denkschmied commented May 24, 2019

Ziel:
Funktionierendes Programm für das Sensormodul GY-521 (Orientierungssensor). Das Programm soll die Orientierung des Fahrzeugs (als Kompassfunktion) ausgeben.

Details zum Sensor:
https://www.reichelt.at/entwicklerboards-beschleunigung-gyroskop-3-achsen-debo-sens-3axis-p253987.html?&trstct=pos_0
https://tutorials-raspberrypi.de/rotation-und-beschleunigung-mit-dem-raspberry-pi-messen/

@Denkschmied Denkschmied changed the title Python Code for LIS3DH Python Code for GY-521 Modul May 24, 2019
@Denkschmied
Copy link
Owner Author

@mrc-gkmn mrc-gkmn self-assigned this May 24, 2019
@mrc-gkmn
Copy link
Collaborator

Würd ich übernehmen und versuchen einen funktionierenden Code zu schreiben 👍

@Denkschmied Denkschmied changed the title Python Code for GY-521 Modul Python / MATLAB Code for GY-521 Modul May 25, 2019
@mrc-gkmn
Copy link
Collaborator

Hardware Aufbau

alt text

Raspberry Pi MPU 6050 bzw. GY-521 (beide identisch)
PIN 1 (3.3V) VCC
PIN 3 (SDA) SDA
PIN 5 SCL SCL
PIN 6 (GND) GND

I²C aktivieren

Als erstes muss man SPI & I2C aktivieren. Dieser Schritt kann übersprungen werden, wenn dies bereits geschehen ist.
Dazu sudo raspi-config. Unter '5. Interfacing Options' gibt es die Einträge "P4 SPI" und "P5 I2C". Diese müssen enabled werden.
Anschließend modules-Datei mit sudo nano /etc/modules bearbeiten und folgende Zeilen zur Datei hinzufügen (wenn nicht bereits vorhanden):
i2c-bcm2708 i2c-dev
Anschließend per Strg+O speichern und per Strg+X beenden.

Jetzt die nötigen Tools installieren:
sudo apt-get install i2c-tools python-smbus
Testen des Tools mit:
sudo i2cdetect -y 1 - Hier sollte bei richtig angeschlossenem Gyro-Modul eine Zahl anstelle der "--" stehen.
Beispiel:

pi@raspberrypi ~ $ sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
Hier befindet sich das Gerät auf Adresse 68 (Hexadezimal). Um das Register anzusprechen folgendes eingeben: sudo i2cget -y 1 0x68 0x75

Python Script

gyro.txt
Datei muss im .py-Format gespeichert werden (upload der .py-Datei war nicht möglich daher .txt)

Um das Skript erfolgreich starten zu können muss in line 37 die Adresse auf den Wert der i2c-Abfrage gesetzt werden.

Hier eine Übersicht der wichtigsten Adressen auf dem Gyro zur Ausgabe verschiedener Werte:

  • PWR_MGMT_1 = 0x6B
  • SMPLRT_DIV = 0x19
  • CONFIG = 0x1A
  • GYRO_CONFIG = 0x1B
  • INT_ENABLE = 0x38
  • ACCEL_XOUT_H = 0x3B
  • ACCEL_YOUT_H = 0x3D
  • ACCEL_ZOUT_H = 0x3F
  • GYRO_XOUT_H = 0x43
  • GYRO_YOUT_H = 0x45
  • GYRO_ZOUT_H = 0x47

Diese wurden größtenteils im Skript (gyro.py) verwendet.

Beispiel der Ausgabe des Skriptes:

Gyroskop

gyroskop_xout: -260 skaliert: -2
gyroskop_yout: -154 skaliert: -2
gyroskop_zout: 78 skaliert: 0

Beschleunigungssensor

beschleunigung_xout: -1048 skaliert: -0.06396484375
beschleunigung_yout: -676 skaliert: -0.041259765625
beschleunigung_zout: 16644 skaliert: 1.01586914062
X Rotation: -2.32121150537
Y Rotation: 3.59994842011

Skalierte Werte werden hierbei dazu verwendet, die Ungenauigkeiten der Werte zu entschärfen und die Wertebereiche eindeutiger und leichter interpretierbar zu formen. Speziell für unsere Anwendung sind daher die Skallierten Werte brauchbarer als die RAW-Values des Sensors selbst.

Um eine alternative Herangehensweise aufzuzeigen hier noch ein zweites Skript:
gyro alternative.txt

Hilfreiche Unterlagen

Zur Messung des Neigungswinkel zwischen zwei Achsen empfehle ich noch diesen Artikel:

Mehr Unterlagen:

+++ leider konnte ich die Scripte wegen fehlender Hardware nicht testen, bin sie aber sehr detailliert durchgegangen und bin überzeugt dass diese funktionieren, wenn man dieser Anleitung folgt +++

@mrc-gkmn
Copy link
Collaborator

mrc-gkmn commented May 26, 2019

Hilfreicher Tipp zur Realisierung ist auch die Rotationsrichtung der x- bzw y- Achse. Diese ist, wie auf folgender Grafik zu erkennen, auf der Unterseite der Platine eingezeichnet.
grafik

@ampxtreme
Copy link
Collaborator

Habe den Code mal als .py File ins Repository gestellt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants