Skocz do zawartości
asdpii0

Dwukołowy robot balansujący

Pomocna odpowiedź

Podoba Ci się ten projekt? Zostaw pozytywny komentarz i daj znać autorowi, że zbudował coś fajnego!

Masz uwagi? Napisz kulturalnie co warto zmienić. Doceń pracę autora nad konstrukcją oraz opisem.

Mega kawal dobrej roboty^^!

Czy bylo to wykonywane w ramach pracy inz/mgr?

w jakim jezyku bylo pisane oprogramowanie mikrokontrolera?

Czy kolega bylby taki mily i udostepnil tu badz na privie biblioteke obslugujaca modul MPU 6050?

Sam mecze sie z tym modulem od jakiegos czasu ale porzadnych bibliotek w C w internecie jak na lekarstwo a przerabianie bibliotek z arduino po 3000 linijek kodu troche mnie jeszcze przerasta.

Udostępnij ten post


Link to post
Share on other sites

Ciekawy robot, estetycznie wykonany. Podoba mi się pomysł z zmianą parametrów do PID poprzez aplikacje na komputerze, na pewno bardzo to przyśpieszyło pracę. Kiedyś jak robiłem wahadło odwrócone to można było się zamęczyć przeprogramowując ciągle układ z nowymi parametrami.

Udostępnij ten post


Link to post
Share on other sites

Dzięki bardzo za miłe słowa 😃

Wstępnie na silnikach DC był zrobiony hobbistycznie, a teraz ten jako praca inżynierska jest robiony 🙂

Program w języku C (kompilator XC16 dla PICów 16bitowych)

W załączniku obsługa modułu I2C i biblioteki do MPU6050 (przerobione gotowe, które kiedyś znalazłem chyba do jakiegoś PIC18F ale źródła już nie pamietam niestety).

Jeśli chodzi o ten program na PC to jest on właśnie wynikiem poirytowania ciągłym przeprogramowywaniem xd i powiem szczerze, że warto było napisać lepszą warstwe aplikacyjna komunikacji, bo zaoszczedziło to bardo dużo czasu i teraz przy chęci dodania opcji jak sterowanie to było w zasadzie dopisanie kilku linijek do case'a 🙂

i2c_MPU6050.rar

Udostępnij ten post


Link to post
Share on other sites

Bardzo fajny robocik gratuluję wykonania i powodzenia na obronie. Zastanawia mnie natomiast inna rzecz jak rozwiązałeś sprawę sterowania silnikami krokowymi? Chodzi mi konkretnie o przełożenie wartości jaka wychodzi z PIDa na pracę silników? Jak to przeliczasz bo model matematyczny (nie wiem czy taki wykonałeś) zakłada, że sterowaniem jest moment obrotowy w Nm lub jeśli rozpiszesz również dynamikę silników to sterowanie jest napięciem w V a z tego co się orientuję obroty silników krokowych a co za tym idzie moment i przykładane napięcie zależą od odstępu czasowego między krokami. Powtórzę się jak to przeliczasz? I jeszcze czy zastosowałeś sterowanie mikrokrokowe bo na małych obrotach silniki takie mają tendencję do drgań co w tego typu konstrukcji jest niedopuszczalne.

Pozdrawiam

Udostępnij ten post


Link to post
Share on other sites

dzięki 🙂

Model wyprowadzilem dla silników DC na poczatku ze względu, że pełno przykładów tego jest. Przy silnikach krokowych miałem tygodniowy przestuj, bo jak? Problemem jest skomplikowany model silników krokowych oraz jego nieliniowość (najgorzej jeśli chodzi o moment w funkcji wychylenia wału), więc przyjąłem MAŁE uproszczenie... założyłem, że silniki bez żadnych opóźnień przyjmują zadane położenie (kroki), więc steruje bezpośrednio wałem silnika. Model wychodzi dzięki temu prościutki... ale mam z nim problemy (albo z parametrami, bo ciężko wyznaczyć moment bezwładności albo środek cięzkości skoro silniki to 90% całej masy xd). Podsumowując to co wychodzi z mojego wewnetrzego regulatora jest to poprostu przyśpieszenie wału silnika (kół) w obr/s^2. Tutaj wtrące, że używam sterowania mikrokrokowego z podziałem 1/8 (zadowalająco wygładzone jest już mi się wydaje, a nie chciałbym zwiększać jeszcze bardziej prądu silników), więc mając obr/s prosty iloczyn:

wyjście z regulatora * liczba kroków silnika na obrót * podział kroku = liczba kroków /s

W moim przypadku kod wygląda tak:

acceleration = (float)Angle.WartoscWyjsciowa*1600;
velocity += acceleration*Tp;

(małe uproszczenie jest cholernie duże dlatego dużymi literami i pogrubione 😋)

Pozdrawiam

Udostępnij ten post


Link to post
Share on other sites

Fajna konstrukcja 🙂

Mam pytanie.

Czy w takich konstrukcjach jest tak, że łatwiej steruje się robotem jeśli ma wysoko położony środek ciężkości?

Udostępnij ten post


Link to post
Share on other sites

Tak, łatwiej jest sterować takim robotem, kiedy środek ciężkości jest jak najdalej od osi obrotu kół.

Udostępnij ten post


Link to post
Share on other sites

Miło widzieć to po zmontowaniu. Całkiem zgrabnie Ci wyszło 😃

Udostępnij ten post


Link to post
Share on other sites

asdpii0, Czy mozesz wrzucic obsluge i2c tego zyroskopu? mam caly czas problem z odczytami, ciagle odczytuje ze zyro daje 0 we wszystkich osiach, accel 26728 i ze niby w kazdym rejestrze jest wartosc 104 :| o co tu moze chodzic? pomozesz?

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...