Kompensation der Querachsenempfindlichkeit des Beschleunigungsmessers

7

Für meine Neigungsmesseranwendung verwende ich einen integrierten 3D-Beschleunigungsmesserchip, der analoge Spannung ausgibt.

Bevor ich mein Gerät einsetze, reiche ich es ein und sammle eine Reihe von Proben mit unterschiedlichen Temperaturen und Winkeln zur Temperaturkompensation.

Das Problem, das ich habe, ist, dass die Spannungsausgänge für jede einzelne Achse nicht vollständig unabhängig sind. Wenn bei gleicher Temperatur eine Achse konstant gehalten wird und sich die andere ändert, gibt die erstere ebenfalls einige Änderungen aus.

Nehmen wir zum Beispiel an, ich messe "g" auf der Nickachse und die Ausgabe ist Null, wenn die Rollachse Null ist. Wenn ich den Beschleunigungsmesser zur Seite rolle, erhalte ich die entsprechende Rolle "g", aber die Tonhöhe ändert sich geringfügig (+/- 2 Grad), obwohl die Tonhöhe immer noch Null ist.

Irgendwelche Ideen, wie man daraus eine bessere Präzision erzielen kann?

Padu Merloti
quelle
1
Wie rollen Sie Ihr Gerät - wissen Sie, dass Sie ihm keine Tonhöhenänderung von 2 Grad geben? Der Montagefehler durch Löten kann so gering sein. Wenn Sie ziemlich sicher sind, dass die Montage gut ist, ist das Ticket möglicherweise eine genauere Befestigung. Welchen Beschleunigungsmesser verwenden Sie? Viele haben eine Funktion, mit der sie getrimmt werden können, oder sie haben eine Fehlergrenze von +/- 2 Grad (oder schlechter).
Kevin Vermeer
1
Ich verwende einen hochpräzisen 6DOF-Manipulator. Es gibt mir 0,01 Grad Genauigkeit in allen Achsen. Die Montage erfolgt durch Bestückung. Der Sensor ist ein freescaleMMA7361LC.
Padu Merloti

Antworten:

7

Stellen wir ein einfaches mathematisches Modell eines Beschleunigungsmessers zusammen - daraus können wir einige Kalibrierungsoptionen erarbeiten.

Ohne Berücksichtigung von Nichtlinearität und anderen unangenehmen Effekten ist die Ausgangsmessung eines Beschleunigungsmessers gegeben durch:

f^=Mf+ba+na

wo f^ ist die tatsächliche Messung, ba ist die Vorspannung des Beschleunigungsmessers, na ist ein zufälliger Rauschvektor, f ist die wahre spezifische Kraft (dh Beschleunigung) und M ist die Skalierungsfaktor / Fehlausrichtungsmatrix.

Die einzelnen Elemente der SFA-Matrix sind:

M.=[S.xγxyγxzγyxS.yyγyzS.xγzyS.zz]]

Jeder Skalierungsfaktor wird also durch ein dargestellt S. und jede Querachsenempfindlichkeit wird durch a dargestellt γ.

Wenn der Skalierungsfaktor 1 ist und keine Empfindlichkeit über die Achsenachse vorliegt, ist dies idealerweise die resultierende Matrix M.=ich.

Wenn wir es so darstellen, können wir ein Vergütungsmodell entwickeln. Wenn wir es zufällig wissenM. und bein und annehmen nein Um klein zu sein (dh nahe Null), können wir die "wahre" Beschleunigung aus den Messungen gut abschätzen:

f=M.- -1(f^- -bein)

Der Trick ist natürlich, zu trainieren M. und bein.

Ich werde ein Verfahren beschreiben, das als Sechs-Positionen-Test bezeichnet wird und eine einfache und kostengünstige Möglichkeit darstellt, einen Beschleunigungsmesser zu kalibrieren. Schritt 1 ist die Montage des Beschleunigungsmessers in einer rechteckigen Box mit perfekt90Seiten (oder so nah wie möglich). Stellen Sie dies auf eine perfekt ebene Fläche (oder wieder so nah wie möglich) - Sie wären überrascht, wie gut Sie dies tun können.

An diesem Punkt wissen wir, wie hoch der Wert sein sollte: Schwerkraft auf dem Z-Beschleunigungsmesser:

f1=[00G]]

Das wird also:

f^1=M.f1+bein+nein
Bemerken, dass f^1 wird geschlossen, aber nicht das gleiche wie f1

Wenn wir die Box auf den Kopf stellen, wirkt die Kraft - -G::

f2=[00- -G]]

Und wenn auf einer Seite platziert:

f3=[0- -G0]]

Und so weiter für die restlichen drei Seiten.

Schreiben wir nun eine der Gleichungen in Langschrift:

f^1=M.f1+bein+nein=[S.xxfx+γxyfy+γxzfz+bxγyxfx+S.yyfy+γyzfz+byγxzfx+γyzfy+S.zzfz+bz]]

Und noch längere Hand (für die erste):

f^1=[fxS.xx+fyγxy+fzγxz+0γyx+0S.yy+0γyz+0γxz+0γyz+0S.zz+1bx+0by+0bz0S.xx+0γxy+0γxz+fxγyx+fyS.yy+fzγyz+0γxz+0γyz+0S.zz+0bx+1by+0bz0S.xx+0γxy+0γxz+0γyx+0S.yy+0γyz+fxγxz+fyγyz+fzS.zz+0bx+0by+1bz]]

So können wir einen gestapelten Vektor der Unbekannten erstellen

z=EINβ
Wo
z=[f^1f^2f^6]]

Und

β=[S.xxγxyγxzγyxS.yyγyzγxzγyzS.zzbxbybz]]

Die Entwurfsmatrix lautet (für einen Satz von Messungen):

EIN^1=[fxfyfz000000100000fxfyfz000010000000fxfyfz001]]

Sobald dies eingerichtet ist, kann man nach lösen β(und damit Empfindlichkeit und Vorspannung) über kleinste Quadrate .

Ein ähnliches Verfahren kann mit einem Roboterarm durchgeführt werden, wenn Sie die Winkel genau steuern können. Er antwortet lediglich mit der Kenntnis der genauen Schwerkraft in diesem Winkel, der, wenn Sie den Winkel kennen, leicht zu berechnen ist.

Damien
quelle
6

Wenn Sie sich das Datenblatt für den Chip ansehen, werden Sie feststellen, dass es eine Spezifikation für die Empfindlichkeit der Querachse gibt. Was Sie also sehen, ist nur ein Teil der Einschränkungen des Geräts.

Sie können es möglicherweise kalibrieren, wenn Sie die Bewegung nur auf eine Achse beschränken. Wenn Sie zulassen, dass es sich in einer beliebigen Achse bewegt, ist es meiner Meinung nach mit nur einem Beschleunigungsmesser nicht möglich, wenn sich die zweite Achse aufgrund der Empfindlichkeit der Querachse oder aufgrund einer Änderung des Winkels / der Beschleunigung auf dieser Achse ändert.

Wenn Sie einige andere Sensoren hinzugefügt haben - Gyroskope oder Magnetfelder -, können Sie möglicherweise alle Sensordaten kombinieren, um sie zu ermitteln.

peter_mcc
quelle
1
Schöner erster Beitrag und willkommen auf der Seite. Ja, auch der hochpräzise Bosch BMA180 hat eine Querachsenempfindlichkeit von 1,75%. Eine 90-Grad-Änderung in einer Achse kann also zu einer 1,57-Grad-Anzeige auf der anderen Achse führen, und dies kann sich jedes Mal ändern, wenn Sie sie bewegen. Ein zusätzlicher Faktor ist der Ausrichtungsfehler. Auch hier ist der BMA180 nur auf +/- 1 Grad bezogen auf den Fall festgelegt. Dies ist jedoch eine Konstante für jeden physischen Chip und kann daher von Ihrem Tester in der Software kalibriert werden.
Kevin Vermeer
1
Ich habe eine Reihe von Punkten auf mehreren Seillängen und Rollen gesammelt. Ich habe mehrere Linien gezeichnet, die die Empfindlichkeit der x-Achse charakterisieren, und ich wollte versuchen, die Anzeigen mit diesen Kompensationsgleichungen zu kompensieren ...
Padu Merloti