Neigungsberechnung mit Beschleunigungsmesser?


16

Ich habe einen ADXL203-Beschleunigungsmesser für analoge Geräte auf einem Steckbrett und wollte diesen verwenden, um die Neigung einiger Geräte bei einer angemessen hohen Frequenz (20-30 Hz) zu messen. Ich schließe es an einen Campbells Cr3000 Logger an, um die Messung durchzuführen. Hat jemand Anweisungen zur Interpretation der Sensorausgänge. Vielen Dank


Vielen Dank an alle für die Kommentare. sehr hilfreiche
grüße

Ich weiß, ich habe die höchste, aber wenn Sie meine nicht mögen, akzeptiert zumindest jemand.
Kortuk

Antworten:


12

Ich habe hier eine Reihe von Dingen zu sagen, von denen einige mit Pingswept und einige mit Penjuin einverstanden sind.

cr3000

Das Cr3000-Sampling mit 16 Bit und 100 Hz wird etwas langsam abtasten, damit Sie problemlos Rauschen aus Ihren Daten entfernen können. Es ist jedoch mit einer deutlich höheren Genauigkeit verwendbar. Ich bezweifle, dass Sie 13 oder 14 Bit Genauigkeit ohne einige ziemlich gute Filteralgorithmen erhalten können. Beschleunigungsmesser haben mich gelehrt, dass Vibration die teuflischen, gesprengten Phononen sind.

Ausgangskondensator

Sie müssen sicherstellen, dass Sie die Angaben des Datenblattes und der Signaltheorie einhalten. So zitieren Sie das Datenblatt:

Der Ausgang des ADXL103 / ADXL203 hat eine typische Bandbreite von 2,5 kHz. Der Benutzer muss das Signal an dieser Stelle filtern, um Aliasing-Fehler zu begrenzen. Die analoge Bandbreite darf nicht mehr als die Hälfte der Analog-Digital-Abtastfrequenz betragen, um Aliasing zu minimieren. Die analoge Bandbreite kann weiter verringert werden, um das Rauschen zu verringern und die Auflösung zu verbessern.

Dies bedeutet, dass Sie einen Kondensator auswählen müssen, um Ihre Frequenz unter 50 Hz zu halten. Wenn Sie es darüber platzieren, können Sie Aliasing erhalten, und Aliasing macht Vibrationsgeräusche zu einem Teufel, mit dem Sie einen Deal unterzeichnet haben. Sie geben an, wie die Geräuschpegel vom Gerät berechnet werden sollen, und bei einer Bandbreite von 50 Hz wird ein Spitzengeräusch von 0,006 * nicht einmal die Schwerkraft bemerkt, wenn Sie dies bei einem Gerät mit Vibrationen feststellen.

Daten interpretieren

Dies ist wahrscheinlich das, woran Sie am meisten interessiert sind, und es ist relativ einfach zu tun. Sie müssen eine Zeit markieren, in der sich das Gerät im neutralen Zustand befindet. Dies ist, wenn es flach ist und Sie es relativ ruhig haben. Geben Sie an dieser Stelle ein oder zwei Sekunden ein, und dann können Sie den Median dieser Daten verwenden, um die No-G-Spannung zu bestimmen. Dann können Sie dies als Vergleichspunkt für das Gerät verwenden. Ab jetzt kann ich das Datenblatt direkt zitieren:

Wenn der Beschleunigungsmesser senkrecht zur Schwerkraft steht, ändert sich seine Leistung um fast 17,5 mg pro Neigungsgrad .

Sie können diese Näherung also einfach verwenden, wenn Sie nicht sehr stark kippen möchten. Sie müssen jedoch Geometrie verwenden, wenn Sie in beide Richtungen und in Winkeln kippen möchten, die nicht extrem klein sind.

Wenn Sie größer werden, haben sie sogar die folgenden Gleichungen:

PITCH = ASIN (AXE / 1 g)
ROLL = ASIN (AY / 1 g)

