obliczanie nachylenia za pomocą akcelerometru?

16

Mam analogowy akcelerometr ADXL203 na płycie blokowej i chciałem go użyć do pomiaru nachylenia niektórych urządzeń na dość wysokiej częstotliwości (20-30 Hz). Podłączam go do rejestratora CR3000 Campbells, aby wykonać wykrywanie. Czy ktoś ma wskazówki, jak interpretować wyjścia czujnika. dzięki

Troy Jensen
źródło
dziękuję wszystkim za komentarze. bardzo pomocne pozdrowienia TROY
troy jensen
Wiem, że mam najwyższy, ale jeśli nie lubisz mojego, przynajmniej akceptuje kogoś.
Kortuk

Odpowiedzi:

12

Mam tu wiele rzeczy do powiedzenia, a niektóre z nich wymagają porozumienia z pingwinami, a niektóre z penjuinem.

cr3000

Próbkowanie cr3000 przy 16 bitach i 100 Hz będzie próbowało trochę wolniej, aby łatwo usunąć szum z danych, ale ze znacznie wyższą precyzją, niż będzie to możliwe. Wątpię, czy można uzyskać 13 lub 14 bitów precyzji bez całkiem dobrych algorytmów filtrowania. Akcelerometry nauczyły mnie, że wibracje to diabelskie, piaskowane fonony.

Kondensator wyjściowy

Musisz upewnić się, że robisz tak, jak mówi arkusz danych i podaje teoria sygnałów. Aby zacytować arkusz danych:

Wyjście ADXL103 / ADXL203 ma typową szerokość pasma 2,5 kHz. Użytkownik musi w tym momencie przefiltrować sygnał, aby ograniczyć błędy aliasingu. Szerokość pasma analogowego nie może przekraczać połowy częstotliwości próbkowania analogowo-cyfrowego, aby zminimalizować aliasing. Analogową szerokość pasma można dodatkowo zmniejszyć, aby zredukować szumy i poprawić rozdzielczość.

Oznacza to, że musisz wybrać kondensator, aby utrzymać częstotliwość poniżej 50 Hz. Jeśli umieścisz go powyżej tego, możesz uzyskać aliasing, a aliasing powoduje, że hałas wibracyjny jest diabłem, z którym podpisałeś umowę. Podają, jak obliczyć poziomy hałasu z urządzenia, a przy szerokości pasma 50 Hz szum od szczytu do szczytu wynoszący 0,006 * Grawitacja nawet nie zostanie zauważona, jeśli masz to na urządzeniu z wibracjami.

Interpretacja danych

To prawdopodobnie najbardziej Cię interesuje i jest stosunkowo łatwe do zrobienia. Musisz oznaczyć czas, kiedy urządzenie jest w pozycji neutralnej, to znaczy, gdy jest płasko i masz go względnie nieruchomo. Daj mu sekundę lub dwie w tym momencie, a następnie możesz wziąć medianę tych danych, aby określić napięcie nie-G. Następnie możesz użyć tego jako punktu do porównania urządzenia. Od tego momentu mogę bezpośrednio zacytować arkusz danych:

Gdy akcelerometr jest prostopadły do ​​grawitacji, jego moc wyjściowa zmienia się prawie 17,5 mg na stopień pochylenia .

Możesz więc po prostu użyć tego przybliżenia, jeśli nie zamierzasz przechylać zbyt dużo, ale będziesz musiał użyć geometrii, jeśli planujesz przechylać zarówno w kierunku, jak i pod kątami, które nie są bardzo małe.

Jeśli zamierzasz być większy, mają nawet równania określone w następujący sposób:

PITCH = ASIN (AX / 1 g)
ROLL = ASIN (AY / 1 g)

O ile mogę tel. Twoje urządzenie daje zmianę 1V na 1G przyłożonego na nim przyspieszenia. Jeśli wykonałeś fazę kalibracji, powinieneś być w stanie wykonywać pomiary, odejmować przesunięcie i masz liczbę doświadczonych Gs.

Przestań czytać tutaj, chyba że napotkasz problemy lub chcesz uzyskać więcej informacji, aby poprawić podejście.

Dodałem sporo więcej mówiąc o innych podejściach i metodach poprawy twojego podejścia do szybko zmieniających się systemów lub systemów, w których zamierzasz zaprogramować urządzenie wykonujące próbki.

Częstotliwość próbkowania

Próbkowanie musi być znacznie szybsze niż prędkość, z jaką Twoje urządzenie zmienia kierunki, w których przyspiesza, ponieważ musisz mierzyć orientację 20-30 razy na sekundę. musisz być w stanie mierzyć wystarczająco szybko, aby odfiltrować hałas wibracji i przyspieszenie z powodu innych efektów, które okazały się dość duże podczas pracy z akcelerometrem.

3-osiowy akcelerometr

Po drugie, jeśli masz akcelerometr trzyosiowy, możesz dość łatwo rozpoznać, kiedy jedna oś traci część przyspieszenia z powodu grawitacji (tj. Gdy oś z ma spadek wielkości o 2 m / s ^ 2, wiesz, że zysk, który widziałeś na drugiej osi to grawitacja). Nadal będzie to nieprzyjemne, ale ogólnie będzie dodawane przyspieszenie, które daje prędkość potrzebną do zmiany orientacji, a następnie zmiana przyspieszenia z powodu zmiany orientacji, często pozwalając na rozpoznanie orientacji.

Problemy z 2 osiami

Będzie to, jak powiedział penjuin, prawie niemożliwe z 2-osiowym akcelerometrem i co najwyżej szkicowe, jeśli masz system, który może mieć 20-30 różnych orientacji na sekundę lub jeśli potrzebujesz dokładnej miary orientacji na cały czas. Jestem pewien, że uczeń mistrza mógłby napisać na ten temat całkiem niezłą pracę magisterską lub doktorat mógłby napisać rozprawę na temat ulepszania tego algorytmu.

Hałas wibracyjny

Aby dodać więcej, jeśli umieścisz urządzenie na czymś, co utrzyma je statycznie zablokowane na ruch urządzenia, ale tłumi wibracje, otrzymasz znacznie lepsze liczby i nie będziesz potrzebować tak dużo oprogramowania filtrującego. Między akcelerometrem a urządzeniem można umieścić prostą piankową wyściółkę, a jeśli jest cyfrowa, nie powinno to zwiększać szumu elektrycznego i pomagać w pochłanianiu niektórych drgań. Należy to zrobić tylko w przypadku problemów z hałasem wibracyjnym.

Cyfrowy akcelerometr

Sugerowałbym cyfrowy akcelerometr, do którego można podłączyć SPI. Dane mogą być wyrejestrowywane z bardzo bardzo dużą szybkością i możesz pracować na zapleczu, ponieważ twój SPI stale pracuje nad ładowaniem następnego zestawu wartości. Będziesz musiał mieć fajny mikrokontroler, jeśli chcesz to zrobić cyfrowo. Jeśli możesz podać mi dokładniejsze informacje na temat tego, co chcesz zrobić, mogę wyrazić lepszą opinię. Jeśli potrzebujesz ostrzeżenia opartego na wykrywaniu przechyłu, to powinno być bardzo łatwe do zrobienia ze wszystkimi analogami, ale jeśli chcesz zmierzyć pozycję i kąt sprzętu podczas pracy, przygotuj się do pracy.

Daj mi znać, jeśli mogę coś dodać, aby ta odpowiedź była bardziej zrozumiała lub dotyczyła tego, czego szukałeś.

Kortuk
źródło
1
Dla przypomnienia, ta odpowiedź jest epicka.
pingswept
1
Dr Kortuk, doktor akcelerometrów! :-)
Jay Atkinson
Napisałem tę odpowiedź, ponieważ ciągle myślałem, że o czymś zapomniałem, a potem zdałem sobie sprawę, że to było trochę długie, i dodałem naprawdę szybką odpowiedź, ale wydaje się, że ludzie wolą długą odpowiedź.
Kortuk
Jeśli chodzi o hałas wibracyjny, mogłem mieć większą ilość w czasie pracy z powodu obecności bezszczotkowego silnika prądu stałego (BLDC), ale przed jego włączeniem nadal występowały znaczące wartości wibracji.
Kortuk
3

Napisałem i przepisałem tę odpowiedź kilka razy z wieloma szalonymi pomysłami matematycznymi, ale szczerze mówiąc nie sądzę, że można tego dokonać z jakąkolwiek dokładnością. Możesz wykonać matematykę wektorową, ale co jeśli:

  • Obiekt przestaje się poruszać
  • Obiekt ma stałą prędkość
  • Obiekt uderza w guz / ty uderzasz go
  • Generowana siła poruszająca się w górę pochyłości jest poniżej rozdzielczości osi Z.

Chociaż jestem pewien, że istnieje coś szalonego, aby to zrobić, nie jestem pewien, czy byłoby warto; akcelerometry po prostu nie są przeznaczone do tego zadania (przynajmniej o ile mi wiadomo). Dla tego, co próbujesz osiągnąć, sugerowałbym podejście żyroskopowe przy użyciu dowolnego z nich , z których wszystkie byłyby dość odporne na wszystkie powyższe problemy.

