Wiederherstellen von Daten von einem gesättigten Beschleunigungsmesser

10

Ich habe einen ADXL345-Beschleunigungsmesser und habe ihn zum Starten an einer Hybridrakete montiert. Leider habe ich vergessen, den Bereich von +/- 2 g auf +/- 8 g einzustellen (wir haben 6 g beim Abheben erwartet).

Für den Bereich +/- 2 g enthält das Datenblatt eine Ausgabeauflösung von 10 Bit und für +/- 8 g eine Auflösung von 12 Bit.

Ich habe dies in dem oben verlinkten Datenblatt unter dem DATA_FORMATRegister (0x31) bemerkt:

Das Register DATA_FORMAT steuert die Darstellung von Daten im Register 0x32 über das Register 0x37. Alle Daten mit Ausnahme des +/- 16 g-Bereichs müssen abgeschnitten werden, um ein Überschlagen zu vermeiden. ( Hervorhebung von mir )

Basierend auf dieser Aussage und dem Funktionsblockdiagramm (ein 3-Achsen-Sensor wird an die "Erfassungselektronik" angeschlossen und dann an einen ADC angeschlossen) hoffe ich, dass es eine Möglichkeit gibt, die richtigen Daten aufzulösen. Die Skalierungsfaktoren sind auf Seite 3 des Datenblattes aufgeführt.

Gibt es eine Möglichkeit, diese Daten aufzulösen, mindestens auf 1 oder 2 signifikante Zahlen? (Zum Beispiel habe ich einen Nachweis von 1,9414 g - dies sollte ungefähr 6 sein). Ich denke nicht, dass der Sensor gesättigt ist, nur die Zahl in den Datenregistern - und angesichts der Skalierungsfaktoren und einiger kreativer Bitverschiebungen (es ist nicht ganz klar, wie sie beim Ändern der Auflösung von 10 auf 12 Bit kommen), hoffentlich kann ich das etwas Nützliches aus meinen Daten wiederherstellen .

Dang Khoa
quelle
Wenn Sie Ihre Daten unter der Annahme einer 2g-Anzeige mit Rollover zeichnen, sodass Sie die unteren 2g eines längeren Wortes sehen, wie sieht das Ergebnis aus? Wenn Sie aufsteigen, können Sie eine Reihe von Sägezähnen sehen. 0-2 = 0-2. 2-4 = 0-2. 4-6 = 0-2.
Russell McMahon
Ich werde es versuchen, sobald wir die Rakete gefunden haben. Die Daten, die ich habe, sind unzureichend, da wir sie hinter einer Wolke verloren haben.
Dang Khoa

Antworten:

7

Welchen Wert haben Sie tatsächlich in "Register 0x31 - DATA_FORMAT" gespeichert?

Ich gehe davon aus, dass Sie nichts in diesem Register gespeichert haben, sodass es immer noch den Rücksetzwert von 00 hat. Mit anderen Worten, während Sie Daten gesammelt haben (aus Tabelle 16 und auch Seite 17 des ADXL345-Datenblattes ):

  • Register 0x31 - DATA_FORMAT == 00.
  • FULL_RES == 0. Das Gerät befindet sich also im 10-Bit-Modus, und die Bereichsbits bestimmen den maximalen g-Bereich und den Skalierungsfaktor.
  • Das Justify Bit == 0. Also rechtsbündiger Modus mit Vorzeichenerweiterung.
  • Die Range Bits == 00. Also + - 2g Range.

