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 .