Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Hoverboar Kawasaki KX-PRO6.5 - Nie chce skalibrować żyroskopów - Rozwiązanie

15 Lip 2020 16:25 360 3
  • Poziom 32  
    Witam
    Po włączeniu zapala się na czerwono i miga dioda w podeście.
    Kalibracja - deska jej nie przechodzi, po próbie kalibracji znów zapala LED w podłodze od prawej strony na czerwono, po zamianie żyroskopów sytuacja identyczna. Same żyroskopy działają i poprawnie sterują silnikami, jak sprawdza się je indywidualnie. Ale kalibracji deska nie chce przejść i LED koło procesora na płycie głównej miga 9 razy na czerwono.
    Dodatkowo przy próbie jazdy szarpie silnikami.
    Napięcia wewnątrz prawidłowe tj. 36, 14.2, 12, 5, 3.3 [V], oprzewodowanie sprawdzone.
    Ma ktoś jakiś pomysł
    Wie ktoś gdzie można znaleźć co oznacza 9 krotne miganie LED.
  • Pomocny post
    Poziom 32  
    Trochę posiedziałem nad tą deską i ustaliłem kilka rzeczy, może komuś się przydadzą i może ktoś może pomierzyć to w swoim Hoverboard dla weryfikacji.
    Egzemplarz deski którą robiłem, ma problem z odczytem prawego żyroskopu, chociaż żyroskop sprawny, zamiana miejscami nie przynosi poprawy.

    Odczyt danych z płyt żyroskopów jest realizowany po szynie I2C
    Do prawego żyroskopu sygnał SCL idzie w trochę w innej postaci niż sygnał do lewego, może wynikać to z tego że procesor GD32F103RCT6 wykorzystywany w tej desce ma zrealizowany odczyt I2C sprzętowo i softwerowo
    - z pinów 29 (port PB10) SCL i 30 (port PB11) SDA - transmisja realizowana sprzętowo
    - z pinów 16 (port PA2) SCL i 17 (port PA3) SDA - transmisja realizowana softwerowo
    Przynajmniej ten procesor na 16 i 17 pinie nie posiada sprzętowego I2C, więc zrealizowali to sprzętowo.

    Nie wiem czy różnice w przebiegach sygnału SCL wynikają z sposobu realizacji czy z usterki deski. Deska nie odczytuje prawidłowo prawego żyroskopu i nie chce się skalibrować, na oscylogramach widać że co szóstą ramkę na poprawnie odczytywanym żyroskopie możemy zauważyć dodatkowy impuls w sygnale SCL. Widać to też na oscylogramach z oscyloskopu.
    Nie mniej postanowiłem podać sygnał SCL na błędnie odczytywany żyroskop z pinu PA2 (układu GD32F103RCT6) czyli z softwerowego I2C i odciąć oryginalny sygnał SCL, deska skalibrowała się poprawnie, działa bez zastrzeżeń. Nie wiem dlaczego procesor podaje sygnał SCL jako inne przebiegi na każdy żyroskop, pewnie wymiana płyty głównej załatwi sprawę.
    Dołączam oscylogramy i kawałek na prędce naszkicowanego schematu i plik programu z analizatora stanów logicznych, z uwagi na pośpiech oscylogramy zdjęte aparatem z oscyloskopu.

    Hoverboar Kawasaki KX-PRO6.5 - Nie chce skalibrować żyroskopów - Rozwiązanie

    Hoverboar Kawasaki KX-PRO6.5 - Nie chce skalibrować żyroskopów - Rozwiązanie

    Płyta MAINBOARD: procesor ARM GD32F103RCT6 (64piny)
    Dokumentacja Link
    Płyta żyroskopu lewego i prawego
    - czujnik położenia i przyspieszenia zrealizowany na układzie ICM20618 (na układzie opis IC2618
    Dokumentacja Link
    - procesor ARM GD32f130C8T6
    Dokumentacja Link


    MODYFIKACJĘ KTÓRĄ WYKONAŁEM ZROBIŁEM TYLKO DO TESTÓW ŻEBY USTALIĆ USTERKĘ, WYKONUJĄC MODYFIKACJĘ W WŁASNEJ DESCE ROBISZ TO NA WŁASNĄ ODPOWIEDZIALNOŚĆ.

    Pochwała od moderatora dt1:

    Dzięki za bardzo szczegółową analizę problemu i zasugerowanie ciekawego rozwiązania :)




    Hoverboar Kawasaki KX-PRO6.5 - Nie chce skalibrować żyroskopów - Rozwiązanie
  • Poziom 33  
    Bardziej tego skomplikować nie mogli.
    Philips jak I2C wymyślał to chyba nie przypuszczał że ktoś tak to wykorzysta.
    Szacun że aż tak to rozgryzłeś i rozrysowałeś.
  • Poziom 32  
    Mam pytanie do Was
    Trochę się rozpędziłem z oceną iż między procesorami ARM jest łączność zrealizowana jako I2C, zasugerowałem się tym że mój analizator rozpoznał to jako I2C, ale coś tu się nie zgadza. Transmisja w I2C rozpoczyna się od zmiany stanu na linii SDA przy stanie wysokim na SCL, potem mamy 8 impulsów zegarowych na SCL i wtedy na linii SDA mamy przesłanie danych. A tutaj jest jakoś inaczej - dziwnie. Sygnał zegarowy ma dużo mniejszą częstotliwość niż zmiany na linii danych.
    Rozpoznaje ktoś co to protokół, bo mam wątpliwość że to normalne I2C chyba że jakaś odmiana I2C TWI itp.