-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Winkelauswertung mit Accelerometer - Wo Werte zum Nullen einrechnen?

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.055

    Winkelauswertung mit Accelerometer - Wo Werte zum Nullen einrechnen?

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo,

    ich möchte mit einem Beschleunigungssensor Winkel auswerten, um so Neigungswinkel und Drehung an einem Brett zu erfahren.
    Dazu habe ich einen Beschleunigungssensor in einem Plastikgehäuse.
    Allerdings kann ich den Sensor nicht 100% parallel zum Brett oder seinem Gehäuse ausrichten, weshalb ich auf einem absolut graden Tisch/Brett x Werte auslese, darauß den Mittelwert bilde und diese quasi zum 'Nullen' des Sensors verwenden möchte.

    Wenn ich die Daten des Sensors nun mit µ (steht für X/Y/Z):

    (asin(µ/sqrt( (x*x) + (y*y) + (z*z)))* 180 / 3.14159265)

    auswerte, bekomme ich den Winkel der aktuellen Lage des Sensors ausgegeben.
    Solange der Sensor nur in der Ebene liegt, kann ich meine auf der graden Ebene ausgelesenen Werte einfach bei den entsprechenden Winkeln addieren und somit den Sensor nutzen, um die Lage des Bretts bei 0° zu bestimmen.

    Wenn ich nun allerdings den Winkel der Y-Achse ändere, verändere ich gleichzeitig den Winkel der X-Achse, da der Sensor nicht parallel zum Brett aufliegt.

    Nun ist meine Überlegung, dass ich nicht erst die Sensordaten in WInkel umrechne und dann korrigiere, sondern dass ich zuerst den Korrekturfaktor einreechne und dann in die entsprechenden Winkel umrechne.

    Die Sensordaten bestehen aus Werten um die +/-4100 pro Achse.

    Wäre es logisch, dass der Winkel dann richtig angezeigt wird, wenn ich die Eichungs-Werte vor der Winkelberechnung einlese?

    Oder muss ich einen Weg wählen, wie ich die Sensorkoordinaten auf den Weltkoordinaten projeziere?

    Ich hoffe, mir kann hier jemand meine mathematischen Lücken füllen und mir zum Erfolg verhelfen

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Ich würde, wie du schon gesagt hast, den Sensor auf waagerechter Fläche nullen und mit den "kalibrierten" Werten rechnen.
    Gruß
    Dirk

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.055
    Nun ja, das ist der erste Schritt, den ich machen muss, um ne Relativität zur Erdbeschleunigung zu bekommen.
    Aber wenn die Y-Achse nun gedreht wird und die X-Achse nicht 100% orthogonal zur bewegten Achse steht (weil der Sensor nicht 100% parallel zur Drehachse steht), beeinflusst der Y-Winkel den X-Winkel.

    Ich könnte jetzt versuchen, eine Wertetabelle zu erstellen, damit ich weiß, bei welchem Winkel der X-Wert wie stark und in welcher Richtung beeinflusst wird...aber das wär sehr, sehr aufwändig und müsste bei jedem neuen Durchgang zur Kalibrierung (z.B. auf nem anderen Brett, ich bekomm den Sensor ja niemals auf zwei Brettern haargenau gleich ausgerichtet!) in zwei Positionen durchgeführt werden (einmal wenn der Sensor liegt und einmal, wenn er um 90° gekippt ist, damit man quasi eine virtuelle Ebene errechnen kann, auf der sich der Sensor dreht).


    Die Korrekturwerte muss ich sowieso einfluießen lassen.
    Aber würdest du diese in den Wertebereich des Sensors vor der Umrechnung in Winjkel (also bei den Werten +/- ~4100) oder nach der Umrechnung in Winkel einfließen lassen?

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Cysign:
    Die Korrekturwerte muss ich sowieso einfluießen lassen. Aber würdest du diese in den Wertebereich des Sensors vor der Umrechnung in Winjkel (also bei den Werten +/- ~4100) oder nach der Umrechnung in Winkel einfließen lassen?
    Ich würde das schon mit den ADC- bzw. Ausgabe-Werten machen.

    Klar kann der Sensor nur in seinem eigenen Koordinatensystem messen. Die Umrechnung in ein anderes Koordinatensystems ("Brett") ist sehr aufwändig und bei deiner Anwendung (derselbe Sensor auf unterschiedlichen "Brettern" oder Gehäuseformen) auch kaum durchführbar. Auf welche Lage in Bezug auf den "Untergrund" soll sich denn der Sensor einstellen? Letztlich kann man ja auch nur eine Größe messen, wenn eine feste Beziehung zwischen "Messgerät" und "Messobjekt" definiert werden kann.
    Gruß
    Dirk

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.055
    Ich würde gerne die Y-Achse des Sensors mit der Länge des Bretts parallelisieren, damit ich in jeder Y-Lage den passenden X-Wert bestimmen kann (Y-Achse = Längskante des Bretts, x * kurze kante des Bretts. Z-Achse geht in die Höhe und wird von mir nicht benötigt).

    Also meinst du, dass es mehr sinn macht, eine Vergleichstabelle automatisiert bei einer definierten Drehung als Messreferenz aufzunehmen und diese hinterher zu interpolieren, um den passenden X-Null-Winkel zu bekommen?

    An den unterschiedlichen Brettern wird der Sensor annähernd gleich montiert. Aber halt nur zu 99,5% gleich.

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    @Cysign: Ich kann wenig helfen, weil ich noch nicht genau weiss, was du messen willst.

    Baust du prinzipiell so etwas: http://www.elv.de/output/controller....&detail2=13927
    ... auch evtl. in 2 Ebenen oder auch noch die 3. Ebene (Z-Achse), also die Rotation des Brettes um eine Art zentrale Achse.

    Fragen:
    1. Um welche Achsen kippt das Brett? Um alle drei?
    2. Auf welche Dreh-Achse kommt es dir an, d.h. welche willst du messen und welche ist/bleibt konstant?
    3. Warum ist die Lage des Sensors auf dem Messobjekt variabel und nicht genau zu definieren?
    4. Kannst du vielleicht einmal die konkrete Anwendung beschrieben?
    Gruß
    Dirk

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.055
    Ich möchte im Endeffekt die Neigung (nennen wir sie X-Achse) um die schmale Achse des Brettes messen. Da ich den Sensor aber nie 100% genau ausrichten kann und die Messwerte vom der Neigung um die Längsachse (nennen wie diese Y-Achse) somit abhängig sind, muss ich diesen Messfehler korrigieren.
    Vom Prinzip her ist es also so etwas, was du da verlinkt hast.

    1. Das Brett kippt um Y-Achse (lange Seite vom Brett) und um die X-Achse (kurze Seite vom Brett). Die Z-Achse (nach oben) benötige ich nicht.
    2. Die Längsseite bleibt während des Messens konstant, ich möchte die X-Achse messen.
    3. Die Lage ist variabel, weil ich den Sensor nicht fest verkleben kann, da ich ihn für mehrere Bretter nutzen muss. Ich kann ihn zwar versuchen präzise auszurichten, aber wenn er nicht 100% genau sitzt, beeinträchtigt das die Messwerte um bis zu 2° bei einer Drehung von 90°, was ich korrigieren möchte.

    Ich versuche morgen mal eine Skizze zu zeichnen, woran es dann leichter fallen sollte, das Problem nachzuvollziehen. Aber jetzt muss ich erstmal tot umfallen

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    09.05.2007
    Beiträge
    99

    Skalarprodukt

    Ich denke da ans Skalarprodukt. Und z ist dabei genau so wichtig!
    Egal wie schief der Sensor in Deiner Box liegt. Hauptsache er ist darin irgendwie fixiert. Der Accelerometer Vektor (x,y,z) zeigt immer zum Erdmittelpunkt.
    1. Kleb die Box irgendwo auf's gerade Brett, ließ den Sensor aus und nenne den Vektor A.
    2. Dann neige das Brett um die y-Achse und der Sensor liefert Vektor B.
    3. Mit Hilfe des Skalarproduktes A*B kannst Du den Neigungswinkel ausrechnen.

    Das Skalarprodukt liefert Dir den Winkel zwischen den Brettebenen in 1 und 2. D.h. mit dem Skalarprodukt kannst Du nicht zwischen einer Neigung um y-Achse und/oder x-Achse unterscheiden.

    Wahrscheinlich habe ich bis hierhin Dein Problem nicht gelöst aber hoffentlich ein wenig mit der Mathematik geholfen.

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.055
    So, hier mal eine grobe Übersicht. Ich hfofe, es ist verständlich. Der rosane Kasten soll der Sensor sein.

    Der Sensor ist in der Box fixiert, die ich auf das Brett lege.
    Das Brett ist zum Testen da, wo die X-Achse eingezeichnet ist, fixiert, so dass ich es zum Testen um den Winkel ß drehen kann.


    Klicke auf die Grafik für eine größere Ansicht

