Forum: Mikrocontroller und Digitale Elektronik MPU 6050 Gyroskop/Accelerometer und Shake Detection


von Thomas M. (fatwhale)


Lesenswert?

Hey,
ich verwende für mein Projekt momentan ein MPU 6050 
Gyroskop/Accelerometer Breakout Board zusammen mit einem Teensy 3.0 und 
der Arduino Programmierumgebung.

Mein Problem ist, dass ich nicht weiß, wie ich ein Schütteln feststellen 
kann. Im Datenblatt ist zwar die Rede von "shake detection", im weiteren 
Verlauf des Dokuments wird davon allerdings nicht mehr geredet.

Ich steuere den Chip per I2C über die Bibliothek von Jeff Rowberg an, zu 
finden hier:
https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050

Darüber kann ich problemlos auf alle möglich verfügbaren Daten 
zugreifen. Eigentlich sollte im Interruptregister Platz für einen 
Schüttelinterrupt sein, allerdings kann ich dazu nichts finden.

Meine Frage ist daher:
Kennt jemand eine gute Methode, um aus den Accelerometer/Gyroskop Daten 
eine eigene Schüttelerkennung zu berechnen?

Danke für jede Hilfe!

von Wolfgang S. (wsm)


Lesenswert?

Der Baustein erlaubt die Erkennung des Schüttelns durch die Auswertung 
der Messwerte.
Dies bedeutet, dass die Messrate so hoch ist, dass Schüttelbewegungen 
erkannt werden können, z.B. größer als 5Hz.

Bei Datensätzen im Sekundenabstand oder noch langsamer ist ein Schütteln 
nicht zu erkennen.

Die Berechnung/Erkennung einer Schüttelbewegung läuft über eine 
FFT-Auswertung.


W.

: Bearbeitet durch User
von Thomas M. (fatwhale)


Lesenswert?

Ah ok. Das macht Sinn. Ich hatte vorher ein Accelerometer mit 
integrierter Schüttelerkennung. Dabei wurde immer dann ein Interrupt 
geschaltet, wenn ein Schütteln erkannt wurde. Ich dachte, das wäre hier 
genauso.

Dann fehlt ja nur eine clevere Strategie um ein Schütteln zu erkennen. 
Im allerbesten Fall wird nicht nur das Schütteln erkannt, sondern auch 
die Stärke.

Gibt es dafür etablierte Herangehensweisen? Ich konnte bislang nichts 
finden.

von pitschu (Gast)


Lesenswert?

Das geht beim 6050 auch. Über register 31 kannst du den "Register 31 – 
Motion Detection Threshold" einstellen. Sobald einer der Accels eine 
Beschleunigung oberhalb des eingestellten Wertes misst, wird ein IRQ 
ausgelöst.

von Thomas M. (fatwhale)


Lesenswert?

Danke pitschu, das hat funktioniert.
Shake detection ist jetzt mörglich. Kennt jemand noch eine Methode um 
evtl die Stärke des Schüttelns festzustellen (ausgehend vom Threshold)?
Ich will im konkreten den LFO eines Musikinstruments damit steuern. Bei 
stärkeren Schüttlern könnt ich die LFO Frequenz noch mit variieren.

von Phantomix X. (phantomix)


Lesenswert?

Na du könntest die x,y,z-Register des Accelerometers auslesen. Wo die 
stehen steht im Datenblatt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.