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

Akcelerometr żyroskop MPU6500 BASCOM AVR I2C jak odczytać dane?

Marcinwarias99 16 Mar 2016 21:51 5379 33
  • #1 15529990
    Marcinwarias99
    Poziom 8  
    Witam
    Posiadam Akcelerometr/żyroskop cyfrowy MPU6500, który chciałbym połączyć z procesorem ATmega8. Jeśli chodzi o język programowania to częściowo znam bascoma dlatego w tym języku chciałbym napisać program. Akcelerometr żyroskop MPU6500 BASCOM AVR I2C jak odczytać dane? Pojawia się jednak problem z nawiązaniem komunikacji po I2C -Nie wiem jak dostać się do mojego modułu.Mój układ Akcelerometru/żyroskopu wygląda następująco: Akcelerometr żyroskop MPU6500 BASCOM AVR I2C jak odczytać dane?
    Nie jestem pewien czy podany link jest poprawny dlatego ponawiam wprowadzenie adresu: https://obrazki.elektroda.pl/4293568700_1458160502.jpg

    Odnośnie instrukcji obsługi do mojego Akcelerometru/żyroskopu znalazłem coś takiego store. invensense.com/datasheets/invensense/MPU_6500_Rev1.0.pdf

    Próbowałem rozpocząć tematykę od obsługi I2C w Bascomie i znalazłem przydatny artykuł w książce "Programowanie mikrokontrolerów AVR w języku BASCOM" Marcin Wiązania .

    Na stronie 275 autor opisuję zasadę działania I2C oraz przedstawia przykładowy program który zapewnia współpracę procesora z układem transpondera.

    Chciałbym wzorując się na tym przykładzie napisać podobny program jednak nie wiem pod jaki adres mam zgłaszać zapytanie i z jakim adresem będzie odpowiedz.

    Proszę o pomoc w mojej sprawie.

    P.S. Przepraszam jeśli popełniłem jakieś błędy na forum. To mój pierwszy wpis.
  • #2 15533892
    Konto nie istnieje
    Poziom 1  
  • Pomocny post
    #3 15534388
    Konto nie istnieje
    Konto nie istnieje  
  • #5 15535082
    Konto nie istnieje
    Poziom 1  
  • #6 15535099
    Konto nie istnieje
    Konto nie istnieje  
  • #7 15535659
    Marcinwarias99
    Poziom 8  
    Zmodyfikowałem początek programu tak, aby podłączyć inny wyświetlacz i moją Meg8:

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

    Program załadował się do procesora a na wyświetlaczu widoczne jest "x:0" oraz "y:0" Jednak wartości się nie zmieniają.

    Miałem ustawiony wewnętrzny generator RC i nic, w fuse bitach zmieniłem na zew. rezonator i dalej nie działa.(rezonator jest podłączony)

    Dodano po 1 [minuty]:

    Przesyłam ptt_sc z ustawieniami Fuse bits:
    Akcelerometr żyroskop MPU6500 BASCOM AVR I2C jak odczytać dane?Fuse_e..jpg Download (116.14 kB)
  • #8 15535671
    Konto nie istnieje
    Poziom 1  
  • #11 15535898
    Konto nie istnieje
    Konto nie istnieje  
  • #12 15542806
    Marcinwarias99
    Poziom 8  
    Dziękuję wszystkim.
    Kolego "nivasoft" masz racje podłączyłem niewłaściwie wyprowadzenia SDA SCL(już poprawiłem błąd).
    Odnośnie konfiguracji wyświetlacza - mam właściwą konfigurację która pozwala obserwować pola "x:" ,"y:", "z:" w pierwszym wierszu LCD.
    Jest jednak problem bo jeszcze nic konkretnego nie odczytałem na moim LCD.
    kilka razy modyfikowałem program ale nie wiele to wniosło.
    Wstawiam całość programu poniżej (w tej wersji na wyświetlaczu widzę "x:209 y:209 z:209")

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


    Panowie ten program jest mega długi. Proszę dajcie mi coś co pozwoli na początek po prostu odczytać i wyświetlić na wyświetlaczu choć jeden parametr.
    Na przykład odczyt z żyroskopu dla osi x.
    Wtedy będę wiedział, że jest wymiana danych pomiędzy Mega8 a MPU
  • #13 15542831
    Konto nie istnieje
    Poziom 1  
  • #14 15542878
    Marcinwarias99
    Poziom 8  
    Dzięki Radzio za informacje. Jednak czytanie DS jest dla mnie trudne. Nie widzę tam konkretnych komend odnośnie BASCOMA.(https://www.cdiweb.com/datasheets/invensense/MPU-6050_DataSheet_V3%204.pdf)
    kiedyś koledzy pisali, że odczyt/komunikacja za pomocą bascoma jest banalna, Czy ktoś udostępnił by mi kawałek prog. który będzie działał na 100% ?
    Mimo wszystko będę starał się coś dowiedzieć z DS.
  • #15 15543030
    Konto nie istnieje
    Konto nie istnieje  
  • #16 15543180
    Marcinwarias99
    Poziom 8  
    Dziękuję za przesłany program, niestety u mnie nie działa :(*konf. LDC jest zgodna z połączeniem elektrycznym. Na wyświetlaczu jest wyświetlane "209"
    Jakie masz ustawienie Fuse bitów ? zmieniałeś coś czy masz standardowe ustawienia?
    Ja mam zamontowany rezonator 16Mhz, a w fuse bitach ustawiłem rezonator zewnętrzny.(Tak jak na prt_sc , którego kiedyś wysłałem)
  • #17 15543202
    Konto nie istnieje
    Konto nie istnieje  
  • #18 15543850
    Marcinwarias99
    Poziom 8  
    Sprawdziłem połączenia elektryczne - wszystko wygląda ok(schemat połączeń poniżej) Akcelerometr żyroskop MPU6500 BASCOM AVR I2C jak odczytać dane?
    Nie wiem jednak jak zmienić Fuse bity, żeby mieć je ustawione tak jak TY:(
    FF u mnie - to masz na myśli Fusebits?
    D9 u mnie - to Fusebits Hight ?
    Już nie wiem gdzie popełniłem błąd :( a czy MPU może współpracować z Mega8 zasilanego z 5V?
    W schemacie MPU linie SDA i SCL są podciągnięte do 3.3V ?czy poziomy logiczne są zgodne ?

    Dodano po 2 [godziny] 15 [minuty]:

    udało się :) działa:) płytka stylowa miała niewidoczne zwarcie.
    Dziękuje za cenne wskazówki:)
    Mam jeszcze pytanie odnośnie rozdzielczości - Czy da się dla tego programu zwiększyć rozdzielczość- tak aby niewielki wychylenie dawało duże zmiany sygnału? Rozumiem że na chwile obecną jest 256 stanów = 365 stopni.
    Czy da się uzyskać lepszy wynik? Niekoniecznie w pełnym zakresie(wystarczy min 45 stopni)
  • #19 15544775
    Konto nie istnieje
    Konto nie istnieje  
  • #20 15545465
    Marcinwarias99
    Poziom 8  
    Wiem wiem :) będę czytał... :) Zanim to napisałeś próbowałem wcześniej tłumaczyć fragmenty DS w tłumaczu google. Jednak tak jak napisałeś - jakość tłumaczenia jest słaba:) A jeśli chodzi o głowę to jeszcze nie mam mądrej głowy jednak się staram żeby poprawiać/rozwijać swoje możliwości.
    Twoja płytka to bardzo praktyczne/uniwersalne rozwiązanie. Jeszce dziś przeniosę wszystkie moje elementy na podobną płytkę. A tak odnośnie rozdzielczości to wystarczało Tobie to co jest w tym programie ?
  • #21 15823639
    Marcinwarias99
    Poziom 8  
    Witam,
    Po długiej przerwie wracam do tematu programowania i obsługi MPU6050
    Układ, który zbudowałem i zaprogramowałem przy waszej pomocy działa, mój program wyświetla wartości dla osi x i steruje silnikiem prądu stałego.
    Jednak pojawił się jeden problem...
    Jeśli trzymam MPU w ręce to wyświetlane wartości odzwierciedlają położenie, a pozostała część programu steruje silnikiem (w porawo lub w lewo) *Problem zaczyna się w momencie zamontowania MPU na wspólnej konstrukcji z korpusem silnika.
    Drgania generowane przez silnik powodują uzyskanie maksymalnej wartości w MPU(niezależnie) od położenia
    Podsumowując - Układ nie jest odporny na drgania MPU(nawet delikatne uderzenia wkładem od długopisu powodują zakłócenie pomiarów i wystawienie max wartości 255 )
    Odnośnie programu do odczytu danych z MPU - korzystam z fragmentu,który kiedyś zamieścił kolega niveasoft

    Proszę o pomoc
  • #22 15824827
    Konto nie istnieje
    Konto nie istnieje  
  • #23 15828464
    Marcinwarias99
    Poziom 8  
    Stosuje wstępne filtrowanie poprzez całkowanie otrzymanych wyników.
    Zbieram około od 10 do 15 pomiarów a następnie wyliczam z tego wartość średnią i na tej podstawie steruje ślinikiem.(większa ilość próbek wprowadza opóźnienie odpowiedzi układu )
    Mam jeszcze taki pomysł,żeby zmienić pozycje zamocowania układu tak aby poruszać się w przedziale od 0 do 80 a wtedy odrzucać wszystkie wyniki większe od 80(nie liczyć do średniej). :)
    Nie mam możliwości obserwowania wyników na PC - jak to zrealizować ? kupić analizator stanów logicznych?
    Na chwile obecną moje obserwacje polegają na obserwowaniu:
    -wartości chwilowej oraz wartości średniej na wyświetlaczu LCD
    -obserwowaniu odpowiedzi całego układu(sterownik-silnik)

    Dodano po 3 [minuty]:

    Znalazłem analizator za około 40zł (Klon analizatora 8 kanałów).Watro się tym zainteresować?

    Moderowany przez piotrva:

    3.1.18. Nie wysyłaj linków, które po pewnym czasie przestaną być aktywne. To spowoduje, że dyskusja straci jakikolwiek sens.
    Takimi linkami są m. in. linki do aukcji - zamiast nich opisz przedmiot lub podaj jego nazwę - każdy niezależnie od czasu wtedy znajdzie sobie w wyszukiwarce.

  • #24 15828687
    piotrva
    VIP Zasłużony dla elektroda
    Tak, warto zainwestować w taki analizator. Najlepiej kupić na zagranicznym serwisie aukcyjnym
  • #25 15830207
    Konto nie istnieje
    Konto nie istnieje  
  • #26 15830257
    Marcinwarias99
    Poziom 8  
    Poczytam o tej przejściówce UART<->USB :)
    Odnośnie moich zakłóceń, przyszedł mi pomysł aby zastosować filtr Kalmana.
    Znalazłem ciekawy filmik na ten temat https://www.youtube.com/watch?v=qmd6CVrlHOM
    Jednak w moim programie nie wiem jak odczytać żyroskop i jak będzie wyglądał program na filtr Kalmana.
    Znalazłem przykładowy program na filtr Kalmana w Bascomie, jednak nie wiem co oznaczają poszcególne zmienne https://www.youtube.com/watch?v=UlXxjzrQhl0
  • #27 15835014
    Marcinwarias99
    Poziom 8  
    Panowie pomóżcie proszę!
    W moim programie na samym początku jest pełna konfiguracja akcelerometru i żyroskopu.
    Dodatkowo znajduje się fragment, który czyta akcelerometr oś x chciałbym zmienić na odczyt żyroskop oś x.
    Próbowałem zmienić adres odczytywanej danej z 59(akcelerometr_x) na 67(żyroskop_x) ale tak to niestety nie działa:(
  • #28 15835184
    Konto nie istnieje
    Konto nie istnieje  
  • #29 15835310
    Marcinwarias99
    Poziom 8  
    Z okazji urodzin życzę dużo dużo zdrowia oraz wielu sukcesów w życiu prywatnym i zawodowym.
    Zauważyłem, że na rysunku do każdej osi jest opcja 15-8 lub 0-7 zarówno dla akcelerometru jak i dla żyroskopu.
    Myślę,że masz rację - mój adres 59 oznacza że czytam bardziej znaczące bity akcelerometru.
    Skoro próbowałem uruchomić żyroskop wpisując 67(czyli chciałem czytać bardziej znaczące bity) i wyszło mi 0 lub 1 to znaczy,że nie mogłem osiągnąć takiej wartości prawda ?
    Wpisałem teraz 68 (czyli żyroskop- mniej znaczące bity ) teraz wyświetlam wartości tylko jest jeden problem;/żyroskop widzi jak bym czytał oś y ;/ i wynik nie jest stabilny(tzn. cały czas bardzo szybko oscyluje +/- 2)... spodziewałem się stabilnego wyniku - dlaczego tak jest ?
  • #30 15835474
    Konto nie istnieje
    Konto nie istnieje  
REKLAMA