Name:	uebersicht.jpg
Hits:	22
Größe:	86,6 KB
ID:	24169

    Da ich immer noch nicht so ganz durchblicke, ist mein Ansatz derzeit, dass ich das Brett langsam um ß drehe und dabei Nullwerte für α einlese. Um α auszuwerten werden diese Werte dann hinterher addiert.
    Also wenn α bei ß 15° z.B. um 0,3° abweicht, kann ich anhand des Arrays ablesen, dass bei ß 15° a -0,3° sein muss, um eigentlich 0° anzuzeigen.

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.02.2009
    Ort
    Aachen
    Beiträge
    1.055
    So, nachdem ich mich nun etwas mehr mit der Materie auseinandergesetzt habe und der Sensor komischweweise bei Wiederholungsmessungen (ohne dass man ihn berührte/bewegte) Abweichungen in zu großem Maße aufweist, hab ich mich entschieden den Sensor ohne Gehäuse direkt auf der Platine mal unter die Lupe zu nehmen.
    Vor allem auffällig ist, dass er in der Regel die ersten paar Minuten nach der Inbetriebnahme Werte ausspuckt, die etwa um 0,2° (Raw-daten in Winkel umgerechnet) von den Werten, die nach einigen Minuten ausspuckt abweichen. Für die gewünschte Anwendung ist das zu unpräzise.

    Aus dem Grund möchte ich mich nun einem Oak Tilt (http://developer.toradex.com/files/t..._Datasheet.pdf) widmen.
    Hier bekomme ich die Koordinaten jedoch nicht als Rohdaten ausgespuckt, sondern direkt Winkel für Azimuth (Wikel in Bezug zur X-Achse um Z gedreht) und Zenith (Winkel zur Z-Achse).

    Nun überlege ich, wie ich diese Winkel umrechnen kann, da ich eine Kalibrierungsemssung vornehmen möchte, die etwa parallel zur Y-Achse liegt und quasi den Winkel Z-X-darstellt.

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Accelerometer mit integrierter Gebärdenerkennung
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 10.11.2011, 14:40
  2. Kollisionsdetektor mit Accelerometer??
    Von nortsys im Forum Sensoren / Sensorik
    Antworten: 10
    Letzter Beitrag: 21.01.2011, 11:14
  3. Integer --> String, mit führenden Nullen
    Von maker7 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 10
    Letzter Beitrag: 13.07.2010, 19:08
  4. 7 Segmentanzeige führende Nullen ausblenden
    Von TobiasBlome im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 18
    Letzter Beitrag: 23.08.2008, 17:04
  5. 360° Neigung mit Accelerometer
    Von benson im Forum Sensoren / Sensorik
    Antworten: 2
    Letzter Beitrag: 15.01.2006, 09:27

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •