Odzyskiwanie danych z nasyconego akcelerometru


10

Mam akcelerometr ADXL345 i zamontowałem go na rakiecie hybrydowej, aby wystrzelić. Niestety zapomniałem ustawić zakres z domyślnej wartości +/- 2g do +/- 8g (oczekiwaliśmy 6g podczas startu).

Dla zakresu +/- 2g arkusz danych podaje rozdzielczość wyjściową 10 bitów, a dla +/- 8g rozdzielczość 12 bitów.

Zauważyłem to w powyższym arkuszu danych, pod DATA_FORMATrejestrem (0x31):

Rejestr DATA_FORMAT steruje prezentacją danych do rejestru 0x32 poprzez rejestr 0x37. Wszystkie dane, oprócz tych dla zakresu +/- 16g, muszą zostać obcięte, aby uniknąć przechodzenia. ( moje podkreślenie )

Na podstawie tego oświadczenia i funkcjonalnego schematu blokowego (czujnik 3-osiowy jest podłączony do „sensoryki”, a następnie do ADC), mam nadzieję, że istnieje sposób na rozwiązanie prawidłowych danych. Współczynniki skali są wymienione na stronie 3 arkusza danych.

Czy istnieje sposób, w jaki mogę rozwiązać te dane, co najmniej 1 lub 2 znaczące liczby? (Na przykład wykryłem 1,9414 g - powinno to być około 6). Nie sądzę, aby czujnik był nasycony, a jedynie liczba w rejestrach danych - a biorąc pod uwagę współczynniki skali i pewne kreatywne przesuwanie bitów (nie jest całkowicie jasne, jak uzyskują od 10 do 12 bitów przy zmianie rozdzielczości), mam nadzieję, że mogę odzyskać coś użytecznego z moich danych.


Jeśli wykreślisz swoje dane przy założeniu, że wyświetla się 2 g z przewijaniem, aby zobaczyć dolne 2 g dłuższego słowa, jak wygląda wynik sresult. Na narastanie masz nadzieję zobaczyć serię zębów piły. 0-2 = 0-2. 2-4 = 0-2. 4-6 = 0-2.
— Russell McMahon,

Dam temu szansę, kiedy odzyskamy rakietę. Dane, które mam, są niewystarczające, ponieważ zgubiliśmy je za chmurą.
— Dang Khoa,

Odpowiedzi:


7

Jaką wartość faktycznie zapisałeś w „Register 0x31 — DATA_FORMAT”?

Zakładam, że niczego nie zapisałeś w tym rejestrze, więc nadal ma wartość resetowania 00. Innymi słowy, podczas zbierania danych (z tabeli 16 i strony 17 arkusza danych ADXL345 ):

  • Zarejestruj 0x31 — DATA_FORMAT == 00.
  • FULL_RES == 0. Urządzenie pracuje w trybie 10-bitowym, a bity zakresu określają maksymalny zasięg g i współczynnik skali.
  • Bit uzasadnienia == 0. Tak więc tryb justowania z rozszerzeniem znaku.
  • Range Bits == 00. Zatem zakres + - 2 g.

Pierwszą rzeczą, którą chciałbym zrobić, to odzyskać oryginalne 16-bitowe wartości odczytane z akcelerometru. (tj. jeśli niedbale wyrzuciłem oryginalne dane, a pozostały mi tylko liczby w jednostkach „g”, które zostały obliczone przez odjęcie pewnego przesunięcia i pomnożenie przez jakiś nieprawidłowy współczynnik skali, skopiowałbym zebrane dane do arkusz kalkulacyjny i podziel przez ten sam (niepoprawny) współczynnik skali, a następnie dodaj to przesunięcie, aby spróbować odzyskać coś zbliżonego do pierwotnych wartości).

Następnie wykreśliłem dane na wykresie i sprawdziłem, czy bardziej przypomina to „nasycenie”, „liniowy” czy „najazd” (jak opisano poniżej).

Arkusz danych jest irytująco niejasny, co dzieje się, gdy czujnik doświadcza przyspieszenia większego niż 2 g.

styczna rant

Czy mówiłem ci, jak bardzo mnie to denerwuje, gdy pisarze techniczni nalegają na pisanie pasywnym głosem? Kiedy pisarz używa pasywnego głosu w cytowanym zdaniu,

„Wszystkie dane, z wyjątkiem zakresu ± 16 g, muszą zostać obcięte, aby uniknąć przewrócenia.” (strona 17)

Nie mogę powiedzieć, kto dokładnie powinien to zrobić.

Wiele osób zaleca używanie aktywnego głosu . Kiedy stosuję się do tych zaleceń, mój tekst jest zwykle bardziej zrozumiały dla tego, kto co robi. Czy nie jest lepiej, gdy piszę rzeczy, które są łatwiejsze do zrozumienia , niż używanie stylu, w którym ludzie są zmuszani do myślenia, że ​​brzmi „bardziej profesjonalnie” lub „bardziej naukowo”?

