Skocz do zawartości

Mindstorms, silnik działający jak serwo, jak?


s_13

Pomocna odpowiedź

Jako, że to mój pierwszy post, wypada się przywitać, więc witam się 🙂

A teraz do sedna. Nie wiem jak to zrobić, aby silnik zachowywał się jak serwo (które w mindstormie nie występuje). Czyli ramię przymocowane do osi wychylało się o zadany kąt, odczytywany na bieżąco, ot choćby z czujnika światła. Silnikiem można sterować zadając mu obrót o okreslony kąt, ale to nie to. Nadmienię, że ogarniam tylko ( aż... i to z ogromnym wysilkiem) domyslny program bloczkowy do ev3, żadne tam pisanie kodu 🙂, chociaż z funkcją liniową (podobno tutaj niezbędną) już sobie daję radę 🙂). Pomóżcie "zielonemu" i "humaniście" wybrnąć z twarzą przed synem 8-mio letnim "programistą. "

Link do komentarza
Share on other sites

Zgadza się, tylko ten tryb to jest sterowanie obrotami: w zadanym czasie, w zadanej liczbie obrotów, albo o zadany kąt. Nie da się po prostu przełączyć silnika w tryb serwa, który odczytuje aktualny odchył względem ustalonej pozycji "0". Próbowałem ożenić bloczek mierzący obroty silnika (w stopniach obrotu) z bloczkiem sterowania silnikiem, wsadzając po drodze czujnik światła. Teoretyzowałem, że jak od odczytu ilości światła (0-100) odejmę aktualny odczyt miernika obrotu kątowego (po wcześniejszym zresetowaniu w pozycji "0"), i przeniesieniu wyniku na wejście sterujące obrotem kątowym silnika, otrzymam ładnie działający algorytm odchylający ramię od 0 do 100 stopni... niestety, w praktyce ramię "silnikoserwa" buja się niestabilnie w te i we wte, aż w końcu "rzuca się" w skrajną pozycję i blokuje 🙁

załączam printscrena moich prób.

Link do komentarza
Share on other sites

s_13, bujanie się niestabilnie to z mojego doświadczenia ulubione zachowanie Lego Mindstorms. Z tego co wiem obrót o kąt to najbliżej serwa jak to potrafi niestety.

Szczerze nie lubię tego zestawu. Tyle zmarnowanego potencjału.

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

No i wspólnymi siłami (ja i potomek) udało się coś tam zdziałać🙂. Nie wkleję teraz screena, ale opiszę (sorry, że zbyt łopatologicznie i niefachowymi terminami się posługuję):

Najpierw kalibruję czujnik, czyli ustawiam nad czarnym tłem i zapisuję wartość jako minimum, potem białe tło i maximum. Wychodzi, że czarne to 0, białe to 100. Tworzę zmienne "odczyt" i "ostatni_odczyt" ustawiam je wstępnie na 50, teraz w pętli: odczyt czujnika, zapis do "odczyt", odejmuję "ostatni_odczyt", wynik wychodzi do sterowania silnika, jako obrót o x stopni (wychył w stopniach od -50 do 50, jeśli nie pasi, to dodać mnożnik). Odczyt z czujnika zapisuję do "ostatni_odczyt" do użycia w następnym przebiegu pętli. Dodaję jeszcze "delay", żeby silnik zdążył się obrócić, wartość jest proporcjonalna do wielkości obrotu w aktualnej pętli, oczywiście wartość bezwzględna i mnożnik, bo to jakieś milisekundy będą. Teraz doświadczalnie dostrajam wszystko za pomocą zmiany dwóch parametrów: mocy silnika i mnożnika "delay". Wszystko chodzi w miarę płynnie, oczywiście bezwładność jakaś tam jest, i to płynna, ale dla moich potrzeb akceptowalna. Da się wyregulować, żeby nie było bujania w te i we wte i przede wszystkim nie rozregulowuje się, czyli "zero" jest zawsze w tym samym położeniu. Dziękuję i polecam się 🙂

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.