Soweit ich telefonieren kann, gibt Ihr Gerät eine Änderung von 1 V pro 1 G Beschleunigung an. Wenn Sie die Kalibrierungsphase durchgeführt haben, sollten Sie in der Lage sein, Messungen vorzunehmen, den Versatz zu subtrahieren und die Anzahl der erlebten Gs zu ermitteln.

Hören Sie hier auf zu lesen, es sei denn, Sie stoßen auf Probleme oder möchten weitere Informationen, um den Ansatz zu verbessern.

Ich habe ein bisschen mehr über andere Ansätze und Methoden gesprochen, um Ihren Ansatz für sich schnell ändernde Systeme oder Systeme zu verbessern, in denen Sie das Gerät programmieren, das die Beispiele erstellt.

Abtastfrequenz

Sie müssen wesentlich schneller abtasten als die Geschwindigkeit, mit der Ihr Gerät die Richtung ändert, in die es beschleunigt, da Sie die Ausrichtung 20 bis 30 Mal pro Sekunde messen müssen. Sie müssen in der Lage sein, schnell genug zu messen, um Vibrationsgeräusche und Beschleunigungen aufgrund anderer Einflüsse herauszufiltern, die ich bei der Arbeit mit einem Beschleunigungsmesser als ziemlich groß empfunden habe.

3-Achsen-Beschleunigungsmesser

Zweitens, wenn Sie einen dreiachsigen Beschleunigungsmesser haben, können Sie ziemlich leicht erkennen, wenn eine Achse einen Teil der Beschleunigung aufgrund der Schwerkraft verliert (dh wenn die z-Achse einen Größenabfall von 2 m / s ^ 2 aufweist, wissen Sie, dass die Der Gewinn, den Sie auf der anderen Achse gesehen haben, ist die Schwerkraft. Dies ist zwar immer noch chaotisch, aber im Allgemeinen wird eine Beschleunigung hinzugefügt, die die Geschwindigkeit angibt, die zum Ändern Ihrer Ausrichtung erforderlich ist, und anschließend eine Änderung der Beschleunigung aufgrund einer Änderung der Ausrichtung, sodass Sie häufig die Ausrichtung erkennen können.

Probleme mit 2-Achsen

Dies wird, wie Penjuin sagte, mit einem 2-Achsen-Beschleunigungsmesser fast unmöglich und bestenfalls lückenhaft sein, wenn Sie ein System haben, das 20 bis 30 verschiedene Ausrichtungen pro Sekunde haben kann, oder wenn Sie ein genaues Maß für die Ausrichtung benötigen jederzeit. Ich bin mir sicher, dass ein Masterstudent eine schöne Abschlussarbeit zu diesem Thema schreiben oder eine Doktorarbeit über die Verbesserung dieses Algorithmus verfassen könnte.

Vibrationsgeräusch

Wenn Sie Ihr Gerät auf etwas stellen können, das es statisch an die Bewegung Ihres Geräts anpasst, aber Vibrationen dämpft, erhalten Sie viel bessere Zahlen und müssen weniger Software filtern. Zwischen dem Beschleunigungsmesser und Ihrem Gerät kann eine einfache Schaumstoffpolsterung angebracht werden. Wenn es sich um eine digitale Polsterung handelt, sollte dies das elektrische Rauschen nicht verstärken und Vibrationsgeräusche abfedern. Dies sollte nur durchgeführt werden, wenn Probleme mit dem Vibrationsgeräusch auftreten.

Digitaler Beschleunigungsmesser

Ich würde einen digitalen Beschleunigungsmesser vorschlagen, mit dem Sie über SPI eine Verbindung herstellen können. Daten können mit einer sehr sehr hohen Rate ausgebucht werden, und Sie können im Hintergrund arbeiten, da Ihr SPI die ständige Arbeit des Ladens des nächsten Satzes von Werten erledigt. Sie benötigen einen schönen Mikrocontroller, wenn Sie digital arbeiten möchten. Wenn Sie mir genauere Angaben zu Ihrem Wunsch machen können, kann ich Ihnen ein besseres Feedback geben. Wenn Sie eine Warnung auf der Grundlage der Neigungserkennung wünschen, sollte dies mit allen analogen Geräten sehr einfach möglich sein. Wenn Sie jedoch die Position und den Winkel von Geräten während des Betriebs messen möchten, müssen Sie sich auf einige Arbeiten vorbereiten.

Bitte lassen Sie mich wissen, ob ich etwas hinzufügen kann, um diese Antwort klarer zu machen oder auf das zutreffen, wonach Sie gesucht haben.


1
Nur für die Aufzeichnung ist diese Antwort episch.
Pingswept

1
Dr. Kortuk, Ph.D in Beschleunigungssensoren! :-)
Jay Atkinson

Ich schrieb diese Antwort, weil ich immer dachte, ich hätte etwas vergessen, dann bemerkte ich, dass es etwas lang ist, und fügte die wirklich schnelle Antwort hinzu, aber es scheint, dass die Leute die lange Antwort bevorzugen.
Kortuk

Aufgrund eines bürstenlosen Gleichstrommotors (BLDC) hatte ich während der Betriebszeit möglicherweise ein größeres Vibrationsgeräusch, aber bevor er eingeschaltet wurde, gab es immer noch signifikante Vibrationswerte.
Kortuk

3

Ich habe diese Antwort mehrere Male mit vielen verrückten mathematischen Ideen geschrieben und umgeschrieben, aber ich glaube ehrlich gesagt nicht, dass dies mit irgendeiner Genauigkeit getan werden kann. Sie können einige Vektor-Mathematik machen, aber was ist, wenn:

  • Das Objekt bleibt stehen
  • Das Objekt hat eine konstante Geschwindigkeit
  • Das Objekt stößt an eine Unebenheit
  • Die erzeugte Kraft, die sich die Steigung hinaufbewegt, liegt unter der Auflösung der Z-Achse

Obwohl ich mir sicher bin, dass es eine verrückte Umgehungslösung gibt, bin ich mir nicht sicher, ob es sich lohnt. Beschleunigungsmesser sind einfach nicht für diese Aufgabe ausgelegt (zumindest meines Wissens). Für das, was Sie erreichen wollen, würde ich einen gyroskopischen Ansatz vorschlagen , mit jedem von ihnen , von denen alle ziemlich widerstandsfähig sein würde , um alle der oben genannten Probleme.


Beschleunigungsmesser sind eigentlich dafür ausgelegt, es gibt einen ganzen Abschnitt, wie man das macht. Beschleunigungsmesser sind in vielen Fällen sehr, sehr kostengünstig und manchmal sind die Kosten ein größeres Problem als die einwandfreie Funktionalität.
Kortuk

3
Ich versuche immer, dies den Schülern zu erklären, und ich werde es hier hinzufügen, weil ich denke, dass es ein wichtiges Konzept ist. Beim Engineering geht es nicht immer darum, es auf die beste Art und Weise zu tun, sondern so, dass der Benutzer in nichts anderem als dem Preis einen Unterschied feststellen kann.
Kortuk

2
Es gibt etwas zu sagen, um es zuerst zu tun, und es gibt viel zu sagen, um es besser zu machen als der letzte Typ.
Kortuk

Ich stimme zu, aber es hängt von Ihren Motiven ab (die Troy nicht angegeben hat); willst du, dass es gut funktioniert, oder willst du lernen? Sie schließen sich nicht unbedingt gegenseitig aus, aber Sie würden Ihren eigenen Compiler nicht schreiben, nur um eine LED zu blinken, es sei denn, Sie wollten speziell etwas über das Compiler-Design erfahren.
Penjuin

Ja, ich füge das hinzu, um Ihre Antwort zu besprechen. Wenn er 30-mal pro Sekunde eine andere Orientierung erkennen muss, hat er gigantische Beschleunigungen, was wiederum bedeutet, dass Sie viel mehr als 100 Proben pro Sekunde benötigen zweite.
Kortuk

3

Wenn ich das Datenblatt richtig verstehe, variiert die Ausgabe für jede Achse zwischen 1,5 V und 3,5 V, wenn Sie um die Achse kippen. Wenn das Gerät flach ist (ohne Berücksichtigung des Ausrichtungsfehlers von ± 1 Grad), sollten beide Ausgänge 2,5 V anzeigen.

