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.

Dang Khoa
źródło
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 .

Davidcary
źródło
ś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,