Jeremy
źródło
Akcelerometry są do tego przeznaczone, istnieje cała sekcja, w jaki sposób to zrobić. Akcelerometry w wielu przypadkach są bardzo bardzo tanie, a czasem koszt jest większym problemem niż doskonała funkcjonalność.
Kortuk
3
Zawsze staram się to wyjaśnić uczniom i dodam to tutaj, ponieważ uważam, że jest to ważna koncepcja. Inżynieria nie zawsze polega na robieniu tego w najlepszy sposób, ale na robieniu tego w taki sposób, aby użytkownik nie mógł odróżnić niczego poza ceną.
Kortuk
2
Jest coś, co należy powiedzieć o zrobieniu tego w pierwszej kolejności, i jest wiele do powiedzenia, że ​​robimy to lepiej niż ostatni facet.
Kortuk
Zgadzam się, ale to zależy od twoich motywów (których Troja nie powiedziała); chcesz, żeby działał dobrze, czy chcesz się uczyć? Nie muszą się wzajemnie wykluczać, ale nie napisalibyście własnego kompilatora tylko po to, aby mrugnąć diodą LED, chyba że chcielibyście dowiedzieć się czegoś o jego konstrukcji.
jeremy
Tak, dodam, że aby przedyskutować twoją odpowiedź, ogólnie, jeśli on będzie w stanie powiedzieć inną orientację 30 razy na sekundę, będzie miał gigantyczne przyspieszenie, co z kolei oznacza, że ​​potrzebujesz dużo więcej niż 100 próbek na druga.
Kortuk
3

Jeśli dobrze rozumiem arkusz danych, moc wyjściowa dla każdej osi będzie zmieniać się między 1,5 V a 3,5 V podczas przechylania wokół osi. Gdy urządzenie jest płaskie (ignorując błąd wyrównania pakietu ± 1 stopień), oba wyjścia powinny odczytać 2,5 V.

Jeśli potrzebujesz zmierzyć nachylenie tylko w jednym kierunku, możesz wziąć arcsin odchylenia od 2,5 V, aby uzyskać kąt w radianach, a następnie przeliczyć na stopnie. Jeśli urządzenie może przechylać się w dowolnym kierunku, możesz obliczyć dwa kąty, a następnie obliczyć z nich kąt złożony.

Mówiąc wprost: kąt wokół jednej osi = (180 / π) * arcsin (Vout - 2,5)

Aby uzyskać dobre pasmo przenoszenia, potrzebujesz małych kondensatorów wyjściowych, Cx i Cy. Od przypisu 6 na str. 3 z arkusza danych, wygląda na to, że 0,02 uF dałoby ci pasmo 250 Hz, co prawdopodobnie jest odpowiednie dla twojej częstotliwości próbkowania. Być może możesz osiągnąć nawet 0,1 uF, ograniczając szerokość pasma do 50 Hz, ale twoje sygnały zaczną się tłumić.

pingswept
źródło
Nie sądzę, by to osłabiło sygnały, chyba że chodzi o wyższe częstotliwości, co jest sednem ograniczenia. Musi przejść do częstotliwości 50 Hz lub niższej, aby dopasować urządzenie do próbkowania danych.
Kortuk
1
Ach, nie myślałem o tym z perspektywy aliasingu. Nadal uważam, że duże litery będą tłumić sygnały o wysokiej częstotliwości, ale w tym przypadku to dobra rzecz. Tak, ustawienie pasma na około 50 Hz jest dobre.
pingswept
3

Dodaję drugą odpowiedź, ponieważ moja druga jest duża i możesz po prostu chcieć prosta.

Ograniczenie filtra musi wynosić 0,10 uF lub więcej, aby utrzymać Cię poniżej częstotliwości aliasingu (50 Hz). Musisz podać fazę kalibracji na kilka sekund z urządzeniem w pozycji siedzącej z całym przyspieszeniem grawitacyjnym w kierunku Z, aby określić zerowy punkt G.

Napięcie, które mierzysz dla swojego zerowego punktu G, prawdopodobnie będzie inne dla kierunku X i Y, nie reprezentuje nic. Po prostu weź uzyskane napięcie i odejmij je. To napięcie, z odjętym przesunięciem, jest liczbą Gs otrzymywaną w tym kierunku.

Weź arcsin i dostaniesz swój kąt w tym kierunku.

To ignoruje hałas i inne przyspieszenie. bądź przygotowany na pojawienie się NaN, jeśli masz go całkowicie przechylony i słychać hałas.

Kortuk
źródło
0

Aby uzyskać dowolny kąt, musisz zmierzyć przyspieszenie grawitacyjne zarówno w kierunku X, jak i Y. odejmij środkowe napięcie (2,5 V), aby zero to „brak przyspieszenia”.

Teraz możesz znaleźć kąt za pomocą arcsin (y / x). Ale to denerwujące w użyciu, ze względu na podział i ponieważ znak jest niejednoznaczny, więc to, czego naprawdę chcesz, funkcja C atan2 (y, x). atan2 () otrzymuje odpowiedni znak dla wszystkich 360 stopni.


Nie na temat, ponieważ nie używasz mikro: jeśli szukasz atan2 () do użycia na mikrokontrolerze, na mojej stronie znajduje się generator atan2 (): http://vivara.net/cgi-bin/ cordic.cgi

markrages
źródło
Nie jest to gwarantowane napięcie 2,5 V dla 0G. ponieważ prawdopodobnie użyje komputera do wykonania matematyki, wątpię, aby metoda, którą użył do wykonania matematyki, miała znaczenie.
Kortuk