logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Rozwiązano] Jak poprawnie obliczać odchylenie kątowe w stopniach z MPU6050 w Bascom?

tomaszdko 05 Kwi 2020 20:44 660 2
REKLAMA
  • #1 18592323
    tomaszdko
    Poziom 12  
    Posty: 162
    Pomógł: 6
    Ocena: 18
    Witam panowie.

    Czy ktoś z Was bawił się MPU6050 ? W bascom trudno znaleźć kod taki co by zamieniał G na odchylenie kątowe w stopniach (na arduino jest cała masa ale tam mają biblioteki , podstawiasz zmienne i po sprawie).
    Na razie rozpracowuję akcelerometr , właściwie chodzi ale nie do końca . Odchylając oś X pięknie oblicza do ale dochodząc do 90 stopni kąta pełnego oś Y zaczyna szaleć (pokazuje co chce przy małych odchyłach na osi Y).
    Identycznie jest kiedy odchylam oś Y a X jest w miejscu i objaw ten sam przy 90 stopniach Y , X zaczyna szaleć . Kiedyś miałem moduł z adxl335 i było identycznie więc to na 100% wina w podejściu do kodu , stawiam na użycie funkcji ATN2(x,y) [url=]https://avrhelp.mcselec.com/index.html?atn2.htm[/url] . Interesuje mnie też żyroskop i jak go obrobić ale najpierw możliwe poprawki z akcelerometrem.Jeśli ktoś (programujący w C) wie jakie funkcje użyć w zastępstwie i zarysować szkic programu też był bym zadowolony.

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod


    Chyba że ktoś ma gotowca to by mnie bardziej cieszyło .
  • REKLAMA
  • #2 18613554
    tomaszdko
    Poziom 12  
    Posty: 162
    Pomógł: 6
    Ocena: 18
    Problem z akcelerometrem właściwie rozwiązany . Na PROCESSING 3.5.4 ładnie się obraca w każdej osi . Teraz mnie bardziej interesuje Żyroskop .

    Wyciągam surowe dane i dziele przez 32.8 i dalej nie mogę zatrybić jak to zamienić na stopnie.

    To jest kod w arduino :
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    a mnie interesuje ta część :

    /*Now we integrate the raw value in degrees per seconds in order to obtain the angle
    * If you multiply degrees/seconds by seconds you obtain degrees */
    /*---X---*/
    Gyro_angle_x = Gyro_angle_x + Gyr_rawX*elapsedTime;
    /*---X---*/
    Gyro_angle_y = Gyro_angle_y + Gyr_rawY*elapsedTime;

    i ta wskazująca czas :

    timePrev = time; // the previous time is stored before the actual time read
    time = millis(); // actual time read
    elapsedTime = (time - timePrev) / 1000; //divide by 1000 in order to obtain seconds

    może ktoś to mi przetłumaczyć ? co i jak zrobić.
  • #3 18676874
    tomaszdko
    Poziom 12  
    Posty: 162
    Pomógł: 6
    Ocena: 18
    Temat zamykam , problem rozwiązany.
REKLAMA