Wenn Sie nur die Neigung in eine Richtung messen müssen, können Sie den Bogen der Abweichung von 2,5 V nehmen, um den Winkel im Bogenmaß zu erhalten, und dann in Grad umrechnen. Wenn das Gerät in eine beliebige Richtung geneigt werden kann, können Sie die beiden Winkel berechnen und daraus den zusammengesetzten Winkel berechnen.

Um es genau zu sagen: Winkel um eine Achse = (180 / π) * arcsin (Vout - 2,5)

Um einen guten Frequenzgang zu erzielen, benötigen Sie kleine Ausgangskondensatoren, Cx und Cy. Ab Fußnote 6 S. 3 des Datenblattes sieht es so aus, als würden Sie mit 0,02 uF eine Bandbreite von 250 Hz erhalten, was wahrscheinlich in etwa der richtigen Bandbreite für Ihre Abtastrate entspricht. Möglicherweise können Sie bis zu 0,1 uF erreichen und die Bandbreite auf 50 Hz begrenzen, aber Ihre Signale werden allmählich gedämpft.


Ich denke nicht, dass es die Signale dämpft, es sei denn, Sie beziehen sich auf die höheren Frequenzen, die der Punkt der Kappe ist. Er muss auf 50 Hz oder niedriger gehen, um zu seinem Datenabtastgerät zu passen.
Kortuk

1
Ah, ich hatte aus der Aliasing-Perspektive nicht darüber nachgedacht. Ich denke immer noch, dass Large Caps Hochfrequenzsignale dämpfen werden, aber in diesem Fall ist das eigentlich eine gute Sache. Also ja, die Bandbreite um 50 Hz einzustellen ist gut.
Pingswept

3

Ich füge eine zweite Antwort hinzu, weil meine andere groß ist und Sie vielleicht einfach wollen.

Ihre Filterkappe muss 0,10 uF oder größer sein, damit Sie unter Ihrer Aliasing-Rate (50 Hz) bleiben. Sie müssen eine Kalibrierungsphase von ein paar Sekunden durchführen, während Ihr Gerät auf gleicher Höhe mit der gesamten Schwerkraftbeschleunigung in Z-Richtung sitzt. Dies dient zur Bestimmung Ihres Null-G-Punkts.

Die Spannung, die Sie für Ihren Null-G-Punkt messen, wird sich wahrscheinlich für die X- und Y-Richtung unterscheiden und stellt nichts dar. Nehmen Sie einfach die Spannung, die Sie erhalten, und subtrahieren Sie sie. Diese Spannung mit subtrahiertem Offset ist die Anzahl von Gs, die Sie in diese Richtung erhalten.

Nehmen Sie das Arcussin und Sie werden Ihren Winkel in diese Richtung bekommen.

Dies ignoriert Rauschen und andere Beschleunigungen. Stellen Sie sich darauf ein, dass NaN zu einem Ergebnis wird, wenn Sie es vollständig gekippt haben und es Geräusche gibt.


0

Um einen beliebigen Winkel zu erhalten, müssen Sie die Erdbeschleunigung sowohl in X- als auch in Y-Richtung messen. subtrahieren Sie die mittlere Spannung (2,5 V), so dass Null "keine Beschleunigung" ist.

Jetzt können Sie den Winkel mit Arcussin (y / x) finden. Aber das ist ärgerlich, wegen der Aufteilung und weil das Vorzeichen mehrdeutig ist, also was will man eigentlich mit der C-Funktion atan2 (y, x). atan2 () bekommt das richtige Zeichen für alle 360 ​​Grad.


Off-Topic, da Sie kein Mikro verwenden: Wenn Sie nach atan2 () für einen Mikrocontroller suchen, finden Sie auf meiner Website einen atan2 () - Generator: http://vivara.net/cgi-bin/ cordic.cgi


Es ist keine garantierte 2,5 V für 0G. Da er wahrscheinlich einen Computer benutzen wird, um die Mathe zu machen, bezweifle ich, dass die Methode, die er benutzt, um die Mathe zu machen, von Bedeutung sein wird.
Kortuk
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.