Beschleunigungssensor, Neigung berechnen

Gast #2250637
Lesenswert?
• ▲
▼
Hallo,

ich habe hier einen BMA180 Beschleunigungssensor vor mir liegen.
Daten auslesen, etc funktioniert super.
Nun will ich den Neigungswinkel bezüglich des Erdmittelpunktes 
ausrechnen.
Dafür bleiben mir ja nun 2 Möglichkeiten...
1) sin(alpha) = beschleunigung_x_achse/1g
oder
2) tan(alpha) = beschleunigung_x_achse/beschleunigung_z_achse

Nun meine eigentilche Frage: Mit welcher Formel werde ich wohl bessere 
Ergebnisse auf erzielen, wenn sich der Beschleunigungssensor auf einem 
Quadrocopter befindet (natürlich Tiefpass gefiltert, etc).
Und was kann ich auf einem AVR schneller berechnen?

Vielen Dank schonmal ;)
#2250663
Lesenswert?
• ▲
▼
Mit gar keiner.
Sobald sich dein Quadrocopter bewegt, treten Beschleunigungen auf, die 
du zwar misst, die aber nichts mit der Lotrechten zu tun haben.

Beispiel:

Dein Quadro schwebt vor dir und der Beschleunigungssensor bestimmt das 
als die Lotrechte

       +--------------+
               |
               |
               v

jetzt bewegt sich dein Quadro nach links.

        <------------

       +--------------+
               |
               |
               v

Dein Sensor registriert diese und meldet

         <------------

       +--------------+
               \
                \
                 v


als Folge davon, wertet das dein Programm so aus, als ob dein Quadro 
nach rechts gekippt wäre

(also so

           +
             \
               \
              |  \
              |    \
              v     +
)

und rollt den Quadro nach links, um die vermeintliche Neigung, die gar 
nicht existiert, auszugleichen.
Und steuert sich damit selbst ins Verderben.
Gast #2250678
Lesenswert?
• ▲
▼
@Karl Heinz Buchegger:
Das ist mir schon klar, ich verwende außerdem ein Gyroskop und verknüpfe 
die Daten der beiden Sensoren ;)
Mir ging es nur darum wie ich die Daten des Beschleunigungssensors am 
besten verarbeite um hierbei schon einen möglichst kleinen Fehler zu 
erhalten. Dass der berechnete Winkel des Beschleunigungssensors nur im 
absoluten Stillstand (der nie eintreten wird) genau stimmen ist mir 
bewusst.
Persönliche Seite #2250701
Lesenswert?
• ▲
▼
Du musst eben beide Formeln hernehmen, und ihre Konditionierung [1] für 
die erwarteten Wertebereiche vergleichen.

Zur Berechnung ist schwer was zu sagen, ohne zu wissen welche 
Genauigkeit benötigt wird und wie oft zu Berechnen ist.

Evtl. ist ein Nachguck-Tabelle für atan bzw. asin das beste, so wie in 
[2] eingesetzt, nebst evtl. geschickter Nutzung von Additionsththeoremen

[1] http://de.wikipedia.org/wiki/Kondition_(Mathematik%29
[2] http://www.mikrocontroller.net/articles/AVR_Arithmetik/Sinus_und_Cosinus_(Lineare_Interpolation%29
Gast #2895414
Lesenswert?
• ▲
▼
Hallo,

ich habe das gleiche Problem mit einem LSM303.
Zwar bekomme ich mit sin(y/x) es raus jedoch wenn ich ruckel oder eine 
wackelbewegung mache zeigt es mir grosse sprünge.

Wie kann ich dies Integrieren damit ich diese Störungen nicht bekomme.

Viele Grüsse

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.