Skocz do zawartości

Dwukołowy robot balansujący


asdpii0

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.

Link do komentarza
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.

Link do komentarza
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

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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

Link do komentarza
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

Link do komentarza
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?

Link do komentarza
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!

Anonim
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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.