Rotation & Beschleunigung mit dem Gyroskop MPU6050 messen.
Damit ist dann sowas möglich.
meine Treiber-Software auf Gitlab.
Rein intuitiv habe ich etwas gegen das sogenannte "Polling". Deshalb möchte ich den INT-Pin benutzen.
Nun habe ich den Echtzeit-Chip angeschlossen und gemerkt, das der die gleiche I2C- Adresse benutzt und nicht umgestellt werden kann. Daher benutze ich den Trick, mit dem ich auch mehrere MPU-6050 an einem Gerät betreiben kann:
Ich verbinde den AD0-Pin vom MPU-6050 mit einem freien GPIO-Pin an meinem Raspi. Wenn ich dann mit diesem speziellen MPU-6050 sprechen möchte, schalte ich nur den zugehörigen GPIO auf 1.
The INT
is the interrupt signal, usually open-drain output and you can connect many of them to the single MCU
interrupt line (but you have to check all devices which ones are ready). The LOW
level from MPU
device signalize that data are ready (conversion was finished). So you don't have to periodically read status register to find it out (no polling is necessary).
Evaluation board DMP initialization and usage
http://playground.arduino.cc/Main/MPU-6050
http://www.robotrebels.org/index.php?topic=318.0
https://d-d-c.forendino.de/t6472-eigenbau_gyro_gy521mpu6050_und_arduino.html
http://www.geekmomprojects.com/mpu-6050-dmp-data-from-i2cdevlib/
http://www.geekmomprojects.com/mpu-6050-redux-dmp-data-fusion-vs-complementary-filter/
https://de.wikipedia.org/wiki/Kalman-Filter
Kreiselkompass Software-Update
Bei Modellflugzeugen und -hubschraubern werden Gyroskope eingesetzt, um eine oder mehrere Achsen gegen Wind oder gegen Nebeneffekte der Steuerung zu stabilisieren, weil diese andernfalls nur schwer steuerbar sind. Dabei kamen anfangs mechanische Kreisel zur Anwendung, mittlerweile werden Piezo- oder SMM-Sensoren (Silicon Micro Machine) eingesetzt; in beiden Fällen werden die Steuerkorrekturen über integrierte Mikrocontroller direkt im Flugmodell errechnet.