automatyczne obcinanie

Myślę, że akcelerometr automatycznie wykonuje to obcinanie.

nasycenie : jeśli zobaczysz, że przyspieszenie przyspiesza w górę do prawdopodobnych wartości, to w tajemniczy sposób utkniesz na płaskowyżu, nasycając się przy lub w pobliżu + 2g, wtedy akcelerometr „pomocnie” uciął ci dane. Po przycięciu wartość „górna” nie oznacza już „przyspieszenia bardzo zbliżonego do + 2 g”, ale teraz wskazuje „przyspieszenie co najmniej 2 g, a być może znacznie, dużo więcej - nie ma sposobu, aby powiedzieć”.

Ponieważ był w 10-bitowym trybie wyrównania do prawej, kiedy interpretuję te 16-bitowe wartości jako normalne 16-bitowe liczby całkowite ze znakami, spodziewam się, że zobaczę wartości od

  • 0x01FF = +511, wskazując więcej niż 1,992 g. Prawdopodobnie o wiele, wiele więcej.
  • 0x01FE = +510, wskazując 510/256 g ~ = 1,992 g
  • 0x01FD = +509, wskazując 510/256 g ~ = 1,988 g
  • ...
  • 0x0001 = +1, wskazując 1/256 g = 0,0039 g
  • 0x0000 = 0, wskazując 0 g
  • 0xFFFF = -1, wskazując -1/256 g = 0,0039
  • ...
  • 0xFE02 = -510, wskazując -510/256 = -1,992 g
  • 0xFE01 = -511, wskazując -511/256 = -1,996 g
  • 0xFE00 = -512, wskazując coś bardziej ujemnego -1,996 g. Być może znacznie bardziej negatywnie.

(Tak, wiem, że 4 miejsca dziesiętne precyzji nie są uzasadnione dla tego czujnika). (Widziałem, że niektóre urządzenia nasycają się w innym punkcie, na przykład -511 lub -510. Zwykle mogę spojrzeć na dane i ustalić rzeczywisty punkt nasycenia).

Możesz odzyskać niektóre przydatne dane z tego przyciętego zestawu danych. Można go użyć do pomiaru, na przykład, ile milisekund przyspieszenie wynosiło co najmniej 1,5 g. Niestety, gdy widzisz płaskowyże w tego rodzaju zestawie danych, nie można zmierzyć maksymalnego przyspieszenia lub całkowitego impulsu - najlepiej możesz powiedzieć: „wiemy, że maksymalne przyspieszenie wynosi co najmniej 2 gi prawdopodobnie więcej ”i obliczyć„ cóż, obliczamy, że całkowity impuls wynosi przynajmniej (coś) niutona * sekundę ”.

alternatywy

Powinno być możliwe ustalenie, czy akcelerometr wycina dane, czy nie. (Opisałem „nasycenie”, „liniowy” i „najazd” w kategoriach wzrostu - w przypadku niektórych zestawów danych bardziej zrozumiałe może być zwalnianie).

liniowy : jeśli zobaczysz, że przyspieszenie przyspiesza w górę do prawdopodobnych wartości, następnie kontynuuj wzrost do wyższych wartości (wartości powyżej 512 lub więcej ujemnych niż -512), to masz szczęście - akcelerometr nie wykonał żadnego przycinania, i masz ważne dane z całego zakresu.

kumulacja : jeśli zobaczysz, że przyspieszenie przyspiesza w górę do prawdopodobnych wartości, a tuż przed osiągnięciem +2 g, natychmiast przeskakuje do niefizycznej wartości bliskiej -2 g, a następnie kontynuuje przyspieszenie - być może przez zero, a następnie ponownie zbliżając się do + 2g i ponownie zeskakując w dół blisko -2 g - wtedy masz przewijanie. Jeśli masz szczęście, wartości zmieniają się niezwykle płynnie, umożliwiając wykrycie każdego najazdu i „rozpakowanie” tych wartości, aby odzyskać prawdziwą siłę g.

ps: nie krępuj się edytować Open Circuits: Rocket Computer .


świetny! jak tylko odzyskamy rakietę, wypróbuję to. Na razie musieliśmy wynająć Cessnę, aby pomóc jej znaleźć ... ale mam nadzieję, że nam się poszczęści.
— Dang Khoa,

Wygląda na to, że nie będziemy w stanie odzyskać naszej rakiety, więc ta dyskusja jest nieco dyskusyjna (mam tylko kilka punktów danych ze stacji naziemnej). Ale dzięki!
— Dang Khoa

@davidcary, the open Circuits: Rocket Computer link is broken
— Mahendra Gunawardena

@MahendraGunawardena: Dziękuję, że mi powiedziałeś. Czy to teraz działa?
— davidcary,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.