Als erstes würde ich die ursprünglichen 16-Bit-Werte wiederherstellen, die vom Beschleunigungsmesser gelesen wurden. (dh wenn ich die Originaldaten nachlässig weggeworfen habe und nur noch Zahlen in Einheiten von "g" übrig habe, die durch Subtrahieren eines Versatzes und Multiplizieren mit einem falschen Skalierungsfaktor berechnet wurden, würde ich die gesammelten Daten in a kopieren Tabellenkalkulation und dividieren Sie durch denselben (falschen) Skalierungsfaktor und fügen Sie dann diesen Versatz hinzu, um zu versuchen, etwas wiederherzustellen, das den ursprünglichen Werten nahe kommt.

Dann würde ich die Daten grafisch darstellen und sehen, ob sie eher wie "Sättigung", "linear" oder "Rollover" aussehen (wie unten beschrieben).

Das Datenblatt ist unglaublich vage, was passiert, wenn der Sensor eine Beschleunigung von mehr als 2 g erfährt.

tangentiales Geschwätz

Habe ich Ihnen gesagt, wie sehr es mich ärgert, wenn technische Redakteure darauf bestehen, mit passiver Stimme zu schreiben? Wenn der Verfasser die passive Stimme in dem von Ihnen zitierten Satz verwendet,

"Alle Daten außer dem für den Bereich von ± 16 g müssen abgeschnitten werden, um ein Überschlagen zu vermeiden." (Seite 17)

Ich kann nicht sagen, wer genau diesen Ausschnitt machen soll.

Viele Leute empfehlen die Verwendung der aktiven Stimme . Wenn ich dieser Empfehlung folge, ist mein Text normalerweise klarer, wer was tut. Ist es nicht besser, wenn ich Dinge schreibe, die leichter zu verstehen sind , als einen Stil zu verwenden, bei dem die Leute dazu verleitet wurden, Klänge "professioneller" oder "wissenschaftlicher" zu denken?

automatisches Abschneiden

Ich vermute, dass der Beschleunigungsmesser dieses Clipping automatisch durchführt.

Sättigung : Wenn Sie sehen, dass die Beschleunigung durch plausible Werte ansteigt, auf mysteriöse Weise auf einem Plateau stecken bleibt, das bei oder nahe + 2 g gesättigt ist, hat der Beschleunigungsmesser die Daten "hilfreich" für Sie abgeschnitten. Nach dem Abschneiden zeigt der "obere" Wert nicht mehr "eine Beschleunigung sehr nahe an + 2 g" an, sondern jetzt "eine Beschleunigung von mindestens 2 g und möglicherweise viel, viel mehr - es gibt keine Möglichkeit zu sagen".

Da es sich um einen rechtsbündigen 10-Bit-Modus handelt, erwarte ich bei der Interpretation dieser 16-Bit-Werte als normale 16-Bit-Ganzzahlen mit Vorzeichen Werte von

  • 0x01FF = +511, was mehr als 1,992 g anzeigt. Möglicherweise viel, viel mehr.
  • 0x01FE = +510, was 510/256 g ~ = 1,992 g anzeigt
  • 0x01FD = +509, was 510/256 g ~ = 1,988 g anzeigt
  • ...
  • 0x0001 = +1, was 1/256 g = 0,0039 g anzeigt
  • 0x0000 = 0, was 0 g anzeigt
  • 0xFFFF = -1, was -1/256 g = 0,0039 anzeigt
  • ...
  • 0xFE02 = -510, was -510/256 = -1,992 g anzeigt
  • 0xFE01 = -511, was -511/256 = -1,996 g anzeigt
  • 0xFE00 = -512, was auf etwas Negativeres hinweist -1,996 g. Möglicherweise weitaus negativer.

(Ja, ich weiß, dass 4 Dezimalstellen Genauigkeit für diesen Sensor nicht gerechtfertigt sind.) (Ich habe gesehen, dass einige Geräte an einem anderen Punkt gesättigt sind, z. B. -511 oder -510. Normalerweise kann ich mir die Daten ansehen und den tatsächlichen Sättigungspunkt ermitteln.)

Sie können einige nützliche Daten aus diesem abgeschnittenen Datensatz wiederherstellen . Sie können damit beispielsweise messen, wie viele Millisekunden die Beschleunigung mindestens 1,5 g betrug. Wenn Sie die Plateaus in dieser Art von Datensatz sehen, ist es leider unmöglich, die maximale Beschleunigung oder den Gesamtimpuls zu messen. Das Beste, was Sie tun können, ist zu sagen: "Nun, wir wissen, dass die maximale Beschleunigung mindestens 2 g und wahrscheinlich mehr beträgt "und berechnen" gut, wir berechnen, dass der Gesamtimpuls mindestens (etwas) Newton * Sekunde ist ".

Alternativen

Es sollte möglich sein, anhand der Daten herauszufinden, ob der Beschleunigungsmesser abschneidet oder nicht. (Ich habe "Sättigung", "linear" und "Rollover" in Bezug auf den Anstieg beschrieben. Bei einigen Datensätzen ist es möglicherweise klarer, stattdessen den Anstieg zu betrachten.)

linear : Wenn Sie sehen, dass die Beschleunigung durch plausible Werte ansteigt, dann weiter auf höhere Werte ansteigen (Werte über 512 oder negativer als -512), haben Sie Glück gehabt - der Beschleunigungsmesser hat tatsächlich kein Clipping durchgeführt, und Sie haben gültige Daten über den gesamten Bereich.

Rollover : Wenn Sie sehen, dass die Beschleunigung durch plausible Werte ansteigt und kurz bevor sie +2 g erreicht, springt sie sofort auf einen nicht physikalisch realistischen Wert in der Nähe von -2 g und steigt dann weiter an - möglicherweise in Betrieb durch Null, dann wieder gegen + 2 g und wieder in die Nähe von -2 g zurückspringen - dann haben Sie einen Roll-Over-Wrap-Around. Wenn Sie Glück haben, ändern sich die Werte extrem reibungslos, sodass Sie jeden Überschlag erkennen und diese Werte "auspacken" können, um die wahre g-Kraft wiederherzustellen.

ps: Sie können Open Circuits: Rocket Computer jederzeit bearbeiten .

Davidcary
quelle
großartig! Sobald wir die Rakete gefunden haben, werde ich das ausprobieren. Ab sofort mussten wir eine Cessna chartern, um sie zu finden. Aber hoffentlich haben wir Glück.
Dang Khoa
Sieht so aus, als könnten wir unsere Rakete nicht zurückholen, daher ist diese Diskussion etwas umstritten (ich habe nur ein paar Datenpunkte von der Bodenstation). Aber danke!
Dang Khoa
@ Davidcary, die offene Verbindung zu Circuits: Rocket Computer ist unterbrochen
Mahendra Gunawardena
@ MahendraGunawardena: Danke, dass du es mir erzählt hast. Funktioniert es jetzt?
Davidcary