Spisu treści:

Pomiar kąta za pomocą żyroskopu, akcelerometru i Arduino: 5 kroków
Pomiar kąta za pomocą żyroskopu, akcelerometru i Arduino: 5 kroków

Wideo: Pomiar kąta za pomocą żyroskopu, akcelerometru i Arduino: 5 kroków

Wideo: Pomiar kąta za pomocą żyroskopu, akcelerometru i Arduino: 5 kroków
Wideo: Układy dyskretne (dyskretyzacja równań stanu), filtr Kalmana 2024, Lipiec
Anonim
Pomiar kąta za pomocą żyroskopu, akcelerometru i Arduino
Pomiar kąta za pomocą żyroskopu, akcelerometru i Arduino

Urządzenie jest wstępnym prototypem tego, co ostatecznie stanie się robotem samobalansującym, jest to druga część dziury (odczytaj akcelerometr i kontroluj silnik do samobalansowania). Pierwsza część zawierająca tylko żyroskop znajduje się tutaj. Na tej instrukcji zmierzymy kąt za pomocą żyroskopu i akcelerometru oraz za pomocą techniki łączenia obu czujników w celu uzyskania gładkiego sygnału. Technika ta nazywa się „filtrem komplementarnym”.poprzednia

Krok 1: Czego będziemy potrzebować:

Czego będziemy potrzebować
Czego będziemy potrzebować
Czego będziemy potrzebować
Czego będziemy potrzebować
Czego będziemy potrzebować
Czego będziemy potrzebować
Czego będziemy potrzebować
Czego będziemy potrzebować

Niektóre części można wymienić, a niektóre modyfikacje w kodzie muszą być wykonane, aby pasowały do twojego sprzętu. W tym projekcie wykorzystamy:- Płytka prototypowa- Mikrokontroler, ja użyłem Arduino- Płytka- Przewody- Przewody połączeniowe- Żyroskop XV-8100- Nunchuck Wii (dla akcelerometru)- Adapter Nunchuck Wii do Arduino

Krok 2: Budowanie…

Budynek…
Budynek…
Budynek…
Budynek…
Budynek…
Budynek…

Obwód składa się z żyroskopu podłączonego bezpośrednio do portu 0 w twoim arduino i nunchuck wii podłączonego do portu I2C. Montaż żyroskopu:1. - podłącz żyroskop na płytce stykowej2. - przewód kiedykolwiek: - pin Vo z żyroskopu podłączony do portu analogowego 0 w arduino (przewód jasnopomarańczowy) - pin G z żyroskopu podłączony do masy (biały przewód) - pin V+ z żyroskopu podłączony do Vdd (3,3 V) (przewód pomarańczowy) akcelerometr:1. - podłącz adapter do nunchuck2. - podłącz nunchuck do arduino za pomocą adaptera3. - umieść czujnik przyspieszenia jak na zdjęciu powyżej

Krok 3: Dodatkowe informacje, zanim przejdziemy dalej

Kilka dodatkowych informacji, zanim przejdziemy dalej
Kilka dodatkowych informacji, zanim przejdziemy dalej
Kilka dodatkowych informacji, zanim przejdziemy dalej
Kilka dodatkowych informacji, zanim przejdziemy dalej
Kilka dodatkowych informacji, zanim przejdziemy dalej
Kilka dodatkowych informacji, zanim przejdziemy dalej

Z obu czujników możemy zmierzyć kąt, ale przy użyciu dwóch różnych technik. Aby zmierzyć kąt za pomocą żyroskopu, musimy zintegrować sygnał. Ale po co to robić? Ponieważ żyroskop podaje nam prędkość kątową, więc prostym sposobem na uzyskanie kąta jest pomnożenie prędkości kątowej przez czas [kąt = kąt + w * dt]Aby zmierzyć kąt za pomocą akcelerometru, musimy wyczuć grawitację w każdym osi akcelerometru, co oznacza rzut przyspieszenia ziemskiego na każdy kierunek czujnika, daje nam wyobrażenie o kącie. [angle_accel = arctg(Ay / sqrt(Ax^2 + Az^2))]Więc dlaczego użyjemy dwóch czujników zamiast jednego? Aby skorzystać z obu właściwości czujnika. Jeśli spojrzysz na grafikę, że dane z żyroskopu stale rosną, nazywa się to dryfem, a dane akcelerometru zmieniają się bardzo w krótkim czasie. A jak połączyć oba sygnały? Użyjemy techniki zwanej filtrem komplementarnym. Nie znam dokładnej teorii, która za tym stoi, ale działa dobrze. W Internecie jest kilka informacji, po prostu wyszukaj je w Google, jeśli potrzebujesz więcej informacji. Ten link zawiera wiele informacji i może być przydatny.filtered_angle = HPF*(filtered_angle + w* dt) + LPF*(angle_accel); gdzie HPF + LPF = 1Wartości HPF i LPF można znaleźć pod tym linkiem, w pliku filter.pdf. Dzięki wam z "The DIY Segway". Tylko do celów testowych ustawimy te wartości w ten sposób, HPF = 0,98 i LPF = 0,02.

Krok 4: Kod:

Kod jest adaptacją kodu, którego użyłem w innym projekcie. Prawdopodobnie są jakieś nieużywane zmienne. Do odczytania danych o nunchucku użyłem biblioteki z https://todbot.com/blog/. Dziękuję Tod E. Kurt. Komentarze do kodu są po portugalsku, jak tylko będę miał wolny czas, przetłumaczę go. Wyjście kodu przez linię szeregową kilka liczb z tym wzorem:dt:w:teta:pitch: filter_teta $time:angular_velocity:gyro_angle:accel_angle:filtered_angle$Możesz więc zapisać te wartości na terminalu szeregowym i narysować grafikę lub użyć kąta do innych rzeczy. Jeśli potrzebujesz wyjaśnień dotyczących kodu, możesz zapytać. Kod jest rozpinane. Po prostu rozpakuj, otwórz i wgraj do swojego arduino.

Krok 5: Testowanie i wnioski

Testowanie i wnioski
Testowanie i wnioski
Testowanie i wnioski
Testowanie i wnioski

Aby przetestować system, zapisałem dane za pomocą programu o nazwie Termite, a następnie zaimportowałem je do programu Excel i wykreśliłem grafikę, aby zobaczyć, jak dobry jest mój filtr. Wyniki są niesamowite. Oczywiście możesz użyć sygnału do napędzania silnika lub innych rzeczy. Wszelkie uwagi, wszelkie wątpliwości, brak jakichkolwiek informacji, po prostu powiedz mi, a ja to poprawię. Jeśli Ci się to podoba, oceń. Dziękuję wszystkim.

Zalecana: