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_FORMAT
rejestrem (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.
źródło
Odpowiedzi:
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 ):
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,
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
(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 .
źródło